[Pkg-javascript-commits] [pdf.js] 93/141: Move logic from viewer.js to chromecom.js
David Prévot
taffit at moszumanska.debian.org
Sat Apr 19 22:40:33 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 bfcc8af6edcd40933f5e996279a7c9519201e19c
Author: Rob Wu <gwnRob at gmail.com>
Date: Fri Apr 11 17:28:35 2014 +0200
Move logic from viewer.js to chromecom.js
and also default to '' instead of DEFAULT_URL to avoid trying to
load a non-existent file when no file has been specified.
---
web/chromecom.js | 113 +++++++++++++++++++++++++++++++++++++++++++------------
web/viewer.js | 59 ++---------------------------
2 files changed, 92 insertions(+), 80 deletions(-)
diff --git a/web/chromecom.js b/web/chromecom.js
index 655e96b..f173986 100644
--- a/web/chromecom.js
+++ b/web/chromecom.js
@@ -14,35 +14,98 @@
* limitations under the License.
*/
-/* globals chrome */
+/* globals chrome, PDFJS, PDFView */
'use strict';
var ChromeCom = (function ChromeComClosure() {
- return {
- /**
- * Creates an event that the extension is listening for and will
- * asynchronously respond by calling the callback.
- * @param {String} action The action to trigger.
- * @param {String} data Optional data to send.
- * @param {Function} callback Optional response callback that will be called
- * with one data argument. When the request cannot be handled, the callback
- * is immediately invoked with no arguments.
- */
- request: function(action, data, callback) {
- var message = {
- action: action,
- data: data
- };
- if (!chrome.runtime) {
- console.error('chrome.runtime is undefined.');
- if (callback) {
- callback();
- }
- } else if (callback) {
- chrome.runtime.sendMessage(message, callback);
- } else {
- chrome.runtime.sendMessage(message);
+ var ChromeCom = {};
+ /**
+ * Creates an event that the extension is listening for and will
+ * asynchronously respond by calling the callback.
+ *
+ * @param {String} action The action to trigger.
+ * @param {String} data Optional data to send.
+ * @param {Function} callback Optional response callback that will be called
+ * with one data argument. When the request cannot be handled, the callback
+ * is immediately invoked with no arguments.
+ */
+ ChromeCom.request = function ChromeCom_request(action, data, callback) {
+ var message = {
+ action: action,
+ data: data
+ };
+ if (!chrome.runtime) {
+ console.error('chrome.runtime is undefined.');
+ if (callback) {
+ callback();
}
+ } else if (callback) {
+ chrome.runtime.sendMessage(message, callback);
+ } else {
+ chrome.runtime.sendMessage(message);
}
};
+
+ /**
+ * Opens a PDF file with the PDF viewer.
+ *
+ * @param {String} file Absolute URL of PDF file.
+ */
+ ChromeCom.openPDFFile = function ChromeCom_openPDFFile(file) {
+ // Expand drive:-URLs to filesystem URLs (Chrome OS)
+ file = file.replace(/^drive:/i,
+ 'filesystem:' + location.origin + '/external/');
+
+ ChromeCom.request('getPDFStream', file, function(response) {
+ if (response) {
+ // We will only get a response when the streamsPrivate API is available.
+
+ var isFTPFile = /^ftp:/i.test(file);
+ var streamUrl = response.streamUrl;
+ if (streamUrl) {
+ console.log('Found data stream for ' + file);
+ PDFView.open(streamUrl, 0, undefined, undefined, {
+ length: response.contentLength
+ });
+ PDFView.setTitleUsingUrl(file);
+ return;
+ }
+ if (isFTPFile && !response.extensionSupportsFTP) {
+ // Stream not found, and it's loaded from FTP.
+ // When the browser does not support loading ftp resources over
+ // XMLHttpRequest, just reload the page.
+ // NOTE: This will not lead to an infinite redirect loop, because
+ // if the file exists, then the streamsPrivate API will capture the
+ // stream and send back the response. If the stream does not exist,
+ // a "Webpage not available" error will be shown (not the PDF Viewer).
+ location.replace(file);
+ return;
+ }
+ }
+ if (/^filesystem:/.test(file) && !PDFJS.disableWorker) {
+ // The security origin of filesystem:-URLs are not preserved when the
+ // URL is passed to a Web worker, (http://crbug.com/362061), so we have
+ // to create an intermediate blob:-URL as a work-around.
+ var resolveLocalFileSystemURL = window.resolveLocalFileSystemURL ||
+ window.webkitResolveLocalFileSystemURL;
+ resolveLocalFileSystemURL(file, function onResolvedFSURL(fileEntry) {
+ fileEntry.file(function(fileObject) {
+ var blobUrl = URL.createObjectURL(fileObject);
+ PDFView.open(blobUrl, 0, undefined, undefined, {
+ length: fileObject.size
+ });
+ });
+ }, function onFileSystemError(error) {
+ // This should not happen. When it happens, just fall back to the
+ // usual way of getting the File's data (via the Web worker).
+ console.warn('Cannot resolve file ' + file + ', ' + error.name + ' ' +
+ error.message);
+ PDFView.open(file, 0);
+ });
+ return;
+ }
+ PDFView.open(file, 0);
+ });
+ };
+ return ChromeCom;
})();
diff --git a/web/viewer.js b/web/viewer.js
index 2355c40..8cc94cd 100644
--- a/web/viewer.js
+++ b/web/viewer.js
@@ -1660,7 +1660,7 @@ var DocumentOutlineView = function documentOutlineView(outline) {
// // Run this code outside DOMContentLoaded to make sure that the URL
// // is rewritten as soon as possible.
// var params = PDFView.parseQueryString(document.location.search.slice(1));
-// DEFAULT_URL = params.file || DEFAULT_URL;
+// DEFAULT_URL = params.file || '';
//
// // Example: chrome-extension://.../http://example.com/file.pdf
// var humanReadableUrl = '/' + DEFAULT_URL + location.hash;
@@ -1685,9 +1685,6 @@ function webViewerInitialized() {
//#endif
//#if CHROME
//var file = DEFAULT_URL;
-//// XHR cannot get data from drive:-URLs, so expand to filesystem: (Chrome OS)
-//file = file.replace(/^drive:/i,
-// 'filesystem:' + location.origin + '/external/');
//#endif
//#if !(FIREFOX || MOZCENTRAL || CHROME || B2G)
@@ -1913,58 +1910,10 @@ function webViewerInitialized() {
PDFView.open(file, 0);
}
//#endif
-
//#if CHROME
-//ChromeCom.request('getPDFStream', file, function(response) {
-// if (response) {
-// // We will only get a response when the streamsPrivate API is available.
-//
-// var isFTPFile = /^ftp:/i.test(file);
-// var streamUrl = response.streamUrl;
-// if (streamUrl) {
-// console.log('Found data stream for ' + file);
-// PDFView.open(streamUrl, 0, undefined, undefined, {
-// length: response.contentLength
-// });
-// PDFView.setTitleUsingUrl(file);
-// return;
-// }
-// if (isFTPFile && !response.extensionSupportsFTP) {
-// // Stream not found, and it's loaded from FTP.
-// // When the browser does not support loading ftp resources over
-// // XMLHttpRequest, just reload the page.
-// // NOTE: This will not lead to an infinite redirect loop, because
-// // if the file exists, then the streamsPrivate API will capture the
-// // stream and send back the response. If the stream does not exist, then
-// // a "Webpage not available" error will be shown (not the PDF Viewer).
-// location.replace(file);
-// return;
-// }
-// }
-// if (/^filesystem:/.test(file) && !PDFJS.disableWorker) {
-// // The security origin of filesystem:-URLs are not preserved when the URL
-// // is passed to a Web worker, (http://crbug.com/362061), so we have to
-// // create an intermediate blob:-URL as a work-around.
-// var resolveLocalFileSystemURL = window.resolveLocalFileSystemURL ||
-// window.webkitResolveLocalFileSystemURL;
-// resolveLocalFileSystemURL(file, function onFileSystemSuccess(fileEntry) {
-// fileEntry.file(function(fileObject) {
-// var blobUrl = URL.createObjectURL(fileObject);
-// PDFView.open(blobUrl, 0, undefined, undefined, {
-// length: fileObject.size
-// });
-// });
-// }, function onFileSystemError(error) {
-// // This should not happen. When it happens, just fall back to the normal
-// // way of getting the File's data (via the Web worker).
-// console.warn('Cannot resolve file ' + file + ', ' + error.name + ' ' +
-// error.message);
-// PDFView.open(file, 0);
-// });
-// return;
-// }
-// PDFView.open(file, 0);
-//});
+//if (file) {
+// ChromeCom.openPDFFile(file);
+//}
//#endif
}
--
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