Browse Source

Merge pull request #3484 from Rob--W/crx-improved-navigation-detection

[Chrome extension] Improved navigation detection by using webNavigation instead of tabs API.
Yury Delendik 12 years ago
parent
commit
e6be2666de
  1. 6
      extensions/chrome/insertviewer.js
  2. 3
      extensions/chrome/manifest.json
  3. 22
      extensions/chrome/pdfHandler.js

6
extensions/chrome/insertviewer.js

@ -27,6 +27,12 @@ function getViewerURL(pdf_url) { @@ -27,6 +27,12 @@ function getViewerURL(pdf_url) {
}
function showViewer(url) {
if (document.documentElement === null) {
// If the root element hasn't been rendered yet, delay the next operation.
// Otherwise, document.readyState will get stuck in "interactive".
setTimeout(showViewer, 0, url);
return;
}
// Cancel page load and empty document.
window.stop();
document.body.textContent = '';

3
extensions/chrome/manifest.json

@ -11,7 +11,8 @@ @@ -11,7 +11,8 @@
"permissions": [
"webRequest", "webRequestBlocking",
"<all_urls>",
"tabs"
"tabs",
"webNavigation"
],
"content_scripts": [{
"matches": [

22
extensions/chrome/pdfHandler.js

@ -62,6 +62,28 @@ function insertPDFJSForTab(tabId, url) { @@ -62,6 +62,28 @@ function insertPDFJSForTab(tabId, url) {
* @param {string} url The URL of the pdf file.
*/
function activatePDFJSForTab(tabId, url) {
if (!chrome.webNavigation) {
// Opera... does not support the webNavigation API.
activatePDFJSForTabFallbackForOpera(tabId, url);
return;
}
var listener = function webNavigationEventListener(details) {
if (details.tabId === tabId) {
insertPDFJSForTab(tabId, url);
chrome.webNavigation.onCommitted.removeListener(listener);
}
};
var urlFilter = {
url: [{ urlEquals: url }]
};
chrome.webNavigation.onCommitted.addListener(listener, urlFilter);
}
/**
* Fallback for Opera.
* @see activatePDFJSForTab
**/
function activatePDFJSForTabFallbackForOpera(tabId, url) {
chrome.tabs.onUpdated.addListener(function listener(_tabId) {
if (tabId === _tabId) {
insertPDFJSForTab(tabId, url);

Loading…
Cancel
Save