Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: lib/child/nodeInfo.js

Issue 29362609: Issue 2879 - Restructure existing process script, split it up into multiple modules (Closed) Base URL: https://hg.adblockplus.org/elemhidehelper
Patch Set: Fixed line length Created Dec. 1, 2016, 9:39 a.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « lib/child/main.js ('k') | lib/child/preview.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/child/nodeInfo.js
===================================================================
copy from chrome/content/processScript.js
copy to lib/child/nodeInfo.js
--- a/chrome/content/processScript.js
+++ b/lib/child/nodeInfo.js
@@ -1,124 +1,65 @@
/*
* This Source Code is subject to the terms of the Mozilla Public License
* version 2.0 (the "License"). You can obtain a copy of the License at
* http://mozilla.org/MPL/2.0/.
*/
-const Ci = Components.interfaces;
-const Cu = Components.utils;
-
-let console;
-try
-{
- // Gecko 44+
- ({console} = Cu.import("resource://gre/modules/Console.jsm", {}));
-}
-catch (e)
-{
- ({console} = Cu.import("resource://gre/modules/devtools/Console.jsm", {}));
-}
-
-let DebuggerServer;
-try
-{
- // Firefox 44+
- let {require} = Cu.import("resource://devtools/shared/Loader.jsm", {});
- ({DebuggerServer} = require("devtools/server/main"));
-}
-catch (e)
-{
- ({DebuggerServer} = Cu.import("resource://gre/modules/devtools/dbg-server.jsm", {}));
-}
+"use strict";
let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
+let messageManager = require("messageManager");
+
let processID = Services.appinfo.processID;
let maxNodeID = 0;
let nodes = new Map();
-let name = "elemhidehelper";
-let actor = {
- constructorFun: Actor,
- constructorName: name,
- name: name
-};
-
-addMessageListener("ElemHideHelper:Shutdown", onShutdown);
-addMessageListener("ElemHideHelper:GetNodeInfo", onGetNodeInfo);
-addMessageListener("ElemHideHelper:Preview", onTogglePreview);
-
-DebuggerServer.addTabActor(actor, name);
-
-function onShutdown()
+messageManager.addMessageListener("ElemHideHelper:GetNodeInfo", onGetNodeInfo);
+onShutdown.add(() =>
{
- removeMessageListener("ElemHideHelper:Shutdown", onShutdown);
- removeMessageListener("ElemHideHelper:GetNodeInfo", onGetNodeInfo);
- removeMessageListener("ElemHideHelper:Preview", onTogglePreview);
-
- try
- {
- DebuggerServer.removeTabActor(actor);
- }
- catch (e)
- {
- // The call above will throw in the content process despite succeeding,
- // see https://bugzilla.mozilla.org/show_bug.cgi?id=1189780.
- Cu.reportError(e);
- }
-}
+ messageManager.removeMessageListener("ElemHideHelper:GetNodeInfo",
+ onGetNodeInfo);
+});
function onGetNodeInfo(message)
{
if (Cu.isCrossProcessWrapper(message.objects.element))
return;
let nodeInfo = getNodeInfo(message.objects.element);
nodeInfo.messageId = message.data;
- sendAsyncMessage("ElemHideHelper:GetNodeInfo:Response", nodeInfo);
-}
-
-function onTogglePreview(message)
-{
- togglePreview(message.data.nodeID, message.data.stylesheetData);
- if (message.data.forgetNode)
- forgetNode(message.data.nodeID);
+ messageManager.sendAsyncMessage("ElemHideHelper:GetNodeInfo:Response",
+ nodeInfo);
}
-function Actor(connection, tabActor)
-{
-}
-
-Actor.prototype = {
- requestTypes: {
- nodeinfo: function(request, connection)
- {
- let nodeActor = connection.getActor(request.nodeActor);
- return getNodeInfo(nodeActor ? nodeActor.rawNode: null);
- }
- }
-};
-
function getNodeInfo(node)
{
let nodeData = getNodeData(node);
if (nodeData)
{
let nodeID = processID + "-" + (++maxNodeID);
nodes.set(nodeID, {document: node.ownerDocument, style: null});
return {
host: node.ownerDocument.defaultView.location.hostname,
nodeData: nodeData,
nodeID: nodeID
};
}
return {};
}
+exports.getNodeInfo = getNodeInfo;
+
+function getNodeById(nodeId)
+{
+ return nodes.get(nodeId);
+}
+exports.getNodeById = getNodeById;
function getNodeData(node, parentNode)
{
if (!node || node.nodeType != Ci.nsIDOMNode.ELEMENT_NODE)
return null;
let result = {};
result.tagName = {value: node.tagName, checked: false};
@@ -160,47 +101,13 @@ function getNodeData(node, parentNode)
result.attributes[1] = result.attributes[0];
result.attributes[0] = tmp;
}
result.customCSS = {selected: "", checked: false};
return result;
}
-function togglePreview(nodeID, stylesheetData)
-{
- let context = nodes.get(nodeID);
- if (!context)
- return;
-
- if (stylesheetData)
- {
- if (!context.style || !context.style.parentNode)
- {
- context.style = context.document.createElementNS(
- "http://www.w3.org/1999/xhtml", "style");
- context.style.setAttribute("type", "text/css");
- context.document.documentElement.appendChild(context.style);
- }
- context.style.textContent = stylesheetData;
- }
- else
- {
- try
- {
- if (context.style && context.style.parentNode)
- context.style.parentNode.removeChild(context.style);
- context.style = null;
- }
- catch (e)
- {
- // If the window was closed (reloaded) we end up with a dead object
- // reference (https://bugzilla.mozilla.org/show_bug.cgi?id=695480). Just
- // forget this node then.
- forgetNode(nodeID);
- }
- }
-}
-
function forgetNode(nodeID)
{
nodes.delete(nodeID);
}
+exports.forgetNode = forgetNode;
« no previous file with comments | « lib/child/main.js ('k') | lib/child/preview.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld