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

Side by Side Diff: chrome/content/actor.jsm

Issue 29322778: Issue 2816 - Partial fix for EHH button in inspector tool, preview functionality still broken (Closed)
Patch Set: Preemptively fixed some nits and compatibility info Created July 29, 2015, 12:41 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | chrome/content/composer.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * This Source Code is subject to the terms of the Mozilla Public License
3 * version 2.0 (the "License"). You can obtain a copy of the License at
4 * http://mozilla.org/MPL/2.0/.
5 */
6
7 let EXPORTED_SYMBOLS = ["shutdown", "getNodeInfo"];
8
9 const Ci = Components.interfaces;
10 const Cu = Components.utils;
11
12 let {console} = Cu.import("resource://gre/modules/devtools/Console.jsm", {});
13 let {DebuggerServer} = Cu.import("resource://gre/modules/devtools/dbg-server.jsm ", {});
14 let name = "elemhidehelper";
15 let actor = {
16 constructorFun: Actor,
17 constructorName: name,
18 name: name
19 };
20
21 DebuggerServer.addTabActor(actor, name);
22
23 let shutdown = (function()
24 {
25 let executed = false;
26 return function()
27 {
28 if (!executed)
29 DebuggerServer.removeTabActor(actor);
30 executed = true;
31 }
32 })();
33
34 function Actor(connection, tabActor)
35 {
36 }
37
38 Actor.prototype = {
39 requestTypes: {
40 nodeinfo: function(request, connection)
41 {
42 let nodeActor = connection.getActor(request.nodeActor);
43 if (!nodeActor || !nodeActor.rawNode ||
44 nodeActor.rawNode.nodeType != Ci.nsIDOMNode.ELEMENT_NODE)
45 {
46 return {};
47 }
48
49 return getNodeInfo(nodeActor.rawNode);
50 }
51 }
52 };
53
54 function getNodeInfo(node)
55 {
56 return {
57 host: node.ownerDocument.defaultView.location.hostname,
58 nodeData: getNodeData(node)
59 };
60 }
61
62 function getNodeData(node, parentNode)
63 {
64 if (!node)
65 return null;
66
67 let result = {};
68 result.tagName = {value: node.tagName, checked: false};
69
70 if (typeof parentNode != "undefined")
71 result.parentNode = parentNode;
72 else
73 result.parentNode = getNodeData(node.parentElement);
74
75 let prevSibling = node.previousElementSibling;
76 result.prevSibling = getNodeData(prevSibling, result.parentNode);
77
78 if (result.parentNode && !prevSibling)
79 result.firstChild = {checked: false};
80
81 let nextSibling = node.nextElementSibling;
82 if (result.parentNode && !nextSibling)
83 result.lastChild = {checked: false};
84
85 result.attributes = [];
86 for (let attribute of node.attributes)
87 {
88 let data = {
89 name: attribute.name,
90 value: attribute.value,
91 selected: attribute.value,
92 checked: false
93 };
94 if (data.name == "id" || data.name == "class")
95 result.attributes.unshift(data);
96 else
97 result.attributes.push(data);
98 }
99
100 if (result.attributes.length >= 2 && result.attributes[1].name == "id")
101 {
102 // Make sure ID attribute comes first
103 let tmp = result.attributes[1];
104 result.attributes[1] = result.attributes[0];
105 result.attributes[0] = tmp;
106 }
107
108 result.customCSS = {selected: "", checked: false};
109 return result;
110 }
OLDNEW
« no previous file with comments | « no previous file | chrome/content/composer.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld