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

Side by Side Diff: tools/perf/metrics/speedindex.js

Issue 185413005: [Telemetry] Move page quiescence test to WebContents (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | tools/perf/metrics/speedindex.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 'use strict';
6
7 /**
8 * @fileoverview This file provides a JavaScript helper function that
9 * determines when the last resource was received.
10 */
11 (function() {
12
13 // Set the Resource Timing interface functions that will be used below
14 // to use whatever version is available currently regardless of vendor
15 // prefix.
16 window.performance.clearResourceTimings =
17 (window.performance.clearResourceTimings ||
18 window.performance.mozClearResourceTimings ||
19 window.performance.msClearResourceTimings ||
20 window.performance.oClearResourceTimings ||
21 window.performance.webkitClearResourceTimings);
22
23 window.performance.getEntriesByType =
24 (window.performance.getEntriesByType ||
25 window.performance.mozGetEntriesByType ||
26 window.performance.msGetEntriesByType ||
27 window.performance.oGetEntriesByType ||
28 window.performance.webkitGetEntriesByType);
29
30 // This variable will available to the function below and it will be
31 // persistent across different function calls. It stores the last
32 // entry in the list of PerformanceResourceTiming objects returned by
33 // window.performance.getEntriesByType('resource').
34 //
35 // The reason for doing it this way is because the buffer for
36 // PerformanceResourceTiming objects has a limit, and once it's full,
37 // new entries are not added. We're only interested in the last entry,
38 // so we can clear new entries when they're added.
39 var lastEntry = null;
40
41 /**
42 * This method uses the Resource Timing interface, which is described at
43 * http://www.w3.org/TR/resource-timing/. It provides information about
44 * timings for resources such as images and script files, and it includes
45 * resources requested via XMLHttpRequest.
46 *
47 * @return {number} The time since either the load event, or the last
48 * the last resource was received after the load event. If the load
49 * event hasn't yet happened, return 0.
50 */
51 window.timeSinceLastResponseAfterLoadMs = function() {
52 if (window.document.readyState !== 'complete') {
53 return 0;
54 }
55
56 var resourceTimings = window.performance.getEntriesByType('resource');
57 if (resourceTimings.length > 0) {
58 lastEntry = resourceTimings.pop();
59 window.performance.clearResourceTimings();
60 }
61
62 // The times for performance.now() and in the PerformanceResourceTiming
63 // objects are all in milliseconds since performance.timing.navigationStart,
64 // so we must also get load time in the same terms.
65 var timing = window.performance.timing;
66 var loadTime = timing.loadEventEnd - timing.navigationStart;
67
68 // If there have been no resource timing entries, or the last entry was
69 // before the load event, then return the time since the load event.
70 if (!lastEntry || lastEntry.responseEnd < loadTime) {
71 return window.performance.now() - loadTime;
72 }
73 return window.performance.now() - lastEntry.responseEnd;
74 }
75
76 })();
OLDNEW
« no previous file with comments | « no previous file | tools/perf/metrics/speedindex.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698