blob: 5979c4adaa09dcc470a18591824e0b9fe500cc69 [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 requests loaded from disk cache have correct timing\n`);
await TestRunner.loadModule('network_test_runner');
await TestRunner.loadModule('console_test_runner');
await TestRunner.showPanel('network');
await TestRunner.addScriptTag('resources/gc.js');
await TestRunner.evaluateInPagePromise(`
var scriptElement;
function loadScript()
{
scriptElement = document.createElement("script");
scriptElement.src = "resources/cached-script.php";
document.head.appendChild(scriptElement);
}
function unloadScript()
{
scriptElement.parentElement.removeChild(scriptElement);
}
`);
var timeZero = 0;
NetworkTestRunner.recordNetwork();
TestRunner.NetworkAgent.setCacheDisabled(true).then(step1);
function step1() {
ConsoleTestRunner.addConsoleSniffer(step2);
TestRunner.evaluateInPage('loadScript()');
}
function step2(event) {
TestRunner.evaluateInPage('unloadScript()', step3);
}
function step3() {
TestRunner.evaluateInPage('gc()', step4);
}
function step4() {
TestRunner.NetworkAgent.setCacheDisabled(true).then(step5);
}
function step5() {
var request = NetworkTestRunner.networkRequests().pop();
TestRunner.addResult('URL:' + request.url());
TestRunner.addResult('from memory cache: ' + !!request._fromMemoryCache);
TestRunner.addResult('from disk cache: ' + !!request._fromDiskCache);
TestRunner.addResult('has timing: ' + !!request._timing);
TestRunner.addResult('');
timeZero = request._timing.requestTime;
TestRunner.NetworkAgent.setCacheDisabled(false).then(step6);
}
function step6() {
ConsoleTestRunner.addConsoleSniffer(step7);
TestRunner.evaluateInPage('loadScript()');
}
function step7() {
var request = NetworkTestRunner.networkRequests().pop();
TestRunner.addResult('URL:' + request.url());
TestRunner.addResult('from memory cache: ' + !!request._fromMemoryCache);
TestRunner.addResult('from disk cache: ' + !!request._fromDiskCache);
TestRunner.addResult('has timing: ' + !!request._timing);
TestRunner.addResult('');
var time = request._timing.requestTime;
TestRunner.addResult('Second request starts later than first: ' + (time > timeZero));
TestRunner.completeTest();
}
})();