blob: e6f6b9411020c07e8d49949a0972e2b094cb5d65 [file] [log] [blame]
// Copyright 2018 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('The \'disable cache\' flag must affect on the certificate fetch request.\n');
const outerUrl =
'https://127.0.0.1:8443/loading/sxg/resources/sxg-location.sxg';
const certUrl =
'https://127.0.0.1:8443/loading/sxg/resources/127.0.0.1.sxg.pem.cbor';
const innerUrl = 'https://127.0.0.1:8443/loading/sxg/resources/inner-url.html';
await TestRunner.loadModule('network_test_runner');
await TestRunner.showPanel('network');
await TestRunner.NetworkAgent.setCacheDisabled(false);
// Load the test signed exchange first, to cache the certificate file.
await TestRunner.addIframe(outerUrl);
SDK.NetworkLog.instance().reset();
await TestRunner.NetworkAgent.setCacheDisabled(true);
await TestRunner.addIframe(outerUrl + '?iframe-1');
await addPrefetchAndWait(outerUrl + '?prefetch-1', innerUrl);
await TestRunner.NetworkAgent.setCacheDisabled(false);
await TestRunner.addIframe(outerUrl + '?iframe-2');
await addPrefetchAndWait(outerUrl + '?prefetch-2', innerUrl);
for (var request of SDK.NetworkLog.instance().requests()) {
if (request.url() != certUrl)
continue;
TestRunner.addResult(`* ${request.url()}`);
TestRunner.addResult(` cached: ${request.cached()}`);
}
TestRunner.completeTest();
async function addPrefetchAndWait(prefetchUrl, waitUrl) {
const promise = new Promise(resolve => {
TestRunner.addSniffer(SDK.NetworkDispatcher.prototype, 'loadingFinished', loadingFinished);
function loadingFinished(requestId, finishTime, encodedDataLength) {
var request = SDK.NetworkLog.instance().requestByManagerAndId(TestRunner.networkManager, requestId);
if (request.url() == waitUrl) {
resolve();
} else {
TestRunner.addSniffer(SDK.NetworkDispatcher.prototype, 'loadingFinished', loadingFinished);
}
}
});
TestRunner.evaluateInPage(`
(function () {
const link = document.createElement('link');
link.rel = 'prefetch';
link.href = '${prefetchUrl}';
document.body.appendChild(link);
})()
`);
await promise;
}
})();