Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 // Bug 356571 - loadOneOrMoreURIs gives up if one of the URLs has an unknown protocol
3 const Cr = Components.results;
4 const Cm = Components.manager;
6 // Set to true when docShell alerts for unknown protocol error
7 var didFail = false;
9 // Override Alert to avoid blocking the test due to unknown protocol error
10 const kPromptServiceUUID = "{6cc9c9fe-bc0b-432b-a410-253ef8bcc699}";
11 const kPromptServiceContractID = "@mozilla.org/embedcomp/prompt-service;1";
13 // Save original prompt service factory
14 const kPromptServiceFactory = Cm.getClassObject(Cc[kPromptServiceContractID],
15 Ci.nsIFactory);
17 let fakePromptServiceFactory = {
18 createInstance: function(aOuter, aIid) {
19 if (aOuter != null)
20 throw Cr.NS_ERROR_NO_AGGREGATION;
21 return promptService.QueryInterface(aIid);
22 }
23 };
25 let promptService = {
26 QueryInterface: XPCOMUtils.generateQI([Ci.nsIPromptService]),
27 alert: function() {
28 didFail = true;
29 }
30 };
32 /* FIXME
33 Cm.QueryInterface(Ci.nsIComponentRegistrar)
34 .registerFactory(Components.ID(kPromptServiceUUID), "Prompt Service",
35 kPromptServiceContractID, fakePromptServiceFactory);
36 */
38 const kCompleteState = Ci.nsIWebProgressListener.STATE_STOP +
39 Ci.nsIWebProgressListener.STATE_IS_NETWORK;
41 const kDummyPage = "http://example.org/browser/browser/base/content/test/general/dummy_page.html";
42 const kURIs = [
43 "bad://www.mozilla.org/",
44 kDummyPage,
45 kDummyPage,
46 ];
48 var gProgressListener = {
49 _runCount: 0,
50 onStateChange: function (aBrowser, aWebProgress, aRequest, aStateFlags, aStatus) {
51 if ((aStateFlags & kCompleteState) == kCompleteState) {
52 if (++this._runCount != kURIs.length)
53 return;
54 // Check we failed on unknown protocol (received an alert from docShell)
55 ok(didFail, "Correctly failed on unknown protocol");
56 // Check we opened all tabs
57 ok(gBrowser.tabs.length == kURIs.length, "Correctly opened all expected tabs");
58 finishTest();
59 }
60 }
61 }
63 function test() {
64 todo(false, "temp. disabled");
65 return; /* FIXME */
66 waitForExplicitFinish();
67 // Wait for all tabs to finish loading
68 gBrowser.addTabsProgressListener(gProgressListener);
69 loadOneOrMoreURIs(kURIs.join("|"));
70 }
72 function finishTest() {
73 // Unregister the factory so we do not leak
74 Cm.QueryInterface(Ci.nsIComponentRegistrar)
75 .unregisterFactory(Components.ID(kPromptServiceUUID),
76 fakePromptServiceFactory);
78 // Restore the original factory
79 Cm.QueryInterface(Ci.nsIComponentRegistrar)
80 .registerFactory(Components.ID(kPromptServiceUUID), "Prompt Service",
81 kPromptServiceContractID, kPromptServiceFactory);
83 // Remove the listener
84 gBrowser.removeTabsProgressListener(gProgressListener);
86 // Close opened tabs
87 for (var i = gBrowser.tabs.length-1; i > 0; i--)
88 gBrowser.removeTab(gBrowser.tabs[i]);
90 finish();
91 }