Commit 92f4ad59 authored by Joel Einbinder's avatar Joel Einbinder Committed by Commit Bot

DevTools: force a style recaclc before reporting final CSS coverage

Without this, taking a coverage report could be flaky if nothing
forced a style recalc. This can happen very often in headless mode.

Change-Id: If2bb596736f274d0aeceabec9ff7cf6076886eae
Reviewed-on: https://chromium-review.googlesource.com/c/1279293
Commit-Queue: Joel Einbinder <einbinder@chromium.org>
Reviewed-by: default avatarAndrey Kosyakov <caseq@chromium.org>
Cr-Commit-Position: refs/heads/master@{#599782}
parent abad2188
Test that CSS coverage works for a newly added stylesheet.
Successfully reported CSS coverage.
(async function(testRunner) {
const {session, dp} = await testRunner.startBlank('Test that CSS coverage works for a newly added stylesheet.');
await dp.DOM.enable();
await dp.CSS.enable();
await dp.CSS.startRuleUsageTracking();
await session.evaluateAsync(async function(url) {
const div = document.createElement('div');
div.classList.add('usedAtTheVeryEnd');
document.body.appendChild(div);
const link = document.createElement('link');
link.rel = 'stylesheet';
link.href = url;
document.head.appendChild(link);
await new Promise(fulfill => link.onload = fulfill);
}, testRunner.url('./resources/coverage2.css'));
const response = await dp.CSS.stopRuleUsageTracking();
if (response.result.ruleUsage.length === 1) {
testRunner.log('Successfully reported CSS coverage.')
} else {
testRunner.log(`ERROR!`);
testRunner.log(response.result.ruleUsage);
}
testRunner.completeTest();
});
...@@ -2421,6 +2421,8 @@ Response InspectorCSSAgent::startRuleUsageTracking() { ...@@ -2421,6 +2421,8 @@ Response InspectorCSSAgent::startRuleUsageTracking() {
Response InspectorCSSAgent::stopRuleUsageTracking( Response InspectorCSSAgent::stopRuleUsageTracking(
std::unique_ptr<protocol::Array<protocol::CSS::RuleUsage>>* result) { std::unique_ptr<protocol::Array<protocol::CSS::RuleUsage>>* result) {
for (Document* document : dom_agent_->Documents())
document->UpdateStyleAndLayoutTree();
Response response = takeCoverageDelta(result); Response response = takeCoverageDelta(result);
SetCoverageEnabled(false); SetCoverageEnabled(false);
return response; return response;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment