blob: 7b0f12ea13956e47525ac77a7fe6168db4efa37e [file] [log] [blame]
(async function(testRunner) {
testRunner.log('This test checks that if style sheet is removed between two inspector launches it is not reported to frontend.');
var page = await testRunner.createPage();
var session = await page.createSession();
await session.evaluate(`
function createStyleSheet(textContent)
{
var styleElement = document.createElement('style');
styleElement.textContent = textContent;
document.head.appendChild(styleElement);
return styleElement;
}
window.styleElement1 = createStyleSheet('body.class1 { color: red; } \\n /*# sourceURL=foo.css */');
window.styleElement2 = createStyleSheet('body.class2 { color: green; } \\n /*# sourceURL=bar.css */');
`);
testRunner.log('\nRunning test');
testRunner.log('Opening front-end for the first time');
await runTest(session);
testRunner.log('Closing inspector.');
testRunner.log('\nRemoving style sheet.\n');
session.evaluate('Promise.resolve().then(() => { document.head.removeChild(styleElement1); document.body.offsetWidth; })');
await session.disconnect();
testRunner.log('Reopening inspector.');
session = await page.createSession();
await session.evaluateAsync('new Promise(f => setTimeout(f, 0))');
testRunner.log('Running test');
testRunner.log('Opening front-end second time');
await runTest(session);
testRunner.completeTest();
async function runTest(session) {
var headersAdded = [];
session.protocol.CSS.onStyleSheetAdded(response => headersAdded.push(response.params.header));
var headersRemoved = [];
session.protocol.CSS.onStyleSheetRemoved(response => headersRemoved.push(response.params.styleSheetId));
testRunner.log('Enabling CSS domain.');
session.protocol.DOM.enable();
await session.protocol.CSS.enable();
var headers = {};
headersAdded.sort((a, b) => a.sourceURL.localeCompare(b.sourceURL));
for (var header of headersAdded) {
headers[header.styleSheetId] = header.sourceURL;
testRunner.log(' - style sheet added: ' + header.sourceURL);
}
headersRemoved.sort();
for (var styleSheetId of headersRemoved)
testRunner.log(' - style sheet removed: ' + headers[styleSheetId]);
}
})