| Index: common.js | 
| =================================================================== | 
| new file mode 100644 | 
| --- /dev/null | 
| +++ b/common.js | 
| @@ -0,0 +1,110 @@ | 
| +/* | 
| + * This file is part of Adblock Plus <https://adblockplus.org/>, | 
| + * Copyright (C) 2006-2015 Eyeo GmbH | 
| + * | 
| + * Adblock Plus is free software: you can redistribute it and/or modify | 
| + * it under the terms of the GNU General Public License version 3 as | 
| + * published by the Free Software Foundation. | 
| + * | 
| + * Adblock Plus is distributed in the hope that it will be useful, | 
| + * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 
| + * GNU General Public License for more details. | 
| + * | 
| + * You should have received a copy of the GNU General Public License | 
| + * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. | 
| + */ | 
| + | 
| +(function(global) | 
| +{ | 
| + global.E = function E(id) | 
| + { | 
| + return document.getElementById(id); | 
| + } | 
| + | 
| + global.getDocLink = function(link, callback) | 
| + { | 
| + ext.backgroundPage.sendMessage({ | 
| + type: "app.get", | 
| + what: "doclink", | 
| + link: link | 
| + }, callback); | 
| + } | 
| + | 
| + global.checkShareResource = function(url, callback) | 
| + { | 
| + ext.backgroundPage.sendMessage( | 
| + { | 
| + type: "filters.blocked", | 
| + url: url, | 
| + requestType: "SCRIPT", | 
| + docDomain: "adblockplus.org", | 
| + thirdParty: true | 
| + }, callback); | 
| + } | 
| + | 
| + global.openSharePopup = function(url) | 
| + { | 
| + 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) | 
| + { | 
| + iframe = document.createElement("iframe"); | 
| + iframe.setAttribute("id", "share-popup"); | 
| + iframe.setAttribute("scrolling", "no"); | 
| + glassPane.appendChild(iframe); | 
| + } | 
| + var popupMessageReceived = false; | 
| + | 
| + var popupMessageListener = function(event) | 
| + { | 
| + if (!/[.\/]adblockplus\.org$/.test(event.origin) | 
| + || !("width" in event.data) | 
| + || !("height" in event.data)) | 
| + return; | 
| + | 
| + var width = event.data.width; | 
| + var height = event.data.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); | 
| + }; | 
| + // Firefox requires last parameter to be true to be triggered by unprivileged pages | 
| + window.addEventListener("message", popupMessageListener, false, true); | 
| + | 
| + var popupLoadListener = function() | 
| + { | 
| + if (popupMessageReceived) | 
| + { | 
| + 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.removeEventListener("load", popupLoadListener); | 
| + }; | 
| + iframe.addEventListener("load", popupLoadListener, false); | 
| + | 
| + iframe.src = url; | 
| + glassPane.className = "visible"; | 
| + } | 
| +})(this); |