From 41f3579461891361f5ec3da5f4c156ed1393df1e Mon Sep 17 00:00:00 2001 From: Deathamns Date: Tue, 9 Dec 2014 21:56:17 +0100 Subject: [PATCH] Firefox: blocking and content scripts for e10s --- platform/firefox/frameScript.js | 81 ++------------------------------- 1 file changed, 5 insertions(+), 76 deletions(-) diff --git a/platform/firefox/frameScript.js b/platform/firefox/frameScript.js index 4d4225b..21586a9 100644 --- a/platform/firefox/frameScript.js +++ b/platform/firefox/frameScript.js @@ -1,22 +1,20 @@ -/* globals Services, sendAsyncMessage, addMessageListener, removeMessageListener, content */ - -(function() { +/* globals Services, sendAsyncMessage, addMessageListener, removeMessageListener */ 'use strict'; let appName = 'ublock'; -let contentBaseURI = 'chrome://' + appName + '/content/js/'; let listeners = {}; +let frameModule = Components.utils['import']('chrome://' + appName + '/content/frameModule.js', {}); -let _addMessageListener = function(id, fn) { - _removeMessageListener(id); +this.ublock_addMessageListener = function(id, fn) { + ublock_removeMessageListener(id); listeners[id] = function(msg) { fn(msg.data); }; addMessageListener(id, listeners[id]); }; -let _removeMessageListener = function(id) { +this.ublock_removeMessageListener = function(id) { if (listeners[id]) { removeMessageListener(id, listeners[id]); } @@ -29,72 +27,3 @@ addMessageListener(appName + ':broadcast', function(msg) { listeners[id](msg); } }); - -let initContext = function(win, sandbox) { - if (sandbox) { - win = Components.utils.Sandbox([win], { - sandboxPrototype: win, - wantComponents: false, - wantXHRConstructor: false - }); - } - - win.sendAsyncMessage = sendAsyncMessage; - win.addMessageListener = _addMessageListener; - win.removeMessageListener = _removeMessageListener; - - return win; -}; - -let observer = { - observe: function(win) { - if (!win || win.top !== content) { - return; - } - - if (!(win.document instanceof win.HTMLDocument - && (/^https?:$/.test(win.location.protocol)))) { - return; - } - - let lss = Services.scriptloader.loadSubScript; - win = initContext(win, true); - - lss(contentBaseURI + 'vapi-client.js', win); - lss(contentBaseURI + 'contentscript-start.js', win); - - let readyState = win.document.readyState; - - if (readyState === "interactive" || readyState === "complete") { - lss(contentBaseURI + 'contentscript-end.js', win); - } - else { - let docReady = function(e) { - this.removeEventListener(e.type, docReady, true); - lss(contentBaseURI + 'contentscript-end.js', win); - }; - - win.document.addEventListener('DOMContentLoaded', docReady, true); - } - } -}; - -Services.obs.addObserver(observer, 'content-document-global-created', false); - -let DOMReady = function(e) { - let win = e.target.defaultView; - - // inject the message handlers for the options page - if (win.location.protocol === 'chrome:' && win.location.host === appName) { - initContext(win); - } -}; - -addEventListener('DOMContentLoaded', DOMReady, true); - -addEventListener('unload', function() { - Services.obs.removeObserver(observer, 'content-document-global-created'); - observer = listeners = null; -}, false); - -})(); \ No newline at end of file