blob: 936a9ba90528381e226a6480a960fc7c4eb4e704 [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 that style modification generates attribute updated event only when attribute is actually changed.\n`);
await TestRunner.loadModule('elements_test_runner');
await TestRunner.showPanel('elements');
await TestRunner.loadHTML(`
<div id="container">
<div id="node-set-new-value" style="color:red"></div>
<div id="node-set-same-value" style="color:red"></div>
</div>
`);
await TestRunner.evaluateInPagePromise(`
function testSetNewValue()
{
document.getElementById("node-set-new-value").style.setProperty("color", "blue");
}
function testSetSameValue()
{
document.getElementById("node-set-same-value").style.setProperty("color", "red");
}
`);
// Save time on style updates.
Elements.StylesSidebarPane.prototype.update = function() {};
Elements.MetricsSidebarPane.prototype.update = function() {};
TestRunner.runTestSuite([
function testSetUp(next) {
ElementsTestRunner.expandElementsTree(next);
},
function testSetNewValue(next) {
TestRunner.evaluateInPage('testSetNewValue()');
TestRunner.domModel.addEventListener(SDK.DOMModel.Events.AttrModified, listener);
function listener(event) {
TestRunner.addResult('SDK.DOMModel.Events.AttrModified should be issued');
TestRunner.domModel.removeEventListener(SDK.DOMModel.Events.AttrModified, listener);
next();
}
},
function testSetSameValue(next) {
TestRunner.evaluateInPage('testSetSameValue()', next);
TestRunner.domModel.addEventListener(SDK.DOMModel.Events.AttrModified, listener);
function listener(event) {
TestRunner.addResult('SDK.DOMModel.Events.AttrModified should not be issued');
TestRunner.domModel.removeEventListener(SDK.DOMModel.Events.AttrModified, listener);
}
}
]);
})();