Index: common.js |
diff --git a/common.js b/common.js |
index 8168515dcf6071d559f96ce9d0371fb34199ce8c..4c46d7a5b203b76aa37c568d6ad7375966733486 100644 |
--- a/common.js |
+++ b/common.js |
@@ -15,142 +15,140 @@ |
* along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
*/ |
+/* globals Components */ |
+ |
"use strict"; |
-(function(global) |
+function E(id) |
{ |
- global.E = function E(id) |
- { |
- return document.getElementById(id); |
- } |
+ return document.getElementById(id); |
+} |
- global.getDocLink = function(link, callback) |
+function getDocLink(link, callback) |
+{ |
+ ext.backgroundPage.sendMessage({ |
+ type: "app.get", |
+ what: "doclink", |
+ link |
+ }, callback); |
+} |
+ |
+function checkShareResource(url, callback) |
+{ |
+ ext.backgroundPage.sendMessage({ |
+ type: "filters.blocked", |
+ url, |
+ requestType: "SCRIPT", |
+ docDomain: "adblockplus.org", |
+ thirdParty: true |
+ }, callback); |
+} |
+ |
+function openSharePopup(url) |
+{ |
+ let glassPane = E("glass-pane"); |
+ if (!glassPane) |
{ |
- ext.backgroundPage.sendMessage({ |
- type: "app.get", |
- what: "doclink", |
- link: link |
- }, callback); |
+ glassPane = document.createElement("div"); |
+ glassPane.setAttribute("id", "glass-pane"); |
+ document.body.appendChild(glassPane); |
} |
- global.checkShareResource = function(url, callback) |
+ let iframe = E("share-popup"); |
+ if (!iframe) |
{ |
- ext.backgroundPage.sendMessage( |
- { |
- type: "filters.blocked", |
- url: url, |
- requestType: "SCRIPT", |
- docDomain: "adblockplus.org", |
- thirdParty: true |
- }, callback); |
+ iframe = document.createElement("iframe"); |
+ iframe.setAttribute("id", "share-popup"); |
+ iframe.setAttribute("scrolling", "no"); |
+ glassPane.appendChild(iframe); |
} |
- global.openSharePopup = function(url) |
+ // Firefox 38+ no longer allows messaging using postMessage so we need |
+ // to have a fake top level frame to avoid problems with scripts that try to |
+ // communicate with the first-run page |
+ let isGecko = ("Components" in window); |
+ if (isGecko) |
{ |
- var glassPane = E("glass-pane"); |
- if (!glassPane) |
- { |
- glassPane = document.createElement("div"); |
- glassPane.setAttribute("id", "glass-pane"); |
- document.body.appendChild(glassPane); |
- } |
- |
- var iframe = E("share-popup"); |
- if (!iframe) |
+ try |
{ |
- iframe = document.createElement("iframe"); |
- iframe.setAttribute("id", "share-popup"); |
- iframe.setAttribute("scrolling", "no"); |
- glassPane.appendChild(iframe); |
- } |
+ let Ci = Components.interfaces; |
+ let docShell = iframe.contentWindow |
+ .QueryInterface(Ci.nsIInterfaceRequestor) |
+ .getInterface(Ci.nsIDocShell); |
- // Firefox 38+ no longer allows messaging using postMessage so we need |
- // to have a fake top level frame to avoid problems with scripts that try to |
- // communicate with the first-run page |
- var isGecko = ("Components" in window); |
- if (isGecko) |
- { |
- try |
+ if (typeof docShell.frameType != "undefined") |
{ |
- var Ci = Components.interfaces; |
- var docShell = iframe.contentWindow |
- .QueryInterface(Ci.nsIInterfaceRequestor) |
- .getInterface(Ci.nsIDocShell); |
- |
- if (typeof docShell.frameType != "undefined") |
- { |
- // Gecko 47+ |
- docShell.frameType = docShell.FRAME_TYPE_BROWSER; |
- } |
- else |
- { |
- // Legacy branch |
- docShell.setIsBrowserInsideApp(Ci.nsIScriptSecurityManager.UNKNOWN_APP_ID); |
- } |
+ // Gecko 47+ |
+ docShell.frameType = docShell.FRAME_TYPE_BROWSER; |
} |
- catch(ex) |
+ else |
{ |
- console.error(ex); |
+ // Legacy branch |
+ docShell.setIsBrowserInsideApp( |
+ Ci.nsIScriptSecurityManager.UNKNOWN_APP_ID |
+ ); |
} |
} |
- |
- var popupMessageReceived = false; |
- function resizePopup(width, height) |
+ catch (ex) |
{ |
- iframe.width = width; |
- iframe.height = height; |
- iframe.style.marginTop = -height / 2 + "px"; |
- iframe.style.marginLeft = -width / 2 + "px"; |
- popupMessageReceived = true; |
- window.removeEventListener("message", popupMessageListener); |
+ console.error(ex); |
} |
+ } |
+ |
+ let popupMessageReceived = false; |
+ function resizePopup(width, height) |
+ { |
+ iframe.width = width; |
+ iframe.height = height; |
+ iframe.style.marginTop = -height / 2 + "px"; |
+ iframe.style.marginLeft = -width / 2 + "px"; |
+ popupMessageReceived = true; |
+ window.removeEventListener("message", popupMessageListener); |
+ } |
+ |
+ let popupMessageListener = function(event) |
+ { |
+ if (!/[./]adblockplus\.org$/.test(event.origin) || |
+ !("width" in event.data) || !("height" in event.data)) |
+ return; |
- var popupMessageListener = function(event) |
+ resizePopup(event.data.width, event.data.height); |
+ }; |
+ // Firefox requires last parameter to be true to be triggered by |
+ // unprivileged pages |
+ window.addEventListener("message", popupMessageListener, false, true); |
+ |
+ let popupLoadListener = function() |
+ { |
+ if (!popupMessageReceived && isGecko) |
{ |
- if (!/[.\/]adblockplus\.org$/.test(event.origin) |
- || !("width" in event.data) |
- || !("height" in event.data)) |
- return; |
- |
- resizePopup(event.data.width, event.data.height); |
- }; |
- // Firefox requires last parameter to be true to be triggered by |
- // unprivileged pages |
- window.addEventListener("message", popupMessageListener, false, true); |
- |
- var popupLoadListener = function() |
+ let rootElement = iframe.contentDocument.documentElement; |
+ let {width, height} = rootElement.dataset; |
+ if (width && height) |
+ resizePopup(width, height); |
+ } |
+ |
+ if (popupMessageReceived) |
{ |
- if (!popupMessageReceived && isGecko) |
- { |
- var rootElement = iframe.contentDocument.documentElement; |
- var width = rootElement.dataset.width; |
- var height = rootElement.dataset.height; |
- if (width && height) |
- resizePopup(width, height); |
- } |
+ iframe.className = "visible"; |
- if (popupMessageReceived) |
+ let popupCloseListener = function() |
{ |
- iframe.className = "visible"; |
- |
- var popupCloseListener = function() |
- { |
- iframe.className = glassPane.className = ""; |
- document.removeEventListener("click", popupCloseListener); |
- }; |
- document.addEventListener("click", popupCloseListener, false); |
- } |
- else |
- { |
- glassPane.className = ""; |
- window.removeEventListener("message", popupMessageListener); |
- } |
+ iframe.className = glassPane.className = ""; |
+ document.removeEventListener("click", popupCloseListener); |
+ }; |
+ document.addEventListener("click", popupCloseListener, false); |
+ } |
+ else |
+ { |
+ glassPane.className = ""; |
+ window.removeEventListener("message", popupMessageListener); |
+ } |
- iframe.removeEventListener("load", popupLoadListener); |
- }; |
- iframe.addEventListener("load", popupLoadListener, false); |
+ iframe.removeEventListener("load", popupLoadListener); |
+ }; |
+ iframe.addEventListener("load", popupLoadListener, false); |
- iframe.src = url; |
- glassPane.className = "visible"; |
- } |
-})(this); |
+ iframe.src = url; |
+ glassPane.className = "visible"; |
+} |