browser_bug410900.js (1548B)
1 /* Any copyright is dedicated to the Public Domain. 2 * http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 function test() { 5 waitForExplicitFinish(); 6 7 // Setup a phony handler to ensure the app pane will be populated. 8 var handler = Cc["@mozilla.org/uriloader/web-handler-app;1"].createInstance( 9 Ci.nsIWebHandlerApp 10 ); 11 handler.name = "App pane alive test"; 12 handler.uriTemplate = "http://test.mozilla.org/%s"; 13 14 var extps = Cc[ 15 "@mozilla.org/uriloader/external-protocol-service;1" 16 ].getService(Ci.nsIExternalProtocolService); 17 var info = extps.getProtocolHandlerInfo("apppanetest"); 18 info.possibleApplicationHandlers.appendElement(handler); 19 20 var hserv = Cc["@mozilla.org/uriloader/handler-service;1"].getService( 21 Ci.nsIHandlerService 22 ); 23 hserv.store(info); 24 25 openPreferencesViaOpenPreferencesAPI("general", { leaveOpen: true }) 26 .then(() => gBrowser.selectedBrowser.contentWindow.promiseLoadHandlersList) 27 .then(() => runTest(gBrowser.selectedBrowser.contentWindow)); 28 } 29 30 function runTest(win) { 31 var rbox = win.document.getElementById("handlersView"); 32 ok(rbox, "handlersView is present"); 33 34 var items = rbox && rbox.getElementsByTagName("richlistitem"); 35 ok(items && !!items.length, "App handler list populated"); 36 37 var handlerAdded = false; 38 for (let i = 0; i < items.length; i++) { 39 if (items[i].getAttribute("type") == "apppanetest") { 40 handlerAdded = true; 41 } 42 } 43 ok(handlerAdded, "apppanetest protocol handler was successfully added"); 44 45 gBrowser.removeCurrentTab(); 46 finish(); 47 }