blob: b50470071bc9ac2da351e4df48cd6b81d88d8610 [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(
`Verifies that CSSStyleSheetHeader.originalContentProvider() indeed returns original content.\n`);
await TestRunner.loadModule('elements_test_runner');
await TestRunner.showPanel('elements');
await TestRunner.loadHTML(`
<style>
div { color: red; }
/*# sourceURL=set-style.css */
</style>
<style>
div {}
/*# sourceURL=set-selector.css */
</style>
<style>
@media (all) { }
/*# sourceURL=set-media.css */
</style>
<style>
@keyframes animation { 100% { color: red; } }
/*# sourceURL=set-keyframe-key.css */
</style>
<style>
div {}
/*# sourceURL=add-rule.css */
</style>
<style>
div {}
/*# sourceURL=set-text.css */
</style>
<div id="inspected"></div>
`);
await ElementsTestRunner.selectNodeAndWaitForStylesPromise('inspected');
TestRunner.addSniffer(SDK.CSSModel.prototype, '_originalContentRequestedForTest', onOriginalContentRequested, true);
function onOriginalContentRequested(header) {
TestRunner.addResult('original content loaded for header: ' + header.sourceURL);
}
var headers = TestRunner.cssModel.styleSheetHeaders();
TestRunner.runTestSuite([
function testSetStyle(next) {
var header = headers.find(header => header.sourceURL.endsWith('set-style.css'));
TestRunner.cssModel.setStyleText(header.id, new TextUtils.TextRange(1, 5, 1, 18), 'EDITED: EDITED', true)
.then(success => onEdit(header, success))
.then(next);
},
function testSetSelector(next) {
var header = headers.find(header => header.sourceURL.endsWith('set-selector.css'));
TestRunner.cssModel.setSelectorText(header.id, new TextUtils.TextRange(1, 0, 1, 3), 'EDITED')
.then(success => onEdit(header, success))
.then(next);
},
function testSetMedia(next) {
var header = headers.find(header => header.sourceURL.endsWith('set-media.css'));
TestRunner.cssModel.setMediaText(header.id, new TextUtils.TextRange(1, 7, 1, 12), 'EDITED')
.then(success => onEdit(header, success))
.then(next);
},
function testSetKeyframeKey(next) {
var header = headers.find(header => header.sourceURL.endsWith('set-keyframe-key.css'));
TestRunner.cssModel.setKeyframeKey(header.id, new TextUtils.TextRange(1, 23, 1, 27), 'from')
.then(success => onEdit(header, success))
.then(next);
},
function testAddRule(next) {
var header = headers.find(header => header.sourceURL.endsWith('add-rule.css'));
TestRunner.cssModel.addRule(header.id, 'EDITED {}\n', new TextUtils.TextRange(1, 0, 1, 0))
.then(success => onEdit(header, success))
.then(next);
},
function testSetStyleSheetText(next) {
var header = headers.find(header => header.sourceURL.endsWith('set-text.css'));
TestRunner.cssModel.setStyleSheetText(header.id, 'EDITED {}', true)
.then(success => onEdit(header, success))
.then(next);
},
]);
function onEdit(header, success) {
if (success !== null && !success) {
TestRunner.addResult('Failed to run edit operation.');
TestRunner.completeTest();
return;
}
var contents = [
header.originalContentProvider().requestContent(),
header.requestContent(),
];
return Promise.all(contents).then(onContents);
}
function onContents(contents) {
TestRunner.addResult('== Original ==');
TestRunner.addResult(contents[0].content.trim());
TestRunner.addResult('== Current ==');
TestRunner.addResult(contents[1].content.trim());
}
})();