Bug 814264 - Restore the ability to call openUILink without an event parameter.

r=gavin
This commit is contained in:
Marco Bonardo 2012-11-27 17:06:17 +01:00
parent 59e89330b2
commit fd391c1a50
4 changed files with 59 additions and 22 deletions

View File

@ -272,6 +272,7 @@ _BROWSER_FILES = \
browser_bug812562.js \
blockPluginVulnerableUpdatable.xml \
blockPluginVulnerableNoUpdate.xml \
browser_utilityOverlay.js \
browser_social.js \
browser_social_toolbar.js \
browser_social_shareButton.js \

View File

@ -1,35 +1,62 @@
var gTestTab;
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
function test() {
const gTests = [
test_getTopWin,
test_getBoolPref,
test_openNewTabWith,
test_openUILink
];
function test () {
waitForExplicitFinish();
executeSoon(runNextTest);
}
function runNextTest() {
if (gTests.length) {
let testFun = gTests.shift();
info("Running " + testFun.name);
testFun()
}
else {
finish();
}
}
function test_getTopWin() {
is(getTopWin(), window, "got top window");
runNextTest();
}
function test_getBoolPref() {
is(getBoolPref("browser.search.openintab", false), false, "getBoolPref");
is(getBoolPref("this.pref.doesnt.exist", true), true, "getBoolPref fallback");
is(getBoolPref("this.pref.doesnt.exist", false), false, "getBoolPref fallback #2");
runNextTest();
}
gTestTab = openNewTabWith("http://example.com");
gBrowser.selectedTab = gTestTab;
gTestTab.linkedBrowser.addEventListener("load", function () {
gTestTab.linkedBrowser.removeEventListener("load", arguments.callee, true);
is(gTestTab.linkedBrowser.currentURI.spec, "http://example.com/", "example.com loaded");
test_openUILink();
function test_openNewTabWith() {
openNewTabWith("http://example.com/");
let tab = gBrowser.selectedTab = gBrowser.tabs[1];
tab.linkedBrowser.addEventListener("load", function onLoad(event) {
tab.linkedBrowser.removeEventListener("load", onLoad, true);
is(tab.linkedBrowser.currentURI.spec, "http://example.com/", "example.com loaded");
gBrowser.removeCurrentTab();
runNextTest();
}, true);
}
function test_openUILink() {
gTestTab.linkedBrowser.addEventListener("load", function () {
gTestTab.linkedBrowser.removeEventListener("load", arguments.callee, true);
is(gTestTab.linkedBrowser.currentURI.spec, "http://example.org/", "example.org loaded");
gBrowser.removeTab(gTestTab);
finish();
let tab = gBrowser.selectedTab = gBrowser.addTab("about:blank");
tab.linkedBrowser.addEventListener("load", function onLoad(event) {
tab.linkedBrowser.removeEventListener("load", onLoad, true);
is(tab.linkedBrowser.currentURI.spec, "http://example.org/", "example.org loaded");
gBrowser.removeCurrentTab();
runNextTest();
}, true);
//openUILink(url, e, ignoreButton, ignoreAlt, allowKeywordFixup, postData, referrerUrl);
openUILink("http://example.org"); // defaults to "current"
openUILink("http://example.org/"); // defaults to "current"
}

View File

@ -329,7 +329,9 @@
loadCurrent();
} else {
this.handleRevert();
let params = { allowThirdPartyFixup: true, postData: postData };
let params = { allowThirdPartyFixup: true,
postData: postData,
initiatingDoc: document };
if (!this.valueIsTyped)
params.isUTF8 = true;
openUILinkIn(url, where, params);

View File

@ -106,7 +106,7 @@ function openUILink(url, event, aIgnoreButton, aIgnoreAlt, aAllowThirdPartyFixup
allowThirdPartyFixup: aAllowThirdPartyFixup,
postData: aPostData,
referrerURI: aReferrerURI,
initiatingDoc: event.target.ownerDocument
initiatingDoc: event ? event.target.ownerDocument : null
};
}
@ -224,6 +224,13 @@ function openLinkIn(url, where, params) {
var aInitiatingDoc = params.initiatingDoc;
if (where == "save") {
if (!aInitiatingDoc) {
Components.utils.reportError(
"OpenLinkIn has been invoked without an initiating document.\n" +
"This may be caused by an add-on miscalling into it, or overriding " +
"some utilityOverlay.js methods. See bug 814264 for details.");
return;
}
saveURL(url, null, null, true, null, aReferrerURI, aInitiatingDoc);
return;
}