|
1 /* Any copyright is dedicated to the Public Domain. |
|
2 * http://creativecommons.org/publicdomain/zero/1.0/ */ |
|
3 |
|
4 Components.utils.import("resource://gre/modules/PlacesUtils.jsm"); |
|
5 Components.utils.import("resource://gre/modules/NetUtil.jsm"); |
|
6 |
|
7 function test() { |
|
8 waitForExplicitFinish(); |
|
9 |
|
10 // Setup a phony handler to ensure the app pane will be populated. |
|
11 var handler = Cc["@mozilla.org/uriloader/web-handler-app;1"]. |
|
12 createInstance(Ci.nsIWebHandlerApp); |
|
13 handler.name = "App pane alive test"; |
|
14 handler.uriTemplate = "http://test.mozilla.org/%s"; |
|
15 |
|
16 var extps = Cc["@mozilla.org/uriloader/external-protocol-service;1"]. |
|
17 getService(Ci.nsIExternalProtocolService); |
|
18 var info = extps.getProtocolHandlerInfo("apppanetest"); |
|
19 info.possibleApplicationHandlers.appendElement(handler, false); |
|
20 |
|
21 var hserv = Cc["@mozilla.org/uriloader/handler-service;1"]. |
|
22 getService(Ci.nsIHandlerService); |
|
23 hserv.store(info); |
|
24 |
|
25 function observer(win, topic, data) { |
|
26 if (topic != "app-handler-pane-loaded") |
|
27 return; |
|
28 |
|
29 Services.obs.removeObserver(observer, "app-handler-pane-loaded"); |
|
30 runTest(win); |
|
31 } |
|
32 Services.obs.addObserver(observer, "app-handler-pane-loaded", false); |
|
33 |
|
34 gBrowser.selectedTab = gBrowser.addTab("about:preferences"); |
|
35 } |
|
36 |
|
37 function runTest(win) { |
|
38 win.gotoPref("applications"); |
|
39 var sel = win.history.state; |
|
40 ok(sel == "applications", "Specified pane was opened"); |
|
41 |
|
42 var rbox = win.document.getElementById("handlersView"); |
|
43 ok(rbox, "handlersView is present"); |
|
44 |
|
45 var items = rbox && rbox.getElementsByTagName("richlistitem"); |
|
46 ok(items && items.length > 0, "App handler list populated"); |
|
47 |
|
48 var handlerAdded = false; |
|
49 for (let i = 0; i < items.length; i++) { |
|
50 if (items[i].getAttribute('type') == "apppanetest") |
|
51 handlerAdded = true; |
|
52 } |
|
53 ok(handlerAdded, "apppanetest protocol handler was successfully added"); |
|
54 |
|
55 gBrowser.removeCurrentTab(); |
|
56 win.close(); |
|
57 finish(); |
|
58 } |