[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