Index: chrome/content/composer.js |
=================================================================== |
--- a/chrome/content/composer.js |
+++ b/chrome/content/composer.js |
@@ -3,22 +3,22 @@ |
* version 2.0 (the "License"). You can obtain a copy of the License at |
* http://mozilla.org/MPL/2.0/. |
*/ |
let {Prefs} = require("prefs"); |
let domainData; |
let nodeData; |
+let nodeID; |
let selectedNode = null; |
let advancedMode = false; |
let treeView = null; |
let stylesheetData; |
let previewStyle = null; |
-let doc; |
let abpURL = Cc["@adblockplus.org/abp/public;1"].getService(Ci.nsIURI); |
Cu.import(abpURL.spec); |
/******************* |
* TreeView object * |
*******************/ |
@@ -79,18 +79,18 @@ function TreeView_getCellProperties(row, |
} |
/********************* |
* General functions * |
*********************/ |
function init() |
{ |
- nodeData = window.arguments[0]; |
- let host = window.arguments[1]; |
+ let host; |
+ ({host, nodeData, nodeID} = window.arguments[0]); |
// Check whether element hiding group is disabled |
let subscription = AdblockPlus.getSubscription("~eh~"); |
if (subscription && subscription.disabled) |
{ |
let warning = document.getElementById("groupDisabledWarning"); |
if (/\?1\?/.test(warning.textContent)) |
warning.textContent = warning.textContent.replace(/\?1\?/g, subscription.title); |
@@ -306,18 +306,18 @@ function updateExpression() |
expression = domainData.selected + "##" + expression; |
document.getElementById("expression").value = expression; |
var tree = document.getElementById("nodes-tree"); |
if (tree.view && tree.view.selection) |
tree.treeBoxObject.invalidateRow(tree.view.selection.currentIndex); |
- if (previewStyle) |
- previewStyle.textContent = stylesheetData; |
+ if (document.getElementById("preview").checked) |
+ togglePreview(true); |
} |
function escapeChar(dummy, match) |
{ |
return "\\" + match.charCodeAt(0).toString(16) + " "; |
} |
function fillDomains(domainData) { |
@@ -486,39 +486,23 @@ function fillAttributes(nodeData) |
if (advancedMode) |
{ |
// Add custom CSS entry |
node = createAttribute("advanced", nodeData.customCSS, list.getAttribute("_labelcustom"), nodeData.customCSS.selected); |
list.appendChild(node); |
} |
} |
-function togglePreview(preview) { |
- if (preview) { |
- if (!previewStyle || !previewStyle.parentNode) { |
- previewStyle = doc.createElementNS("http://www.w3.org/1999/xhtml", "style"); |
- previewStyle.setAttribute("type", "text/css"); |
- doc.documentElement.appendChild(previewStyle); |
- } |
- previewStyle.textContent = stylesheetData; |
- } |
- else { |
- try |
- { |
- if (previewStyle && previewStyle.parentNode) |
- previewStyle.parentNode.removeChild(previewStyle); |
- } |
- catch (e) |
- { |
- // if the window was closed (reloaded) we end up with dead object reference |
- // https://bugzilla.mozilla.org/show_bug.cgi?id=695480 |
- // just ignore this case |
- } |
- previewStyle = null; |
- } |
+function togglePreview(preview, forgetNode) |
+{ |
+ Services.mm.broadcastAsyncMessage("ElemHideHelper:Preview", { |
+ nodeID: nodeID, |
+ stylesheetData: preview ? stylesheetData : null, |
+ forgetNode: !!forgetNode |
+ }); |
} |
function changeDomain(node) { |
domainData.selected = node.getAttribute("value"); |
updateExpression(); |
} |
function toggleAttr(node) { |