| // 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 updates are throttled during DOM traversal. Bug 77643.\n`); |
| await TestRunner.loadModule('elements_test_runner'); |
| await TestRunner.showPanel('elements'); |
| await TestRunner.loadHTML(` |
| <div></div> |
| <div></div> |
| <div></div> |
| <div></div> |
| <div id="inspected"></div> |
| `); |
| |
| var updateCount = 0; |
| var keydownCount = 5; |
| |
| ElementsTestRunner.selectNodeAndWaitForStyles('inspected', selectCallback); |
| function selectCallback() { |
| TestRunner.addSniffer(Elements.StylesSidebarPane.prototype, '_innerRebuildUpdate', sniffUpdate, true); |
| var element = ElementsTestRunner.firstElementsTreeOutline().element; |
| for (var i = 0; i < keydownCount; ++i) |
| element.dispatchEvent(TestRunner.createKeyEvent('ArrowUp')); |
| |
| TestRunner.deprecatedRunAfterPendingDispatches(completeCallback); |
| } |
| |
| function completeCallback() { |
| if (updateCount >= keydownCount) |
| TestRunner.addResult('ERROR: got ' + updateCount + ' updates for ' + keydownCount + ' consecutive keydowns'); |
| else |
| TestRunner.addResult('OK: updates throttled'); |
| TestRunner.completeTest(); |
| } |
| |
| function sniffUpdate() { |
| ++updateCount; |
| } |
| })(); |