mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1177013 - test_cpows.xul test for CPOW cancelation (r=dvander)
This commit is contained in:
parent
b446664f65
commit
60892ee16e
@ -17,7 +17,9 @@ const Cu = Components.utils;
|
||||
sync_test,
|
||||
async_test,
|
||||
rpc_test,
|
||||
lifetime_test
|
||||
lifetime_test,
|
||||
cancel_test,
|
||||
cancel_test2,
|
||||
];
|
||||
|
||||
function go() {
|
||||
@ -266,3 +268,72 @@ function lifetime_test(finish)
|
||||
sendRpcMessage("cpows:lifetime_test_2");
|
||||
});
|
||||
}
|
||||
|
||||
function cancel_test(finish)
|
||||
{
|
||||
if (!is_remote) {
|
||||
// No point in doing this in single-process mode.
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
||||
let fin1 = false, fin2 = false;
|
||||
|
||||
// CPOW from the parent runs f. When it sends a sync message, the
|
||||
// CPOW is canceled. The parent starts running again immediately
|
||||
// after the CPOW is canceled; f also continues running.
|
||||
function f() {
|
||||
let res = sendSyncMessage("cpows:cancel_sync_message");
|
||||
ok(res[0] == 12, "cancel_sync_message result correct");
|
||||
fin1 = true;
|
||||
if (fin1 && fin2) finish();
|
||||
}
|
||||
|
||||
sendAsyncMessage("cpows:cancel_test", null, {f: f});
|
||||
addMessageListener("cpows:cancel_test_done", msg => {
|
||||
fin2 = true;
|
||||
if (fin1 && fin2) finish();
|
||||
});
|
||||
}
|
||||
|
||||
function cancel_test2(finish)
|
||||
{
|
||||
if (!is_remote) {
|
||||
// No point in doing this in single-process mode.
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
||||
let fin1 = false, fin2 = false;
|
||||
|
||||
// CPOW from the parent runs f. When it does a sync XHR, the
|
||||
// CPOW is canceled. The parent starts running again immediately
|
||||
// after the CPOW is canceled; f also continues running.
|
||||
function f() {
|
||||
let req = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].
|
||||
createInstance(Components.interfaces.nsIXMLHttpRequest);
|
||||
let fin = false;
|
||||
let reqListener = () => {
|
||||
if (req.readyState != req.DONE) {
|
||||
return;
|
||||
}
|
||||
ok(req.status == 200, "XHR succeeded");
|
||||
fin = true;
|
||||
};
|
||||
|
||||
req.onload = reqListener;
|
||||
req.open("get", "http://example.com", false);
|
||||
req.send(null);
|
||||
|
||||
ok(fin == true, "XHR happened");
|
||||
|
||||
fin1 = true;
|
||||
if (fin1 && fin2) finish();
|
||||
}
|
||||
|
||||
sendAsyncMessage("cpows:cancel_test2", null, {f: f});
|
||||
addMessageListener("cpows:cancel_test2_done", msg => {
|
||||
fin2 = true;
|
||||
if (fin1 && fin2) finish();
|
||||
});
|
||||
}
|
||||
|
@ -364,6 +364,32 @@
|
||||
});
|
||||
}
|
||||
|
||||
function recvCancelTest(msg) {
|
||||
let failed = false;
|
||||
try {
|
||||
msg.objects.f();
|
||||
} catch (e if /cross-process JS call failed/.test(String(e))) {
|
||||
failed = true;
|
||||
}
|
||||
ok(failed, "CPOW should fail due to cancelation");
|
||||
msg.target.messageManager.sendAsyncMessage("cpows:cancel_test_done");
|
||||
}
|
||||
|
||||
function recvCancelSyncMessage() {
|
||||
return 12;
|
||||
}
|
||||
|
||||
function recvCancelTest2(msg) {
|
||||
let failed = false;
|
||||
try {
|
||||
msg.objects.f();
|
||||
} catch (e if /cross-process JS call failed/.test(String(e))) {
|
||||
failed = true;
|
||||
}
|
||||
ok(failed, "CPOW should fail due to cancelation");
|
||||
msg.target.messageManager.sendAsyncMessage("cpows:cancel_test2_done");
|
||||
}
|
||||
|
||||
function run_tests(type) {
|
||||
info("Running tests: " + type);
|
||||
var node = document.getElementById('cpowbrowser_' + type);
|
||||
@ -400,6 +426,9 @@
|
||||
mm.addMessageListener("cpows:postmessage_test", recvPostMessageTest);
|
||||
mm.addMessageListener("cpows:lifetime_test_1", recvLifetimeTest1);
|
||||
mm.addMessageListener("cpows:lifetime_test_2", recvLifetimeTest2);
|
||||
mm.addMessageListener("cpows:cancel_test", recvCancelTest);
|
||||
mm.addMessageListener("cpows:cancel_sync_message", recvCancelSyncMessage);
|
||||
mm.addMessageListener("cpows:cancel_test2", recvCancelTest2);
|
||||
mm.loadFrameScript("chrome://mochitests/content/chrome/dom/base/test/chrome/cpows_child.js", true);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user