mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-20 16:55:40 +00:00
f9f5914039
# ignore-this-changeset Differential Revision: https://phabricator.services.mozilla.com/D36041 --HG-- extra : source : 96b3895a3b2aa2fcb064c85ec5857b7216884556
103 lines
2.8 KiB
JavaScript
103 lines
2.8 KiB
JavaScript
// Bug 356571 - loadOneOrMoreURIs gives up if one of the URLs has an unknown protocol
|
|
|
|
var Cm = Components.manager;
|
|
|
|
// Set to true when docShell alerts for unknown protocol error
|
|
var didFail = false;
|
|
|
|
// Override Alert to avoid blocking the test due to unknown protocol error
|
|
const kPromptServiceUUID = "{6cc9c9fe-bc0b-432b-a410-253ef8bcc699}";
|
|
const kPromptServiceContractID = "@mozilla.org/embedcomp/prompt-service;1";
|
|
|
|
// Save original prompt service factory
|
|
const kPromptServiceFactory = Cm.getClassObject(
|
|
Cc[kPromptServiceContractID],
|
|
Ci.nsIFactory
|
|
);
|
|
|
|
var fakePromptServiceFactory = {
|
|
createInstance(aOuter, aIid) {
|
|
if (aOuter != null) {
|
|
throw Cr.NS_ERROR_NO_AGGREGATION;
|
|
}
|
|
return promptService.QueryInterface(aIid);
|
|
},
|
|
};
|
|
|
|
var promptService = {
|
|
QueryInterface: ChromeUtils.generateQI([Ci.nsIPromptService]),
|
|
alert() {
|
|
didFail = true;
|
|
},
|
|
};
|
|
|
|
/* FIXME
|
|
Cm.QueryInterface(Ci.nsIComponentRegistrar)
|
|
.registerFactory(Components.ID(kPromptServiceUUID), "Prompt Service",
|
|
kPromptServiceContractID, fakePromptServiceFactory);
|
|
*/
|
|
|
|
const kCompleteState =
|
|
Ci.nsIWebProgressListener.STATE_STOP +
|
|
Ci.nsIWebProgressListener.STATE_IS_NETWORK;
|
|
|
|
const kDummyPage =
|
|
"http://example.org/browser/browser/base/content/test/general/dummy_page.html";
|
|
const kURIs = ["bad://www.mozilla.org/", kDummyPage, kDummyPage];
|
|
|
|
var gProgressListener = {
|
|
_runCount: 0,
|
|
onStateChange(aBrowser, aWebProgress, aRequest, aStateFlags, aStatus) {
|
|
if ((aStateFlags & kCompleteState) == kCompleteState) {
|
|
if (++this._runCount != kURIs.length) {
|
|
return;
|
|
}
|
|
// Check we failed on unknown protocol (received an alert from docShell)
|
|
ok(didFail, "Correctly failed on unknown protocol");
|
|
// Check we opened all tabs
|
|
ok(
|
|
gBrowser.tabs.length == kURIs.length,
|
|
"Correctly opened all expected tabs"
|
|
);
|
|
finishTest();
|
|
}
|
|
},
|
|
};
|
|
|
|
function test() {
|
|
todo(false, "temp. disabled");
|
|
/* FIXME */
|
|
/*
|
|
waitForExplicitFinish();
|
|
// Wait for all tabs to finish loading
|
|
gBrowser.addTabsProgressListener(gProgressListener);
|
|
loadOneOrMoreURIs(kURIs.join("|"));
|
|
*/
|
|
}
|
|
|
|
function finishTest() {
|
|
// Unregister the factory so we do not leak
|
|
Cm.QueryInterface(Ci.nsIComponentRegistrar).unregisterFactory(
|
|
Components.ID(kPromptServiceUUID),
|
|
fakePromptServiceFactory
|
|
);
|
|
|
|
// Restore the original factory
|
|
Cm.QueryInterface(Ci.nsIComponentRegistrar).registerFactory(
|
|
Components.ID(kPromptServiceUUID),
|
|
"Prompt Service",
|
|
kPromptServiceContractID,
|
|
kPromptServiceFactory
|
|
);
|
|
|
|
// Remove the listener
|
|
gBrowser.removeTabsProgressListener(gProgressListener);
|
|
|
|
// Close opened tabs
|
|
for (var i = gBrowser.tabs.length - 1; i > 0; i--) {
|
|
gBrowser.removeTab(gBrowser.tabs[i]);
|
|
}
|
|
|
|
finish();
|
|
}
|