Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(737)

Side by Side Diff: third_party/WebKit/LayoutTests/fast/dom/timer-throttling-hidden-page.html

Issue 2620743002: Don't throttle web views until they've been in the background for 10s (Closed)
Patch Set: Fix asan test issue Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <html>
2 <head>
3 <script src="../../resources/js-test.js"></script>
4 <script>
5 description('<a href="https://bugs.webkit.org/show_bug.cgi?id=98474">Bug 98474</a>: Throttle DOM timers on hidden pages and <a href="http://crbug.com/40 0343">bug 400343</a> prerender pages.');
6
7 var jsTestIsAsync = true;
8 var previousTime = 0;
9 var timerCount = 0;
10 var firstTimerWhileNotVisible = true;
11 var isPageVisible = true;
12 var timeoutInterval = 100;
13 var tolerance = 20;
14 var timerAlignmentInterval = 1000;
15
16 function testTimer()
17 {
18 var time = Date.now();
19 if (!isPageVisible) {
20 if (firstTimerWhileNotVisible) {
21 firstTimerIntervalWhilePageNotVisible = time - previousTime;
22 var minValue = timeoutInterval - tolerance;
23 shouldBeGreaterThanOrEqual("firstTimerIntervalWhilePageNotVi sible", minValue.toString());
24 var maxValue = timeoutInterval + timerAlignmentInterval + to lerance;
25 shouldBeTrue("firstTimerIntervalWhilePageNotVisible <= " + m axValue);
26 firstTimerWhileNotVisible = false;
27 } else {
28 timerIntervalWhilePageNotVisible = time - previousTime;
29 shouldBeCloseTo("timerIntervalWhilePageNotVisible", timerAli gnmentInterval, tolerance);
30 }
31 } else {
32 timerIntervalWhilePageVisible = time - previousTime;
33 shouldBeCloseTo("timerIntervalWhilePageVisible", timeoutInterval , tolerance);
34 }
35
36 timerCount++;
37 previousTime = time;
38
39 if (timerCount == 1) {
40 testRunner.setPageVisibility("hidden");
41 isPageVisible = false;
42 } else if (timerCount == 3) {
43 testRunner.setPageVisibility("visible");
44 isPageVisible = true;
45 } else if (timerCount == 5) {
46 testRunner.setPageVisibility("prerender");
47 isPageVisible = false;
48 firstTimerWhileNotVisible = true;
49 } else if (timerCount == 7) {
50 testRunner.setPageVisibility("visible");
51 isPageVisible = true;
52 } else if (timerCount >= 8){
53 finishJSTest();
54 return;
55 }
56 previousTime = Date.now();
57 setTimeout(testTimer, timeoutInterval);
58 }
59
60 function runTest()
61 {
62 if (!window.testRunner) {
63 debug('This test requires testRunner');
64 return;
65 }
66
67 var timeoutIntervalSpans = document.getElementsByClassName('timeoutI nterval');
68 for (var i = 0; i < timeoutIntervalSpans.length; i++)
69 timeoutIntervalSpans[i].innerText = timeoutInterval;
70
71 document.getElementById('alignmentInterval').innerText = timerAlignm entInterval / 1000;
72
73 testRunner.dumpAsText();
74 previousTime = Date.now();
75 setTimeout(testTimer, timeoutInterval);
76 }
77 </script>
78 </head>
79 <body onload="runTest()">
80 <p>
81 This test measures the time taken to fire a <span class="timeoutInterval"></ span>ms DOM Timer when the page visibility is set to "visible", "hidden", "visib le", "prerender" and then back to "visible". Due to page timer throttling, the timer should fire close to <span id="alignmentInterval"></span>s when page is hi dden or prerender. And it should fire close to <span class="timeoutInterval"></ span>ms, when the page is visible.
82 </p>
83 </body>
84 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698