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

Side by Side Diff: lib/main.js

Issue 8402021: Crawler frontend (Closed)
Patch Set: Created Sept. 21, 2012, 1:16 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
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 Cu.import("resource://gre/modules/Services.jsm");
8
9 let {Prefs} = require("prefs");
Wladimir Palant 2012/09/21 15:36:18 You aren't using prefs so you should remove that l
10 let {WindowObserver} = require("windowObserver");
11
12 let knownWindowTypes =
13 {
14 "navigator:browser": true,
15 "mail:3pane": true,
16 "mail:messageWindow": true,
Wladimir Palant 2012/09/21 15:36:18 I think that you only know navigator:browser - mea
17 __proto__: null
18 };
19
20 new WindowObserver({
21 applyToWindow: function(window)
22 {
23 let type = window.document.documentElement.getAttribute("windowtype");
24 if (!(type in knownWindowTypes))
25 return;
26
27 window.addEventListener("popupshowing", popupShowingHandler, false);
28 window.addEventListener("popuphidden", popupHiddenHandler, false);
29 },
30
31 removeFromWindow: function(window)
32 {
33 let type = window.document.documentElement.getAttribute("windowtype");
34 if (!(type in knownWindowTypes))
35 return;
36
37 window.removeEventListener("popupshowing", popupShowingHandler, false);
38 window.removeEventListener("popuphidden", popupHiddenHandler, false);
39 }
40 });
41
42 function getMenuItem()
43 {
44 // Randomize URI to work around bug 719376
45 let stringBundle = Services.strings.createBundle("chrome://abpcrawler/locale/g lobal.properties?" + Math.random());
46 let result = [stringBundle.GetStringFromName("crawler.label")];
47
48 getMenuItem = function() result;
49 return getMenuItem();
50 }
51
52 function popupShowingHandler(event)
53 {
54 let popup = event.target;
55 if (!/^(abp-(?:toolbar|status|menuitem)-)popup$/.test(popup.id))
56 return;
57
58 popupHiddenHandler(event);
59
60 let [label] = getMenuItem();
61 let item = popup.ownerDocument.createElement("menuitem");
62 item.setAttribute("label", label);
63 item.setAttribute("class", "abpcrawler-item");
64
65 item.addEventListener("command", popupCommandHandler, false);
66
67 let insertBefore = null;
68 for (let child = popup.firstChild; child; child = child.nextSibling)
69 if (/-options$/.test(child.id))
70 insertBefore = child;
71 popup.insertBefore(item, insertBefore);
72 }
73
74 function popupHiddenHandler(event)
75 {
76 let popup = event.target;
77 if (!/^(abp-(?:toolbar|status|menuitem)-)popup$/.test(popup.id))
78 return;
79
80 let items = popup.getElementsByClassName("abpcrawler-item");
81 while (items.length)
82 items[0].parentNode.removeChild(items[0]);
83 }
84
85 function popupCommandHandler(event)
86 {
87 if (!("@adblockplus.org/abp/public;1" in Cc))
88 return;
89
90 let crawlerWnd = Services.wm.getMostRecentWindow("abpcrawler:crawl");
91 if (crawlerWnd)
92 crawlerWnd.focus();
93 else
94 event.target.ownerDocument.defaultView.openDialog("chrome://abpcrawler/conte nt/crawler.xul", "_blank", "chrome,centerscreen,resizable,dialog=no");
95 }
OLDNEW

Powered by Google App Engine
This is Rietveld