[Pkg-javascript-commits] [pdf.js] 11/161: Making extensions/chromium/chrome.tabs.executeScriptInFrame.js adhere to the style guide

David Prévot taffit at moszumanska.debian.org
Sat Apr 19 14:16:16 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 241cb7999d052e59070c1f965d8e6e79519d4699
Author: Tim van der Meij <timvandermeij at gmail.com>
Date:   Sun Mar 9 23:29:34 2014 +0100

    Making extensions/chromium/chrome.tabs.executeScriptInFrame.js adhere to the style guide
---
 .../chromium/chrome.tabs.executeScriptInFrame.js   | 346 +++++++++++----------
 1 file changed, 185 insertions(+), 161 deletions(-)

diff --git a/extensions/chromium/chrome.tabs.executeScriptInFrame.js b/extensions/chromium/chrome.tabs.executeScriptInFrame.js
index 5744e8d..c36c951 100644
--- a/extensions/chromium/chrome.tabs.executeScriptInFrame.js
+++ b/extensions/chromium/chrome.tabs.executeScriptInFrame.js
@@ -5,7 +5,7 @@
  *
  * Implements the chrome.tabs.executeScriptInFrame API.
  * This API is similar to the chrome.tabs.executeScript method, except
- *  that it also recognizes the "frameId" property.
+ * that it also recognizes the "frameId" property.
  * This frameId can be obtained through the webNavigation or webRequest API.
  *
  * When an error occurs, chrome.runtime.lastError is set.
@@ -18,32 +18,36 @@
  * In addition, the following field must also be set in manifest.json:
  * "web_accessible_resources": ["getFrameId"]
  */
+/* globals chrome, console */
 
 (function() {
-/* jshint browser:true, maxlen:100 */
-/* globals chrome, console */
-'use strict';
-chrome.tabs.executeScriptInFrame = executeScript;
+  /* jshint browser:true, maxlen:100 */
+  'use strict';
+
+  chrome.tabs.executeScriptInFrame = executeScript;
 
-// This URL is used to communicate the frameId. The resource is never visited, so it should
-// be a non-existent location. Do not use *, ", ' or line breaks in the file name.
-var URL_WHAT_IS_MY_FRAME_ID = chrome.extension.getURL('getFrameId');
-// The callback will be called within ... ms:
-// Don't set a too low value.
-var MAXIMUM_RESPONSE_TIME_MS = 1000;
+  // This URL is used to communicate the frameId. The resource is never
+  // visited, so it should be a non-existent location. Do not use *, ", '
+  // or line breaks in the file name.
+  var URL_WHAT_IS_MY_FRAME_ID = chrome.extension.getURL('getFrameId');
+  // The callback will be called within ... ms:
+  // Don't set a too low value.
+  var MAXIMUM_RESPONSE_TIME_MS = 1000;
 
-// Callbacks are stored here until they're invoked.
-// Key = dummyUrl, value = callback function
-var callbacks = {};
+  // Callbacks are stored here until they're invoked.
+  // Key = dummyUrl, value = callback function
+  var callbacks = {};
 
-chrome.webRequest.onBeforeRequest.addListener(function showFrameId(details) {
+  chrome.webRequest.onBeforeRequest.addListener(function showFrameId(details) {
     // Positive integer frameId >= 0
-    // Since an image is used as a data transport, we add 1 to get a non-zero width.
+    // Since an image is used as a data transport, we add 1 to get a
+    // non-zero width.
     var frameId = details.frameId + 1;
-    // Assume that the frameId fits in three bytes - which is a very reasonable assumption.
+    // Assume that the frameId fits in three bytes - which is a very
+    // reasonable assumption.
     var width = String.fromCharCode(frameId & 0xFF, (frameId >> 8) & 0xFF);
-    // When frameId > 0xFFFF, use the height to convey the additional information.
-    // Again, add 1 to make sure that the height is non-zero.
+    // When frameId > 0xFFFF, use the height to convey the additional
+    // information. Again, add 1 to make sure that the height is non-zero.
     var height = String.fromCharCode((frameId >> 16) + 1, 0);
     // Convert data to base64 to avoid loss of bytes
     var image = 'data:image/gif;base64,' + btoa(
@@ -76,184 +80,204 @@ chrome.webRequest.onBeforeRequest.addListener(function showFrameId(details) {
                 // GIF trailer
                 '\x3b'
                 );
-        return {redirectUrl: image};
-}, {
+    return {redirectUrl: image};
+  }, {
     urls: [URL_WHAT_IS_MY_FRAME_ID + '*'],
     types: ['image']
-}, ['blocking']);
+  }, ['blocking']);
 
-chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
+  chrome.runtime.onMessage.addListener(function(message, sender,
+                                                sendResponse) {
     if (message && message.executeScriptCallback) {
-        var callback = callbacks[message.identifier];
-        if (callback) {
-            if (message.hello) {
-                clearTimeout(callback.timer);
-                return;
-            }
-            delete callbacks[message.identifier];
-            // Result within an array to be consistent with the chrome.tabs.executeScript API.
-            callback([message.evalResult]);
-        } else {
-            console.warn('Callback not found for response in tab ' + sender.tab.id);
+      var callback = callbacks[message.identifier];
+      if (callback) {
+        if (message.hello) {
+          clearTimeout(callback.timer);
+          return;
         }
+        delete callbacks[message.identifier];
+        // Result within an array to be consistent with the
+        // chrome.tabs.executeScript API.
+        callback([message.evalResult]);
+      } else {
+        console.warn('Callback not found for response in tab ' +
+                     sender.tab.id);
+      }
     }
-});
+  });
 
-/**
- * Execute content script in a specific frame.
- *
- * @param tabId {integer} required
- * @param details.frameId {integer} required
- * @param details.code {string} Code or file is required (not both)
- * @param details.file {string} Code or file is required (not both)
- * @param details.runAt {optional string} One of "document_start", "document_end", "document_idle"
- * @param callback {optional function(optional array of any result)} When an error occurs, result
- *                                                                   is not set.
- */
-function executeScript(tabId, details, callback) {
-    console.assert(typeof details === 'object', 'details must be an object (argument 0)');
+  /**
+   * Execute content script in a specific frame.
+   *
+   * @param tabId {integer} required
+   * @param details.frameId {integer} required
+   * @param details.code {string} Code or file is required (not both)
+   * @param details.file {string} Code or file is required (not both)
+   * @param details.runAt {optional string} One of "document_start",
+   *                                        "document_end", "document_idle"
+   * @param callback {optional function(optional result array)} When an error
+   *                                                            occurs, result
+   *                                                            is not set.
+   */
+  function executeScript(tabId, details, callback) {
+    console.assert(typeof details === 'object',
+                  'details must be an object (argument 0)');
     var frameId = details.frameId;
-    console.assert(typeof tabId === 'number', 'details.tabId must be a number');
-    console.assert(typeof frameId === 'number', 'details.frameId must be a number');
-    var sourceType = 'code' in details ? 'code' : 'file';
+    console.assert(typeof tabId === 'number',
+                  'details.tabId must be a number');
+    console.assert(typeof frameId === 'number',
+                  'details.frameId must be a number');
+    var sourceType = ('code' in details ? 'code' : 'file');
     console.assert(sourceType in details, 'No source code or file specified');
     var sourceValue = details[sourceType];
-    console.assert(typeof sourceValue === 'string', 'details.' + sourceType + ' must be a string');
+    console.assert(typeof sourceValue === 'string',
+                  'details.' + sourceType + ' must be a string');
     var runAt = details.runAt;
-    if (!callback) callback = function() {/* no-op*/};
-    console.assert(typeof callback === 'function', 'callback must be a function');
+    if (!callback) {
+      callback = function() {/* no-op*/};
+    }
+    console.assert(typeof callback === 'function',
+                  'callback must be a function');
 
     if (frameId === 0) {
-        // No need for heavy lifting if we want to inject the script in the main frame
-        var injectDetails = {
-            allFrames: false,
-            runAt: runAt
-        };
-        injectDetails[sourceType] = sourceValue;
-        chrome.tabs.executeScript(tabId, injectDetails, callback);
-        return;
+      // No need for heavy lifting if we want to inject the script
+      // in the main frame
+      var injectDetails = {
+        allFrames: false,
+        runAt: runAt
+      };
+      injectDetails[sourceType] = sourceValue;
+      chrome.tabs.executeScript(tabId, injectDetails, callback);
+      return;
     }
 
     var identifier = Math.random().toString(36);
 
     if (sourceType === 'code') {
-        executeScriptInFrame();
+      executeScriptInFrame();
     } else { // sourceType === 'file'
-        (function() {
-            var x = new XMLHttpRequest();
-            x.open('GET', chrome.extension.getURL(sourceValue), true);
-            x.onload = function() {
-                sourceValue = x.responseText;
-                executeScriptInFrame();
-            };
-            x.onerror = function executeScriptResourceFetchError() {
-                var message = 'Failed to load file: "' + sourceValue + '".';
-                console.error('executeScript: ' + message);
-                chrome.runtime.lastError = chrome.extension.lastError = { message: message };
-                try {
-                    callback();
-                } finally {
-                    chrome.runtime.lastError = chrome.extension.lastError = undefined;
-                }
-            };
-            x.send();
-        })();
+      (function() {
+        var x = new XMLHttpRequest();
+        x.open('GET', chrome.extension.getURL(sourceValue), true);
+        x.onload = function() {
+          sourceValue = x.responseText;
+          executeScriptInFrame();
+        };
+        x.onerror = function executeScriptResourceFetchError() {
+          var message = 'Failed to load file: "' + sourceValue + '".';
+          console.error('executeScript: ' + message);
+          chrome.runtime.lastError = chrome.extension.lastError =
+            { message: message };
+          try {
+            callback();
+          } finally {
+            chrome.runtime.lastError = chrome.extension.lastError = undefined;
+          }
+        };
+        x.send();
+      })();
     }
 
-
     function executeScriptInFrame() {
-        callbacks[identifier] = callback;
-        chrome.tabs.executeScript(tabId, {
-            code: '(' + DETECT_FRAME + ')(' +
-                  'window,' +
-                  JSON.stringify(identifier) + ',' +
-                  frameId + ',' +
-                  JSON.stringify(sourceValue) + ')',
-            allFrames: true,
-            runAt: 'document_start'
-        }, function(results) {
-            if (results) {
-                callback.timer = setTimeout(executeScriptTimedOut, MAXIMUM_RESPONSE_TIME_MS);
-            } else {
-                // Failed :(
-                delete callbacks[identifier];
-                callback();
-            }
-        });
+      callbacks[identifier] = callback;
+      chrome.tabs.executeScript(tabId, {
+        code: '(' + DETECT_FRAME + ')(' +
+              'window,' +
+               JSON.stringify(identifier) + ',' +
+               frameId + ',' +
+               JSON.stringify(sourceValue) + ')',
+        allFrames: true,
+        runAt: 'document_start'
+      }, function(results) {
+        if (results) {
+          callback.timer = setTimeout(executeScriptTimedOut,
+                                      MAXIMUM_RESPONSE_TIME_MS);
+        } else {
+          // Failed :(
+          delete callbacks[identifier];
+          callback();
+        }
+      });
     }
+
     function executeScriptTimedOut() {
-        var callback = callbacks[identifier];
-        if (!callback) {
-            return;
-        }
-        delete callbacks[identifier];
-        var message = 'Failed to execute script: Frame ' + frameId + ' not found in tab ' + tabId;
-        console.error('executeScript: ' + message);
-        chrome.runtime.lastError = chrome.extension.lastError = { message: message };
-        try {
-            callback();
-        } finally {
-            chrome.runtime.lastError = chrome.extension.lastError = undefined;
-        }
+      var callback = callbacks[identifier];
+      if (!callback) {
+        return;
+      }
+      delete callbacks[identifier];
+      var message = 'Failed to execute script: Frame ' + frameId +
+                    ' not found in tab ' + tabId;
+      console.error('executeScript: ' + message);
+      chrome.runtime.lastError = chrome.extension.lastError =
+        { message: message };
+      try {
+          callback();
+      } finally {
+          chrome.runtime.lastError = chrome.extension.lastError = undefined;
+      }
     }
-}
+  }
 
-/**
- * Code executed as a content script.
- */
-var DETECT_FRAME = '' + function checkFrame(window, identifier, frameId, code) {
+  /**
+   * Code executed as a content script.
+   */
+  var DETECT_FRAME = '' + function checkFrame(window, identifier, frameId,
+                                              code) {
     var i;
     if ('__executeScript_frameId__' in window) {
-        evalAsContentScript();
+      evalAsContentScript();
     } else {
-        // Do NOT use new Image(), because of http://crbug.com/245296 in Chrome 27-29
-        i = window.document.createElement('img');
-        i.onload = function() {
-            window.__executeScript_frameId__ = (this.naturalWidth - 1) +
-                                               (this.naturalHeight - 1 << 16);
-            evalAsContentScript();
-        };
-        // Trigger webRequest event to get frameId
-        // (append extra characters to bust the cache)
-        i.src = 'URL_WHAT_IS_MY_FRAME_ID?' + Math.random().toString(36).slice(-6);
+      // Do NOT use new Image() because of http://crbug.com/245296
+      // in Chrome 27-29
+      i = window.document.createElement('img');
+      i.onload = function() {
+        window.__executeScript_frameId__ = (this.naturalWidth - 1) +
+                                           (this.naturalHeight - 1 << 16);
+        evalAsContentScript();
+      };
+      // Trigger webRequest event to get frameId
+      // (append extra characters to bust the cache)
+      i.src = 'URL_WHAT_IS_MY_FRAME_ID?' +
+               Math.random().toString(36).slice(-6);
     }
 
     for (i = 0 ; i < window.frames.length; ++i) {
-        try {
-            var frame = window.frames[i];
-            var scheme = frame.location.protocol;
-            if (scheme !== 'https:' && scheme !== 'http:' && scheme !== 'file:') {
-                checkFrame(frame, identifier, frameId, code);
-            }
-        } catch (e) {
-            // blocked by same origin policy, so it's not a javascript: / about:blank
-            // URL. chrome.tabs.executeScript will run the script for the frame.
+      try {
+        var frame = window.frames[i];
+        var scheme = frame.location.protocol;
+        if (scheme !== 'https:' && scheme !== 'http:' && scheme !== 'file:') {
+          checkFrame(frame, identifier, frameId, code);
         }
+      } catch (e) {
+        // blocked by same origin policy, so it's not a javascript:/about:blank
+        // URL. chrome.tabs.executeScript will run the script for the frame.
+      }
     }
+
     function evalAsContentScript() {
-        if (window.__executeScript_frameId__ !== frameId) {
-            return;
-        }
-        // Send an early message to make sure that any blocking code
-        // in the evaluated code does not cause the time-out in the background page
-        // to be triggered
+      if (window.__executeScript_frameId__ !== frameId) {
+        return;
+      }
+      // Send an early message to make sure that any blocking code
+      // in the evaluated code does not cause the time-out in the background
+      // page to be triggered
+      chrome.runtime.sendMessage({
+        executeScriptCallback: true,
+        hello: true,
+        identifier: identifier
+      });
+      var result = null;
+      try {
+        // jshint evil:true
+        result = window.eval(code);
+      } finally {
         chrome.runtime.sendMessage({
-            executeScriptCallback: true,
-            hello: true,
-            identifier: identifier
+          executeScriptCallback: true,
+          evalResult: result,
+          identifier: identifier
         });
-        var result = null;
-        try {
-            // jshint evil:true
-            result = window.eval(code);
-        } finally {
-            chrome.runtime.sendMessage({
-                executeScriptCallback: true,
-                evalResult: result,
-                identifier: identifier
-            });
-        }
+      }
     }
-}.toString().replace('URL_WHAT_IS_MY_FRAME_ID', URL_WHAT_IS_MY_FRAME_ID);
-
+  }.toString().replace('URL_WHAT_IS_MY_FRAME_ID', URL_WHAT_IS_MY_FRAME_ID);
 })();

-- 
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