зеркало из https://github.com/mozilla/gecko-dev.git
46 строки
1.4 KiB
JavaScript
46 строки
1.4 KiB
JavaScript
/**
|
|
* Send HTTP requests and notify the parent about their channelId
|
|
*/
|
|
|
|
ChromeUtils.import("resource://gre/modules/NetUtil.jsm");
|
|
|
|
let shouldQuit = false;
|
|
|
|
function run_test() {
|
|
// keep the event loop busy and the test alive until a "finish" command
|
|
// is issued by parent
|
|
do_timeout(100, function keepAlive() {
|
|
if (!shouldQuit) {
|
|
do_timeout(100, keepAlive);
|
|
}
|
|
});
|
|
}
|
|
|
|
function makeRequest(uri) {
|
|
let requestChannel = NetUtil.newChannel({uri, loadUsingSystemPrincipal: true});
|
|
requestChannel.asyncOpen2(new ChannelListener(checkResponse, requestChannel));
|
|
requestChannel.QueryInterface(Ci.nsIHttpChannel);
|
|
dump(`Child opened request: ${uri}, channelId=${requestChannel.channelId}\n`);
|
|
}
|
|
|
|
function checkResponse(request, buffer, requestChannel) {
|
|
// notify the parent process about the original request channel
|
|
requestChannel.QueryInterface(Ci.nsIHttpChannel);
|
|
do_send_remote_message(`request:${requestChannel.channelId}`);
|
|
|
|
// the response channel can be different (if it was redirected)
|
|
let responseChannel = request.QueryInterface(Ci.nsIHttpChannel);
|
|
|
|
let uri = responseChannel.URI.spec;
|
|
let origUri = responseChannel.originalURI.spec;
|
|
let id = responseChannel.channelId;
|
|
dump(`Child got response to: ${uri} (orig=${origUri}), channelId=${id}\n`);
|
|
|
|
// notify the parent process about this channel's ID
|
|
do_send_remote_message(`response:${id}`);
|
|
}
|
|
|
|
function finish() {
|
|
shouldQuit = true;
|
|
}
|