| (async function(testRunner) { |
| var {page, session, dp} = await testRunner.startHTML(` |
| <style> |
| #modifyRule { |
| box-sizing: border-box; |
| } |
| |
| #modifyRule { |
| height: 100%; |
| } |
| |
| #modifyRule { |
| width: 100%; |
| } |
| </style> |
| |
| <style> |
| #insertRule { |
| box-sizing: border-box; |
| } |
| |
| #insertRule { |
| width: 100%; |
| } |
| </style> |
| |
| <style> |
| #removeRule { |
| box-sizing: border-box; |
| } |
| |
| #removeRule { |
| width: 100%; |
| } |
| </style> |
| <article id='modifyRule'></article> |
| <article id='insertRule'></article> |
| <article id='removeRule'></article>`, 'The test verifies CSS.getMatchedStylesForNode when used concurrently with the CSSOM modifications.'); |
| |
| var CSSHelper = await testRunner.loadScript('../resources/css-helper.js'); |
| var cssHelper = new CSSHelper(testRunner, dp); |
| |
| await dp.DOM.enable(); |
| await dp.CSS.enable(); |
| |
| var documentNodeId = await cssHelper.requestDocumentNodeId(); |
| |
| testRunner.runTestSuite([ |
| async function testModifyRule() { |
| testRunner.log('--------------'); |
| testRunner.log('Original rule:'); |
| await cssHelper.loadAndDumpMatchingRules(documentNodeId, '#modifyRule', true); |
| |
| session.evaluate(() => document.styleSheets[0].rules[0].style.setProperty('color', 'red')); |
| testRunner.log('--------------'); |
| testRunner.log('Modified rule 1:'); |
| await cssHelper.loadAndDumpMatchingRules(documentNodeId, '#modifyRule', true); |
| |
| session.evaluate(() => document.styleSheets[0].rules[2].style.setProperty('color', 'blue')); |
| testRunner.log('---------------'); |
| testRunner.log('Modified rule 3:'); |
| await cssHelper.loadAndDumpMatchingRules(documentNodeId, '#modifyRule', true); |
| |
| session.evaluate(() => document.styleSheets[0].rules[1].style.setProperty('color', 'green')); |
| testRunner.log('---------------'); |
| testRunner.log('Modified rule 2:'); |
| await cssHelper.loadAndDumpMatchingRules(documentNodeId, '#modifyRule', true); |
| |
| session.evaluate(() => document.styleSheets[0].rules[1].style.removeProperty('color')); |
| testRunner.log('---------------'); |
| testRunner.log('Restored rule 2:'); |
| await cssHelper.loadAndDumpMatchingRules(documentNodeId, '#modifyRule', true); |
| |
| session.evaluate(() => document.styleSheets[0].rules[0].style.removeProperty('color')); |
| session.evaluate(() => document.styleSheets[0].rules[2].style.removeProperty('color')); |
| testRunner.log('-----------------'); |
| testRunner.log('Restored rule 1,3:'); |
| await cssHelper.loadAndDumpMatchingRules(documentNodeId, '#modifyRule', true); |
| }, |
| |
| async function testInsertFirstRule() { |
| await testInsertRule(0); |
| }, |
| |
| async function testInsertMiddleRule() { |
| await testInsertRule(1); |
| }, |
| |
| async function testInsertLastRule() { |
| await testInsertRule(2); |
| }, |
| |
| async function testRemoveRule() { |
| testRunner.log('Original rule:'); |
| await cssHelper.loadAndDumpMatchingRules(documentNodeId, '#removeRule', true); |
| |
| session.evaluate(() => document.styleSheets[2].removeRule(0)); |
| testRunner.log('-------------------'); |
| testRunner.log('After remove rule 1:'); |
| await cssHelper.loadAndDumpMatchingRules(documentNodeId, '#removeRule', true); |
| |
| session.evaluate(() => document.styleSheets[2].removeRule(0)); |
| testRunner.log('-------------------'); |
| testRunner.log('After remove rule 2:'); |
| await cssHelper.loadAndDumpMatchingRules(documentNodeId, '#removeRule', true); |
| } |
| ]); |
| |
| async function testInsertRule(index) { |
| testRunner.log('Original rule:'); |
| await cssHelper.loadAndDumpMatchingRules(documentNodeId, '#insertRule', true); |
| |
| session.evaluate(index => document.styleSheets[1].insertRule('#insertRule { color: red }', index), index); |
| testRunner.log('--------------'); |
| testRunner.log('After inserted rule:'); |
| await cssHelper.loadAndDumpMatchingRules(documentNodeId, '#insertRule', true); |
| |
| session.evaluate(index => document.styleSheets[1].removeRule(index), index); |
| testRunner.log('--------------'); |
| testRunner.log('Restored rule:'); |
| await cssHelper.loadAndDumpMatchingRules(documentNodeId, '#insertRule', true); |
| } |
| }) |
| |