mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-18 07:45:30 +00:00
Bug 1602318 - Change search engine tests to listen for, and block loads in the parent. r=kmag
Differential Revision: https://phabricator.services.mozilla.com/D67098
This commit is contained in:
parent
6e36d339b4
commit
d84621ec50
@ -185,15 +185,17 @@ async function testSearchEngine(engineDetails) {
|
||||
await test.preTest(tab);
|
||||
}
|
||||
|
||||
let stateChangePromise = promiseStateChangeURI();
|
||||
let promises = [
|
||||
BrowserTestUtils.waitForDocLoadAndStopIt(
|
||||
"https://www.google.com/search?client=" + test.code + "&q=foo",
|
||||
tab
|
||||
),
|
||||
BrowserTestUtils.browserStopped(tab.linkedBrowser, null, true),
|
||||
];
|
||||
|
||||
await test.run(tab);
|
||||
|
||||
let receivedURI = await stateChangePromise;
|
||||
|
||||
let receivedURLParams = new URLSearchParams(receivedURI.split("?")[1]);
|
||||
|
||||
Assert.equal(receivedURLParams.get("client"), test.code);
|
||||
await Promise.all(promises);
|
||||
|
||||
if (test.postTest) {
|
||||
await test.postTest(tab);
|
||||
|
@ -189,13 +189,14 @@ async function testSearchEngine(engineDetails) {
|
||||
await test.preTest(tab);
|
||||
}
|
||||
|
||||
let stateChangePromise = promiseStateChangeURI();
|
||||
let promises = [
|
||||
BrowserTestUtils.waitForDocLoadAndStopIt(test.searchURL, tab),
|
||||
BrowserTestUtils.browserStopped(tab.linkedBrowser, null, true),
|
||||
];
|
||||
|
||||
await test.run(tab);
|
||||
|
||||
let receivedURI = await stateChangePromise;
|
||||
|
||||
Assert.equal(receivedURI, test.searchURL);
|
||||
await Promise.all(promises);
|
||||
}
|
||||
|
||||
engine.alias = undefined;
|
||||
|
@ -109,73 +109,6 @@ async function promiseNewEngine(basename, options = {}) {
|
||||
return engine;
|
||||
}
|
||||
|
||||
let promiseStateChangeFrameScript =
|
||||
"data:," +
|
||||
encodeURIComponent(
|
||||
`(${() => {
|
||||
/* globals docShell, sendAsyncMessage */
|
||||
|
||||
const global = this;
|
||||
const LISTENER = Symbol("listener");
|
||||
let listener = {
|
||||
QueryInterface: ChromeUtils.generateQI([
|
||||
"nsISupportsWeakReference",
|
||||
"nsIWebProgressListener",
|
||||
]),
|
||||
|
||||
onStateChange: function onStateChange(webProgress, req, flags, status) {
|
||||
// Only care about top-level document starts
|
||||
if (
|
||||
!webProgress.isTopLevel ||
|
||||
!(flags & Ci.nsIWebProgressListener.STATE_START)
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
req.QueryInterface(Ci.nsIChannel);
|
||||
let spec = req.originalURI.spec;
|
||||
if (spec == "about:blank") {
|
||||
return;
|
||||
}
|
||||
|
||||
delete global[LISTENER];
|
||||
docShell.removeProgressListener(listener);
|
||||
|
||||
req.cancel(Cr.NS_ERROR_FAILURE);
|
||||
|
||||
sendAsyncMessage("PromiseStateChange::StateChanged", spec);
|
||||
},
|
||||
};
|
||||
|
||||
// Make sure the weak reference stays alive.
|
||||
global[LISTENER] = listener;
|
||||
|
||||
docShell.QueryInterface(Ci.nsIWebProgress);
|
||||
docShell.addProgressListener(
|
||||
listener,
|
||||
Ci.nsIWebProgress.NOTIFY_STATE_DOCUMENT
|
||||
);
|
||||
}})()`
|
||||
);
|
||||
|
||||
function promiseStateChangeURI() {
|
||||
const MSG = "PromiseStateChange::StateChanged";
|
||||
|
||||
return new Promise(resolve => {
|
||||
let mm = window.getGroupMessageManager("browsers");
|
||||
mm.loadFrameScript(promiseStateChangeFrameScript, true);
|
||||
|
||||
let listener = msg => {
|
||||
mm.removeMessageListener(MSG, listener);
|
||||
mm.removeDelayedFrameScript(promiseStateChangeFrameScript);
|
||||
|
||||
resolve(msg.data);
|
||||
};
|
||||
|
||||
mm.addMessageListener(MSG, listener);
|
||||
});
|
||||
}
|
||||
|
||||
// Get an array of the one-off buttons.
|
||||
function getOneOffs() {
|
||||
let oneOffs = [];
|
||||
|
Loading…
Reference in New Issue
Block a user