chrome_test_utils.html revision 46b43bff003ceda46cf9a5d40a47f7674996d2e0
1<!DOCTYPE html>
2<!--
3Copyright (c) 2015 The Chromium Authors. All rights reserved.
4Use of this source code is governed by a BSD-style license that can be
5found in the LICENSE file.
6-->
7<link rel="import" href="/tracing/base/base.html">
8<link rel="import" href="/tracing/core/test_utils.html">
9<link rel="import" href="/tracing/extras/chrome/chrome_process_helper.html">
10<link rel="import" href="/tracing/model/model.html">
11
12<script>
13'use strict';
14
15/**
16 * @fileoverview Base class for trace data Auditors.
17 */
18tr.exportTo('tr.e.chrome', function() {
19  function ChromeTestUtils() {
20  }
21
22  ChromeTestUtils.newChromeModel = function(customizeModelCallback) {
23    return tr.c.TestUtils.newModel(function(model) {
24      console.log(model);
25      model.browserProcess = model.getOrCreateProcess(1);
26      model.browserMain = model.browserProcess.getOrCreateThread(2);
27      model.browserMain.name = 'CrBrowserMain';
28
29      model.rendererProcess = model.getOrCreateProcess(2);
30      model.rendererMain = model.rendererProcess.getOrCreateThread(3);
31      model.rendererMain.name = 'CrRendererMain';
32
33      model.rendererCompositor = model.rendererProcess.getOrCreateThread(4);
34      model.rendererCompositor.name = 'Compositor';
35
36      model.rasterWorker1 = model.rendererProcess.getOrCreateThread(5);
37      model.rasterWorker1.name = 'CompositorTileWorker1';
38
39      customizeModelCallback(model);
40    });
41  }
42
43  ChromeTestUtils.addEvent = function(thread, dict) {
44    var slice = tr.c.TestUtils.newAsyncSliceEx(dict);
45    thread.asyncSliceGroup.push(slice);
46    return slice;
47  }
48
49  ChromeTestUtils.addInputEvent = function(model, typeName, dict) {
50    dict.title = 'InputLatency::' + typeName;
51    dict.isTopLevel = (dict.isTopLevel === undefined);
52    dict.startThread = model.browserMain;
53    var slice = tr.c.TestUtils.newAsyncSliceEx(dict);
54    model.rendererMain.asyncSliceGroup.push(slice);
55    return slice;
56  }
57
58  ChromeTestUtils.addFlingAnimationEvent = function(model, dict) {
59    dict.title = 'InputHandlerProxy::HandleGestureFling::started';
60    var slice = tr.c.TestUtils.newAsyncSliceEx(dict);
61    model.rendererCompositor.asyncSliceGroup.push(slice);
62    return slice;
63  }
64
65  ChromeTestUtils.addFrameEvent = function(model, dict) {
66    dict.title = tr.e.audits.IMPL_RENDERING_STATS;
67    dict.type = tr.model.ThreadSlice;
68    var slice = tr.c.TestUtils.newSliceEx(dict);
69    model.rendererMain.asyncSliceGroup.push(slice);
70    return slice;
71  }
72
73  ChromeTestUtils.addLoadingEvent = function(model, dict) {
74    dict.title = 'WebContentsImpl Loading';
75    var slice = tr.c.TestUtils.newAsyncSliceEx(dict);
76    model.rendererMain.asyncSliceGroup.push(slice);
77    return slice;
78  }
79
80  ChromeTestUtils.addNetworkEvent = function(model, dict) {
81    dict.cat = 'netlog';
82    dict.title = 'Generic Network event';
83    var slice = tr.c.TestUtils.newAsyncSliceEx(dict);
84    model.browserMain.asyncSliceGroup.push(slice);
85    return slice;
86  }
87
88  ChromeTestUtils.addCommitLoadEvent = function(model, dict) {
89    dict.title = 'RenderFrameImpl::didCommitProvisionalLoad';
90    var slice = tr.c.TestUtils.newAsyncSliceEx(dict);
91    model.rendererMain.asyncSliceGroup.push(slice);
92    return slice;
93  }
94
95  ChromeTestUtils.addStartProvisionalLoadEvent = function(model, dict) {
96    dict.title = 'RenderFrameImpl::didStartProvisionalLoad';
97    var slice = tr.c.TestUtils.newAsyncSliceEx(dict);
98    model.rendererMain.asyncSliceGroup.push(slice);
99    return slice;
100  }
101
102  ChromeTestUtils.addFailProvisionalLoadEvent = function(model, dict) {
103    dict.title = 'RenderFrameImpl::didFailProvisionalLoad';
104    var slice = tr.c.TestUtils.newAsyncSliceEx(dict);
105    model.rendererMain.asyncSliceGroup.push(slice);
106    return slice;
107  }
108
109  ChromeTestUtils.addMainRunnerEvent = function(model, dict) {
110    dict.title = 'ContentMainRunnerImpl::Initialize';
111    var slice = tr.c.TestUtils.newAsyncSliceEx(dict);
112    model.rendererMain.asyncSliceGroup.push(slice);
113  }
114
115  return {
116    ChromeTestUtils: ChromeTestUtils
117  };
118});
119</script>
120