1 // Copyright (c) 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.
7 tvcm.require('tracing.analysis.analysis_view');
8 tvcm.require('tracing.test_utils');
9 tvcm.require('tracing.trace_model');
10 tvcm.require('tracing.selection');
12 tvcm.unittest.testSuite('tracing.analysis.analysis_view_test', function() {
13 var TraceModel = tracing.TraceModel;
14 var Selection = tracing.Selection;
15 var AnalysisView = tracing.analysis.AnalysisView;
16 var ObjectInstance = tracing.trace_model.ObjectInstance;
17 var DefaultObjectSnapshotView = tracing.analysis.DefaultObjectSnapshotView;
18 var DefaultObjectInstanceView = tracing.analysis.DefaultObjectInstanceView;
20 function withRegisteredType(registrar, typeName,
21 typeConstructor, opt_options, fn) {
22 registrar.register(typeName, typeConstructor, opt_options);
26 registrar.unregister(typeName);
30 test('instantiate_analysisWithObjects', function() {
31 var model = new TraceModel();
32 var p1 = model.getOrCreateProcess(1);
33 var objects = p1.objects;
34 var i10 = objects.idWasCreated('0x1000', 'cc', 'LayerTreeHostImpl', 10);
35 var s10 = objects.addSnapshot('0x1000', 'cc', 'LayerTreeHostImpl', 10,
37 var s25 = objects.addSnapshot('0x1000', 'cc', 'LayerTreeHostImpl', 25,
39 var s40 = objects.addSnapshot('0x1000', 'cc', 'LayerTreeHostImpl', 40,
41 objects.idWasDeleted('0x1000', 'cc', 'LayerTreeHostImpl', 45);
44 var selection = new Selection();
50 var analysisEl = new AnalysisView();
51 analysisEl.selection = selection;
52 this.addHTMLOutput(analysisEl);
55 test('analyzeSelectionWithObjectSnapshotUnknownType', function() {
56 var i10 = new ObjectInstance({}, '0x1000', 'cat', 'someUnhandledName', 10);
57 var s10 = i10.addSnapshot(10, {foo: 1});
59 var selection = new Selection();
62 var view = new AnalysisView();
63 view.selection = selection;
64 assertTrue(view.currentView instanceof DefaultObjectSnapshotView);
65 assertEquals(s10, view.currentView.objectSnapshot);
68 test('analyzeSelectionWithObjectSnapshotKnownType', function() {
69 var i10 = new ObjectInstance({}, '0x1000', 'cat', 'MyView', 10);
70 var s10 = i10.addSnapshot(10, {foo: 1});
72 var selection = new Selection();
75 var MyView = tvcm.ui.define(
76 'my-view', tracing.analysis.ObjectSnapshotView);
78 __proto__: tracing.analysis.ObjectSnapshotView.prototype,
80 decorate: function() {
83 updateContents: function() {
84 this.textContent = 'hello';
88 var view = new AnalysisView();
90 tracing.analysis.ObjectSnapshotView, 'MyView', MyView, undefined,
92 view.selection = selection;
93 assertTrue(view.currentView instanceof MyView);
94 assertEquals(s10, view.currentView.objectSnapshot);
95 assertEquals('hello', view.currentView.textContent);
99 test('analyzeSelectionWithObjectInstanceUnknownType', function() {
100 var i10 = new ObjectInstance({}, '0x1000', 'cat', 'someUnhandledName', 10);
102 var selection = new Selection();
105 var view = new AnalysisView();
106 view.selection = selection;
107 assertTrue(view.currentView instanceof DefaultObjectInstanceView);
108 assertEquals(i10, view.currentView.objectInstance);
111 test('analyzeSelectionWithObjectInstanceKnownType', function() {
112 var i10 = new ObjectInstance({}, '0x1000', 'cat', 'MyView', 10);
114 var selection = new Selection();
117 var MyView = tvcm.ui.define(
118 'my-view', tracing.analysis.ObjectInstanceView);
120 __proto__: tracing.analysis.ObjectInstanceView.prototype,
122 decorate: function() {
125 updateContents: function() {
126 this.textContent = 'hello';
130 var view = new AnalysisView();
132 tracing.analysis.ObjectInstanceView,
133 'MyView', MyView, undefined, function() {
134 view.selection = selection;
135 assertTrue(view.currentView instanceof MyView);
136 assertEquals(i10, view.currentView.objectInstance);
137 assertEquals('hello', view.currentView.textContent);
141 test('analyzeSelectionWithSliceKnownType', function() {
142 var s10 = new tracing.trace_model.Slice('cat', 'MySlice', 0, 10, {}, 4);
144 var selection = new tracing.Selection();
147 var MySlice = tvcm.ui.define(
148 'my-slice', tracing.analysis.SliceView);
149 MySlice.prototype = {
150 __proto__: tracing.analysis.SliceView.prototype,
152 decorate: function() {
155 updateContents: function() {
156 this.textContent = 'hello';
160 var view = new AnalysisView();
162 tracing.analysis.SliceView,
163 'MySlice', MySlice, undefined, function() {
164 view.selection = selection;
165 assertTrue(view.currentView instanceof MySlice);
166 assertEquals(s10, view.currentView.slice);
167 assertEquals('hello', view.currentView.textContent);