[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