[Pkg-javascript-commits] [pdf.js] 10/204: Chrome extension: Isolate pageAction logic

David Prévot taffit at moszumanska.debian.org
Sat Oct 25 18:50:25 UTC 2014


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository pdf.js.

commit 10553504259200ce9bbc7380f0c5b9e1fe6b735f
Author: Rob Wu <rob at robwu.nl>
Date:   Fri Aug 22 23:00:39 2014 +0200

    Chrome extension: Isolate pageAction logic
    
    Remove pageAction logic from extension router, and put it in a
    separate file. The pageAction URL parsing logic has been simplified,
    and all pageAction-related files have been moved to a separate directory.
---
 extensions/chromium/extension-router.js            | 39 ------------------
 extensions/chromium/pageAction/background.js       | 48 ++++++++++++++++++++++
 .../popup.html}                                    |  2 +-
 .../{pageActionPopup.js => pageAction/popup.js}    |  0
 extensions/chromium/pdfHandler.html                |  1 +
 make.js                                            |  1 +
 6 files changed, 51 insertions(+), 40 deletions(-)

diff --git a/extensions/chromium/extension-router.js b/extensions/chromium/extension-router.js
index 3f35cf4..2e07214 100644
--- a/extensions/chromium/extension-router.js
+++ b/extensions/chromium/extension-router.js
@@ -56,39 +56,6 @@ limitations under the License.
     }
   }
 
-  /**
-   * @param {string} url URL of PDF Viewer.
-   * @return {string|undefined} The percent-encoded URL of the (PDF) file.
-   */
-  function parseViewerURL(url) {
-    if (url.lastIndexOf(VIEWER_URL, 0) !== 0) {
-      // Does not even start with the correct URL. Bye!
-      return;
-    }
-    url = url.match(/[&?]file=([^&#]+)/);
-    if (url) {
-      url = url[1];
-      return url;
-    }
-  }
-
-  /**
-   * @param {number} tabId ID of tab where the page action will be shown
-   * @param {string} url URL to be displayed in page action
-   */
-  function showPageAction(tabId, displayUrl) {
-    var url = parseExtensionURL(displayUrl) || parseViewerURL(displayUrl);
-    if (url) {
-      chrome.pageAction.setPopup({
-        tabId: tabId,
-        popup: 'pageActionPopup.html?file=' + url
-      });
-      chrome.pageAction.show(tabId);
-    } else {
-      console.log('Unable to get PDF url from ' + displayUrl);
-    }
-  }
-
   // TODO(rob): Use declarativeWebRequest once declared URL-encoding is
   //            supported, see http://crbug.com/273589
   //            (or rewrite the query string parser in viewer.js to get it to
@@ -114,12 +81,6 @@ limitations under the License.
     })
   }, ['blocking']);
 
-  chrome.runtime.onMessage.addListener(function(message, sender) {
-    if (message === 'showPageAction' && sender.tab) {
-      showPageAction(sender.tab.id, sender.tab.url);
-    }
-  });
-
   // When session restore is used, viewer pages may be loaded before the
   // webRequest event listener is attached (= page not found).
   // Reload these tabs.
diff --git a/extensions/chromium/pageAction/background.js b/extensions/chromium/pageAction/background.js
new file mode 100644
index 0000000..36623cf
--- /dev/null
+++ b/extensions/chromium/pageAction/background.js
@@ -0,0 +1,48 @@
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+/*
+Copyright 2014 Mozilla Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+/* globals chrome */
+
+'use strict';
+
+(function PageActionClosure() {
+  /**
+   * @param {number} tabId - ID of tab where the page action will be shown.
+   * @param {string} url - URL to be displayed in page action.
+   */
+  function showPageAction(tabId, displayUrl) {
+    // rewriteUrlClosure in viewer.js ensures that the URL looks like
+    // chrome-extension://[extensionid]/http://example.com/file.pdf
+    var url = /^chrome-extension:\/\/[a-p]{32}\/([^#]+)/.exec(displayUrl);
+    if (url) {
+      url = url[1];
+      chrome.pageAction.setPopup({
+        tabId: tabId,
+        popup: '/pageAction/popup.html?file=' + encodeURIComponent(url)
+      });
+      chrome.pageAction.show(tabId);
+    } else {
+      console.log('Unable to get PDF url from ' + displayUrl);
+    }
+  }
+
+  chrome.runtime.onMessage.addListener(function(message, sender) {
+    if (message === 'showPageAction' && sender.tab) {
+      showPageAction(sender.tab.id, sender.tab.url);
+    }
+  });
+})();
diff --git a/extensions/chromium/pageActionPopup.html b/extensions/chromium/pageAction/popup.html
similarity index 96%
rename from extensions/chromium/pageActionPopup.html
rename to extensions/chromium/pageAction/popup.html
index 21827c2..f18ff27 100644
--- a/extensions/chromium/pageActionPopup.html
+++ b/extensions/chromium/pageAction/popup.html
@@ -39,6 +39,6 @@ body {
 </style>
 </head>
 <body contentEditable="plaintext-only" spellcheck="false">
-<script src="pageActionPopup.js"></script>
+<script src="popup.js"></script>
 </body>
 </html>
diff --git a/extensions/chromium/pageActionPopup.js b/extensions/chromium/pageAction/popup.js
similarity index 100%
rename from extensions/chromium/pageActionPopup.js
rename to extensions/chromium/pageAction/popup.js
diff --git a/extensions/chromium/pdfHandler.html b/extensions/chromium/pdfHandler.html
index c988513..79657a0 100644
--- a/extensions/chromium/pdfHandler.html
+++ b/extensions/chromium/pdfHandler.html
@@ -20,3 +20,4 @@ limitations under the License.
 <script src="extension-router.js"></script>
 <script src="pdfHandler-v2.js"></script>
 <script src="pdfHandler-vcros.js"></script>
+<script src="pageAction/background.js"></script>
diff --git a/make.js b/make.js
index 55945af..f923bc6 100644
--- a/make.js
+++ b/make.js
@@ -879,6 +879,7 @@ target.chromium = function() {
         'extensions/chromium/*.css',
         'extensions/chromium/icon*.png',],
        CHROME_BUILD_DIR],
+      ['extensions/chromium/pageAction/*.*', CHROME_BUILD_DIR + '/pageAction'],
       ['external/webL10n/l10n.js', CHROME_BUILD_CONTENT_DIR + '/web'],
       ['web/viewer.css', CHROME_BUILD_CONTENT_DIR + '/web'],
       ['external/bcmaps/*', CHROME_BUILD_CONTENT_DIR + '/web/cmaps'],

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/pdf.js.git



More information about the Pkg-javascript-commits mailing list