blob: c0a0851a6104d7a6c73ea3d9fd11282e0df5df0d [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
(async function() {
TestRunner.addResult(`Tests asynchronous call stacks for XHRs.\n`);
await TestRunner.loadModule('sources_test_runner');
await TestRunner.showPanel('sources');
await TestRunner.evaluateInPagePromise(`
var xhrCount = 0;
function testFunction()
{
setTimeout(timeout, 0);
}
function timeout()
{
sendSyncXHR();
sendAsyncXHR();
}
function sendAsyncXHR() { sendXHR(true); }
function sendSyncXHR() { sendXHR(false); }
function sendXHR(async)
{
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function()
{
if (xhr.readyState == 4) {
xhr.onreadystatechange = null;
debugger;
}
};
function downloadEnd1()
{
xhr.removeEventListener("loadend", downloadEnd1, false);
debugger;
}
function downloadEnd2()
{
xhr.removeEventListener("loadend", downloadEnd2, true);
debugger;
}
function uploadEnd()
{
xhr.upload.removeEventListener("loadend", uploadEnd, false);
debugger;
}
function downloadProgress()
{
debugger;
xhr.removeEventListener("progress", downloadProgress, false);
}
function uploadProgress()
{
debugger;
xhr.upload.removeEventListener("progress", uploadProgress, false);
}
xhr.addEventListener("loadend", downloadEnd1, false);
xhr.addEventListener("loadend", downloadEnd2, true);
if (async) {
xhr.upload.addEventListener("loadend", uploadEnd, false);
xhr.addEventListener("progress", downloadProgress, false);
xhr.upload.addEventListener("progress", uploadProgress, false);
}
xhr.open("POST", "/foo?count=" + (++xhrCount) + "&now=" + Date.now(), async);
xhr.send(String(sendXHR));
}
`);
var totalDebuggerStatements = 9;
SourcesTestRunner.runAsyncCallStacksTest(totalDebuggerStatements);
})();