summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/catapult/tracing/tracing/ui/tracks
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/catapult/tracing/tracing/ui/tracks')
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/alert_track.html51
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/alert_track_test.html76
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/async_slice_group_track.html136
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/async_slice_group_track_test.html252
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_axis.html127
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_axis_test.html312
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_point.html43
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_point_test.html37
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_series.html494
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_series_test.html294
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_track.html241
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_track_test.html236
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_transform.html84
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_transform_test.html86
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/container_to_track_map.html45
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/container_track.html132
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/counter_track.html80
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/counter_track_perf_test.html129
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/counter_track_test.html201
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/cpu_track.html139
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/cpu_track_test.html99
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/cpu_usage_track.html187
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/cpu_usage_track_test.html240
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/device_track.html90
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/device_track_test.html146
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/drawing_container.css20
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/drawing_container.html176
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/drawing_container_perf_test.html136
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/event_to_track_map.html34
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/frame_track.html72
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/frame_track_test.html106
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/global_memory_dump_track.html102
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/global_memory_dump_track_test.html61
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/highlighter.html53
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/interaction_track.html68
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/interaction_track_test.html51
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/kernel_track.html83
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/letter_dot_track.html260
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/letter_dot_track_test.html121
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/memory_dump_track_test_utils.html143
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/memory_dump_track_util.html262
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/memory_dump_track_util_test.html228
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/model_track.html432
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/multi_row_track.html218
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/object_instance_group_track.html87
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/object_instance_track.css8
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/object_instance_track.html299
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/object_instance_track_test.html111
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/power_series_track.html83
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/power_series_track_test.html122
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/process_memory_dump_track.html73
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/process_memory_dump_track_test.html55
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/process_summary_track.html130
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/process_summary_track_test.html110
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/process_track.html155
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/process_track_base.css24
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/process_track_base.html273
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/rect_track.css8
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/rect_track.html251
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/rect_track_test.html407
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/ruler_track.css12
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/ruler_track.html374
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/ruler_track_test.html36
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/sample_track.html44
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/sample_track_test.html33
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/slice_group_track.html168
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/slice_group_track_test.html293
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/slice_track.html44
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/slice_track_test.html29
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/spacing_track.css7
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/spacing_track.html45
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/stacked_bars_track.html130
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/thread_track.css10
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/thread_track.html163
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/thread_track_test.html145
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/track.css33
-rw-r--r--chromium/third_party/catapult/tracing/tracing/ui/tracks/track.html167
77 files changed, 0 insertions, 10512 deletions
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/alert_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/alert_track.html
deleted file mode 100644
index a6082f9d040..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/alert_track.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/ui/tracks/letter_dot_track.html">
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
- /**
- * A track that displays an array of alert objects.
- * @constructor
- * @extends {LetterDotTrack}
- */
- var AlertTrack = tr.ui.b.define(
- 'alert-track', tr.ui.tracks.LetterDotTrack);
-
- AlertTrack.prototype = {
- __proto__: tr.ui.tracks.LetterDotTrack.prototype,
-
- decorate: function(viewport) {
- tr.ui.tracks.LetterDotTrack.prototype.decorate.call(this, viewport);
- this.heading = 'Alerts';
- this.alerts_ = undefined;
- },
-
- get alerts() {
- return this.alerts_;
- },
-
- set alerts(alerts) {
- this.alerts_ = alerts;
- if (alerts === undefined) {
- this.items = undefined;
- return;
- }
- this.items = this.alerts_.map(function(alert) {
- return new tr.ui.tracks.LetterDot(
- alert, String.fromCharCode(9888), alert.colorId, alert.start);
- });
- }
- };
-
- return {
- AlertTrack: AlertTrack
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/alert_track_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/alert_track_test.html
deleted file mode 100644
index 48d488e3e48..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/alert_track_test.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/core/test_utils.html">
-<link rel="import" href="/tracing/model/event_set.html">
-<link rel="import" href="/tracing/model/global_memory_dump.html">
-<link rel="import" href="/tracing/model/selection_state.html">
-<link rel="import" href="/tracing/ui/timeline_viewport.html">
-<link rel="import" href="/tracing/ui/tracks/alert_track.html">
-<link rel="import" href="/tracing/ui/tracks/drawing_container.html">
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
- var AlertTrack = tr.ui.tracks.AlertTrack;
- var SelectionState = tr.model.SelectionState;
- var Viewport = tr.ui.TimelineViewport;
-
- var ALERT_INFO_1 = new tr.model.EventInfo(
- 'Alert 1', 'One alert');
- var ALERT_INFO_2 = new tr.model.EventInfo(
- 'Alert 2', 'Another alert');
-
- var createAlerts = function() {
- var alerts = [
- new tr.model.Alert(ALERT_INFO_1, 5),
- new tr.model.Alert(ALERT_INFO_1, 20),
- new tr.model.Alert(ALERT_INFO_2, 35),
- new tr.model.Alert(ALERT_INFO_2, 50)
- ];
- return alerts;
- };
-
- test('instantiate', function() {
- var alerts = createAlerts();
- alerts[1].selectionState = SelectionState.SELECTED;
-
- var div = document.createElement('div');
- var viewport = new Viewport(div);
- var drawingContainer = new tr.ui.tracks.DrawingContainer(viewport);
- div.appendChild(drawingContainer);
-
- var track = AlertTrack(viewport);
- drawingContainer.appendChild(track);
-
- this.addHTMLOutput(div);
- drawingContainer.invalidate();
-
- track.alerts = alerts;
- var dt = new tr.ui.TimelineDisplayTransform();
- dt.xSetWorldBounds(0, 50, track.clientWidth);
- track.viewport.setDisplayTransformImmediately(dt);
-
-
- assert.equal(5, track.items[0].start);
- });
-
- test('modelMapping', function() {
- var alerts = createAlerts();
-
- var div = document.createElement('div');
- var viewport = new Viewport(div);
- var track = AlertTrack(viewport);
- track.alerts = alerts;
-
- var a0 = track.items[0].modelItem;
- assert.equal(a0, alerts[0]);
- });
-});
-</script>
-
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/async_slice_group_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/async_slice_group_track.html
deleted file mode 100644
index 56971486083..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/async_slice_group_track.html
+++ /dev/null
@@ -1,136 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="import" href="/tracing/ui/base/ui.html">
-<link rel="import" href="/tracing/ui/tracks/multi_row_track.html">
-<link rel="import" href="/tracing/ui/tracks/slice_track.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
- /**
- * A track that displays a AsyncSliceGroup.
- * @constructor
- * @extends {MultiRowTrack}
- */
- var AsyncSliceGroupTrack = tr.ui.b.define(
- 'async-slice-group-track',
- tr.ui.tracks.MultiRowTrack);
-
- AsyncSliceGroupTrack.prototype = {
-
- __proto__: tr.ui.tracks.MultiRowTrack.prototype,
-
- decorate: function(viewport) {
- tr.ui.tracks.MultiRowTrack.prototype.decorate.call(this, viewport);
- this.classList.add('async-slice-group-track');
- this.group_ = undefined;
- },
-
- addSubTrack_: function(slices) {
- var track = new tr.ui.tracks.SliceTrack(this.viewport);
- track.slices = slices;
- this.appendChild(track);
- track.asyncStyle = true;
- return track;
- },
-
- get group() {
- return this.group_;
- },
-
- set group(group) {
- this.group_ = group;
- this.setItemsToGroup(this.group_.slices, this.group_);
- },
-
- get eventContainer() {
- return this.group;
- },
-
- addContainersToTrackMap: function(containerToTrackMap) {
- tr.ui.tracks.MultiRowTrack.prototype.addContainersToTrackMap.apply(
- this, arguments);
- containerToTrackMap.addContainer(this.group, this);
- },
-
- /**
- * Breaks up the list of slices into N rows, each of which is a list of
- * slices that are non overlapping.
- *
- * It uses a very simple approach: walk through the slices in sorted order
- * by start time. For each slice, try to fit it in an existing subRow. If
- * it doesn't fit in any subrow, make another subRow. It then fits nested
- * subSlices recursively into rows below parent slice according to which
- * nested level the child is in.
- */
- buildSubRows_: function(slices, opt_skipSort) {
- if (!opt_skipSort) {
- slices.sort(function(x, y) {
- return x.start - y.start;
- });
- }
-
- // Helper function that returns true if it can put the slice on row n.
- var findLevel = function(sliceToPut, rows, n) {
- if (n >= rows.length)
- return true; // We always can make empty rows to put the slice.
- var subRow = rows[n];
- var lastSliceInSubRow = subRow[subRow.length - 1];
- if (sliceToPut.start >= lastSliceInSubRow.end) {
- if (sliceToPut.subSlices === undefined ||
- sliceToPut.subSlices.length === 0) {
- return true;
- }
- // Make sure nested sub slices can be fitted in as well.
- for (var subSlice of sliceToPut.subSlices) {
- if (!findLevel(subSlice, rows, n + 1))
- return false;
- }
- return true;
- }
- return false;
- };
-
- var subRows = [];
- for (var slice of slices) {
- var found = false;
- var index = subRows.length;
- for (var j = 0; j < subRows.length; j++) {
- if (findLevel(slice, subRows, j)) {
- found = true;
- index = j;
- break;
- }
- }
- if (!found)
- subRows.push([]);
- subRows[index].push(slice);
-
- // Fit subSlices recursively into rows below parent.
- var fitSubSlicesRecursively = function(subSlices, level, rows) {
- if (subSlices === undefined || subSlices.length === 0)
- return;
- if (level === rows.length)
- rows.push([]);
- for (var subSlice of subSlices) {
- rows[level].push(subSlice);
- fitSubSlicesRecursively(subSlice.subSlices, level + 1, rows);
- }
- };
- fitSubSlicesRecursively(slice.subSlices, index + 1, subRows);
- }
- return subRows;
- }
- };
-
- return {
- AsyncSliceGroupTrack: AsyncSliceGroupTrack
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/async_slice_group_track_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/async_slice_group_track_test.html
deleted file mode 100644
index cb924f42113..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/async_slice_group_track_test.html
+++ /dev/null
@@ -1,252 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="import" href="/tracing/core/test_utils.html">
-<link rel="import" href="/tracing/ui/timeline_track_view.html">
-<link rel="import" href="/tracing/model/model.html">
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
- var AsyncSliceGroup = tr.model.AsyncSliceGroup;
- var AsyncSliceGroupTrack = tr.ui.tracks.AsyncSliceGroupTrack;
- var Process = tr.model.Process;
- var ProcessTrack = tr.ui.tracks.ProcessTrack;
- var Thread = tr.model.Thread;
- var ThreadTrack = tr.ui.tracks.ThreadTrack;
- var newAsyncSlice = tr.c.TestUtils.newAsyncSlice;
- var newAsyncSliceNamed = tr.c.TestUtils.newAsyncSliceNamed;
-
- test('filterSubRows', function() {
- var model = new tr.Model();
- var p1 = new Process(model, 1);
- var t1 = new Thread(p1, 1);
- var g = new AsyncSliceGroup(t1);
- g.push(newAsyncSlice(0, 1, t1, t1));
- var track = new AsyncSliceGroupTrack(new tr.ui.TimelineViewport());
- track.group = g;
-
- assert.equal(track.children.length, 1);
- assert.isTrue(track.hasVisibleContent);
- });
-
- test('rebuildSubRows_twoNonOverlappingSlices', function() {
- var model = new tr.Model();
- var p1 = new Process(model, 1);
- var t1 = new Thread(p1, 1);
- var g = new AsyncSliceGroup(t1);
- var s1 = newAsyncSlice(0, 1, t1, t1);
- var subs1 = newAsyncSliceNamed('b', 0, 1, t1, t1);
- s1.subSlices = [subs1];
- g.push(s1);
- g.push(newAsyncSlice(1, 1, t1, t1));
- var track = new AsyncSliceGroupTrack(new tr.ui.TimelineViewport());
- track.group = g;
- var subRows = track.subRows;
- assert.equal(subRows.length, 2);
- assert.equal(subRows[0].length, 2);
- assert.equal(subRows[1].length, 1);
- assert.equal(subRows[1][0], g.slices[0].subSlices[0]);
- assert.sameMembers(g.slices[1].subSlices, []);
- });
-
- test('rebuildSubRows_twoOverlappingSlices', function() {
- var model = new tr.Model();
- var p1 = new Process(model, 1);
- var t1 = new Thread(p1, 1);
- var g = new AsyncSliceGroup(t1);
-
- var s1 = newAsyncSlice(0, 1, t1, t1);
- var subs1 = newAsyncSliceNamed('b', 0, 1, t1, t1);
- s1.subSlices = [subs1];
- var s2 = newAsyncSlice(0, 1.5, t1, t1);
- var subs2 = newAsyncSliceNamed('b', 0, 1, t1, t1);
- s2.subSlices = [subs2];
- g.push(s1);
- g.push(s2);
-
- g.updateBounds();
-
- var track = new AsyncSliceGroupTrack(new tr.ui.TimelineViewport());
- track.group = g;
-
- var subRows = track.subRows;
-
- assert.equal(subRows.length, 4);
- assert.equal(subRows[0].length, 1);
- assert.equal(subRows[1].length, 1);
- assert.equal(subRows[2].length, 1);
- assert.equal(subRows[3].length, 1);
- assert.equal(subRows[1][0], g.slices[0].subSlices[0]);
- assert.equal(subRows[3][0], g.slices[1].subSlices[0]);
- });
-
- test('rebuildSubRows_threePartlyOverlappingSlices', function() {
- var model = new tr.Model();
- var p1 = new Process(model, 1);
- var t1 = new Thread(p1, 1);
- var g = new AsyncSliceGroup(t1);
- g.push(newAsyncSlice(0, 1, t1, t1));
- g.push(newAsyncSlice(0, 1.5, t1, t1));
- g.push(newAsyncSlice(1, 1.5, t1, t1));
- g.updateBounds();
- var track = new AsyncSliceGroupTrack(new tr.ui.TimelineViewport());
- track.group = g;
- var subRows = track.subRows;
-
- assert.equal(subRows.length, 2);
- assert.equal(subRows[0].length, 2);
- assert.equal(subRows[0][0], g.slices[0]);
- assert.equal(subRows[0][1], g.slices[2]);
- assert.equal(subRows[1][0], g.slices[1]);
- assert.equal(subRows[1].length, 1);
- assert.sameMembers(g.slices[0].subSlices, []);
- assert.sameMembers(g.slices[1].subSlices, []);
- assert.sameMembers(g.slices[2].subSlices, []);
- });
-
- test('rebuildSubRows_threeOverlappingSlices', function() {
- var model = new tr.Model();
- var p1 = new Process(model, 1);
- var t1 = new Thread(p1, 1);
- var g = new AsyncSliceGroup(t1);
-
- g.push(newAsyncSlice(0, 1, t1, t1));
- g.push(newAsyncSlice(0, 1.5, t1, t1));
- g.push(newAsyncSlice(2, 1, t1, t1));
- g.updateBounds();
-
- var track = new AsyncSliceGroupTrack(new tr.ui.TimelineViewport());
- track.group = g;
-
- var subRows = track.subRows;
- assert.equal(subRows.length, 2);
- assert.equal(subRows[0].length, 2);
- assert.equal(subRows[1].length, 1);
- assert.equal(subRows[0][0], g.slices[0]);
- assert.equal(subRows[1][0], g.slices[1]);
- assert.equal(subRows[0][1], g.slices[2]);
- });
-
- // Tests that no slices and their sub slices overlap.
- test('rebuildSubRows_NonOverlappingSubSlices', function() {
- var model = new tr.Model();
- var p1 = new Process(model, 1);
- var t1 = new Thread(p1, 1);
- var g = new AsyncSliceGroup(t1);
-
- var slice1 = newAsyncSlice(0, 5, t1, t1);
- var slice1Child = newAsyncSlice(1, 2, t1, t1);
- slice1.subSlices = [slice1Child];
- var slice2 = newAsyncSlice(3, 5, t1, t1);
- var slice3 = newAsyncSlice(5, 4, t1, t1);
- var slice3Child = newAsyncSlice(6, 2, t1, t1);
- slice3.subSlices = [slice3Child];
- g.push(slice1);
- g.push(slice2);
- g.push(slice3);
- g.updateBounds();
-
- var track = new AsyncSliceGroupTrack(new tr.ui.TimelineViewport());
- track.group = g;
-
- var subRows = track.subRows;
- // Checks each sub row to see that we don't have any overlapping slices.
- for (var i = 0; i < subRows.length; i++) {
- var row = subRows[i];
- for (var j = 0; j < row.length; j++) {
- for (var k = j + 1; k < row.length; k++) {
- assert.isTrue(row[j].end <= row[k].start);
- }
- }
- }
- });
-
- test('rebuildSubRows_NonOverlappingSubSlicesThreeNestedLevels', function() {
- var model = new tr.Model();
- var p1 = new Process(model, 1);
- var t1 = new Thread(p1, 1);
- var g = new AsyncSliceGroup(t1);
-
- var slice1 = newAsyncSlice(0, 4, t1, t1);
- var slice1Child = newAsyncSlice(1, 2, t1, t1);
- slice1.subSlices = [slice1Child];
- var slice2 = newAsyncSlice(2, 7, t1, t1);
- var slice3 = newAsyncSlice(5, 5, t1, t1);
- var slice3Child = newAsyncSlice(6, 3, t1, t1);
- var slice3Child2 = newAsyncSlice(7, 1, t1, t1);
- slice3.subSlices = [slice3Child];
- slice3Child.subSlices = [slice3Child2];
- g.push(slice1);
- g.push(slice2);
- g.push(slice3);
- g.updateBounds();
-
- var track = new AsyncSliceGroupTrack(new tr.ui.TimelineViewport());
- track.group = g;
-
- var subRows = track.subRows;
- // Checks each sub row to see that we don't have any overlapping slices.
- for (var i = 0; i < subRows.length; i++) {
- var row = subRows[i];
- for (var j = 0; j < row.length; j++) {
- for (var k = j + 1; k < row.length; k++) {
- assert.isTrue(row[j].end <= row[k].start);
- }
- }
- }
- });
-
- test('asyncSliceGroupContainerMap', function() {
- var vp = new tr.ui.TimelineViewport();
- var containerToTrack = vp.containerToTrackMap;
- var model = new tr.Model();
- var process = model.getOrCreateProcess(123);
- var thread = process.getOrCreateThread(456);
- var group = new AsyncSliceGroup(thread);
-
- var processTrack = new ProcessTrack(vp);
- var threadTrack = new ThreadTrack(vp);
- var groupTrack = new AsyncSliceGroupTrack(vp);
- processTrack.process = process;
- threadTrack.thread = thread;
- groupTrack.group = group;
- processTrack.appendChild(threadTrack);
- threadTrack.appendChild(groupTrack);
-
- assert.equal(processTrack.eventContainer, process);
- assert.equal(threadTrack.eventContainer, thread);
- assert.equal(groupTrack.eventContainer, group);
-
- assert.isUndefined(containerToTrack.getTrackByStableId('123'));
- assert.isUndefined(containerToTrack.getTrackByStableId('123.456'));
- assert.isUndefined(
- containerToTrack.getTrackByStableId('123.456.AsyncSliceGroup'));
-
- vp.modelTrackContainer = {
- addContainersToTrackMap: function(containerToTrackMap) {
- processTrack.addContainersToTrackMap(containerToTrackMap);
- },
- addEventListener: function() {}
- };
- vp.rebuildContainerToTrackMap();
-
- // Check that all tracks call childs' addContainersToTrackMap()
- // by checking the resulting map.
- assert.equal(containerToTrack.getTrackByStableId('123'), processTrack);
- assert.equal(containerToTrack.getTrackByStableId('123.456'), threadTrack);
- assert.equal(containerToTrack.getTrackByStableId('123.456.AsyncSliceGroup'),
- groupTrack);
-
- // Check the track's eventContainer getter.
- assert.equal(processTrack.eventContainer, process);
- assert.equal(threadTrack.eventContainer, thread);
- assert.equal(groupTrack.eventContainer, group);
- });
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_axis.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_axis.html
deleted file mode 100644
index f91733ced9e..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_axis.html
+++ /dev/null
@@ -1,127 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/base/range.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
-
- /**
- * A vertical axis for a (set of) chart series which maps an arbitrary range
- * of values [min, max] to the unit range [0, 1].
- *
- * @constructor
- */
- function ChartAxis(opt_min, opt_max) {
- this.guid_ = tr.b.GUID.allocateSimple();
- this.bounds = new tr.b.Range();
- if (opt_min !== undefined)
- this.bounds.addValue(opt_min);
- if (opt_max !== undefined)
- this.bounds.addValue(opt_max);
- };
-
- ChartAxis.prototype = {
- get guid() {
- return this.guid_;
- },
-
- valueToUnitRange: function(value) {
- if (this.bounds.isEmpty)
- throw new Error('Chart axis bounds are empty');
- var bounds = this.bounds;
- if (bounds.range === 0)
- return 0;
- return (value - bounds.min) / bounds.range;
- },
-
- /**
- * Automatically set the axis bounds from the range of values of all series
- * in a list.
- *
- * See the description of autoSetFromRange for the optional configuration
- * argument flags.
- */
- autoSetFromSeries: function(series, opt_config) {
- var range = new tr.b.Range();
- series.forEach(function(s) {
- range.addRange(s.range);
- }, this);
- this.autoSetFromRange(range, opt_config);
- },
-
- /**
- * Automatically set the axis bound from a range of values.
- *
- * The following four flags, which affect the behavior of this method with
- * respect to already defined bounds, can be present in the optional
- * configuration (a flag is assumed to be false if it is not provided or if
- * the configuration is not provided):
- *
- * - expandMin: allow decreasing the min bound (if range.min < this.min)
- * - shrinkMin: allow increasing the min bound (if range.min > this.min)
- * - expandMax: allow increasing the max bound (if range.max > this.max)
- * - shrinkMax: allow decreasing the max bound (if range.max < this.max)
- *
- * This method will ensure that the resulting bounds are defined and valid
- * (i.e. min <= max) provided that they were valid or empty before and the
- * value range is non-empty and valid.
- *
- * Note that unless expanding/shrinking a bound is explicitly enabled in
- * the configuration, non-empty bounds will not be changed under any
- * circumstances.
- *
- * Observe that if no configuration is provided (or all flags are set to
- * false), this method will only modify the axis bounds if they are empty.
- */
- autoSetFromRange: function(range, opt_config) {
- if (range.isEmpty)
- return;
-
- var bounds = this.bounds;
- if (bounds.isEmpty) {
- bounds.addRange(range);
- return;
- }
-
- if (!opt_config)
- return;
-
- var useRangeMin = (opt_config.expandMin && range.min < bounds.min ||
- opt_config.shrinkMin && range.min > bounds.min);
- var useRangeMax = (opt_config.expandMax && range.max > bounds.max ||
- opt_config.shrinkMax && range.max < bounds.max);
-
- // Neither bound is modified.
- if (!useRangeMin && !useRangeMax)
- return;
-
- // Both bounds are modified. Assuming the range argument is a valid
- // range, no extra checks are necessary.
- if (useRangeMin && useRangeMax) {
- bounds.min = range.min;
- bounds.max = range.max;
- return;
- }
-
- // Only one bound is modified. We must ensure that it doesn't go
- // over/under the other (unmodified) bound.
- if (useRangeMin) {
- bounds.min = Math.min(range.min, bounds.max);
- } else {
- bounds.max = Math.max(range.max, bounds.min);
- }
- }
- };
-
- return {
- ChartAxis: ChartAxis
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_axis_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_axis_test.html
deleted file mode 100644
index a5f83fd56f8..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_axis_test.html
+++ /dev/null
@@ -1,312 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/base/range.html">
-<link rel="import" href="/tracing/core/test_utils.html">
-<link rel="import" href="/tracing/ui/tracks/chart_axis.html">
-<link rel="import" href="/tracing/ui/tracks/chart_point.html">
-<link rel="import" href="/tracing/ui/tracks/chart_series.html">
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
- var ChartAxis = tr.ui.tracks.ChartAxis;
- var ChartPoint = tr.ui.tracks.ChartPoint;
- var ChartSeries = tr.ui.tracks.ChartSeries;
- var Range = tr.b.Range;
-
- function buildRange() {
- var range = new Range();
- for (var i = 0; i < arguments.length; i++)
- range.addValue(arguments[i]);
- return range;
- }
-
- function buildSeries() {
- var points = [];
- for (var i = 0; i < arguments.length; i++) {
- points.push(new ChartPoint(undefined, i, arguments[i]));
- }
- return new ChartSeries(points, new ChartAxis());
- }
-
- test('instantiate_emptyBounds', function() {
- var axis = new ChartAxis();
- assert.isTrue(axis.bounds.isEmpty);
- });
-
- test('instantiate_nonEmptyBounds', function() {
- var axis = new ChartAxis(-2, 12);
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, -2);
- assert.equal(axis.bounds.max, 12);
- });
-
- test('instantiate_equalBounds', function() {
- var axis = new ChartAxis(2.72);
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, 2.72);
- assert.equal(axis.bounds.max, 2.72);
- });
-
- test('checkValueToUnitRange_emptyBounds', function() {
- var axis = new ChartAxis();
- assert.throws(function() { axis.valueToUnitRange(42); });
- });
-
- test('checkValueToUnitRange_nonEmptyBounds', function() {
- var axis = new ChartAxis(10, 20);
-
- assert.equal(axis.valueToUnitRange(0), -1);
- assert.equal(axis.valueToUnitRange(10), 0);
- assert.equal(axis.valueToUnitRange(15), 0.5);
- assert.equal(axis.valueToUnitRange(20), 1);
- assert.equal(axis.valueToUnitRange(30), 2);
- });
-
- test('checkValueToUnitRange_equalBounds', function() {
- var axis = new ChartAxis(3.14);
-
- assert.equal(axis.valueToUnitRange(0), 0);
- assert.equal(axis.valueToUnitRange(3.14), 0);
- assert.equal(axis.valueToUnitRange(6.28), 0);
- });
-
- test('checkAutoSetFromRange_emptyBounds', function() {
- // Empty range.
- var axis = new ChartAxis();
- axis.autoSetFromRange(buildRange());
- assert.isTrue(axis.bounds.isEmpty);
-
- // Non-empty range.
- var axis = new ChartAxis();
- axis.autoSetFromRange(buildRange(-1, 3));
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, -1);
- assert.equal(axis.bounds.max, 3);
- });
-
- test('checkAutoSetFromRange_nonEmptyBounds', function() {
- // Empty range.
- var axis = new ChartAxis(0, 1);
- axis.autoSetFromRange(buildRange());
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, 0);
- assert.equal(axis.bounds.max, 1);
-
- // No configuration.
- var axis = new ChartAxis(2, 3);
- axis.autoSetFromRange(buildRange(1, 4));
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, 2);
- assert.equal(axis.bounds.max, 3);
-
- // Allow expanding min.
- var axis = new ChartAxis(-2, -1);
- axis.autoSetFromRange(buildRange(-3, 0), {expandMin: true});
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, -3);
- assert.equal(axis.bounds.max, -1);
-
- // Allow shrinking min.
- var axis = new ChartAxis(-2, -1);
- axis.autoSetFromRange(buildRange(-1.5, 0.5), {shrinkMin: true});
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, -1.5);
- assert.equal(axis.bounds.max, -1);
-
- var axis = new ChartAxis(7, 8);
- axis.autoSetFromRange(buildRange(9, 10), {shrinkMin: true});
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, 8);
- assert.equal(axis.bounds.max, 8);
-
- // Allow expanding max.
- var axis = new ChartAxis(19, 20);
- axis.autoSetFromRange(buildRange(18, 21), {expandMax: true});
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, 19);
- assert.equal(axis.bounds.max, 21);
-
- // Allow shrinking max.
- var axis = new ChartAxis(30, 32);
- axis.autoSetFromRange(buildRange(29, 31), {shrinkMax: true});
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, 30);
- assert.equal(axis.bounds.max, 31);
-
- var axis = new ChartAxis(41, 42);
- axis.autoSetFromRange(buildRange(39, 40), {shrinkMax: true});
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, 41);
- assert.equal(axis.bounds.max, 41);
-
- // Allow shrinking both bounds.
- var axis = new ChartAxis(50, 53);
- axis.autoSetFromRange(buildRange(51, 52),
- {shrinkMin: true, shrinkMax: true});
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, 51);
- assert.equal(axis.bounds.max, 52);
-
- var axis = new ChartAxis(50, 53);
- axis.autoSetFromRange(buildRange(49, 52),
- {shrinkMin: true, shrinkMax: true});
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, 50);
- assert.equal(axis.bounds.max, 52);
-
- var axis = new ChartAxis(50, 53);
- axis.autoSetFromRange(buildRange(51, 54),
- {shrinkMin: true, shrinkMax: true});
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, 51);
- assert.equal(axis.bounds.max, 53);
-
- var axis = new ChartAxis(50, 53);
- axis.autoSetFromRange(buildRange(49, 54),
- {shrinkMin: true, shrinkMax: true});
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, 50);
- assert.equal(axis.bounds.max, 53);
-
- // Allow expanding both bounds.
- var axis = new ChartAxis(60, 61);
- axis.autoSetFromRange(buildRange(0, 100),
- {expandMin: true, expandMax: true});
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, 0);
- assert.equal(axis.bounds.max, 100);
-
- var axis = new ChartAxis(60, 61);
- axis.autoSetFromRange(buildRange(60.5, 100),
- {expandMin: true, expandMax: true});
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, 60);
- assert.equal(axis.bounds.max, 100);
-
- var axis = new ChartAxis(60, 61);
- axis.autoSetFromRange(buildRange(0, 60.5),
- {expandMin: true, expandMax: true});
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, 0);
- assert.equal(axis.bounds.max, 61);
-
- var axis = new ChartAxis(60, 61);
- axis.autoSetFromRange(buildRange(60.2, 60.8),
- {expandMin: true, expandMax: true});
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, 60);
- assert.equal(axis.bounds.max, 61);
-
- // Allow shrinking min and expanding max.
- var axis = new ChartAxis(60, 61);
- axis.autoSetFromRange(buildRange(62, 63),
- {shrinkMin: true, expandMax: true});
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, 62);
- assert.equal(axis.bounds.max, 63);
-
- var axis = new ChartAxis(60, 61);
- axis.autoSetFromRange(buildRange(59, 63),
- {shrinkMin: true, expandMax: true});
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, 60);
- assert.equal(axis.bounds.max, 63);
-
- var axis = new ChartAxis(60, 61);
- axis.autoSetFromRange(buildRange(60.2, 60.8),
- {shrinkMin: true, expandMax: true});
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, 60.2);
- assert.equal(axis.bounds.max, 61);
-
- var axis = new ChartAxis(60, 61);
- axis.autoSetFromRange(buildRange(59, 60.5),
- {shrinkMin: true, expandMax: true});
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, 60);
- assert.equal(axis.bounds.max, 61);
-
- // Allow expanding min and shrinking max.
- var axis = new ChartAxis(60, 61);
- axis.autoSetFromRange(buildRange(62, 63),
- {expandMin: true, shrinkMax: true});
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, 60);
- assert.equal(axis.bounds.max, 61);
-
- var axis = new ChartAxis(60, 61);
- axis.autoSetFromRange(buildRange(59, 63),
- {expandMin: true, shrinkMax: true});
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, 59);
- assert.equal(axis.bounds.max, 61);
-
- var axis = new ChartAxis(60, 61);
- axis.autoSetFromRange(buildRange(60.2, 60.8),
- {expandMin: true, shrinkMax: true});
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, 60);
- assert.equal(axis.bounds.max, 60.8);
-
- var axis = new ChartAxis(60, 61);
- axis.autoSetFromRange(buildRange(59, 60.5),
- {expandMin: true, shrinkMax: true});
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, 59);
- assert.equal(axis.bounds.max, 60.5);
-
- // Allow everything.
- var axis = new ChartAxis(200, 250);
- axis.autoSetFromRange(buildRange(150, 175),
- {expandMin: true, expandMax: true, shrinkMin: true, shrinkMax: true});
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, 150);
- assert.equal(axis.bounds.max, 175);
-
- var axis = new ChartAxis(0, 0.1);
- axis.autoSetFromRange(buildRange(0.2, 0.3),
- {expandMin: true, expandMax: true, shrinkMin: true, shrinkMax: true});
- assert.isFalse(axis.bounds.isEmpty);
- assert.equal(axis.bounds.min, 0.2);
- assert.equal(axis.bounds.max, 0.3);
- });
-
- test('checkAutoSetFromSeries_noSeries', function() {
- var axis = new ChartAxis(-100, 100);
- var series = [];
-
- axis.autoSetFromSeries(series);
- assert.equal(axis.bounds.min, -100);
- assert.equal(axis.bounds.max, 100);
- });
-
- test('checkAutoSetFromSeries_oneSeries', function() {
- var axis = new ChartAxis(-100, 100);
- var series = [buildSeries(-80, 100, -40, 200)];
-
- axis.autoSetFromSeries(series, {shrinkMin: true, expandMax: true});
- assert.equal(axis.bounds.min, -80);
- assert.equal(axis.bounds.max, 200);
- });
-
- test('checkAutoSetFromSeries_multipleSeries', function() {
- var axis = new ChartAxis(-100, 100);
- var series = [
- buildSeries(0, 20, 10, 30),
- buildSeries(),
- buildSeries(-500)
- ];
-
- axis.autoSetFromSeries(series, {expandMin: true, shrinkMax: true});
- assert.equal(axis.bounds.min, -500);
- assert.equal(axis.bounds.max, 30);
- });
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_point.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_point.html
deleted file mode 100644
index f5b5587dcde..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_point.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/model/proxy_selectable_item.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
-
- /**
- * A point in a chart series with x (timestamp) and y (value) coordinates
- * and an associated model item. The point can optionally also have a base
- * y coordinate (which for example corresponds to the bottom edge of the
- * associated bar in a bar chart).
- *
- * @constructor
- * @extends {ProxySelectableItem}
- */
- function ChartPoint(modelItem, x, y, opt_yBase) {
- tr.model.ProxySelectableItem.call(this, modelItem);
- this.x = x;
- this.y = y;
-
- // If the base y-coordinate is undefined, the bottom edge of the associated
- // bar in a bar chart will start at the outer bottom edge (which is most
- // likely slightly below zero).
- this.yBase = opt_yBase;
- };
-
- ChartPoint.prototype = {
- __proto__: tr.model.ProxySelectableItem.prototype
- };
-
- return {
- ChartPoint: ChartPoint
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_point_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_point_test.html
deleted file mode 100644
index 491784dbe51..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_point_test.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/core/test_utils.html">
-<link rel="import" href="/tracing/ui/tracks/chart_point.html">
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
- var ChartPoint = tr.ui.tracks.ChartPoint;
-
- test('checkFields_withoutYBase', function() {
- var event = {};
- var point = new ChartPoint(event, 42, -7);
-
- assert.equal(point.modelItem, event);
- assert.equal(point.x, 42);
- assert.equal(point.y, -7);
- assert.isUndefined(point.yBase);
- });
-
- test('checkFields_withYBase', function() {
- var event = {};
- var point = new ChartPoint(event, 111, 222, 333);
-
- assert.equal(point.modelItem, event);
- assert.equal(point.x, 111);
- assert.equal(point.y, 222);
- assert.equal(point.yBase, 333);
- });
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_series.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_series.html
deleted file mode 100644
index 05cd5a03a6e..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_series.html
+++ /dev/null
@@ -1,494 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/base/range.html">
-<link rel="import" href="/tracing/ui/base/event_presenter.html">
-<link rel="import" href="/tracing/model/proxy_selectable_item.html">
-<link rel="import" href="/tracing/model/selection_state.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
- var EventPresenter = tr.ui.b.EventPresenter;
- var SelectionState = tr.model.SelectionState;
-
- /**
- * The type of a chart series.
- * @enum
- */
- var ChartSeriesType = {
- LINE: 0,
- AREA: 1
- };
-
- // The default rendering configuration for ChartSeries.
- var DEFAULT_RENDERING_CONFIG = {
- // The type of the chart series.
- chartType: ChartSeriesType.LINE,
-
- // The size of a selected point dot in device-independent pixels (circle
- // diameter).
- selectedPointSize: 4,
-
- // The size of an unselected point dot in device-independent pixels (square
- // width/height).
- unselectedPointSize: 3,
-
- // The color of the chart.
- colorId: 0,
-
- // The width of the top line in device-independent pixels.
- lineWidth: 1,
-
- // Minimum distance between points in physical pixels. Points which are
- // closer than this distance will be skipped.
- skipDistance: 1,
-
- // Density in points per physical pixel at which unselected point dots
- // become transparent.
- unselectedPointDensityTransparent: 0.10,
-
- // Density in points per physical pixel at which unselected point dots
- // become fully opaque.
- unselectedPointDensityOpaque: 0.05,
-
- // Opacity of area chart background.
- backgroundOpacity: 0.5
- };
-
- // The virtual width of the last point in a series (whose rectangle has zero
- // width) in world timestamps difference for the purposes of selection.
- var LAST_POINT_WIDTH = 16;
-
- /**
- * Visual components of a ChartSeries.
- * @enum
- */
- var ChartSeriesComponent = {
- BACKGROUND: 0,
- LINE: 1,
- DOTS: 2
- };
-
- /**
- * A series of points corresponding to a single chart on a chart track.
- * This class is responsible for drawing the actual chart onto canvas.
- *
- * @constructor
- */
- function ChartSeries(points, axis, opt_renderingConfig) {
- this.points = points;
- this.axis = axis;
-
- this.useRenderingConfig_(opt_renderingConfig);
- }
-
- ChartSeries.prototype = {
- useRenderingConfig_: function(opt_renderingConfig) {
- var config = opt_renderingConfig || {};
-
- // Store all configuration flags as private properties.
- tr.b.iterItems(DEFAULT_RENDERING_CONFIG, function(key, defaultValue) {
- var value = config[key];
- if (value === undefined)
- value = defaultValue;
- this[key + '_'] = value;
- }, this);
-
- // Avoid unnecessary recomputation in getters.
- this.topPadding = this.bottomPadding = Math.max(
- this.selectedPointSize_, this.unselectedPointSize_) / 2;
- },
-
- get range() {
- var range = new tr.b.Range();
- this.points.forEach(function(point) {
- range.addValue(point.y);
- }, this);
- return range;
- },
-
- draw: function(ctx, transform, highDetails) {
- if (this.points === undefined || this.points.length === 0)
- return;
-
- // Draw the background.
- if (this.chartType_ === ChartSeriesType.AREA) {
- this.drawComponent_(ctx, transform, ChartSeriesComponent.BACKGROUND,
- highDetails);
- }
-
- // Draw the line at the top.
- if (this.chartType_ === ChartSeriesType.LINE || highDetails) {
- this.drawComponent_(ctx, transform, ChartSeriesComponent.LINE,
- highDetails);
- }
-
- // Draw the points.
- this.drawComponent_(ctx, transform, ChartSeriesComponent.DOTS,
- highDetails);
- },
-
- drawComponent_: function(ctx, transform, component, highDetails) {
- // We need to consider extra pixels outside the visible area to avoid
- // visual glitches due to non-zero width of dots.
- var extraPixels = 0;
- if (component === ChartSeriesComponent.DOTS) {
- extraPixels = Math.max(
- this.selectedPointSize_, this.unselectedPointSize_);
- }
- var leftViewX = transform.leftViewX - extraPixels * transform.pixelRatio;
- var rightViewX = transform.rightViewX +
- extraPixels * transform.pixelRatio;
- var leftTimestamp = transform.leftTimestamp - extraPixels;
- var rightTimestamp = transform.rightTimestamp + extraPixels;
-
- // Find the index of the first and last (partially) visible points.
- var firstVisibleIndex = tr.b.findLowIndexInSortedArray(
- this.points,
- function(point) { return point.x; },
- leftTimestamp);
- var lastVisibleIndex = tr.b.findLowIndexInSortedArray(
- this.points,
- function(point) { return point.x; },
- rightTimestamp);
- if (lastVisibleIndex >= this.points.length ||
- this.points[lastVisibleIndex].x > rightTimestamp) {
- lastVisibleIndex--;
- }
-
- // Pre-calculate component style which does not depend on individual
- // points:
- // * Skip distance between points,
- // * Selected (circle) and unselected (square) dot size,
- // * Unselected dot opacity,
- // * Selected dot edge color and width, and
- // * Line component color and width.
- var viewSkipDistance = this.skipDistance_ * transform.pixelRatio;
- var circleRadius;
- var squareSize;
- var squareHalfSize;
- var squareOpacity;
-
- switch (component) {
- case ChartSeriesComponent.DOTS:
- // Selected dot edge color and width.
- ctx.strokeStyle = EventPresenter.getCounterSeriesColor(
- this.colorId_, SelectionState.NONE);
- ctx.lineWidth = transform.pixelRatio;
-
- // Selected (circle) and unselected (square) dot size.
- circleRadius = (this.selectedPointSize_ / 2) * transform.pixelRatio;
- squareSize = this.unselectedPointSize_ * transform.pixelRatio;
- squareHalfSize = squareSize / 2;
-
- // Unselected dot opacity.
- if (!highDetails) {
- // Unselected dots are not displayed in 'low details' mode.
- squareOpacity = 0;
- break;
- }
- var visibleIndexRange = lastVisibleIndex - firstVisibleIndex;
- if (visibleIndexRange <= 0) {
- // There is at most one visible point.
- squareOpacity = 1;
- break;
- }
- var visibleViewXRange =
- transform.worldXToViewX(this.points[lastVisibleIndex].x) -
- transform.worldXToViewX(this.points[firstVisibleIndex].x);
- if (visibleViewXRange === 0) {
- // Multiple visible points which all have the same timestamp.
- squareOpacity = 1;
- break;
- }
- var density = visibleIndexRange / visibleViewXRange;
- var clampedDensity = tr.b.clamp(density,
- this.unselectedPointDensityOpaque_,
- this.unselectedPointDensityTransparent_);
- var densityRange = this.unselectedPointDensityTransparent_ -
- this.unselectedPointDensityOpaque_;
- squareOpacity =
- (this.unselectedPointDensityTransparent_ - clampedDensity) /
- densityRange;
- break;
-
- case ChartSeriesComponent.LINE:
- // Line component color and width.
- ctx.strokeStyle = EventPresenter.getCounterSeriesColor(
- this.colorId_, SelectionState.NONE);
- ctx.lineWidth = this.lineWidth_ * transform.pixelRatio;
- break;
-
- case ChartSeriesComponent.BACKGROUND:
- // Style depends on the selection state of individual points.
- break;
-
- default:
- throw new Error('Invalid component: ' + component);
- }
-
- // The main loop which draws the given component of visible points from
- // left to right. Given the potentially large number of points to draw,
- // it should be considered performance-critical and function calls should
- // be avoided when possible.
- //
- // Note that the background and line components are drawn in a delayed
- // fashion: the rectangle/line that we draw in an iteration corresponds
- // to the *previous* point. This does not apply to the dots, whose
- // position is independent of the surrounding dots.
- var previousViewX = undefined;
- var previousViewY = undefined;
- var previousViewYBase = undefined;
- var lastSelectionState = undefined;
- var baseSteps = undefined;
- var startIndex = Math.max(firstVisibleIndex - 1, 0);
-
- for (var i = startIndex; i < this.points.length; i++) {
- var currentPoint = this.points[i];
- var currentViewX = transform.worldXToViewX(currentPoint.x);
-
- // Stop drawing the points once we are to the right of the visible area.
- if (currentViewX > rightViewX) {
- if (previousViewX !== undefined) {
- previousViewX = currentViewX = rightViewX;
- if (component === ChartSeriesComponent.BACKGROUND ||
- component === ChartSeriesComponent.LINE) {
- ctx.lineTo(currentViewX, previousViewY);
- }
- }
- break;
- }
-
- if (i + 1 < this.points.length) {
- var nextPoint = this.points[i + 1];
- var nextViewX = transform.worldXToViewX(nextPoint.x);
-
- // Skip points that are too close to each other.
- if (previousViewX !== undefined &&
- nextViewX - previousViewX <= viewSkipDistance &&
- nextViewX < rightViewX) {
- continue;
- }
-
- // Start drawing right at the left side of the visible are (instead
- // of potentially very far to the left).
- if (currentViewX < leftViewX) {
- currentViewX = leftViewX;
- }
- }
-
- if (previousViewX !== undefined &&
- currentViewX - previousViewX < viewSkipDistance) {
- // We know that nextViewX > previousViewX + viewSkipDistance, so we
- // can safely move this points's x over that much without passing
- // nextViewX. This ensures that the previous point is visible when
- // zoomed out very far.
- currentViewX = previousViewX + viewSkipDistance;
- }
-
- var currentViewY = Math.round(transform.worldYToViewY(currentPoint.y));
- var currentViewYBase;
- if (currentPoint.yBase === undefined) {
- currentViewYBase = transform.outerBottomViewY;
- } else {
- currentViewYBase = Math.round(
- transform.worldYToViewY(currentPoint.yBase));
- }
- var currentSelectionState = currentPoint.selectionState;
-
- // Actually draw the given component of the point.
- switch (component) {
- case ChartSeriesComponent.DOTS:
- // Change dot style when the selection state changes (and at the
- // beginning).
- if (currentSelectionState !== lastSelectionState) {
- if (currentSelectionState === SelectionState.SELECTED) {
- ctx.fillStyle = EventPresenter.getCounterSeriesColor(
- this.colorId_, currentSelectionState);
- } else if (squareOpacity > 0) {
- ctx.fillStyle = EventPresenter.getCounterSeriesColor(
- this.colorId_, currentSelectionState, squareOpacity);
- }
- }
-
- // Draw the dot for the current point.
- if (currentSelectionState === SelectionState.SELECTED) {
- ctx.beginPath();
- ctx.arc(currentViewX, currentViewY, circleRadius, 0, 2 * Math.PI);
- ctx.fill();
- ctx.stroke();
- } else if (squareOpacity > 0) {
- ctx.fillRect(currentViewX - squareHalfSize,
- currentViewY - squareHalfSize, squareSize, squareSize);
- }
- break;
-
- case ChartSeriesComponent.LINE:
- // Draw the top line for the previous point (if applicable), or
- // prepare for drawing the top line of the current point in the next
- // iteration.
- if (previousViewX === undefined) {
- ctx.beginPath();
- ctx.moveTo(currentViewX, currentViewY);
- } else {
- ctx.lineTo(currentViewX, previousViewY);
- }
-
- // Move to the current point coordinate.
- ctx.lineTo(currentViewX, currentViewY);
- break;
-
- case ChartSeriesComponent.BACKGROUND:
- // Draw the background for the previous point (if applicable).
- if (previousViewX !== undefined)
- ctx.lineTo(currentViewX, previousViewY);
-
- // Finish the bottom part of the backgound polygon, change
- // background color and start a new polygon when the selection state
- // changes (and at the beginning).
- if (currentSelectionState !== lastSelectionState) {
- if (previousViewX !== undefined) {
- var previousBaseStepViewX = currentViewX;
- for (var j = baseSteps.length - 1; j >= 0; j--) {
- var baseStep = baseSteps[j];
- var baseStepViewX = baseStep.viewX;
- var baseStepViewY = baseStep.viewY;
- ctx.lineTo(previousBaseStepViewX, baseStepViewY);
- ctx.lineTo(baseStepViewX, baseStepViewY);
- previousBaseStepViewX = baseStepViewX;
- }
- ctx.closePath();
- ctx.fill();
- }
- ctx.beginPath();
- ctx.fillStyle = EventPresenter.getCounterSeriesColor(
- this.colorId_, currentSelectionState,
- this.backgroundOpacity_);
- ctx.moveTo(currentViewX, currentViewYBase);
- baseSteps = [];
- }
-
- if (currentViewYBase !== previousViewYBase ||
- currentSelectionState !== lastSelectionState) {
- baseSteps.push({viewX: currentViewX, viewY: currentViewYBase});
- }
-
- // Move to the current point coordinate.
- ctx.lineTo(currentViewX, currentViewY);
- break;
-
- default:
- throw new Error('Not reachable');
- }
-
- previousViewX = currentViewX;
- previousViewY = currentViewY;
- previousViewYBase = currentViewYBase;
- lastSelectionState = currentSelectionState;
- }
-
- // If we still have an open background or top line polygon (which is
- // always the case once we have started drawing due to the delayed fashion
- // of drawing), we must close it.
- if (previousViewX !== undefined) {
- switch (component) {
- case ChartSeriesComponent.DOTS:
- // All dots were drawn in the main loop.
- break;
-
- case ChartSeriesComponent.LINE:
- ctx.stroke();
- break;
-
- case ChartSeriesComponent.BACKGROUND:
- var previousBaseStepViewX = currentViewX;
- for (var j = baseSteps.length - 1; j >= 0; j--) {
- var baseStep = baseSteps[j];
- var baseStepViewX = baseStep.viewX;
- var baseStepViewY = baseStep.viewY;
- ctx.lineTo(previousBaseStepViewX, baseStepViewY);
- ctx.lineTo(baseStepViewX, baseStepViewY);
- previousBaseStepViewX = baseStepViewX;
- }
- ctx.closePath();
- ctx.fill();
- break;
-
- default:
- throw new Error('Not reachable');
- }
- }
- },
-
- addIntersectingEventsInRangeToSelectionInWorldSpace: function(
- loWX, hiWX, viewPixWidthWorld, selection) {
- var points = this.points;
-
- function getPointWidth(point, i) {
- if (i === points.length - 1)
- return LAST_POINT_WIDTH * viewPixWidthWorld;
- var nextPoint = points[i + 1];
- return nextPoint.x - point.x;
- }
-
- function selectPoint(point) {
- point.addToSelection(selection);
- }
-
- tr.b.iterateOverIntersectingIntervals(
- this.points,
- function(point) { return point.x },
- getPointWidth,
- loWX,
- hiWX,
- selectPoint);
- },
-
- addEventNearToProvidedEventToSelection: function(event, offset, selection) {
- if (this.points === undefined)
- return false;
-
- var index = tr.b.findFirstIndexInArray(this.points, function(point) {
- return point.modelItem === event;
- }, this);
- if (index === -1)
- return false;
-
- var newIndex = index + offset;
- if (newIndex < 0 || newIndex >= this.points.length)
- return false;
-
- this.points[newIndex].addToSelection(selection);
- return true;
- },
-
- addClosestEventToSelection: function(worldX, worldMaxDist, loY, hiY,
- selection) {
- if (this.points === undefined)
- return;
-
- var item = tr.b.findClosestElementInSortedArray(
- this.points,
- function(point) { return point.x },
- worldX,
- worldMaxDist);
-
- if (!item)
- return;
-
- item.addToSelection(selection);
- }
- };
-
- return {
- ChartSeries: ChartSeries,
- ChartSeriesType: ChartSeriesType
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_series_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_series_test.html
deleted file mode 100644
index bf84ef56c6a..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_series_test.html
+++ /dev/null
@@ -1,294 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/core/test_utils.html">
-<link rel="import" href="/tracing/model/event.html">
-<link rel="import" href="/tracing/model/event_set.html">
-<link rel="import" href="/tracing/ui/timeline_display_transform.html">
-<link rel="import" href="/tracing/ui/tracks/chart_axis.html">
-<link rel="import" href="/tracing/ui/tracks/chart_point.html">
-<link rel="import" href="/tracing/ui/tracks/chart_series.html">
-<link rel="import" href="/tracing/ui/tracks/chart_transform.html">
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
- var EventSet = tr.model.EventSet;
- var TimelineDisplayTransform = tr.ui.TimelineDisplayTransform;
- var Event = tr.model.Event;
- var ChartAxis = tr.ui.tracks.ChartAxis;
- var ChartPoint = tr.ui.tracks.ChartPoint;
- var ChartSeries = tr.ui.tracks.ChartSeries;
- var ChartTransform = tr.ui.tracks.ChartTransform;
- var ChartSeriesType = tr.ui.tracks.ChartSeriesType;
-
- var CANVAS_WIDTH = 800;
- var CANVAS_HEIGHT = 80;
-
- function buildSeries(renderingConfig) {
- var points = [];
- for (var i = 0; i < 60; i++) {
- var event = new Event();
- event.index = i;
- var phase = i * Math.PI / 15;
- var value = Math.sin(phase);
- var peakIndex = Math.floor((phase + Math.PI / 2) / (2 * Math.PI));
- var base = peakIndex % 2 === 0 ? undefined : -1 + value / 1.5;
- var point = new ChartPoint(event, i - 30, value, base);
- points.push(point);
- }
- var axis = new ChartAxis(-1, 1);
- return new ChartSeries(points, axis, renderingConfig);
- }
-
- function drawSeriesWithDetails(test, series, highDetails) {
- var div = document.createElement('div');
- var canvas = document.createElement('canvas');
- div.appendChild(canvas);
-
- var pixelRatio = window.devicePixelRatio || 1;
-
- canvas.width = CANVAS_WIDTH * pixelRatio;
- canvas.style.width = CANVAS_WIDTH + 'px';
- canvas.height = CANVAS_HEIGHT * pixelRatio;
- canvas.style.height = CANVAS_HEIGHT + 'px';
-
- var displayTransform = new TimelineDisplayTransform();
- displayTransform.scaleX = CANVAS_WIDTH * pixelRatio / 60;
- displayTransform.panX = 30;
-
- var transform = new ChartTransform(
- displayTransform,
- series.axis,
- CANVAS_WIDTH * pixelRatio,
- CANVAS_HEIGHT * pixelRatio,
- 10 * pixelRatio,
- 10 * pixelRatio,
- pixelRatio);
-
- series.draw(canvas.getContext('2d'), transform, highDetails);
-
- test.addHTMLOutput(div);
- }
-
- function drawSeries(test, series) {
- drawSeriesWithDetails(test, series, false);
- drawSeriesWithDetails(test, series, true);
- }
-
- test('instantiate_defaultConfig', function() {
- var series = buildSeries(undefined);
- drawSeries(this, series);
- });
-
- test('instantiate_lineChart', function() {
- var series = buildSeries({
- chartType: ChartSeriesType.LINE,
- colorId: 4,
- unselectedPointSize: 6,
- lineWidth: 2,
- unselectedPointDensityOpaque: 0.08
- });
- drawSeries(this, series);
- });
-
- test('instantiate_areaChart', function() {
- var series = buildSeries({
- chartType: ChartSeriesType.AREA,
- colorId: 2,
- backgroundOpacity: 0.2
- });
- drawSeries(this, series);
- });
-
- test('instantiate_largeSkipDistance', function() {
- var series = buildSeries({
- chartType: ChartSeriesType.AREA,
- colorId: 1,
- skipDistance: 40,
- unselectedPointDensityTransparent: 0.07
- });
- drawSeries(this, series);
- });
-
- test('instantiate_selection', function() {
- var series = buildSeries({
- chartType: ChartSeriesType.AREA,
- colorId: 10
- });
- series.points.forEach(function(point, index) {
- point.modelItem.selectionState = index % 4;
- });
- drawSeries(this, series);
- });
-
- test('instantiate_selectionWithAllConfigFlags', function() {
- var series = buildSeries({
- chartType: ChartSeriesType.AREA,
- selectedPointSize: 10,
- unselectedPointSize: 6,
- colorId: 15,
- lineWidth: 2,
- skipDistance: 25,
- unselectedPointDensityOpaque: 0.07,
- unselectedPointDensityTransparent: 0.09,
- backgroundOpacity: 0.8
- });
- series.points.forEach(function(point, index) {
- point.modelItem.selectionState = index % 4;
- });
- drawSeries(this, series);
- });
-
- test('checkRange', function() {
- var series = buildSeries();
- var range = series.range;
- assert.isFalse(range.isEmpty);
- assert.closeTo(range.min, -1, 0.05);
- assert.closeTo(range.max, 1, 0.05);
- });
-
- test('checkaddIntersectingEventsInRangeToSelectionInWorldSpace', function() {
- var series = buildSeries();
-
- // Too far left.
- var sel = new EventSet();
- series.addIntersectingEventsInRangeToSelectionInWorldSpace(
- -1000, -30.5, 40, sel);
- assert.lengthOf(sel, 0);
-
- // Select first point.
- var sel = new EventSet();
- series.addIntersectingEventsInRangeToSelectionInWorldSpace(
- -30.5, -29.5, 40, sel);
- assert.lengthOf(sel, 1);
- assert.equal(sel[0].index, 0);
-
- // Select second point.
- var sel = new EventSet();
- series.addIntersectingEventsInRangeToSelectionInWorldSpace(
- -28.8, -28.2, 40, sel);
- assert.lengthOf(sel, 1);
- assert.equal(sel[0].index, 1);
-
- // Select points in the middle.
- var sel = new EventSet();
- series.addIntersectingEventsInRangeToSelectionInWorldSpace(
- -0.99, 1.01, 40, sel);
- assert.lengthOf(sel, 3);
- assert.equal(sel[0].index, 29);
- assert.equal(sel[1].index, 30);
- assert.equal(sel[2].index, 31);
-
- // Select the last point.
- var sel = new EventSet();
- series.addIntersectingEventsInRangeToSelectionInWorldSpace(
- 668.99, 668.99, 40, sel);
- assert.lengthOf(sel, 1);
- assert.equal(sel[0].index, 59);
-
- // Too far right.
- var sel = new EventSet();
- series.addIntersectingEventsInRangeToSelectionInWorldSpace(
- 669.01, 2000, 40, sel);
- assert.lengthOf(sel, 0);
-
- // Select everything.
- var sel = new EventSet();
- series.addIntersectingEventsInRangeToSelectionInWorldSpace(
- -29.01, 669.01, 40, sel);
- assert.lengthOf(sel, 60);
- });
-
- test('checkaddEventNearToProvidedEventToSelection', function() {
- var series = buildSeries();
-
- // Invalid event.
- var sel = new EventSet();
- assert.isFalse(series.addEventNearToProvidedEventToSelection(
- new Event(), 1, sel));
- assert.lengthOf(sel, 0);
-
- var sel = new EventSet();
- assert.isFalse(series.addEventNearToProvidedEventToSelection(
- new Event(), -1, sel));
- assert.lengthOf(sel, 0);
-
- // First point.
- var sel = new EventSet();
- assert.isTrue(series.addEventNearToProvidedEventToSelection(
- series.points[0].modelItem, 1, sel));
- assert.lengthOf(sel, 1);
- assert.equal(sel[0].index, 1);
-
- var sel = new EventSet();
- assert.isFalse(series.addEventNearToProvidedEventToSelection(
- series.points[0].modelItem, -1, sel));
- assert.lengthOf(sel, 0);
-
- // Middle point.
- var sel = new EventSet();
- assert.isTrue(series.addEventNearToProvidedEventToSelection(
- series.points[30].modelItem, 1, sel));
- assert.lengthOf(sel, 1);
- assert.equal(sel[0].index, 31);
-
- var sel = new EventSet();
- assert.isTrue(series.addEventNearToProvidedEventToSelection(
- series.points[30].modelItem, -1, sel));
- assert.lengthOf(sel, 1);
- assert.equal(sel[0].index, 29);
-
- // Last point.
- var sel = new EventSet();
- assert.isFalse(series.addEventNearToProvidedEventToSelection(
- series.points[59].modelItem, 1, sel));
- assert.lengthOf(sel, 0);
-
- var sel = new EventSet();
- assert.isTrue(series.addEventNearToProvidedEventToSelection(
- series.points[59].modelItem, -1, sel));
- assert.lengthOf(sel, 1);
- assert.equal(sel[0].index, 58);
- });
-
- test('checkAddClosestEventToSelection', function() {
- var series = buildSeries();
-
- // Left of first point.
- var sel = new EventSet();
- series.addClosestEventToSelection(-40, 9, -0.5, 0.5, sel);
- assert.lengthOf(sel, 0);
-
- var sel = new EventSet();
- series.addClosestEventToSelection(-40, 11, -0.5, 0.5, sel);
- assert.lengthOf(sel, 1);
- assert.equal(sel[0].index, 0);
-
- // Between two points.
- var sel = new EventSet();
- series.addClosestEventToSelection(0.4, 0.3, -0.5, 0.5, sel);
- assert.lengthOf(sel, 0);
-
- var sel = new EventSet();
- series.addClosestEventToSelection(0.4, 0.4, -0.5, 0.5, sel);
- assert.lengthOf(sel, 1);
- assert.equal(sel[0].index, 30);
-
- // Right of last point.
- var sel = new EventSet();
- series.addClosestEventToSelection(40, 10, -0.5, 0.5, sel);
- assert.lengthOf(sel, 0);
-
- var sel = new EventSet();
- series.addClosestEventToSelection(40, 12, -0.5, 0.5, sel);
- assert.lengthOf(sel, 1);
- assert.equal(sel[0].index, 59);
- });
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_track.html
deleted file mode 100644
index 86e80ae1cde..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_track.html
+++ /dev/null
@@ -1,241 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/ui/tracks/chart_transform.html">
-<link rel="import" href="/tracing/ui/tracks/track.html">
-<link rel="import" href="/tracing/ui/base/heading.html">
-<link rel="import" href="/tracing/ui/base/ui.html">
-
-<style>
-.chart-track {
- height: 30px;
- position: relative;
-}
-</style>
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
-
- /**
- * A track that displays a chart.
- *
- * @constructor
- * @extends {Track}
- */
- var ChartTrack =
- tr.ui.b.define('chart-track', tr.ui.tracks.Track);
-
- ChartTrack.prototype = {
- __proto__: tr.ui.tracks.Track.prototype,
-
- decorate: function(viewport) {
- tr.ui.tracks.Track.prototype.decorate.call(this, viewport);
- this.classList.add('chart-track');
- this.series_ = undefined;
-
- // GUID -> {axis: ChartAxis, series: [ChartSeries]}.
- this.axisGuidToAxisData_ = undefined;
-
- // The maximum top and bottom padding of all series.
- this.topPadding_ = undefined;
- this.bottomPadding_ = undefined;
-
- this.heading_ = document.createElement('tr-ui-heading');
- this.appendChild(this.heading_);
- },
-
- set heading(heading) {
- this.heading_.heading = heading;
- },
-
- get heading() {
- return this.heading_.heading;
- },
-
- set tooltip(tooltip) {
- this.heading_.tooltip = tooltip;
- },
-
- get series() {
- return this.series_;
- },
-
- /**
- * Set the list of chart series to be displayed on this track. The list
- * is assumed to be sorted in increasing z-order (i.e. the last series in
- * the list will be drawn at the top).
- */
- set series(series) {
- this.series_ = series;
- this.calculateAxisDataAndPadding_();
- this.invalidateDrawingContainer();
- },
-
- get height() {
- return window.getComputedStyle(this).height;
- },
-
- set height(height) {
- this.style.height = height;
- this.invalidateDrawingContainer();
- },
-
- get hasVisibleContent() {
- return !!this.series && this.series.length > 0;
- },
-
- calculateAxisDataAndPadding_: function() {
- if (!this.series_) {
- this.axisGuidToAxisData_ = undefined;
- this.topPadding_ = undefined;
- this.bottomPadding_ = undefined;
- return;
- }
-
- var axisGuidToAxisData = {};
- var topPadding = 0;
- var bottomPadding = 0;
-
- this.series_.forEach(function(series) {
- var axis = series.axis;
- var axisGuid = axis.guid;
- if (!(axisGuid in axisGuidToAxisData)) {
- axisGuidToAxisData[axisGuid] = {
- axis: axis,
- series: []
- };
- }
- axisGuidToAxisData[axisGuid].series.push(series);
- topPadding = Math.max(topPadding, series.topPadding);
- bottomPadding = Math.max(bottomPadding, series.bottomPadding);
- }, this);
-
- this.axisGuidToAxisData_ = axisGuidToAxisData;
- this.topPadding_ = topPadding;
- this.bottomPadding_ = bottomPadding;
- },
-
- draw: function(type, viewLWorld, viewRWorld) {
- switch (type) {
- case tr.ui.tracks.DrawType.GENERAL_EVENT:
- this.drawChart_(viewLWorld, viewRWorld);
- break;
- }
- },
-
- drawChart_: function(viewLWorld, viewRWorld) {
- if (!this.series_)
- return;
-
- var ctx = this.context();
-
- // Get track drawing parameters.
- var displayTransform = this.viewport.currentDisplayTransform;
- var pixelRatio = window.devicePixelRatio || 1;
- var bounds = this.getBoundingClientRect();
- var highDetails = this.viewport.highDetails;
-
- // Pre-multiply all device-independent pixel parameters with the pixel
- // ratio to avoid unnecessary recomputation in the performance-critical
- // drawing code.
- var width = bounds.width * pixelRatio;
- var height = bounds.height * pixelRatio;
- var topPadding = this.topPadding_ * pixelRatio;
- var bottomPadding = this.bottomPadding_ * pixelRatio;
-
- // Set up clipping.
- ctx.save();
- ctx.beginPath();
- ctx.rect(0, 0, width, height);
- ctx.clip();
-
- // Draw all series in the increasing z-order.
- this.series_.forEach(function(series) {
- var chartTransform = new tr.ui.tracks.ChartTransform(
- displayTransform, series.axis, width, height, topPadding,
- bottomPadding, pixelRatio);
- series.draw(ctx, chartTransform, highDetails);
- }, this);
-
- // Stop clipping.
- ctx.restore();
- },
-
- addEventsToTrackMap: function(eventToTrackMap) {
- // TODO(petrcermak): Consider adding the series to the track map instead
- // of the track (a potential performance optimization).
- this.series_.forEach(function(series) {
- series.points.forEach(function(point) {
- point.addToTrackMap(eventToTrackMap, this);
- }, this);
- }, this);
- },
-
- addIntersectingEventsInRangeToSelectionInWorldSpace: function(
- loWX, hiWX, viewPixWidthWorld, selection) {
- this.series_.forEach(function(series) {
- series.addIntersectingEventsInRangeToSelectionInWorldSpace(
- loWX, hiWX, viewPixWidthWorld, selection);
- }, this);
- },
-
- addEventNearToProvidedEventToSelection: function(event, offset, selection) {
- var foundItem = false;
- this.series_.forEach(function(series) {
- foundItem = foundItem || series.addEventNearToProvidedEventToSelection(
- event, offset, selection);
- }, this);
- return foundItem;
- },
-
- addAllEventsMatchingFilterToSelection: function(filter, selection) {
- // Do nothing.
- },
-
- addClosestEventToSelection: function(worldX, worldMaxDist, loY, hiY,
- selection) {
- this.series_.forEach(function(series) {
- series.addClosestEventToSelection(
- worldX, worldMaxDist, loY, hiY, selection);
- }, this);
- },
-
- /**
- * Automatically set the bounds of all axes on this track from the range of
- * values of all series (in this track) associated with each of them.
- *
- * See the description of ChartAxis.autoSetFromRange for the optional
- * configuration argument flags.
- */
- autoSetAllAxes: function(opt_config) {
- tr.b.iterItems(this.axisGuidToAxisData_, function(axisGuid, axisData) {
- var axis = axisData.axis;
- var series = axisData.series;
- axis.autoSetFromSeries(series, opt_config);
- }, this);
- },
-
- /**
- * Automatically set the bounds of the provided axis from the range of
- * values of all series (in this track) associated with it.
- *
- * See the description of ChartAxis.autoSetFromRange for the optional
- * configuration argument flags.
- */
- autoSetAxis: function(axis, opt_config) {
- var series = this.axisGuidToAxisData_[axis.guid].series;
- axis.autoSetFromSeries(series, opt_config);
- }
- };
-
- return {
- ChartTrack: ChartTrack
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_track_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_track_test.html
deleted file mode 100644
index 7595a2e2cd7..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_track_test.html
+++ /dev/null
@@ -1,236 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/core/test_utils.html">
-<link rel="import" href="/tracing/model/event.html">
-<link rel="import" href="/tracing/model/event_set.html">
-<link rel="import" href="/tracing/model/selection_state.html">
-<link rel="import" href="/tracing/ui/timeline_track_view.html">
-<link rel="import" href="/tracing/ui/tracks/chart_axis.html">
-<link rel="import" href="/tracing/ui/tracks/chart_point.html">
-<link rel="import" href="/tracing/ui/tracks/chart_series.html">
-<link rel="import" href="/tracing/ui/tracks/chart_track.html">
-<link rel="import" href="/tracing/ui/tracks/event_to_track_map.html">
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
- var ChartAxis = tr.ui.tracks.ChartAxis;
- var ChartPoint = tr.ui.tracks.ChartPoint;
- var ChartSeries = tr.ui.tracks.ChartSeries;
- var ChartSeriesType = tr.ui.tracks.ChartSeriesType;
- var ChartTrack = tr.ui.tracks.ChartTrack;
- var Event = tr.model.Event;
- var EventSet = tr.model.EventSet;
- var EventToTrackMap = tr.ui.tracks.EventToTrackMap;
- var SelectionState = tr.model.SelectionState;
- var Viewport = tr.ui.TimelineViewport;
-
- function buildPoint(x, y) {
- var event = new Event();
- return new ChartPoint(event, x, y);
- }
-
- function buildTrack(opt_viewport) {
- var viewport = opt_viewport || new Viewport(document.createElement('div'));
-
- var axis1 = new ChartAxis(0, 2);
- var axis2 = new ChartAxis(-100, 100);
-
- var points1 = [
- buildPoint(-2.5, 2),
- buildPoint(-1.5, 1),
- buildPoint(-0.5, 0),
- buildPoint(0.5, 1),
- buildPoint(1.5, 2),
- buildPoint(2.5, 0)
- ];
- var renderingConfig1 = {
- chartType: ChartSeriesType.AREA,
- colorId: 6,
- selectedPointSize: 7
- };
- var series1 = new ChartSeries(points1, axis1, renderingConfig1);
-
- var points2 = [
- buildPoint(-2.3, 0.2),
- buildPoint(-1.3, 1.2),
- buildPoint(-0.3, 2.2),
- buildPoint(0.3, 1.2),
- buildPoint(1.3, 0.2),
- buildPoint(2.3, 0)
- ];
- var renderingConfig2 = {
- chartType: ChartSeriesType.AREA,
- colorId: 4,
- selectedPointSize: 10
- };
- var series2 = new ChartSeries(points2, axis1, renderingConfig2);
-
- var points3 = [
- buildPoint(-3, -50),
- buildPoint(-2.4, -40),
- buildPoint(-1.8, -30),
- buildPoint(-1.2, -20),
- buildPoint(-0.6, -10),
- buildPoint(0, 0),
- buildPoint(0.6, 10),
- buildPoint(1.2, 20),
- buildPoint(1.8, 30),
- buildPoint(2.4, 40),
- buildPoint(3, 50)
- ];
- var renderingConfig3 = {
- chartType: ChartSeriesType.LINE,
- lineWidth: 2
- };
- var series3 = new ChartSeries(points3, axis2, renderingConfig3);
-
- var track = new ChartTrack(viewport);
- track.series = [series1, series2, series3];
-
- return track;
- }
-
- test('instantiate_lowDetailsWithoutSelection', function() {
- var div = document.createElement('div');
- var viewport = new Viewport(div);
- var drawingContainer = new tr.ui.tracks.DrawingContainer(viewport);
- div.appendChild(drawingContainer);
-
- var track = buildTrack(viewport);
- drawingContainer.appendChild(track);
-
- this.addHTMLOutput(div);
- drawingContainer.invalidate();
-
- var dt = new tr.ui.TimelineDisplayTransform();
- var pixelRatio = window.devicePixelRatio || 1;
- dt.xSetWorldBounds(-3, 3, track.clientWidth * pixelRatio);
- track.viewport.setDisplayTransformImmediately(dt);
-
- track.height = '100px';
- });
-
- test('instantiate_highDetailsWithSelection', function() {
- var div = document.createElement('div');
- var viewport = new Viewport(div);
- viewport.highDetails = true;
- var drawingContainer = new tr.ui.tracks.DrawingContainer(viewport);
- div.appendChild(drawingContainer);
-
- var track = buildTrack(viewport);
- drawingContainer.appendChild(track);
-
- track.series[0].points[1].modelItem.selectionState =
- SelectionState.SELECTED;
- track.series[1].points[1].modelItem.selectionState =
- SelectionState.SELECTED;
- track.series[2].points[3].modelItem.selectionState =
- SelectionState.SELECTED;
-
- this.addHTMLOutput(div);
- drawingContainer.invalidate();
-
- var dt = new tr.ui.TimelineDisplayTransform();
- var pixelRatio = window.devicePixelRatio || 1;
- dt.xSetWorldBounds(-3, 3, track.clientWidth * pixelRatio);
- track.viewport.setDisplayTransformImmediately(dt);
-
- track.height = '100px';
- });
-
- test('checkPadding', function() {
- var track = buildTrack();
-
- // Padding should be equal to half maximum point size.
- assert.equal(track.topPadding_, 5);
- assert.equal(track.bottomPadding_, 5);
- });
-
- test('checkAddEventsToTrackMap', function() {
- var track = buildTrack();
- var eventToTrackMap = new EventToTrackMap();
- track.addEventsToTrackMap(eventToTrackMap);
- assert.lengthOf(Object.keys(eventToTrackMap), 23);
- });
-
- test('checkaddIntersectingEventsInRangeToSelectionInWorldSpace', function() {
- var track = buildTrack();
-
- var sel = new EventSet();
- track.addIntersectingEventsInRangeToSelectionInWorldSpace(
- -1.1, -0.7, 0.01, sel);
- assert.lengthOf(sel, 3);
- assert.equal(sel[0], track.series[0].points[1].modelItem);
- assert.equal(sel[1], track.series[1].points[1].modelItem);
- assert.equal(sel[2], track.series[2].points[3].modelItem);
- });
-
- test('checkaddEventNearToProvidedEventToSelection', function() {
- var track = buildTrack();
-
- // Fail to find a near item to the left in any series.
- var sel = new EventSet();
- assert.isFalse(track.addEventNearToProvidedEventToSelection(
- track.series[0].points[0].modelItem, -1, sel));
- assert.lengthOf(sel, 0);
-
- // Succeed at finding a near item to the right of one series.
- var sel = new EventSet();
- assert.isTrue(track.addEventNearToProvidedEventToSelection(
- track.series[1].points[1].modelItem, 1, sel));
- assert.lengthOf(sel, 1);
- assert.equal(sel[0], track.series[1].points[2].modelItem);
- });
-
- test('checkAddClosestEventToSelection', function() {
- var track = buildTrack();
-
- var sel = new EventSet();
- track.addClosestEventToSelection(-0.8, 0.4, 0.5, 1.5, sel);
- assert.lengthOf(sel, 2);
- assert.equal(sel[0], track.series[0].points[2].modelItem);
- assert.equal(sel[1], track.series[2].points[4].modelItem);
- });
-
- test('checkAutoSetAllAxes', function() {
- var track = buildTrack();
- var axis1 = track.series[0].axis;
- var axis2 = track.series[2].axis;
-
- track.autoSetAllAxes({expandMax: true, shrinkMax: true});
-
- // Min bounds of both axes should not have been modified.
- assert.equal(axis1.bounds.min, 0);
- assert.equal(axis2.bounds.min, -100);
-
- // Max bounds of both axes should have been modified.
- assert.equal(axis1.bounds.max, 2.2);
- assert.equal(axis2.bounds.max, 50);
- });
-
- test('checkAutoSetAxis', function() {
- var track = buildTrack();
- var axis1 = track.series[0].axis;
- var axis2 = track.series[2].axis;
-
- track.autoSetAxis(axis2,
- {expandMin: true, shrinkMin: true, expandMax: true, shrinkMax: true});
-
- // First axis should not have been modified.
- assert.equal(axis1.bounds.min, 0);
- assert.equal(axis1.bounds.max, 2);
-
- // Second axis should have been modified.
- assert.equal(axis2.bounds.min, -50);
- assert.equal(axis2.bounds.max, 50);
- });
-});
-</script>
-
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_transform.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_transform.html
deleted file mode 100644
index ff98f4057e0..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_transform.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/base/base.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
-
- /**
- * A helper object encapsulating all parameters necessary to draw a chart
- * series and provides conversion between world coordinates and physical
- * pixels.
- *
- * All parameters (except for pixelRatio) are assumed to be in physical pixels
- * (i.e. already pre-multiplied with pixelRatio).
- *
- * The diagram below explains the meaning of the resulting fields with
- * respect to a chart track:
- *
- * outerTopViewY -> +--------------------/-\-------+ <- Top padding
- * innerTopViewY -> + - - - - - - - - - -| |- - - -+ <- Axis max
- * | .. ==\-/== |
- * | == Series == |
- * | ==/-\== .. |
- * innerBottomViewY -> + - - -Point- - - - - - - - - -+ <- Axis min
- * outerBottomViewY -> +-------\-/--------------------+ <- Bottom padding
- * ^ ^
- * leftViewX rightViewX
- * leftTimeStamp rightTimestamp
- *
- * Labels starting with a lower case letter are the resulting fields of the
- * transform object. Labels starting with an upper case letter correspond
- * to the relevant chart track concepts.
- *
- * @constructor
- */
- function ChartTransform(displayTransform, axis, trackWidth,
- trackHeight, topPadding, bottomPadding, pixelRatio) {
- this.pixelRatio = pixelRatio;
-
- // X axis.
- this.leftViewX = 0;
- this.rightViewX = trackWidth;
- this.leftTimestamp = displayTransform.xViewToWorld(this.leftViewX);
- this.rightTimestamp = displayTransform.xViewToWorld(this.rightViewX);
-
- this.displayTransform_ = displayTransform;
-
- // Y axis.
- this.outerTopViewY = 0;
- this.innerTopViewY = topPadding;
- this.innerBottomViewY = trackHeight - bottomPadding;
- this.outerBottomViewY = trackHeight;
-
- this.axis_ = axis;
- this.innerHeight_ = this.innerBottomViewY - this.innerTopViewY;
- };
-
- ChartTransform.prototype = {
- worldXToViewX: function(worldX) {
- return this.displayTransform_.xWorldToView(worldX);
- },
-
- viewXToWorldX: function(viewX) {
- return this.displayTransform_.xViewToWorld(viewX);
- },
-
- worldYToViewY: function(worldY) {
- var innerHeightCoefficient = 1 - this.axis_.valueToUnitRange(worldY);
- return innerHeightCoefficient * this.innerHeight_ + this.innerTopViewY;
- }
- };
-
- return {
- ChartTransform: ChartTransform
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_transform_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_transform_test.html
deleted file mode 100644
index d7652260e09..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/chart_transform_test.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/core/test_utils.html">
-<link rel="import" href="/tracing/ui/timeline_display_transform.html">
-<link rel="import" href="/tracing/ui/tracks/chart_axis.html">
-<link rel="import" href="/tracing/ui/tracks/chart_transform.html">
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
- var TimelineDisplayTransform = tr.ui.TimelineDisplayTransform;
- var ChartTransform = tr.ui.tracks.ChartTransform;
- var ChartAxis = tr.ui.tracks.ChartAxis;
-
- function buildChartTransform() {
- var displayTransform = new TimelineDisplayTransform();
- displayTransform.panX = -20;
- displayTransform.scaleX = 0.5;
-
- var axis = new ChartAxis(-100, 100);
-
- var chartTransform = new ChartTransform(
- displayTransform,
- axis,
- 500, /* trackWidth */
- 80, /* trackHeight */
- 15, /* topPadding */
- 5, /* bottomPadding */
- 3 /* pixelRatio */);
-
- return chartTransform;
- }
-
- test('checkFields', function() {
- var t = buildChartTransform();
-
- assert.equal(t.pixelRatio, 3);
-
- assert.equal(t.leftViewX, 0);
- assert.equal(t.rightViewX, 500);
- assert.equal(t.leftTimestamp, 20);
- assert.equal(t.rightTimestamp, 1020);
-
- assert.equal(t.outerTopViewY, 0);
- assert.equal(t.innerTopViewY, 15);
- assert.equal(t.innerBottomViewY, 75);
- assert.equal(t.outerBottomViewY, 80);
- });
-
- test('checkWorldXToViewX', function() {
- var t = buildChartTransform();
-
- assert.equal(t.worldXToViewX(-100), -60);
- assert.equal(t.worldXToViewX(0), -10);
- assert.equal(t.worldXToViewX(520), 250);
- assert.equal(t.worldXToViewX(1020), 500);
- assert.equal(t.worldXToViewX(1200), 590);
- });
-
- test('checkViewXToWorldX', function() {
- var t = buildChartTransform();
-
- assert.equal(t.viewXToWorldX(-60), -100);
- assert.equal(t.viewXToWorldX(-10), 0);
- assert.equal(t.viewXToWorldX(250), 520);
- assert.equal(t.viewXToWorldX(500), 1020);
- assert.equal(t.viewXToWorldX(590), 1200);
- });
-
- test('checkWorldYToViewY', function() {
- var t = buildChartTransform();
-
- assert.equal(t.worldYToViewY(-200), 105);
- assert.equal(t.worldYToViewY(-100), 75);
- assert.equal(t.worldYToViewY(0), 45);
- assert.equal(t.worldYToViewY(100), 15);
- assert.equal(t.worldYToViewY(200), -15);
- });
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/container_to_track_map.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/container_to_track_map.html
deleted file mode 100644
index bb4b549ae08..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/container_to_track_map.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/base/base.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
-
- /**
- * ContainerToTrackMap is a class to handle building and accessing a map
- * between an EventContainer's stableId and its handling track.
- *
- * @constructor
- */
- function ContainerToTrackMap() {
- this.stableIdToTrackMap_ = {};
- }
-
- ContainerToTrackMap.prototype = {
- addContainer: function(container, track) {
- if (!track)
- throw new Error('Must provide a track.');
- this.stableIdToTrackMap_[container.stableId] = track;
- },
-
- clear: function() {
- this.stableIdToTrackMap_ = {};
- },
-
- getTrackByStableId: function(stableId) {
- return this.stableIdToTrackMap_[stableId];
- }
- };
-
- return {
- ContainerToTrackMap: ContainerToTrackMap
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/container_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/container_track.html
deleted file mode 100644
index cdad43bef5c..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/container_track.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="import" href="/tracing/base/task.html">
-<link rel="import" href="/tracing/ui/tracks/track.html">
-<link rel="import" href="/tracing/core/filter.html">
-<link rel="import" href="/tracing/ui/base/ui.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
- var Task = tr.b.Task;
-
- /**
- * A generic track that contains other tracks as its children.
- * @constructor
- */
- var ContainerTrack = tr.ui.b.define('container-track', tr.ui.tracks.Track);
- ContainerTrack.prototype = {
- __proto__: tr.ui.tracks.Track.prototype,
-
- decorate: function(viewport) {
- tr.ui.tracks.Track.prototype.decorate.call(this, viewport);
- },
-
- detach: function() {
- this.textContent = '';
- },
-
- get tracks_() {
- var tracks = [];
- for (var i = 0; i < this.children.length; i++) {
- if (this.children[i] instanceof tr.ui.tracks.Track)
- tracks.push(this.children[i]);
- }
- return tracks;
- },
-
- drawTrack: function(type) {
- this.tracks_.forEach(function(track) {
- track.drawTrack(type);
- });
- },
-
- /**
- * Adds items intersecting the given range to a selection.
- * @param {number} loVX Lower X bound of the interval to search, in
- * viewspace.
- * @param {number} hiVX Upper X bound of the interval to search, in
- * viewspace.
- * @param {number} loY Lower Y bound of the interval to search, in
- * viewspace space.
- * @param {number} hiY Upper Y bound of the interval to search, in
- * viewspace space.
- * @param {Selection} selection Selection to which to add results.
- */
- addIntersectingEventsInRangeToSelection: function(
- loVX, hiVX, loY, hiY, selection) {
- for (var i = 0; i < this.tracks_.length; i++) {
- var trackClientRect = this.tracks_[i].getBoundingClientRect();
- var a = Math.max(loY, trackClientRect.top);
- var b = Math.min(hiY, trackClientRect.bottom);
- if (a <= b)
- this.tracks_[i].addIntersectingEventsInRangeToSelection(
- loVX, hiVX, loY, hiY, selection);
- }
-
- tr.ui.tracks.Track.prototype.addIntersectingEventsInRangeToSelection.
- apply(this, arguments);
- },
-
- addEventsToTrackMap: function(eventToTrackMap) {
- for (var i = 0; i < this.children.length; ++i)
- this.children[i].addEventsToTrackMap(eventToTrackMap);
- },
-
- addAllEventsMatchingFilterToSelection: function(filter, selection) {
- for (var i = 0; i < this.tracks_.length; i++)
- this.tracks_[i].addAllEventsMatchingFilterToSelection(
- filter, selection);
- },
-
- addAllEventsMatchingFilterToSelectionAsTask: function(filter, selection) {
- var task = new Task();
- for (var i = 0; i < this.tracks_.length; i++) {
- task.subTask(function(i) { return function() {
- this.tracks_[i].addAllEventsMatchingFilterToSelection(
- filter, selection);
- } }(i), this);
- }
- return task;
- },
-
- addClosestEventToSelection: function(
- worldX, worldMaxDist, loY, hiY, selection) {
- for (var i = 0; i < this.tracks_.length; i++) {
- var trackClientRect = this.tracks_[i].getBoundingClientRect();
- var a = Math.max(loY, trackClientRect.top);
- var b = Math.min(hiY, trackClientRect.bottom);
- if (a <= b) {
- this.tracks_[i].addClosestEventToSelection(
- worldX, worldMaxDist, loY, hiY, selection);
- }
- }
-
- tr.ui.tracks.Track.prototype.addClosestEventToSelection.
- apply(this, arguments);
- },
-
- addContainersToTrackMap: function(containerToTrackMap) {
- this.tracks_.forEach(function(track) {
- track.addContainersToTrackMap(containerToTrackMap);
- });
- },
-
- clearTracks_: function() {
- this.tracks_.forEach(function(track) {
- this.removeChild(track);
- }, this);
- }
- };
-
- return {
- ContainerTrack: ContainerTrack
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/counter_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/counter_track.html
deleted file mode 100644
index 759b2433596..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/counter_track.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="import" href="/tracing/ui/tracks/chart_axis.html">
-<link rel="import" href="/tracing/ui/tracks/chart_point.html">
-<link rel="import" href="/tracing/ui/tracks/chart_series.html">
-<link rel="import" href="/tracing/ui/tracks/chart_track.html">
-<link rel="import" href="/tracing/ui/base/ui.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
-
- /**
- * A track that displays a Counter object.
- * @constructor
- * @extends {ChartTrack}
- */
- var CounterTrack = tr.ui.b.define('counter-track', tr.ui.tracks.ChartTrack);
-
- CounterTrack.prototype = {
- __proto__: tr.ui.tracks.ChartTrack.prototype,
-
- decorate: function(viewport) {
- tr.ui.tracks.ChartTrack.prototype.decorate.call(this, viewport);
- this.classList.add('counter-track');
- },
-
- get counter() {
- return this.chart;
- },
-
- set counter(counter) {
- this.heading = counter.name + ': ';
- this.series = CounterTrack.buildChartSeriesFromCounter(counter);
- this.autoSetAllAxes({expandMax: true});
- },
-
- getModelEventFromItem: function(chartValue) {
- return chartValue;
- }
- };
-
- CounterTrack.buildChartSeriesFromCounter = function(counter) {
- var numSeries = counter.series.length;
- var totals = counter.totals;
-
- // Create one common axis for all series.
- var chartAxis = new tr.ui.tracks.ChartAxis(0, undefined);
-
- // Build one chart series for each counter series.
- var chartSeries = counter.series.map(function(series, seriesIndex) {
- var chartPoints = series.samples.map(function(sample, sampleIndex) {
- var total = totals[sampleIndex * numSeries + seriesIndex];
- return new tr.ui.tracks.ChartPoint(sample, sample.timestamp, total);
- });
- var renderingConfig = {
- chartType: tr.ui.tracks.ChartSeriesType.AREA,
- colorId: series.color
- };
- return new tr.ui.tracks.ChartSeries(
- chartPoints, chartAxis, renderingConfig);
- });
-
- // Show the first series (with the smallest cumulative value) at the top.
- chartSeries.reverse();
-
- return chartSeries;
- };
-
- return {
- CounterTrack: CounterTrack
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/counter_track_perf_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/counter_track_perf_test.html
deleted file mode 100644
index afa3ad3f967..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/counter_track_perf_test.html
+++ /dev/null
@@ -1,129 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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.
--->
-
-<link rel="import" href="/tracing/core/test_utils.html">
-<link rel="import" href="/tracing/model/model.html">
-<link rel="import" href="/tracing/ui/extras/full_config.html">
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
- function getSynchronous(url) {
- var req = new XMLHttpRequest();
- req.open('GET', url, false);
- // Without the mime type specified like this, the file's bytes are not
- // retrieved correctly.
- req.overrideMimeType('text/plain; charset=x-user-defined');
- req.send(null);
- return req.responseText;
- }
-
- var ZOOM_STEPS = 10;
- var ZOOM_COEFFICIENT = 1.2;
-
- var model = undefined;
-
- var drawingContainer;
- var viewportDiv;
-
- var viewportWidth;
- var worldMid;
-
- var startScale = undefined;
-
- function timedCounterTrackPerfTest(name, testFn, iterations) {
-
- function setUpOnce() {
- if (model !== undefined)
- return;
- var fileUrl = '/test_data/counter_tracks.html';
- var events = getSynchronous(fileUrl);
- model = tr.c.TestUtils.newModelWithEvents([events]);
- }
-
- function setUp() {
- setUpOnce();
- viewportDiv = document.createElement('div');
-
- var viewport = new tr.ui.TimelineViewport(viewportDiv);
-
- drawingContainer = new tr.ui.tracks.DrawingContainer(viewport);
- viewport.modelTrackContainer = drawingContainer;
-
- var modelTrack = new tr.ui.tracks.ModelTrack(viewport);
- drawingContainer.appendChild(modelTrack);
-
- modelTrack.model = model;
-
- viewportDiv.appendChild(drawingContainer);
-
- this.addHTMLOutput(viewportDiv);
-
- // Size the canvas.
- drawingContainer.updateCanvasSizeIfNeeded_();
-
- // Size the viewport.
- viewportWidth = drawingContainer.canvas.width;
- var min = model.bounds.min;
- var range = model.bounds.range;
- worldMid = min + range / 2;
-
- var boost = range * 0.15;
- var dt = new tr.ui.TimelineDisplayTransform();
- dt.xSetWorldBounds(min - boost, min + range + boost, viewportWidth);
- modelTrack.viewport.setDisplayTransformImmediately(dt);
- startScale = dt.scaleX;
-
- // Select half of the counter samples.
- for (var pid in model.processes) {
- var counters = model.processes[pid].counters;
- for (var cid in counters) {
- var series = counters[cid].series;
- for (var i = 0; i < series.length; i++) {
- var samples = series[i].samples;
- for (var j = Math.floor(samples.length / 2); j < samples.length;
- j++) {
- samples[j].selectionState =
- tr.model.SelectionState.SELECTED;
- }
- }
- }
- }
- };
-
- function tearDown() {
- viewportDiv.innerText = '';
- drawingContainer = undefined;
- }
-
- timedPerfTest(name, testFn, {
- setUp: setUp,
- tearDown: tearDown,
- iterations: iterations
- });
- }
-
- var n110100 = [1, 10, 100];
- n110100.forEach(function(val) {
- timedCounterTrackPerfTest(
- 'draw_softwareCanvas_' + val,
- function() {
- var scale = startScale;
- for (var i = 0; i < ZOOM_STEPS; i++) {
- var dt = drawingContainer.viewport.currentDisplayTransform.clone();
- scale *= ZOOM_COEFFICIENT;
- dt.scaleX = scale;
- dt.xPanWorldPosToViewPos(worldMid, 'center', viewportWidth);
- drawingContainer.viewport.setDisplayTransformImmediately(dt);
- drawingContainer.draw_();
- }
- }, val);
- });
-});
-</script>
-
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/counter_track_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/counter_track_test.html
deleted file mode 100644
index 8cf6dcdfa00..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/counter_track_test.html
+++ /dev/null
@@ -1,201 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="import" href="/tracing/base/iteration_helpers.html">
-<link rel="import" href="/tracing/core/test_utils.html">
-<link rel="import" href="/tracing/model/event_set.html">
-<link rel="import" href="/tracing/ui/timeline_track_view.html">
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
- var ColorScheme = tr.b.ColorScheme;
- var Counter = tr.model.Counter;
- var Viewport = tr.ui.TimelineViewport;
- var CounterTrack = tr.ui.tracks.CounterTrack;
-
- var runTest = function(timestamps, samples, testFn) {
- var testEl = document.createElement('div');
-
- var ctr = new Counter(undefined, 'foo', '', 'foo');
- var n = samples.length;
-
- for (var i = 0; i < n; ++i) {
- ctr.addSeries(new tr.model.CounterSeries('value' + i,
- ColorScheme.getColorIdForGeneralPurposeString('value' + i)));
- }
-
- for (var i = 0; i < samples.length; ++i) {
- for (var k = 0; k < timestamps.length; ++k) {
- ctr.series[i].addCounterSample(timestamps[k], samples[i][k]);
- }
- }
-
- ctr.updateBounds();
-
- var viewport = new Viewport(testEl);
-
- var drawingContainer = new tr.ui.tracks.DrawingContainer(viewport);
- testEl.appendChild(drawingContainer);
-
- var track = new CounterTrack(viewport);
- drawingContainer.appendChild(track);
- this.addHTMLOutput(testEl);
-
- // Force the container to update sizes so the test can use coordinates that
- // make sense. This has to be after the adding of the track as we need to
- // use the track header to figure out our positioning.
- drawingContainer.updateCanvasSizeIfNeeded_();
-
- var pixelRatio = window.devicePixelRatio || 1;
-
- track.heading = ctr.name;
- track.counter = ctr;
- var dt = new tr.ui.TimelineDisplayTransform();
- dt.xSetWorldBounds(0, 10, track.clientWidth * pixelRatio);
- track.viewport.setDisplayTransformImmediately(dt);
-
- testFn(ctr, drawingContainer, track);
- };
-
- test('instantiate', function() {
- var ctr = new Counter(undefined, 'testBasicCounter', '',
- 'testBasicCounter');
- ctr.addSeries(new tr.model.CounterSeries('value1',
- ColorScheme.getColorIdForGeneralPurposeString(
- 'testBasicCounter.value1')));
- ctr.addSeries(new tr.model.CounterSeries('value2',
- ColorScheme.getColorIdForGeneralPurposeString(
- 'testBasicCounter.value2')));
-
- var timestamps = [0, 1, 2, 3, 4, 5, 6, 7];
- var samples = [[0, 3, 1, 2, 3, 1, 3, 3.1],
- [5, 3, 1, 1.1, 0, 7, 0, 0.5]];
- for (var i = 0; i < samples.length; ++i) {
- for (var k = 0; k < timestamps.length; ++k) {
- ctr.series[i].addCounterSample(timestamps[k], samples[i][k]);
- }
- }
-
- ctr.updateBounds();
-
- var div = document.createElement('div');
- var viewport = new Viewport(div);
-
- var drawingContainer = new tr.ui.tracks.DrawingContainer(viewport);
- div.appendChild(drawingContainer);
-
- var track = new CounterTrack(viewport);
- drawingContainer.appendChild(track);
-
- this.addHTMLOutput(div);
- drawingContainer.invalidate();
-
- track.heading = ctr.name;
- track.counter = ctr;
- var dt = new tr.ui.TimelineDisplayTransform();
- dt.xSetWorldBounds(0, 7.7, track.clientWidth);
- track.viewport.setDisplayTransformImmediately(dt);
- });
-
- test('basicCounterXPointPicking', function() {
- var timestamps = [0, 1, 2, 3, 4, 5, 6, 7];
- var samples = [[0, 3, 1, 2, 3, 1, 3, 3.1],
- [5, 3, 1, 1.1, 0, 7, 0, 0.5]];
-
- runTest.call(this, timestamps, samples, function(ctr, container, track) {
- var clientRect = track.getBoundingClientRect();
- var y75 = clientRect.top + (0.75 * clientRect.height);
-
- // In bounds.
- var sel = new tr.model.EventSet();
- var x = 0.15 * clientRect.width;
- track.addIntersectingEventsInRangeToSelection(
- x, x + 1, y75, y75 + 1, sel);
-
- var nextSeriesIndex = 1;
- assert.equal(sel.length, 2);
- for (var event of sel) {
- assert.equal(event.series.counter, ctr);
- assert.equal(event.getSampleIndex(), 1);
- assert.equal(event.series.seriesIndex, nextSeriesIndex--);
- }
-
- // Outside bounds.
- sel = new tr.model.EventSet();
- var x = -0.5 * clientRect.width;
- track.addIntersectingEventsInRangeToSelection(
- x, x + 1, y75, y75 + 1, sel);
- assert.equal(sel.length, 0);
-
- sel = new tr.model.EventSet();
- var x = 0.8 * clientRect.width;
- track.addIntersectingEventsInRangeToSelection(
- x, x + 1, y75, y75 + 1, sel);
- assert.equal(sel.length, 0);
- });
- });
-
- test('counterTrackAddClosestEventToSelection', function() {
- var timestamps = [0, 1, 2, 3, 4, 5, 6, 7];
- var samples = [[0, 4, 1, 2, 3, 1, 3, 3.1],
- [5, 3, 1, 1.1, 0, 7, 0, 0.5]];
-
- runTest.call(this, timestamps, samples, function(ctr, container, track) {
- // Before with not range.
- var sel = new tr.model.EventSet();
- track.addClosestEventToSelection(-1, 0, 0, 0, sel);
- assert.equal(sel.length, 0);
-
- // Before with negative range.
- var sel = new tr.model.EventSet();
- track.addClosestEventToSelection(-1, -10, 0, 0, sel);
- assert.equal(sel.length, 0);
-
- // Before first sample.
- var sel = new tr.model.EventSet();
- track.addClosestEventToSelection(-1, 1, 0, 0, sel);
- assert.equal(sel.length, 2);
- for (var event of sel)
- assert.equal(event.getSampleIndex(), 0);
-
- // Between and closer to sample before.
- var sel = new tr.model.EventSet();
- track.addClosestEventToSelection(1.3, 1, 0, 0, sel);
- assert.equal(sel.length, 2);
- for (var event of sel)
- assert.equal(event.getSampleIndex(), 1);
-
- // Between samples with bad range.
- var sel = new tr.model.EventSet();
- track.addClosestEventToSelection(1.45, 0.25, 0, 0, sel);
- assert.equal(sel.length, 0);
-
- // Between and closer to next sample.
- var sel = new tr.model.EventSet();
- track.addClosestEventToSelection(4.7, 6, 0, 0, sel);
- assert.equal(sel.length, 2);
- for (var event of sel)
- assert.equal(event.getSampleIndex(), 5);
-
- // After last sample with good range.
- var sel = new tr.model.EventSet();
- track.addClosestEventToSelection(8.5, 2, 0, 0, sel);
- assert.equal(sel.length, 2);
- for (var event of sel)
- assert.equal(event.getSampleIndex(), 7);
-
- // After last sample with bad range.
- var sel = new tr.model.EventSet();
- track.addClosestEventToSelection(10, 1, 0, 0, sel);
- assert.equal(sel.length, 0);
- });
- });
-});
-</script>
-
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/cpu_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/cpu_track.html
deleted file mode 100644
index 84b7afe6582..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/cpu_track.html
+++ /dev/null
@@ -1,139 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="import" href="/tracing/core/filter.html">
-<link rel="import" href="/tracing/model/event_set.html">
-<link rel="import" href="/tracing/model/model.html">
-<link rel="import" href="/tracing/ui/base/ui.html">
-<link rel="import" href="/tracing/ui/tracks/container_track.html">
-<link rel="import" href="/tracing/ui/tracks/slice_track.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
-
- /**
- * Visualizes a Cpu using a series of SliceTracks.
- * @constructor
- */
- var CpuTrack =
- tr.ui.b.define('cpu-track', tr.ui.tracks.ContainerTrack);
- CpuTrack.prototype = {
- __proto__: tr.ui.tracks.ContainerTrack.prototype,
-
- decorate: function(viewport) {
- tr.ui.tracks.ContainerTrack.prototype.decorate.call(this, viewport);
- this.classList.add('cpu-track');
- this.detailedMode_ = true;
- },
-
- get cpu() {
- return this.cpu_;
- },
-
- set cpu(cpu) {
- this.cpu_ = cpu;
- this.updateContents_();
- },
-
- get detailedMode() {
- return this.detailedMode_;
- },
-
- set detailedMode(detailedMode) {
- this.detailedMode_ = detailedMode;
- this.updateContents_();
- },
-
- get tooltip() {
- return this.tooltip_;
- },
-
- set tooltip(value) {
- this.tooltip_ = value;
- this.updateContents_();
- },
-
- get hasVisibleContent() {
- if (this.cpu_ === undefined)
- return false;
- var cpu = this.cpu_;
- if (cpu.slices.length)
- return true;
- if (cpu.samples && cpu.samples.length)
- return true;
- if (tr.b.dictionaryLength(cpu.counters) > 0)
- return true;
- return false;
- },
-
- updateContents_: function() {
- this.detach();
- if (!this.cpu_)
- return;
- var slices = this.cpu_.slices;
- if (slices.length) {
- var track = new tr.ui.tracks.SliceTrack(this.viewport);
- track.slices = slices;
- track.heading = this.cpu_.userFriendlyName + ':';
- this.appendChild(track);
- }
-
- if (this.detailedMode_) {
- this.appendSamplesTracks_();
-
- for (var counterName in this.cpu_.counters) {
- var counter = this.cpu_.counters[counterName];
- track = new tr.ui.tracks.CounterTrack(this.viewport);
- track.heading = this.cpu_.userFriendlyName + ' ' +
- counter.name + ':';
- track.counter = counter;
- this.appendChild(track);
- }
- }
- },
-
- appendSamplesTracks_: function() {
- var samples = this.cpu_.samples;
- if (samples === undefined || samples.length === 0)
- return;
- var samplesByTitle = {};
- samples.forEach(function(sample) {
- if (samplesByTitle[sample.title] === undefined)
- samplesByTitle[sample.title] = [];
- samplesByTitle[sample.title].push(sample);
- });
-
- var sampleTitles = tr.b.dictionaryKeys(samplesByTitle);
- sampleTitles.sort();
-
- sampleTitles.forEach(function(sampleTitle) {
- var samples = samplesByTitle[sampleTitle];
- var samplesTrack = new tr.ui.tracks.SliceTrack(this.viewport);
- samplesTrack.group = this.cpu_;
- samplesTrack.slices = samples;
- samplesTrack.heading = this.cpu_.userFriendlyName + ': ' +
- sampleTitle;
- samplesTrack.tooltip = this.cpu_.userFriendlyDetails;
- samplesTrack.selectionGenerator = function() {
- var selection = new tr.model.EventSet();
- for (var i = 0; i < samplesTrack.slices.length; i++) {
- selection.push(samplesTrack.slices[i]);
- }
- return selection;
- };
- this.appendChild(samplesTrack);
- }, this);
- }
- };
-
- return {
- CpuTrack: CpuTrack
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/cpu_track_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/cpu_track_test.html
deleted file mode 100644
index 61108d514fc..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/cpu_track_test.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="import" href="/tracing/core/test_utils.html">
-<link rel="import" href="/tracing/ui/timeline_track_view.html">
-<link rel="import" href="/tracing/model/model.html">
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
- var Cpu = tr.model.Cpu;
- var CpuTrack = tr.ui.tracks.CpuTrack;
- var Slice = tr.model.Slice;
- var StackFrame = tr.model.StackFrame;
- var Sample = tr.model.Sample;
- var Thread = tr.model.Thread;
- var Viewport = tr.ui.TimelineViewport;
-
- test('basicCpu', function() {
- var cpu = new Cpu({}, 7);
- cpu.slices = [
- new Slice('', 'a', 0, 1, {}, 1),
- new Slice('', 'b', 1, 2.1, {}, 4.8)
- ];
- cpu.updateBounds();
-
- var testEl = document.createElement('div');
- var viewport = new Viewport(testEl);
-
- var drawingContainer = new tr.ui.tracks.DrawingContainer(viewport);
-
- var track = new CpuTrack(viewport);
- drawingContainer.appendChild(track);
-
- track.heading = 'CPU ' + cpu.cpuNumber;
- track.cpu = cpu;
- var dt = new tr.ui.TimelineDisplayTransform();
- dt.xSetWorldBounds(0, 11.1, track.clientWidth);
- track.viewport.setDisplayTransformImmediately(dt);
- });
-
-
- test('withSamples', function() {
- var thread;
- var cpu;
- var model = tr.c.TestUtils.newModelWithEvents([], {
- shiftWorldToZero: false,
- pruneContainers: false,
- customizeModelCallback: function(model) {
- cpu = model.kernel.getOrCreateCpu(1);
- thread = model.getOrCreateProcess(1).getOrCreateThread(2);
-
- var fA = model.addStackFrame(new StackFrame(
- undefined, 1, 'cat', 'a', 7));
- var fAB = model.addStackFrame(new StackFrame(
- fA, 2, 'cat', 'b', 7));
- var fABC = model.addStackFrame(new StackFrame(
- fAB, 3, 'cat', 'c', 7));
- var fAD = model.addStackFrame(new StackFrame(
- fA, 4, 'cat', 'd', 7));
-
- model.samples.push(new Sample(undefined, thread, 'instructions_retired',
- 10, fABC, 10));
- model.samples.push(new Sample(undefined, thread, 'instructions_retired',
- 20, fAB, 10));
- model.samples.push(new Sample(undefined, thread, 'instructions_retired',
- 30, fAB, 10));
- model.samples.push(new Sample(undefined, thread, 'instructions_retired',
- 40, fAD, 10));
-
- model.samples.push(new Sample(undefined, thread, 'page_fault',
- 25, fAB, 10));
- model.samples.push(new Sample(undefined, thread, 'page_fault',
- 35, fAD, 10));
- }
- });
-
- var testEl = document.createElement('div');
- var viewport = new Viewport(testEl);
-
- var drawingContainer = new tr.ui.tracks.DrawingContainer(viewport);
-
- var track = new CpuTrack(viewport);
- drawingContainer.appendChild(track);
-
- track.heading = 'CPU ' + cpu.cpuNumber;
- track.cpu = cpu;
- var dt = new tr.ui.TimelineDisplayTransform();
- dt.xSetWorldBounds(0, 11.1, track.clientWidth);
- track.viewport.setDisplayTransformImmediately(dt);
- });
-});
-</script>
-
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/cpu_usage_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/cpu_usage_track.html
deleted file mode 100644
index 5845b546984..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/cpu_usage_track.html
+++ /dev/null
@@ -1,187 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright 2016 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.
--->
-
-<link rel="import" href="/tracing/base/color_scheme.html">
-<link rel="import" href="/tracing/ui/base/ui.html">
-<link rel="import" href="/tracing/ui/tracks/chart_axis.html">
-<link rel="import" href="/tracing/ui/tracks/chart_point.html">
-<link rel="import" href="/tracing/ui/tracks/chart_series.html">
-<link rel="import" href="/tracing/ui/tracks/chart_track.html">
-
-<style>
-.cpu-usage-track {
- height: 90px;
-}
-</style>
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
-
- var ColorScheme = tr.b.ColorScheme;
- var ChartTrack = tr.ui.tracks.ChartTrack;
- var MAX_CPU_TRACK_INTERVAL_COUNT = 100000;
-
- /**
- * A track that displays the cpu usage of a process.
- *
- * @constructor
- * @extends {tr.ui.tracks.ChartTrack}
- */
- var CpuUsageTrack = tr.ui.b.define('cpu-usage-track', ChartTrack);
-
- CpuUsageTrack.prototype = {
- __proto__: ChartTrack.prototype,
-
- DEFAULT_INTERVAL: 5, // in ms.
-
- decorate: function(viewport) {
- ChartTrack.prototype.decorate.call(this, viewport);
- this.classList.add('cpu-usage-track');
- this.heading = 'CPU usage';
- this.cpuUsageSeries_ = undefined;
- },
-
- // Given a tr.Model, it creates a cpu usage series and a graph.
- initialize: function(model, interval) {
- if (interval !== undefined)
- this.interval_ = interval;
- else
- this.interval_ = this.DEFAULT_INTERVAL;
- if (model !== undefined)
- this.cpuUsageSeries_ = this.computeCpuUsage_(model);
- else
- this.cpuUsageSeries_ = undefined;
- this.series = this.buildChartSeries_();
- this.autoSetAllAxes({expandMax: true});
- },
-
- // Given a tr.Model, it returns the computation of cpu usage of all the
- // processes.
- computeCpuUsage_: function(model) {
- var intervalCount = Math.ceil(model.bounds.max / this.interval_);
- // Rather than attempting a huge allocation and having the tab crash with
- // an out-of-memory error, throw an error here if there are too many
- // CPU intervals to handle.
- if (intervalCount > MAX_CPU_TRACK_INTERVAL_COUNT) {
- throw new Error('The trace is too long or the CPU usage counter ' +
- 'interval is too small, leading to too many CPU usage intervals.');
- }
- var cpuUsage = undefined;
- if (intervalCount > 0) {
- tr.b.iterItems(model.processes, function(pid, process) {
- // Iterate slices, find all the CPU samples which overlap. For each
- // such CPU sample, increment it of the "average CPU usage" of the
- // slice.
- for (var e of process.getDescendantEvents()) {
- if (!(e instanceof tr.model.ThreadSlice) || e.duration === 0 ||
- e.cpuDuration === undefined) {
- continue;
- }
-
- // This slice contains the most fine-grained CPU usage information
- // for the area of the trace that it covers but that is not covered
- // by its subslices.
- // The math goes this way:
- // s.selfTime : duration of slice s not spent in its subslices.
- // s.cpuSelfTime : cpuDuration over slice s but not its subslices.
- //
- // We're looking for
- // s.cpuSelfTimeRatio: average cpu usage over the area covered by
- // s but not any of its subslices.
- // = s.cpuSelfTime / s.selfTime
- if (e.selfTime === 0 || e.selfTime === undefined ||
- e.cpuSelfTime === undefined) {
- continue;
- }
-
- var cpuSelfTimeRatio = e.cpuSelfTime / e.selfTime;
- cpuSelfTimeRatio = Math.max(0, cpuSelfTimeRatio);
- cpuSelfTimeRatio = Math.min(1, cpuSelfTimeRatio);
- // We have found at least one valid thread slice.
- if (cpuUsage === undefined)
- cpuUsage = new Array(intervalCount).fill(0);
-
- // Go through the area covered by this slice but not its subslices
- // and add the cpuSelfTimeRatio contribution over this area.
- var lastTime = e.start;
- e.subSlices.forEach(function(slice) {
- this.addCPUUsageOverInterval_(cpuUsage, cpuSelfTimeRatio,
- lastTime, slice.start);
- lastTime = slice.end;
- }, this);
- this.addCPUUsageOverInterval_(cpuUsage, cpuSelfTimeRatio, lastTime,
- e.end);
- }
- }, this);
- }
- return cpuUsage || [];
- },
-
- addCPUUsageOverInterval_: function(cpuUsageArray, cpuUsage, start, end) {
- if (start >= end)
- return;
-
- // Simple arithmetic to find the indexes that overlap the current
- // slice.
- var interval = this.interval_;
- var startIndex = Math.floor(start / interval);
- // If the slice stops on an interval, endIndex will be too high.
- // E.g.: start = 5, end = 10, endIndex = floor( 10 / 5 ) = 2.
- // However, the slice is active for only one interval : [5, 10[ .
- var endIndex = Math.ceil(end / interval) - 1;
- var cpuUsagePerTime = cpuUsage / interval;
-
- // Add [startIndex * interval, endIndex * interval] duration.
- for (var i = startIndex; i < endIndex; i++)
- cpuUsageArray[i] += cpuUsage;
-
- // Subtract [startIndex * interval, start] duration.
- cpuUsageArray[startIndex] -= cpuUsagePerTime *
- (start - startIndex * interval);
-
- // Add [endIndex * interval, end] duration.
- cpuUsageArray[endIndex] += cpuUsagePerTime * (end - endIndex * interval);
- },
-
- get hasVisibleContent() {
- return !!this.cpuUsageSeries_ && this.cpuUsageSeries_.length > 0;
- },
-
- addContainersToTrackMap: function(containerToTrackMap) {
- containerToTrackMap.addContainer(this.series_, this);
- },
-
- buildChartSeries_: function() {
- if (!this.hasVisibleContent)
- return [];
-
- var axis = new tr.ui.tracks.ChartAxis(0, undefined);
- var pts = new Array(this.cpuUsageSeries_.length + 1);
-
- // Add all points and an extra one at the end, otherwise the last
- // interval doesn't show up.
- for (var i = 0; i <= this.cpuUsageSeries_.length; i++) {
- pts[i] = new tr.ui.tracks.ChartPoint(undefined, this.interval_ * i,
- this.cpuUsageSeries_[i] || 0);
- }
-
- var renderingConfig = {
- chartType: tr.ui.tracks.ChartSeriesType.AREA,
- colorId: ColorScheme.getColorIdForGeneralPurposeString(this.heading)
- };
-
- return [new tr.ui.tracks.ChartSeries(pts, axis, renderingConfig)];
- }
- };
-
- return {
- CpuUsageTrack: CpuUsageTrack
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/cpu_usage_track_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/cpu_usage_track_test.html
deleted file mode 100644
index 0ef7005dcae..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/cpu_usage_track_test.html
+++ /dev/null
@@ -1,240 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright 2016 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.
--->
-
-<link rel="import" href="/tracing/core/test_utils.html">
-<link rel="import" href="/tracing/model/model.html">
-<link rel="import" href="/tracing/model/thread_slice.html">
-<link rel='import' href='/tracing/ui/base/constants.html'>
-<link rel='import' href='/tracing/ui/timeline_viewport.html'>
-<link rel="import" href="/tracing/ui/tracks/cpu_usage_track.html">
-<link rel='import' href='/tracing/ui/tracks/drawing_container.html'>
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
- var Model = tr.Model;
- var ThreadSlice = tr.model.ThreadSlice;
- var DIFF_EPSILON = 0.0001;
-
- // Input : slices is an array-of-array-of slices. Each top level array
- // represents a process. So, each slice in one of the top level array
- // will be placed in the same process.
- function buildModel(slices) {
- var model = tr.c.TestUtils.newModel(function(model) {
- var process = model.getOrCreateProcess(1);
- for (var i = 0; i < slices.length; i++) {
- var thread = process.getOrCreateThread(i);
- slices[i].forEach(s => thread.sliceGroup.pushSlice(s));
- }
- });
- return model;
- }
-
- // Compare float arrays based on an epsilon since floating point arithmetic
- // is not always 100% accurate.
- function assertArrayValuesCloseTo(actualValue, expectedValue) {
- assert.lengthOf(actualValue, expectedValue.length);
- for (var i = 0; i < expectedValue.length; i++)
- assert.closeTo(actualValue[i], expectedValue[i], DIFF_EPSILON);
- }
-
- function createCpuUsageTrack(model, interval) {
- var div = document.createElement('div');
- var viewport = new tr.ui.TimelineViewport(div);
- var drawingContainer = new tr.ui.tracks.DrawingContainer(viewport);
- div.appendChild(drawingContainer);
- var track = new tr.ui.tracks.CpuUsageTrack(drawingContainer.viewport);
- if (model !== undefined)
- setDisplayTransformFromBounds(viewport, model.bounds);
- track.initialize(model, interval);
- drawingContainer.appendChild(track);
- this.addHTMLOutput(drawingContainer);
- return track;
- }
-
- /**
- * Sets the mapping between the input range of timestamps and the output range
- * of horizontal pixels.
- */
- function setDisplayTransformFromBounds(viewport, bounds) {
- var dt = new tr.ui.TimelineDisplayTransform();
- var pixelRatio = window.devicePixelRatio || 1;
- var chartPixelWidth =
- (window.innerWidth - tr.ui.b.constants.HEADING_WIDTH) * pixelRatio;
- dt.xSetWorldBounds(bounds.min, bounds.max, chartPixelWidth);
- viewport.setDisplayTransformImmediately(dt);
- };
-
- test('computeCpuUsage_simpleOnBoundaries', function() {
- // First thread.
- // 0 5 10 15 20 25 30 35 40 45 50 55
- // [ sliceA ]
- // [ sliceB ] [C]
- var sliceA = new tr.model.ThreadSlice('', title, 0, 5, {}, 50);
- sliceA.cpuDuration = 25;
- var sliceB = new tr.model.ThreadSlice('', title, 0, 10, {}, 30);
- sliceB.cpuDuration = 15;
- // The slice completely fits into an interval and is the last.
- var sliceC = new tr.model.ThreadSlice('', title, 0, 52, {}, 3);
- sliceC.cpuDuration = 3;
-
- // Second thread.
- // 0 5 10 15 20 25 30 35 40 45 50 55
- // [ sliceE ][ sliceD ]
- var sliceD = new tr.model.ThreadSlice('', title, 0, 15, {}, 20);
- sliceD.cpuDuration = 17;
- var sliceE = new tr.model.ThreadSlice('', title, 0, 5, {}, 10);
- sliceE.cpuDuration = 9;
-
- var model = buildModel([[sliceA, sliceB, sliceC], [sliceD, sliceE]]);
-
- // Compute average CPU usage over A (but not over B and C).
- var avgCpuUsageA = sliceA.cpuSelfTime / sliceA.selfTime;
- // Compute average CPU usage over B, C, D, E. They don't have subslices.
- var avgCpuUsageB = sliceB.cpuDuration / sliceB.duration;
- var avgCpuUsageC = sliceC.cpuDuration / sliceC.duration;
- var avgCpuUsageD = sliceD.cpuDuration / sliceD.duration;
- var avgCpuUsageE = sliceE.cpuDuration / sliceE.duration;
-
- var expectedValue = [
- 0,
- avgCpuUsageA + avgCpuUsageE,
- avgCpuUsageB + avgCpuUsageE,
- avgCpuUsageB + avgCpuUsageD,
- avgCpuUsageB + avgCpuUsageD,
- avgCpuUsageB + avgCpuUsageD,
- avgCpuUsageB + avgCpuUsageD,
- avgCpuUsageB,
- avgCpuUsageA,
- avgCpuUsageA,
- avgCpuUsageA * 2.0 / 5 + avgCpuUsageC * 3.0 / 5.0,
- 0 // Extra point added to make the last interval show up.
- ];
- var track = createCpuUsageTrack.call(this, model, 5);
- var actualValue = track.series[0].points.map(point => point.y);
- assertArrayValuesCloseTo(actualValue, expectedValue);
- });
-
- test('computeCpuUsage_tooManyIntervals', function() {
- var sliceA = new tr.model.ThreadSlice('', title, 0, 5, {}, 50);
- sliceA.cpuDuration = 25;
- var sliceB = new tr.model.ThreadSlice(
- '', title, 0, 50000010, {}, 50000030);
- sliceB.cpuDuration = 15;
-
- var model = buildModel([[sliceA, sliceB]]);
-
- assert.throws(() => createCpuUsageTrack.call(this, model, 5));
- });
-
- test('computeCpuUsage_floatAndComplexIntervals', function() {
- // First thread.
- // 0 5 10 15 20 25 30 35 40 45 50 55
- // [ sliceA ]
- // [B]
- var sliceA = new tr.model.ThreadSlice('', title, 0, 5.5111, {}, 47.1023);
- sliceA.cpuDuration = 25;
- var sliceB = new tr.model.ThreadSlice('', title, 0, 11.2384, {}, 1.8769);
- sliceB.cpuDuration = 1.5;
-
- // Second thread.
- // 0 5 10 15 20 25 30 35 40 45 50 55
- // [ C ] [ D ]
- var sliceC = new tr.model.ThreadSlice('', title, 0, 11.239, {}, 5.8769);
- sliceC.cpuDuration = 5;
- var sliceD = new tr.model.ThreadSlice('', title, 0, 48.012, {}, 5.01);
- sliceD.cpuDuration = 4;
-
- var model = buildModel([[sliceA, sliceB], [sliceC, sliceD]]);
-
- // Compute average CPU usage over A (but not over B and C).
- var avgCpuUsageA = sliceA.cpuSelfTime / sliceA.selfTime;
- // Compute average CPU usage over B, C, D. They don't have subslices.
- var avgCpuUsageB = sliceB.cpuDuration / sliceB.duration;
- var avgCpuUsageC = sliceC.cpuDuration / sliceC.duration;
- var avgCpuUsageD = sliceD.cpuDuration / sliceD.duration;
-
- var expectedValue = [
- 0,
- avgCpuUsageA * (10 - 5.5111) / 5.0,
- avgCpuUsageA * (11.2384 - 10 + 15 - (11.2384 + 1.8769)) / 5.0 +
- avgCpuUsageB * 1.8769 / 5.0 +
- avgCpuUsageC * (15 - 11.239) / 5.0,
- avgCpuUsageA +
- avgCpuUsageC * ((11.239 + 5.8769) - 15) / 5.0,
- avgCpuUsageA,
- avgCpuUsageA,
- avgCpuUsageA,
- avgCpuUsageA,
- avgCpuUsageA,
- avgCpuUsageA +
- avgCpuUsageD * (50 - 48.012) / 5.0,
- avgCpuUsageA * (5.5111 + 47.1023 - 50) / 5.0 +
- avgCpuUsageD * (48.012 + 5.01 - 50) / 5.0,
- 0 // Extra point added to make the last interval show up.
- ];
- var track = createCpuUsageTrack.call(this, model, 5);
- var actualValue = track.series[0].points.map(point => point.y);
- assertArrayValuesCloseTo(actualValue, expectedValue);
- });
-
- test('instantiate', function() {
- var sliceA = new tr.model.ThreadSlice('', title, 0, 5.5111, {}, 47.1023);
- sliceA.cpuDuration = 25;
- var sliceB = new tr.model.ThreadSlice('', title, 0, 11.2384, {}, 1.8769);
- sliceB.cpuDuration = 1.5;
- var sliceC = new tr.model.ThreadSlice('', title, 0, 11.239, {}, 5.8769);
- sliceC.cpuDuration = 5;
- var sliceD = new tr.model.ThreadSlice('', title, 0, 48.012, {}, 5.01);
- sliceD.cpuDuration = 4;
-
- var model = buildModel([[sliceA, sliceB, sliceC, sliceD]]);
- createCpuUsageTrack.call(this, model);
- });
-
- test('hasVisibleContent_trueWithThreadSlicePresent', function() {
- var sliceA = new tr.model.ThreadSlice('', title, 0, 48.012, {}, 5.01);
- sliceA.cpuDuration = 4;
- var model = buildModel([[sliceA]]);
- var track = createCpuUsageTrack.call(this, model);
-
- assert.isTrue(track.hasVisibleContent);
- });
-
- test('hasVisibleContent_falseWithUndefinedProcessModel', function() {
- var track = createCpuUsageTrack.call(this, undefined);
-
- assert.isFalse(track.hasVisibleContent);
- });
-
- test('hasVisibleContent_falseWithNoThreadSlice', function() {
- // model with a CPU and a thread but no ThreadSlice.
- var model = buildModel([]);
- var track = createCpuUsageTrack.call(this, model);
-
- assert.isFalse(track.hasVisibleContent);
- });
-
- test('hasVisibleContent_trueWithSubSlices', function() {
- var sliceA = new tr.model.ThreadSlice('', title, 0, 5.5111, {}, 47.1023);
- sliceA.cpuDuration = 25;
- var sliceB = new tr.model.ThreadSlice('', title, 0, 11.2384, {}, 1.8769);
- sliceB.cpuDuration = 1.5;
-
- var model = buildModel([[sliceA, sliceB]]);
- var process = model.getProcess(1);
- // B will become lowest level slices of A.
- process.getThread(0).sliceGroup.createSubSlices();
- assert.equal(sliceA.cpuSelfTime, (sliceA.cpuDuration - sliceB.cpuDuration));
- var track = createCpuUsageTrack.call(this, model);
-
- assert.isTrue(track.hasVisibleContent);
- });
-
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/device_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/device_track.html
deleted file mode 100644
index dfc6c364eea..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/device_track.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/ui/tracks/container_track.html">
-<link rel="import" href="/tracing/ui/tracks/power_series_track.html">
-<link rel="import" href="/tracing/ui/tracks/spacing_track.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
-
- var ContainerTrack = tr.ui.tracks.ContainerTrack;
-
- // TODO(charliea): Make this track collapsible.
- /**
- * Track to visualize the device model.
- *
- * @constructor
- * @extends {ContainerTrack}
- */
- var DeviceTrack = tr.ui.b.define('device-track', ContainerTrack);
-
- DeviceTrack.prototype = {
-
- __proto__: ContainerTrack.prototype,
-
- decorate: function(viewport) {
- ContainerTrack.prototype.decorate.call(this, viewport);
-
- this.classList.add('device-track');
- this.device_ = undefined;
- this.powerSeriesTrack_ = undefined;
- },
-
- get device() {
- return this.device_;
- },
-
- set device(device) {
- this.device_ = device;
- this.updateContents_();
- },
-
- get powerSeriesTrack() {
- return this.powerSeriesTrack_;
- },
-
- get hasVisibleContent() {
- return (this.powerSeriesTrack_ &&
- this.powerSeriesTrack_.hasVisibleContent);
- },
-
- addContainersToTrackMap: function(containerToTrackMap) {
- tr.ui.tracks.ContainerTrack.prototype.addContainersToTrackMap.call(
- this, containerToTrackMap);
- containerToTrackMap.addContainer(this.device, this);
- },
-
- addEventsToTrackMap: function(eventToTrackMap) {
- this.tracks_.forEach(function(track) {
- track.addEventsToTrackMap(eventToTrackMap);
- });
- },
-
- appendPowerSeriesTrack_: function() {
- this.powerSeriesTrack_ = new tr.ui.tracks.PowerSeriesTrack(this.viewport);
- this.powerSeriesTrack_.powerSeries = this.device.powerSeries;
-
- if (this.powerSeriesTrack_.hasVisibleContent) {
- this.appendChild(this.powerSeriesTrack_);
- this.appendChild(new tr.ui.tracks.SpacingTrack(this.viewport));
- }
- },
-
- updateContents_: function() {
- this.clearTracks_();
- this.appendPowerSeriesTrack_();
- }
- };
-
- return {
- DeviceTrack: DeviceTrack
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/device_track_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/device_track_test.html
deleted file mode 100644
index ce849355882..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/device_track_test.html
+++ /dev/null
@@ -1,146 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel='import' href='/tracing/model/device.html'>
-<link rel='import' href='/tracing/model/model.html'>
-<link rel="import" href="/tracing/ui/base/constants.html">
-<link rel='import' href='/tracing/ui/timeline_display_transform.html'>
-<link rel='import' href='/tracing/ui/timeline_viewport.html'>
-<link rel='import' href='/tracing/ui/tracks/device_track.html'>
-<link rel='import' href='/tracing/ui/tracks/drawing_container.html'>
-<link rel='import' href='/tracing/ui/tracks/event_to_track_map.html'>
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
-
- var Device = tr.model.Device;
- var DeviceTrack = tr.ui.tracks.DeviceTrack;
- var Model = tr.Model;
- var PowerSeries = tr.model.PowerSeries;
-
- var createDrawingContainer = function(series) {
- var div = document.createElement('div');
- var viewport = new tr.ui.TimelineViewport(div);
- var drawingContainer = new tr.ui.tracks.DrawingContainer(viewport);
- div.appendChild(drawingContainer);
-
- if (series) {
- series.updateBounds();
- setDisplayTransformFromBounds(viewport, series.bounds);
- }
-
- return drawingContainer;
- };
-
- /**
- * Sets the mapping between the input range of timestamps and the output range
- * of horizontal pixels.
- */
- var setDisplayTransformFromBounds = function(viewport, bounds) {
- var dt = new tr.ui.TimelineDisplayTransform();
- var pixelRatio = window.devicePixelRatio || 1;
- var chartPixelWidth =
- (window.innerWidth - tr.ui.b.constants.HEADING_WIDTH) * pixelRatio;
- dt.xSetWorldBounds(bounds.min, bounds.max, chartPixelWidth);
- viewport.setDisplayTransformImmediately(dt);
- };
-
- test('instantiate', function() {
- var device = new Device(new Model());
- device.powerSeries = new PowerSeries(device);
- device.powerSeries.addPowerSample(0, 1);
- device.powerSeries.addPowerSample(0.5, 2);
- device.powerSeries.addPowerSample(1, 3);
- device.powerSeries.addPowerSample(1.5, 4);
-
- var drawingContainer = createDrawingContainer(device.powerSeries);
- var track = new DeviceTrack(drawingContainer.viewport);
- track.device = device;
- drawingContainer.appendChild(track);
-
- this.addHTMLOutput(drawingContainer);
- });
-
- test('instantiate_noPowerSeries', function() {
- var device = new Device(new Model());
-
- var drawingContainer = createDrawingContainer(device.powerSeries);
- var track = new DeviceTrack(drawingContainer.viewport);
- track.device = device;
- drawingContainer.appendChild(track);
-
- // Adding output should throw due to no visible content.
- assert.throw(function() { this.addHTMLOutput(drawingContainer); });
- });
-
- test('setDevice_clearsTrackBeforeUpdating', function() {
- var device = new Device(new Model());
- device.powerSeries = new PowerSeries(device);
- device.powerSeries.addPowerSample(0, 1);
- device.powerSeries.addPowerSample(0.5, 2);
- device.powerSeries.addPowerSample(1, 3);
- device.powerSeries.addPowerSample(1.5, 4);
-
- var drawingContainer = createDrawingContainer(device.powerSeries);
-
- // Set the device twice and make sure that this doesn't result in
- // the track appearing twice.
- var track = new DeviceTrack(drawingContainer.viewport);
- track.device = device;
- track.device = device;
- drawingContainer.appendChild(track);
-
- this.addHTMLOutput(drawingContainer);
-
- // The device track should still have two subtracks: one counter track and
- // one spacing track.
- assert.equal(track.tracks_.length, 2);
- });
-
- test('addContainersToTrackMap', function() {
- var device = new Device(new Model());
- device.powerSeries = new PowerSeries(device);
- device.powerSeries.addPowerSample(0, 1);
-
- var drawingContainer = createDrawingContainer(device.series);
- var track = new DeviceTrack(drawingContainer.viewport);
- track.device = device;
-
- var containerToTrackMap = new tr.ui.tracks.ContainerToTrackMap();
- track.addContainersToTrackMap(containerToTrackMap);
-
- assert.equal(containerToTrackMap.getTrackByStableId('Device'), track);
- assert.equal(
- containerToTrackMap.getTrackByStableId('Device.PowerSeries'),
- track.powerSeriesTrack);
- });
-
- test('addEventsToTrackMap', function() {
- var device = new Device(new Model());
- device.powerSeries = new PowerSeries(device);
- device.powerSeries.addPowerSample(0, 1);
- device.powerSeries.addPowerSample(0.5, 2);
-
- var div = document.createElement('div');
- var viewport = new tr.ui.TimelineViewport(div);
-
- var track = new DeviceTrack(viewport);
- track.device = device;
-
- var eventToTrackMap = new tr.ui.tracks.EventToTrackMap();
- track.addEventsToTrackMap(eventToTrackMap);
-
- var expected = new tr.ui.tracks.EventToTrackMap();
- expected[device.powerSeries.samples[0].guid] = track.powerSeriesTrack;
- expected[device.powerSeries.samples[1].guid] = track.powerSeriesTrack;
-
- assert.deepEqual(eventToTrackMap, expected);
- });
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/drawing_container.css b/chromium/third_party/catapult/tracing/tracing/ui/tracks/drawing_container.css
deleted file mode 100644
index a4a8cdb5b89..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/drawing_container.css
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright (c) 2012 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.
- */
-
-.drawing-container {
- -webkit-box-flex: 1;
- display: inline;
- overflow: auto;
- overflow-x: hidden;
- position: relative;
-}
-
-.drawing-container-canvas {
- -webkit-box-flex: 1;
- display: block;
- pointer-events: none;
- position: absolute;
- top: 0;
-}
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/drawing_container.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/drawing_container.html
deleted file mode 100644
index 69a8ca43026..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/drawing_container.html
+++ /dev/null
@@ -1,176 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="stylesheet" href="/tracing/ui/tracks/drawing_container.css">
-
-<link rel="import" href="/tracing/base/raf.html">
-<link rel="import" href="/tracing/ui/tracks/track.html">
-<link rel="import" href="/tracing/ui/base/constants.html">
-<link rel="import" href="/tracing/ui/base/ui.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
- var DrawType = {
- GENERAL_EVENT: 1,
- INSTANT_EVENT: 2,
- BACKGROUND: 3,
- GRID: 4,
- FLOW_ARROWS: 5,
- MARKERS: 6,
- HIGHLIGHTS: 7,
- ANNOTATIONS: 8
- };
-
- var DrawingContainer = tr.ui.b.define('drawing-container',
- tr.ui.tracks.Track);
-
- DrawingContainer.prototype = {
- __proto__: tr.ui.tracks.Track.prototype,
-
- decorate: function(viewport) {
- tr.ui.tracks.Track.prototype.decorate.call(this, viewport);
- this.classList.add('drawing-container');
-
- this.canvas_ = document.createElement('canvas');
- this.canvas_.className = 'drawing-container-canvas';
- this.canvas_.style.left = tr.ui.b.constants.HEADING_WIDTH + 'px';
- this.appendChild(this.canvas_);
-
- this.ctx_ = this.canvas_.getContext('2d');
-
- this.viewportChange_ = this.viewportChange_.bind(this);
- this.viewport.addEventListener('change', this.viewportChange_);
- },
-
- // Needed to support the calls in TimelineTrackView.
- get canvas() {
- return this.canvas_;
- },
-
- context: function() {
- return this.ctx_;
- },
-
- viewportChange_: function() {
- this.invalidate();
- },
-
- invalidate: function() {
- if (this.rafPending_)
- return;
- this.rafPending_ = true;
-
- tr.b.requestPreAnimationFrame(this.preDraw_, this);
- },
-
- preDraw_: function() {
- this.rafPending_ = false;
- this.updateCanvasSizeIfNeeded_();
-
- tr.b.requestAnimationFrameInThisFrameIfPossible(this.draw_, this);
- },
-
- draw_: function() {
- this.ctx_.clearRect(0, 0, this.canvas_.width, this.canvas_.height);
-
- var typesToDraw = [
- DrawType.BACKGROUND,
- DrawType.HIGHLIGHTS,
- DrawType.GRID,
- DrawType.INSTANT_EVENT,
- DrawType.GENERAL_EVENT,
- DrawType.MARKERS,
- DrawType.ANNOTATIONS,
- DrawType.FLOW_ARROWS
- ];
-
- for (var idx in typesToDraw) {
- for (var i = 0; i < this.children.length; ++i) {
- if (!(this.children[i] instanceof tr.ui.tracks.Track))
- continue;
- this.children[i].drawTrack(typesToDraw[idx]);
- }
- }
-
- var pixelRatio = window.devicePixelRatio || 1;
- var bounds = this.canvas_.getBoundingClientRect();
- var dt = this.viewport.currentDisplayTransform;
- var viewLWorld = dt.xViewToWorld(0);
- var viewRWorld = dt.xViewToWorld(
- bounds.width * pixelRatio);
-
- this.viewport.drawGridLines(this.ctx_, viewLWorld, viewRWorld);
- },
-
- updateCanvasSizeIfNeeded_: function() {
- var visibleChildTracks =
- tr.b.asArray(this.children).filter(this.visibleFilter_);
-
- var thisBounds = this.getBoundingClientRect();
-
- var firstChildTrackBounds = visibleChildTracks[0].getBoundingClientRect();
- var lastChildTrackBounds =
- visibleChildTracks[visibleChildTracks.length - 1].
- getBoundingClientRect();
-
- var innerWidth = firstChildTrackBounds.width -
- tr.ui.b.constants.HEADING_WIDTH;
- var innerHeight = lastChildTrackBounds.bottom - firstChildTrackBounds.top;
-
- var pixelRatio = window.devicePixelRatio || 1;
- if (this.canvas_.width != innerWidth * pixelRatio) {
- this.canvas_.width = innerWidth * pixelRatio;
- this.canvas_.style.width = innerWidth + 'px';
- }
-
- if (this.canvas_.height != innerHeight * pixelRatio) {
- this.canvas_.height = innerHeight * pixelRatio;
- this.canvas_.style.height = innerHeight + 'px';
- }
- },
-
- visibleFilter_: function(element) {
- if (!(element instanceof tr.ui.tracks.Track))
- return false;
- return window.getComputedStyle(element).display !== 'none';
- },
-
- addClosestEventToSelection: function(
- worldX, worldMaxDist, loY, hiY, selection) {
- for (var i = 0; i < this.children.length; ++i) {
- if (!(this.children[i] instanceof tr.ui.tracks.Track))
- continue;
- var trackClientRect = this.children[i].getBoundingClientRect();
- var a = Math.max(loY, trackClientRect.top);
- var b = Math.min(hiY, trackClientRect.bottom);
- if (a <= b) {
- this.children[i].addClosestEventToSelection(
- worldX, worldMaxDist, loY, hiY, selection);
- }
- }
-
- tr.ui.tracks.Track.prototype.addClosestEventToSelection.
- apply(this, arguments);
- },
-
- addEventsToTrackMap: function(eventToTrackMap) {
- for (var i = 0; i < this.children.length; ++i) {
- if (!(this.children[i] instanceof tr.ui.tracks.Track))
- continue;
- this.children[i].addEventsToTrackMap(eventToTrackMap);
- }
- }
- };
-
- return {
- DrawingContainer: DrawingContainer,
- DrawType: DrawType
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/drawing_container_perf_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/drawing_container_perf_test.html
deleted file mode 100644
index 9cb3d727c66..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/drawing_container_perf_test.html
+++ /dev/null
@@ -1,136 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="import" href="/tracing/base/xhr.html">
-<link rel="import" href="/tracing/core/test_utils.html">
-<link rel="import" href="/tracing/model/model.html">
-<link rel="import" href="/tracing/ui/extras/full_config.html">
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
- var generalModel;
- function getOrCreateGeneralModel() {
- if (generalModel !== undefined)
- generalModel;
- var fileUrl = '/test_data/thread_time_visualisation.json.gz';
- var events = tr.b.getSync(fileUrl);
- generalModel = tr.c.TestUtils.newModelWithEvents([events]);
- return generalModel;
- }
-
- function DCPerfTestCase(testName, opt_options) {
- tr.b.unittest.PerfTestCase.call(this, testName, undefined, opt_options);
- this.viewportDiv = undefined;
- this.drawingContainer = undefined;
- this.viewport = undefined;
- }
- DCPerfTestCase.prototype = {
- __proto__: tr.b.unittest.PerfTestCase.prototype,
-
- setUp: function(model) {
- this.viewportDiv = document.createElement('div');
-
- this.viewport = new tr.ui.TimelineViewport(this.viewportDiv);
-
- this.drawingContainer = new tr.ui.tracks.DrawingContainer(this.viewport);
- this.viewport.modelTrackContainer = this.drawingContainer;
-
- var modelTrack = new tr.ui.tracks.ModelTrack(this.viewport);
- this.drawingContainer.appendChild(modelTrack);
-
- modelTrack.model = model;
-
- this.viewportDiv.appendChild(this.drawingContainer);
-
- this.addHTMLOutput(this.viewportDiv);
-
- // Size the canvas.
- this.drawingContainer.updateCanvasSizeIfNeeded_();
-
- // Size the viewport.
- var w = this.drawingContainer.canvas.width;
- var min = model.bounds.min;
- var range = model.bounds.range;
-
- var boost = range * 0.15;
- var dt = new tr.ui.TimelineDisplayTransform();
- dt.xSetWorldBounds(min - boost, min + range + boost, w);
- this.viewport.setDisplayTransformImmediately(dt);
- },
-
- runOneIteration: function() {
- this.drawingContainer.draw_();
- }
- };
-
-
- function GeneralDCPerfTestCase(testName, opt_options) {
- DCPerfTestCase.call(this, testName, opt_options);
- }
-
- GeneralDCPerfTestCase.prototype = {
- __proto__: DCPerfTestCase.prototype,
-
- setUp: function() {
- var model = getOrCreateGeneralModel();
- DCPerfTestCase.prototype.setUp.call(this, model);
- }
- };
-
- // Failing on Chrome canary, see
- // https://github.com/catapult-project/catapult/issues/1826
- flakyTest(new GeneralDCPerfTestCase('draw_softwareCanvas_One',
- {iterations: 1}));
- // Failing on Chrome stable on Windows, see
- // https://github.com/catapult-project/catapult/issues/1908
- flakyTest(new GeneralDCPerfTestCase('draw_softwareCanvas_Ten',
- {iterations: 10}));
- test(new GeneralDCPerfTestCase('draw_softwareCanvas_AHundred',
- {iterations: 100}));
-
- function AsyncDCPerfTestCase(testName, opt_options) {
- DCPerfTestCase.call(this, testName, opt_options);
- }
-
- AsyncDCPerfTestCase.prototype = {
- __proto__: DCPerfTestCase.prototype,
-
- setUp: function() {
- var model = tr.c.TestUtils.newModel(function(m) {
- var proc = m.getOrCreateProcess(1);
- for (var tid = 1; tid <= 5; tid++) {
- var thread = proc.getOrCreateThread(tid);
- for (var i = 0; i < 5000; i++) {
- var mod = Math.floor(i / 100) % 4;
- var slice = tr.c.TestUtils.newAsyncSliceEx({
- name: 'Test' + i,
- colorId: tid + mod,
- id: tr.b.GUID.allocateSimple(),
- start: i * 10,
- duration: 9,
- isTopLevel: true
- });
- thread.asyncSliceGroup.push(slice);
- }
- }
- });
- DCPerfTestCase.prototype.setUp.call(this, model);
-
- var w = this.drawingContainer.canvas.width;
-
- var dt = new tr.ui.TimelineDisplayTransform();
- dt.xSetWorldBounds(-2000, 54000, w);
- this.viewport.setDisplayTransformImmediately(dt);
- }
- };
- test(new AsyncDCPerfTestCase('draw_asyncSliceHeavy_Twenty',
- {iterations: 20}));
-});
-</script>
-
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/event_to_track_map.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/event_to_track_map.html
deleted file mode 100644
index 27da2820c61..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/event_to_track_map.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/base/base.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
-
- /**
- * EventToTrackMap provides a mapping mechanism between events and the
- * tracks those events belong on.
- * @constructor
- */
- function EventToTrackMap() {}
-
- EventToTrackMap.prototype = {
- addEvent: function(event, track) {
- if (!track)
- throw new Error('Must provide a track.');
- this[event.guid] = track;
- }
- };
-
- return {
- EventToTrackMap: EventToTrackMap
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/frame_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/frame_track.html
deleted file mode 100644
index c3d6bc6830c..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/frame_track.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/base/color_scheme.html">
-<link rel="import" href="/tracing/ui/base/event_presenter.html">
-<link rel="import" href="/tracing/ui/base/ui.html">
-<link rel="import" href="/tracing/ui/tracks/letter_dot_track.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
- var startCompare = function(x, y) { return x.start - y.start; }
-
- /**
- * Track enabling quick selection of frame slices/events.
- * @constructor
- */
- var FrameTrack = tr.ui.b.define(
- 'frame-track', tr.ui.tracks.LetterDotTrack);
-
- FrameTrack.prototype = {
- __proto__: tr.ui.tracks.LetterDotTrack.prototype,
-
- decorate: function(viewport) {
- tr.ui.tracks.LetterDotTrack.prototype.decorate.call(this, viewport);
- this.heading = 'Frames';
-
- this.frames_ = undefined;
- this.items = undefined;
- },
-
- get frames() {
- return this.frames_;
- },
-
- set frames(frames) {
- this.frames_ = frames;
- if (frames === undefined)
- return;
-
- this.frames_ = this.frames_.slice();
- this.frames_.sort(startCompare);
-
- // letter dots
- this.items = this.frames_.map(function(frame) {
- return new FrameDot(frame);
- });
- }
- };
-
- /**
- * @constructor
- * @extends {LetterDot}
- */
- function FrameDot(frame) {
- tr.ui.tracks.LetterDot.call(this, frame, 'F', frame.colorId, frame.start);
- }
-
- FrameDot.prototype = {
- __proto__: tr.ui.tracks.LetterDot.prototype
- };
-
- return {
- FrameTrack: FrameTrack
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/frame_track_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/frame_track_test.html
deleted file mode 100644
index 943e245b37c..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/frame_track_test.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/core/test_utils.html">
-<link rel="import" href="/tracing/model/event_set.html">
-<link rel="import" href="/tracing/model/frame.html">
-<link rel="import" href="/tracing/ui/timeline_viewport.html">
-<link rel="import" href="/tracing/ui/tracks/drawing_container.html">
-<link rel="import" href="/tracing/ui/tracks/frame_track.html">
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
- var Frame = tr.model.Frame;
- var FrameTrack = tr.ui.tracks.FrameTrack;
- var EventSet = tr.model.EventSet;
- var SelectionState = tr.model.SelectionState;
- var Viewport = tr.ui.TimelineViewport;
-
- var createFrames = function() {
- var frames = undefined;
- var model = tr.c.TestUtils.newModel(function(model) {
- var process = model.getOrCreateProcess(1);
- var thread = process.getOrCreateThread(1);
- for (var i = 1; i < 5; i++) {
- var slice = tr.c.TestUtils.newSliceEx(
- {title: 'work for frame', start: i * 20, duration: 10});
- thread.sliceGroup.pushSlice(slice);
- var events = [slice];
- var threadTimeRanges =
- [{thread: thread, start: slice.start, end: slice.end}];
- process.frames.push(new Frame(events, threadTimeRanges));
- }
- frames = process.frames;
- });
- return frames;
- };
-
- test('instantiate', function() {
- var frames = createFrames();
- frames[1].selectionState = SelectionState.SELECTED;
-
- var div = document.createElement('div');
- var viewport = new Viewport(div);
- var drawingContainer = new tr.ui.tracks.DrawingContainer(viewport);
- div.appendChild(drawingContainer);
-
- var track = FrameTrack(viewport);
- drawingContainer.appendChild(track);
-
- this.addHTMLOutput(div);
- drawingContainer.invalidate();
-
- track.frames = frames;
- var dt = new tr.ui.TimelineDisplayTransform();
- dt.xSetWorldBounds(0, 50, track.clientWidth);
- track.viewport.setDisplayTransformImmediately(dt);
-
- assert.equal(track.items[0].start, 20);
- });
-
- test('modelMapping', function() {
- var frames = createFrames();
-
- var div = document.createElement('div');
- var viewport = new Viewport(div);
- var track = FrameTrack(viewport);
- track.frames = frames;
-
- var a0 = track.items[0].modelItem;
- assert.equal(a0, frames[0]);
- });
-
- test('selectionMapping', function() {
- var frames = createFrames();
-
- var div = document.createElement('div');
- var viewport = new Viewport(div);
- var track = FrameTrack(viewport);
- track.frames = frames;
-
- var selection = new EventSet();
- track.items[0].addToSelection(selection);
-
- // select both frame, but not its component slice
- assert.equal(selection.length, 1);
-
- var frameCount = 0;
- var eventCount = 0;
- selection.forEach(function(event) {
- if (event instanceof Frame) {
- assert.equal(event, frames[0]);
- frameCount++;
- } else
- eventCount++;
- });
- assert.equal(frameCount, 1);
- assert.equal(eventCount, 0);
- });
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/global_memory_dump_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/global_memory_dump_track.html
deleted file mode 100644
index 0e2e4d54c24..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/global_memory_dump_track.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/ui/tracks/chart_track.html">
-<link rel="import" href="/tracing/ui/tracks/container_track.html">
-<link rel="import" href="/tracing/ui/tracks/letter_dot_track.html">
-<link rel="import" href="/tracing/ui/tracks/memory_dump_track_util.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
-
- var USED_MEMORY_TRACK_HEIGHT = 50;
- var ALLOCATED_MEMORY_TRACK_HEIGHT = 50;
-
- /**
- * A track that displays an array of GlobalMemoryDump objects.
- * @constructor
- * @extends {ContainerTrack}
- */
- var GlobalMemoryDumpTrack = tr.ui.b.define(
- 'global-memory-dump-track', tr.ui.tracks.ContainerTrack);
-
- GlobalMemoryDumpTrack.prototype = {
- __proto__: tr.ui.tracks.ContainerTrack.prototype,
-
- decorate: function(viewport) {
- tr.ui.tracks.ContainerTrack.prototype.decorate.call(this, viewport);
- this.memoryDumps_ = undefined;
- },
-
- get memoryDumps() {
- return this.memoryDumps_;
- },
-
- set memoryDumps(memoryDumps) {
- this.memoryDumps_ = memoryDumps;
- this.updateContents_();
- },
-
- updateContents_: function() {
- this.clearTracks_();
-
- // Show no tracks if there are no dumps.
- if (!this.memoryDumps_ || !this.memoryDumps_.length)
- return;
-
- this.appendDumpDotsTrack_();
- this.appendUsedMemoryTrack_();
- this.appendAllocatedMemoryTrack_();
- },
-
- appendDumpDotsTrack_: function() {
- var items = tr.ui.tracks.buildMemoryLetterDots(this.memoryDumps_);
- if (!items)
- return;
-
- var track = new tr.ui.tracks.LetterDotTrack(this.viewport);
- track.heading = 'Memory Dumps';
- track.items = items;
- this.appendChild(track);
- },
-
- appendUsedMemoryTrack_: function() {
- var series = tr.ui.tracks.buildGlobalUsedMemoryChartSeries(
- this.memoryDumps_);
- if (!series)
- return;
-
- var track = new tr.ui.tracks.ChartTrack(this.viewport);
- track.heading = 'Memory per process';
- track.height = USED_MEMORY_TRACK_HEIGHT + 'px';
- track.series = series;
- track.autoSetAllAxes({expandMax: true});
- this.appendChild(track);
- },
-
- appendAllocatedMemoryTrack_: function() {
- var series = tr.ui.tracks.buildGlobalAllocatedMemoryChartSeries(
- this.memoryDumps_);
- if (!series)
- return;
-
- var track = new tr.ui.tracks.ChartTrack(this.viewport);
- track.heading = 'Memory per component';
- track.height = ALLOCATED_MEMORY_TRACK_HEIGHT + 'px';
- track.series = series;
- track.autoSetAllAxes({expandMax: true});
- this.appendChild(track);
- }
- };
-
- return {
- GlobalMemoryDumpTrack: GlobalMemoryDumpTrack
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/global_memory_dump_track_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/global_memory_dump_track_test.html
deleted file mode 100644
index 268da37bcf7..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/global_memory_dump_track_test.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/core/test_utils.html">
-<link rel="import" href="/tracing/ui/timeline_viewport.html">
-<link rel="import" href="/tracing/ui/tracks/drawing_container.html">
-<link rel="import" href="/tracing/ui/tracks/global_memory_dump_track.html">
-<link rel="import" href="/tracing/ui/tracks/memory_dump_track_test_utils.html">
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
- var Viewport = tr.ui.TimelineViewport;
- var GlobalMemoryDumpTrack = tr.ui.tracks.GlobalMemoryDumpTrack;
- var createTestGlobalMemoryDumps = tr.ui.tracks.createTestGlobalMemoryDumps;
-
- function instantiateTrack(withVMRegions, withAllocatorDumps,
- expectedTrackCount) {
- var dumps = createTestGlobalMemoryDumps(withVMRegions, withAllocatorDumps);
-
- var div = document.createElement('div');
- var viewport = new Viewport(div);
- var drawingContainer = new tr.ui.tracks.DrawingContainer(viewport);
- div.appendChild(drawingContainer);
-
- var track = new GlobalMemoryDumpTrack(viewport);
- drawingContainer.appendChild(track);
- drawingContainer.invalidate();
-
- track.memoryDumps = dumps;
- this.addHTMLOutput(div);
-
- var dt = new tr.ui.TimelineDisplayTransform();
- dt.xSetWorldBounds(0, 50, track.clientWidth);
- track.viewport.setDisplayTransformImmediately(dt);
-
- assert.lengthOf(track.tracks_, expectedTrackCount);
- };
-
- test('instantiate_dotsOnly', function() {
- instantiateTrack.call(this, false, false, 1);
- });
-
- test('instantiate_withVMRegions', function() {
- instantiateTrack.call(this, true, false, 2);
- });
-
- test('instantiate_withMemoryAllocatorDumps', function() {
- instantiateTrack.call(this, false, true, 2);
- });
-
- test('instantiate_withBoth', function() {
- instantiateTrack.call(this, true, true, 3);
- });
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/highlighter.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/highlighter.html
deleted file mode 100644
index 6b3a7e69c70..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/highlighter.html
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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.
--->
-
-<link rel="import" href="/tracing/base/base.html">
-<link rel="import" href="/tracing/base/extension_registry.html">
-
-<script>
-'use strict';
-
-/**
- * @fileoverview Allows custom highlighting to be added to the full model track.
- */
-tr.exportTo('tr.ui.tracks', function() {
-
- /**
- * Highlights cetrain features of the model.
- * @constructor
- */
- function Highlighter(viewport) {
- if (viewport === undefined) {
- throw new Error('viewport must be provided');
- }
- this.viewport_ = viewport;
- };
-
- Highlighter.prototype = {
- __proto__: Object.prototype,
-
- processModel: function(model) {
- throw new Error('processModel implementation missing');
- },
-
- drawHighlight: function(ctx, dt, viewLWorld, viewRWorld, viewHeight) {
- throw new Error('drawHighlight implementation missing');
- }
- };
-
-
- var options = new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);
- options.defaultMetadata = {};
- options.mandatoryBaseClass = Highlighter;
- tr.b.decorateExtensionRegistry(Highlighter, options);
-
- return {
- Highlighter: Highlighter
- };
-});
-</script>
-
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/interaction_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/interaction_track.html
deleted file mode 100644
index 8e8f181ff90..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/interaction_track.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/ui/base/draw_helpers.html">
-<link rel="import" href="/tracing/ui/base/ui.html">
-<link rel="import" href="/tracing/ui/tracks/alert_track.html">
-<link rel="import" href="/tracing/ui/tracks/container_track.html">
-<link rel="import" href="/tracing/ui/tracks/drawing_container.html">
-<link rel="import" href="/tracing/ui/tracks/highlighter.html">
-<link rel="import" href="/tracing/ui/tracks/kernel_track.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
- /**
- * A track that displays an array of interaction records.
- * @constructor
- * @extends {MultiRowTrack}
- */
- var InteractionTrack = tr.ui.b.define(
- 'interaction-track', tr.ui.tracks.MultiRowTrack);
-
- InteractionTrack.prototype = {
- __proto__: tr.ui.tracks.MultiRowTrack.prototype,
-
- decorate: function(viewport) {
- tr.ui.tracks.MultiRowTrack.prototype.decorate.call(this, viewport);
- this.heading = 'Interactions';
- this.subRows_ = [];
- },
-
- set model(model) {
- this.setItemsToGroup(model.userModel.expectations, {
- guid: tr.b.GUID.allocateSimple(),
- model: model,
- getSettingsKey: function() {
- return undefined;
- }
- });
- },
-
- buildSubRows_: function(slices) {
- if (this.subRows_.length)
- return this.subRows_;
- this.subRows_.push.apply(this.subRows_,
- tr.ui.tracks.AsyncSliceGroupTrack.prototype.buildSubRows_.call(
- {}, slices, true));
- return this.subRows_;
- },
-
- addSubTrack_: function(slices) {
- var track = new tr.ui.tracks.SliceTrack(this.viewport);
- track.slices = slices;
- this.appendChild(track);
- return track;
- }
- };
-
- return {
- InteractionTrack: InteractionTrack
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/interaction_track_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/interaction_track_test.html
deleted file mode 100644
index 1b2c1346a16..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/interaction_track_test.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/core/test_utils.html">
-<link rel="import" href="/tracing/model/model.html">
-<link rel="import" href="/tracing/model/user_model/stub_expectation.html">
-<link rel="import" href="/tracing/ui/timeline_viewport.html">
-<link rel="import" href="/tracing/ui/tracks/interaction_track.html">
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
- // UserExpectations should be sorted by start time, not title, so that
- // AsyncSliceGroupTrack.buildSubRows_ can lay them out in as few tracks as
- // possible, so that they mesh instead of stacking unnecessarily.
- test('instantiate', function() {
- var div = document.createElement('div');
- var viewport = new tr.ui.TimelineViewport(div);
- var drawingContainer = new tr.ui.tracks.DrawingContainer(viewport);
- div.appendChild(drawingContainer);
- var track = new tr.ui.tracks.InteractionTrack(viewport);
- track.model = tr.c.TestUtils.newModel(function(model) {
- var process = model.getOrCreateProcess(1);
- var thread = process.getOrCreateThread(1);
- thread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx(
- {start: 0, duration: 200}));
- model.userModel.expectations.push(new tr.model.um.StubExpectation(
- {parentModel: model, start: 100, duration: 100}));
- model.userModel.expectations.push(new tr.model.um.StubExpectation(
- {parentModel: model, start: 0, duration: 100}));
- model.userModel.expectations.push(new tr.model.um.StubExpectation(
- {parentModel: model, start: 150, duration: 50}));
- model.userModel.expectations.push(new tr.model.um.StubExpectation(
- {parentModel: model, start: 50, duration: 100}));
- model.userModel.expectations.push(new tr.model.um.StubExpectation(
- {parentModel: model, start: 0, duration: 50}));
- // Model.createImportTracesTask() automatically sorts IRs by start time.
- });
- assert.equal(2, track.subRows_.length);
- assert.equal(2, track.subRows_[0].length);
- assert.equal(3, track.subRows_[1].length);
- drawingContainer.appendChild(track);
- this.addHTMLOutput(div);
- });
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/kernel_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/kernel_track.html
deleted file mode 100644
index 20ffea84d05..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/kernel_track.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="import" href="/tracing/ui/tracks/process_track_base.html">
-<link rel="import" href="/tracing/ui/tracks/cpu_track.html">
-<link rel="import" href="/tracing/ui/tracks/spacing_track.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
- var Cpu = tr.model.Cpu;
- var CpuTrack = tr.ui.tracks.cpu_track;
- var ProcessTrackBase = tr.ui.tracks.ProcessTrackBase;
- var SpacingTrack = tr.ui.tracks.SpacingTrack;
-
- /**
- * @constructor
- */
- var KernelTrack = tr.ui.b.define('kernel-track', ProcessTrackBase);
-
- KernelTrack.prototype = {
- __proto__: ProcessTrackBase.prototype,
-
- decorate: function(viewport) {
- ProcessTrackBase.prototype.decorate.call(this, viewport);
- },
-
-
- // Kernel maps to processBase because we derive from ProcessTrackBase.
- set kernel(kernel) {
- this.processBase = kernel;
- },
-
- get kernel() {
- return this.processBase;
- },
-
- get eventContainer() {
- return this.kernel;
- },
-
- get hasVisibleContent() {
- return this.children.length > 1;
- },
-
- addContainersToTrackMap: function(containerToTrackMap) {
- tr.ui.tracks.ProcessTrackBase.prototype.addContainersToTrackMap.call(
- this, containerToTrackMap);
- containerToTrackMap.addContainer(this.kernel, this);
- },
-
- willAppendTracks_: function() {
- var cpus = tr.b.dictionaryValues(this.kernel.cpus);
- cpus.sort(tr.model.Cpu.compare);
-
- var didAppendAtLeastOneTrack = false;
- for (var i = 0; i < cpus.length; ++i) {
- var cpu = cpus[i];
- var track = new tr.ui.tracks.CpuTrack(this.viewport);
- track.detailedMode = this.expanded;
- track.cpu = cpu;
- if (!track.hasVisibleContent)
- continue;
- this.appendChild(track);
- didAppendAtLeastOneTrack = true;
- }
- if (didAppendAtLeastOneTrack)
- this.appendChild(new SpacingTrack(this.viewport));
- }
- };
-
-
- return {
- KernelTrack: KernelTrack
- };
-});
-</script>
-
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/letter_dot_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/letter_dot_track.html
deleted file mode 100644
index 64f26e4fb4f..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/letter_dot_track.html
+++ /dev/null
@@ -1,260 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/base/color_scheme.html">
-<link rel="import" href="/tracing/base/sorted_array_utils.html">
-<link rel="import" href="/tracing/model/proxy_selectable_item.html">
-<link rel="import" href="/tracing/ui/base/event_presenter.html">
-<link rel="import" href="/tracing/ui/base/heading.html">
-<link rel="import" href="/tracing/ui/base/ui.html">
-<link rel="import" href="/tracing/ui/tracks/track.html">
-
-<style>
-.letter-dot-track {
- height: 18px;
-}
-</style>
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
- var EventPresenter = tr.ui.b.EventPresenter;
- var SelectionState = tr.model.SelectionState;
-
- /**
- * A track that displays an array of dots with filled letters inside them.
- * @constructor
- * @extends {Track}
- */
- var LetterDotTrack = tr.ui.b.define(
- 'letter-dot-track', tr.ui.tracks.Track);
-
- LetterDotTrack.prototype = {
- __proto__: tr.ui.tracks.Track.prototype,
-
- decorate: function(viewport) {
- tr.ui.tracks.Track.prototype.decorate.call(this, viewport);
- this.classList.add('letter-dot-track');
- this.items_ = undefined;
-
- this.heading_ = document.createElement('tr-ui-heading');
- this.appendChild(this.heading_);
- },
-
- set heading(heading) {
- this.heading_.heading = heading;
- },
-
- get heading() {
- return this.heading_.heading;
- },
-
- set tooltip(tooltip) {
- this.heading_.tooltip = tooltip;
- },
-
- get items() {
- return this.items_;
- },
-
- set items(items) {
- this.items_ = items;
- this.invalidateDrawingContainer();
- },
-
- get height() {
- return window.getComputedStyle(this).height;
- },
-
- set height(height) {
- this.style.height = height;
- },
-
- get dumpRadiusView() {
- return 7 * (window.devicePixelRatio || 1);
- },
-
- draw: function(type, viewLWorld, viewRWorld) {
- if (this.items_ === undefined)
- return;
- switch (type) {
- case tr.ui.tracks.DrawType.GENERAL_EVENT:
- this.drawLetterDots_(viewLWorld, viewRWorld);
- break;
- }
- },
-
- drawLetterDots_: function(viewLWorld, viewRWorld) {
- var ctx = this.context();
- var pixelRatio = window.devicePixelRatio || 1;
-
- var bounds = this.getBoundingClientRect();
- var height = bounds.height * pixelRatio;
- var halfHeight = height * 0.5;
- var twoPi = Math.PI * 2;
-
- // Culling parameters.
- var dt = this.viewport.currentDisplayTransform;
- var dumpRadiusView = this.dumpRadiusView;
- var itemRadiusWorld = dt.xViewVectorToWorld(height);
-
- // Draw the memory dumps.
- var items = this.items_;
- var loI = tr.b.findLowIndexInSortedArray(
- items,
- function(item) { return item.start; },
- viewLWorld);
-
- var oldFont = ctx.font;
- ctx.font = '400 ' + Math.floor(9 * pixelRatio) + 'px Arial';
- ctx.strokeStyle = 'rgb(0,0,0)';
- ctx.textBaseline = 'middle';
- ctx.textAlign = 'center';
-
- var drawItems = function(selected) {
- for (var i = loI; i < items.length; ++i) {
- var item = items[i];
- var x = item.start;
- if (x - itemRadiusWorld > viewRWorld)
- break;
- if (item.selected !== selected)
- continue;
- var xView = dt.xWorldToView(x);
-
- ctx.fillStyle = EventPresenter.getSelectableItemColorAsString(item);
- ctx.beginPath();
- ctx.arc(xView, halfHeight, dumpRadiusView + 0.5, 0, twoPi);
- ctx.fill();
- if (item.selected) {
- ctx.lineWidth = 3;
- ctx.strokeStyle = 'rgb(100,100,0)';
- ctx.stroke();
-
- ctx.beginPath();
- ctx.arc(xView, halfHeight, dumpRadiusView, 0, twoPi);
- ctx.lineWidth = 1.5;
- ctx.strokeStyle = 'rgb(255,255,0)';
- ctx.stroke();
- } else {
- ctx.lineWidth = 1;
- ctx.strokeStyle = 'rgb(0,0,0)';
- ctx.stroke();
- }
-
- ctx.fillStyle = 'rgb(255, 255, 255)';
- ctx.fillText(item.dotLetter, xView, halfHeight);
- }
- };
-
- // Draw unselected items first to make sure they don't occlude selected
- // items.
- drawItems(false);
- drawItems(true);
-
- ctx.lineWidth = 1;
- ctx.font = oldFont;
- },
-
- addEventsToTrackMap: function(eventToTrackMap) {
- if (this.items_ === undefined)
- return;
-
- this.items_.forEach(function(item) {
- item.addToTrackMap(eventToTrackMap, this);
- }, this);
- },
-
- addIntersectingEventsInRangeToSelectionInWorldSpace: function(
- loWX, hiWX, viewPixWidthWorld, selection) {
- if (this.items_ === undefined)
- return;
-
- var itemRadiusWorld = viewPixWidthWorld * this.dumpRadiusView;
- tr.b.iterateOverIntersectingIntervals(
- this.items_,
- function(x) { return x.start - itemRadiusWorld; },
- function(x) { return 2 * itemRadiusWorld; },
- loWX, hiWX,
- function(item) {
- item.addToSelection(selection);
- }.bind(this));
- },
-
- /**
- * Add the item to the left or right of the provided event, if any, to the
- * selection.
- * @param {event} The current event item.
- * @param {Number} offset Number of slices away from the event to look.
- * @param {Selection} selection The selection to add an event to,
- * if found.
- * @return {boolean} Whether an event was found.
- * @private
- */
- addEventNearToProvidedEventToSelection: function(event, offset, selection) {
- if (this.items_ === undefined)
- return;
-
- var items = this.items_;
- var index = tr.b.findFirstIndexInArray(items, function(item) {
- return item.modelItem === event;
- });
- if (index === -1)
- return false;
-
- var newIndex = index + offset;
- if (newIndex >= 0 && newIndex < items.length) {
- items[newIndex].addToSelection(selection);
- return true;
- }
- return false;
- },
-
- addAllEventsMatchingFilterToSelection: function(filter, selection) {
- },
-
- addClosestEventToSelection: function(worldX, worldMaxDist, loY, hiY,
- selection) {
- if (this.items_ === undefined)
- return;
-
- var item = tr.b.findClosestElementInSortedArray(
- this.items_,
- function(x) { return x.start; },
- worldX,
- worldMaxDist);
-
- if (!item)
- return;
-
- item.addToSelection(selection);
- }
- };
-
- /**
- * A filled dot with a letter inside it.
- *
- * @constructor
- * @extends {ProxySelectableItem}
- */
- function LetterDot(modelItem, dotLetter, colorId, start) {
- tr.model.ProxySelectableItem.call(this, modelItem);
- this.dotLetter = dotLetter;
- this.colorId = colorId;
- this.start = start;
- };
-
- LetterDot.prototype = {
- __proto__: tr.model.ProxySelectableItem.prototype
- };
-
- return {
- LetterDotTrack: LetterDotTrack,
- LetterDot: LetterDot
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/letter_dot_track_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/letter_dot_track_test.html
deleted file mode 100644
index 93c2bcfbb9a..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/letter_dot_track_test.html
+++ /dev/null
@@ -1,121 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/core/test_utils.html">
-<link rel="import" href="/tracing/model/event_set.html">
-<link rel="import" href="/tracing/model/selection_state.html">
-<link rel="import" href="/tracing/ui/timeline_viewport.html">
-<link rel="import" href="/tracing/ui/tracks/drawing_container.html">
-<link rel="import" href="/tracing/ui/tracks/letter_dot_track.html">
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
- var LetterDotTrack = tr.ui.tracks.LetterDotTrack;
- var LetterDot = tr.ui.tracks.LetterDot;
- var SelectionState = tr.model.SelectionState;
- var Viewport = tr.ui.TimelineViewport;
-
- var createItems = function() {
- var items = [
- new LetterDot({selectionState: SelectionState.SELECTED}, 'a', 7, 5),
- new LetterDot({selectionState: SelectionState.SELECTED}, 'b', 2, 20),
- new LetterDot({selectionState: SelectionState.NONE}, 'c', 4, 35),
- new LetterDot({selectionState: SelectionState.NONE}, 'd', 4, 50)
- ];
- return items;
- };
-
- test('instantiate', function() {
- var items = createItems();
-
- var div = document.createElement('div');
-
- var viewport = new Viewport(div);
- var drawingContainer = new tr.ui.tracks.DrawingContainer(viewport);
- div.appendChild(drawingContainer);
-
- var track = LetterDotTrack(viewport);
- drawingContainer.appendChild(track);
-
- this.addHTMLOutput(div);
- drawingContainer.invalidate();
-
- track.items = items;
- var dt = new tr.ui.TimelineDisplayTransform();
- dt.xSetWorldBounds(0, 60, track.clientWidth);
- track.viewport.setDisplayTransformImmediately(dt);
- });
-
- test('selectionHitTesting', function() {
- var items = createItems();
-
- var track = new LetterDotTrack(new Viewport());
- track.items = items;
-
- // Fake a view pixel size.
- var devicePixelRatio = window.devicePixelRatio || 1;
- var viewPixWidthWorld = 0.1 / devicePixelRatio;
-
- // Hit outside range
- var selection = [];
- track.addIntersectingEventsInRangeToSelectionInWorldSpace(
- 3, 4, viewPixWidthWorld, selection);
- assert.equal(selection.length, 0);
-
- // Hit the first item, via pixel-nearness.
- selection = [];
- track.addIntersectingEventsInRangeToSelectionInWorldSpace(
- 19.98, 19.99, viewPixWidthWorld, selection);
- assert.equal(selection.length, 1);
- assert.equal(selection[0], items[1].modelItem);
-
- // Hit the instance, between the 1st and 2nd snapshots
- selection = [];
- track.addIntersectingEventsInRangeToSelectionInWorldSpace(
- 30, 50, viewPixWidthWorld, selection);
- assert.equal(selection.length, 2);
- assert.equal(selection[0], items[2].modelItem);
- assert.equal(selection[1], items[3].modelItem);
- });
-
- test('addEventNearToProvidedEventToSelection', function() {
- var items = createItems();
-
- var track = new LetterDotTrack(new Viewport());
- track.items = items;
-
- // Right from the middle of items.
- var selection1 = [];
- assert.isTrue(track.addEventNearToProvidedEventToSelection(
- items[2].modelItem, 1, selection1));
- assert.equal(selection1.length, 1);
- assert.equal(selection1[0], items[3].modelItem);
-
- // Left from the middle of items.
- var selection2 = [];
- assert.isTrue(track.addEventNearToProvidedEventToSelection(
- items[2].modelItem, -1, selection2));
- assert.equal(selection2.length, 1);
- assert.equal(selection2[0], items[1].modelItem);
-
- // Right from the right edge of items.
- var selection3 = [];
- assert.isFalse(track.addEventNearToProvidedEventToSelection(
- items[3].modelItem, 1, selection3));
- assert.equal(selection3.length, 0);
-
- // Left from the left edge of items.
- var selection4 = [];
- assert.isFalse(track.addEventNearToProvidedEventToSelection(
- items[0].modelItem, -1, selection4));
- assert.equal(selection4.length, 0);
- });
-});
-</script>
-
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/memory_dump_track_test_utils.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/memory_dump_track_test_utils.html
deleted file mode 100644
index 2d13a901ba8..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/memory_dump_track_test_utils.html
+++ /dev/null
@@ -1,143 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/model/container_memory_dump.html">
-<link rel="import" href="/tracing/model/global_memory_dump.html">
-<link rel="import" href="/tracing/model/memory_dump_test_utils.html">
-<link rel="import" href="/tracing/model/model.html">
-<link rel="import" href="/tracing/model/process_memory_dump.html">
-<link rel="import" href="/tracing/model/selection_state.html">
-<link rel="import" href="/tracing/model/vm_region.html">
-
-<script>
-'use strict';
-
-/**
- * @fileoverview Helper functions for memory dump track tests.
- */
-tr.exportTo('tr.ui.tracks', function() {
- var ProcessMemoryDump = tr.model.ProcessMemoryDump;
- var GlobalMemoryDump = tr.model.GlobalMemoryDump;
- var VMRegion = tr.model.VMRegion;
- var VMRegionClassificationNode = tr.model.VMRegionClassificationNode;
- var SelectionState = tr.model.SelectionState;
- var addGlobalMemoryDump = tr.model.MemoryDumpTestUtils.addGlobalMemoryDump;
- var addProcessMemoryDump = tr.model.MemoryDumpTestUtils.addProcessMemoryDump;
- var newAllocatorDump = tr.model.MemoryDumpTestUtils.newAllocatorDump;
- var addOwnershipLink = tr.model.MemoryDumpTestUtils.addOwnershipLink;
- var LIGHT = tr.model.ContainerMemoryDump.LevelOfDetail.LIGHT;
- var DETAILED = tr.model.ContainerMemoryDump.LevelOfDetail.DETAILED;
-
- function createVMRegions(pssValues) {
- return VMRegionClassificationNode.fromRegions(
- pssValues.map(function(pssValue, i) {
- return VMRegion.fromDict({
- startAddress: 1000 * i,
- sizeInBytes: 1000,
- protectionFlags: VMRegion.PROTECTION_FLAG_READ,
- mappedFile: '[stack' + i + ']',
- byteStats: {
- privateDirtyResident: pssValue / 3,
- swapped: pssValue * 3,
- proportionalResident: pssValue
- }
- });
- }));
- }
-
- function createAllocatorDumps(memoryDump, dumpData) {
- // Create the individual allocator dumps.
- var allocatorDumps = tr.b.mapItems(dumpData, function(allocatorName, data) {
- var size = data.size;
- assert.typeOf(size, 'number'); // Sanity check.
- return newAllocatorDump(memoryDump, allocatorName, { size: size });
- });
-
- // Add ownership links between them.
- tr.b.iterItems(dumpData, function(allocatorName, data) {
- var owns = data.owns;
- if (owns === undefined)
- return;
-
- var ownerDump = allocatorDumps[allocatorName];
- assert.isDefined(ownerDump); // Sanity check.
- var ownedDump = allocatorDumps[owns];
- assert.isDefined(ownedDump); // Sanity check.
-
- addOwnershipLink(ownerDump, ownedDump);
- });
-
- return tr.b.dictionaryValues(allocatorDumps);
- }
-
- function addProcessMemoryDumpWithFields(globalMemoryDump, process, start,
- opt_pssValues, opt_dumpData) {
- var pmd = addProcessMemoryDump(globalMemoryDump, process, start);
- if (opt_pssValues !== undefined)
- pmd.vmRegions = createVMRegions(opt_pssValues);
- if (opt_dumpData !== undefined)
- pmd.memoryAllocatorDumps = createAllocatorDumps(pmd, opt_dumpData);
- }
-
- function createModelWithDumps(withVMRegions, withAllocatorDumps) {
- var maybePssValues = function(pssValues) {
- return withVMRegions ? pssValues : undefined;
- };
- var maybeDumpData = function(dumpData) {
- return withAllocatorDumps ? dumpData : undefined;
- };
- return tr.c.TestUtils.newModel(function(model) {
- // Construct a model with three processes.
- var pa = model.getOrCreateProcess(3);
- var pb = model.getOrCreateProcess(6);
- var pc = model.getOrCreateProcess(9);
-
- var gmd1 = addGlobalMemoryDump(model, 0, LIGHT);
- addProcessMemoryDumpWithFields(gmd1, pa, 0, maybePssValues([111]));
- addProcessMemoryDumpWithFields(gmd1, pb, 0.2, undefined,
- maybeDumpData({oilpan: {size: 1024}}));
-
- var gmd2 = addGlobalMemoryDump(model, 5, DETAILED);
- addProcessMemoryDumpWithFields(gmd2, pa, 0);
- addProcessMemoryDumpWithFields(gmd2, pb, 4.99, maybePssValues([100, 50]),
- maybeDumpData({v8: {size: 512}}));
- addProcessMemoryDumpWithFields(gmd2, pc, 5.12, undefined,
- maybeDumpData({oilpan: {size: 128, owns: 'v8'},
- v8: {size: 384, owns: 'tracing'}, tracing: {size: 65920}}));
-
- var gmd3 = addGlobalMemoryDump(model, 15, DETAILED);
- addProcessMemoryDumpWithFields(gmd3, pa, 15.5, maybePssValues([]),
- maybeDumpData({v8: {size: 768}}));
- addProcessMemoryDumpWithFields(gmd3, pc, 14.5,
- maybePssValues([70, 70, 70]), maybeDumpData({oilpan: {size: 512}}));
-
- var gmd4 = addGlobalMemoryDump(model, 18, LIGHT);
- });
- }
-
- function createTestGlobalMemoryDumps(withVMRegions, withAllocatorDumps) {
- var model = createModelWithDumps(withVMRegions, withAllocatorDumps);
- var dumps = model.globalMemoryDumps;
- dumps[1].selectionState = SelectionState.HIGHLIGHTED;
- dumps[2].selectionState = SelectionState.SELECTED;
- return dumps;
- }
-
- function createTestProcessMemoryDumps(withVMRegions, withAllocatorDumps) {
- var model = createModelWithDumps(withVMRegions, withAllocatorDumps);
- var dumps = model.getProcess(9).memoryDumps;
- dumps[0].selectionState = SelectionState.SELECTED;
- dumps[1].selectionState = SelectionState.HIGHLIGHTED;
- return dumps;
- }
-
- return {
- createTestGlobalMemoryDumps: createTestGlobalMemoryDumps,
- createTestProcessMemoryDumps: createTestProcessMemoryDumps
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/memory_dump_track_util.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/memory_dump_track_util.html
deleted file mode 100644
index 821186182b4..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/memory_dump_track_util.html
+++ /dev/null
@@ -1,262 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/model/container_memory_dump.html">
-<link rel="import" href="/tracing/model/memory_allocator_dump.html">
-<link rel="import" href="/tracing/ui/tracks/chart_axis.html">
-<link rel="import" href="/tracing/ui/tracks/chart_point.html">
-<link rel="import" href="/tracing/ui/tracks/chart_series.html">
-<link rel="import" href="/tracing/ui/tracks/chart_track.html">
-<link rel="import" href="/tracing/ui/tracks/container_track.html">
-<link rel="import" href="/tracing/ui/tracks/letter_dot_track.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
- var ColorScheme = tr.b.ColorScheme;
-
- var DISPLAYED_SIZE_NUMERIC_NAME =
- tr.model.MemoryAllocatorDump.DISPLAYED_SIZE_NUMERIC_NAME;
- var LIGHT = tr.model.ContainerMemoryDump.LevelOfDetail.LIGHT;
- var DETAILED = tr.model.ContainerMemoryDump.LevelOfDetail.DETAILED;
-
- /**
- * Add numeric values from a source dictionary to the numeric values in
- * a destination dictionary. Undefined values are treated as zeros. Note that
- * this method modifies the destination dictionary in place.
- *
- * Example: addDictionary({a: 1, b: 2}, {b: 3, c: 4}) will update the
- * destination dictionary (first argument) to {a: 1, b: 5, c: 4}.
- */
- function addDictionary(dstDict, srcDict) {
- tr.b.iterItems(srcDict, function(key, value) {
- var existingValue = dstDict[key];
- if (existingValue === undefined)
- existingValue = 0;
- dstDict[key] = existingValue + value;
- });
- }
-
- /**
- * Get a dictionary mapping root allocator names (e.g. 'v8') to the
- * corresponding sizes (e.g. 1024) in a process memory dump.
- */
- function getProcessMemoryDumpAllocatorSizes(processMemoryDump) {
- var allocatorDumps = processMemoryDump.memoryAllocatorDumps;
- if (allocatorDumps === undefined)
- return {};
- var allocatorSizes = {};
- allocatorDumps.forEach(function(allocatorDump) {
- // Don't show tracing overhead in the charts.
- // TODO(petrcermak): Find a less hacky way to do this.
- if (allocatorDump.fullName === 'tracing')
- return;
- var allocatorSize = allocatorDump.numerics[DISPLAYED_SIZE_NUMERIC_NAME];
- if (allocatorSize === undefined)
- return;
- var allocatorSizeValue = allocatorSize.value;
- if (allocatorSizeValue === undefined)
- return;
- allocatorSizes[allocatorDump.fullName] = allocatorSizeValue;
- });
- return allocatorSizes;
- };
-
- /**
- * Get a dictionary mapping root allocator names (e.g. 'v8') to the
- * corresponding sizes (e.g. 1024) in a global memory dump (i.e. summed over
- * all simultaneous process memory dumps).
- */
- function getGlobalMemoryDumpAllocatorSizes(globalMemoryDump) {
- var globalAllocatorSizes = {};
- tr.b.iterItems(globalMemoryDump.processMemoryDumps,
- function(pid, processMemoryDump) {
- addDictionary(globalAllocatorSizes,
- getProcessMemoryDumpAllocatorSizes(processMemoryDump));
- });
- return globalAllocatorSizes;
- }
-
- /**
- * A generic function which converts a list of memory dumps to a list of chart
- * series (one per root allocator). Each series represents the evolution of
- * the size of a the corresponding root allocator (e.g. 'v8') over time.
- */
- function buildAllocatedMemoryChartSeries(memoryDumps,
- memoryDumpToAllocatorSizesFn) {
- var allocatorNameToPoints = {};
- var dumpsData = memoryDumps.map(function(memoryDump) {
- var allocatorSizes = memoryDumpToAllocatorSizesFn(memoryDump);
- tr.b.iterItems(allocatorSizes, function(allocatorName) {
- allocatorNameToPoints[allocatorName] = [];
- });
- return {dump: memoryDump, sizes: allocatorSizes};
- });
-
- // Do not generate any chart series if no process memory dump contains any
- // allocator dumps.
- if (Object.keys(allocatorNameToPoints).length === 0)
- return undefined;
-
- dumpsData.forEach(function(dumpData) {
- var memoryDump = dumpData.dump;
- var allocatorSizes = dumpData.sizes;
- tr.b.iterItems(allocatorNameToPoints, function(allocatorName, points) {
- var allocatorSize = allocatorSizes[allocatorName] || 0;
- points.push(new tr.ui.tracks.ChartPoint(
- memoryDump, memoryDump.start, allocatorSize));
- });
- });
-
- // Create one common axis for all allocated memory chart series.
- var axis = new tr.ui.tracks.ChartAxis(0);
-
- // Build a chart series for each allocator.
- var series = [];
- tr.b.iterItems(allocatorNameToPoints, function(allocatorName, points) {
- var colorId = ColorScheme.getColorIdForGeneralPurposeString(
- allocatorName);
- var renderingConfig = {
- chartType: tr.ui.tracks.ChartSeriesType.LINE,
- colorId: colorId
- };
- series.push(new tr.ui.tracks.ChartSeries(points, axis, renderingConfig));
- });
-
- return series;
- }
-
- /**
- * Transform a list of memory dumps to a list of letter dots (with letter 'M'
- * inside).
- */
- function buildMemoryLetterDots(memoryDumps) {
- var lightMemoryColorId =
- ColorScheme.getColorIdForReservedName('light_memory_dump');
- var detailedMemoryColorId =
- ColorScheme.getColorIdForReservedName('detailed_memory_dump');
- return memoryDumps.map(function(memoryDump) {
- var memoryColorId;
- switch (memoryDump.levelOfDetail) {
- case DETAILED:
- memoryColorId = detailedMemoryColorId;
- break;
- case LIGHT:
- default:
- memoryColorId = lightMemoryColorId;
- }
- return new tr.ui.tracks.LetterDot(
- memoryDump, 'M', memoryColorId, memoryDump.start);
- });
- }
-
- /**
- * Convert a list of global memory dumps to a list of chart series (one per
- * process). Each series represents the evolution of the memory used by the
- * process over time.
- */
- function buildGlobalUsedMemoryChartSeries(globalMemoryDumps) {
- // Do not generate the chart if no process memory dump contains VM regions.
- var containsVmRegions = globalMemoryDumps.some(function(globalDump) {
- for (var pid in globalDump.processMemoryDumps)
- if (globalDump.processMemoryDumps[pid].mostRecentVmRegions)
- return true;
- return false;
- });
- if (!containsVmRegions)
- return undefined;
-
- // Find all processes that dump memory at least once.
- var pidToProcess = {};
- globalMemoryDumps.forEach(function(globalDump) {
- tr.b.iterItems(globalDump.processMemoryDumps, function(pid, processDump) {
- pidToProcess[pid] = processDump.process;
- });
- });
-
- // Build one list of points for each instrumented process.
- var pidToPoints = {};
- tr.b.iterItems(pidToProcess, function(pid, process) {
- pidToPoints[pid] = [];
- });
-
- // For every timestamp, calculate the total PSS (proportional set size) of
- // each process and append it to the corresponding list of points.
- globalMemoryDumps.forEach(function(globalDump) {
- var pssBase = 0;
- tr.b.iterItems(pidToPoints, function(pid, points) {
- var processMemoryDump = globalDump.processMemoryDumps[pid];
- var cumulativePss = pssBase;
- // If no dump was found (probably dead) or it does not provide the
- // necessary information (namely most recent VM regions), assume zero.
- if (processMemoryDump !== undefined) {
- var vmRegions = processMemoryDump.mostRecentVmRegions;
- if (vmRegions !== undefined)
- cumulativePss += vmRegions.byteStats.proportionalResident || 0;
- }
- points.push(new tr.ui.tracks.ChartPoint(
- globalDump, globalDump.start, cumulativePss, pssBase));
- pssBase = cumulativePss;
- });
- });
-
- // Create one common axis for all used memory chart series.
- var axis = new tr.ui.tracks.ChartAxis(0);
-
- // Build a chart series for each instrumented process.
- var series = [];
- tr.b.iterItems(pidToPoints, function(pid, points) {
- var process = pidToProcess[pid];
- var colorId = ColorScheme.getColorIdForGeneralPurposeString(
- process.userFriendlyName);
- var renderingConfig = {
- chartType: tr.ui.tracks.ChartSeriesType.AREA,
- colorId: colorId,
- backgroundOpacity: 0.8
- };
- series.push(new tr.ui.tracks.ChartSeries(points, axis, renderingConfig));
- });
-
- // Show the first series (with the smallest cumulative value) at the top.
- series.reverse();
-
- return series;
- }
-
- /**
- * Convert a list of process memory dumps to a list of chart series (one per
- * root allocator). Each series represents the evolution of the size of a the
- * corresponding root allocator (e.g. 'v8') over time.
- */
- function buildProcessAllocatedMemoryChartSeries(processMemoryDumps) {
- return buildAllocatedMemoryChartSeries(processMemoryDumps,
- getProcessMemoryDumpAllocatorSizes);
- }
-
- /**
- * Convert a list of global memory dumps to a list of chart series (one per
- * root allocator). Each series represents the evolution of the size of a the
- * corresponding root allocator (e.g. 'v8') over time.
- */
- function buildGlobalAllocatedMemoryChartSeries(globalMemoryDumps) {
- return buildAllocatedMemoryChartSeries(globalMemoryDumps,
- getGlobalMemoryDumpAllocatorSizes);
- }
-
- return {
- buildMemoryLetterDots:
- buildMemoryLetterDots,
- buildGlobalUsedMemoryChartSeries:
- buildGlobalUsedMemoryChartSeries,
- buildProcessAllocatedMemoryChartSeries:
- buildProcessAllocatedMemoryChartSeries,
- buildGlobalAllocatedMemoryChartSeries:
- buildGlobalAllocatedMemoryChartSeries
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/memory_dump_track_util_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/memory_dump_track_util_test.html
deleted file mode 100644
index 58e46078245..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/memory_dump_track_util_test.html
+++ /dev/null
@@ -1,228 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/core/test_utils.html">
-<link rel="import" href="/tracing/model/selection_state.html">
-<link rel="import" href="/tracing/ui/tracks/memory_dump_track_test_utils.html">
-<link rel="import" href="/tracing/ui/tracks/memory_dump_track_util.html">
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
- var SelectionState = tr.model.SelectionState;
- var createTestGlobalMemoryDumps = tr.ui.tracks.createTestGlobalMemoryDumps;
- var createTestProcessMemoryDumps = tr.ui.tracks.createTestProcessMemoryDumps;
-
- test('buildMemoryLetterDots_withoutVMRegions', function() {
- var dumps = createTestGlobalMemoryDumps(false, false);
- var items = tr.ui.tracks.buildMemoryLetterDots(dumps);
-
- assert.lengthOf(items, 4);
- assert.equal(items[0].start, 0);
- assert.equal(items[1].start, 5);
- assert.equal(items[2].start, 15);
- assert.equal(items[3].start, 18);
-
- // Check model mapping.
- assert.equal(items[1].selectionState, SelectionState.HIGHLIGHTED);
- assert.isTrue(items[2].selected);
- assert.equal(items[3].modelItem, dumps[3]);
- });
-
- test('buildMemoryLetterDots_withVMRegions', function() {
- var dumps = createTestGlobalMemoryDumps(false, false);
- var items = tr.ui.tracks.buildMemoryLetterDots(dumps);
-
- assert.lengthOf(items, 4);
- assert.equal(items[0].start, 0);
- assert.equal(items[1].start, 5);
- assert.equal(items[2].start, 15);
- assert.equal(items[3].start, 18);
-
- // Check model mapping.
- assert.equal(items[1].selectionState, SelectionState.HIGHLIGHTED);
- assert.isTrue(items[2].selected);
- assert.equal(items[3].modelItem, dumps[3]);
- });
-
- test('buildGlobalUsedMemoryChartSeries_withoutVMRegions', function() {
- var dumps = createTestGlobalMemoryDumps(false, false);
- var series = tr.ui.tracks.buildGlobalUsedMemoryChartSeries(dumps);
-
- assert.isUndefined(series);
- });
-
- test('buildGlobalUsedMemoryChartSeries_withVMRegions', function() {
- var dumps = createTestGlobalMemoryDumps(true, false);
- var series = tr.ui.tracks.buildGlobalUsedMemoryChartSeries(dumps);
-
- assert.lengthOf(series, 3);
-
- var sa = series[2];
- var sb = series[1];
- var sc = series[0];
-
- assert.lengthOf(sa.points, 4);
- assert.lengthOf(sb.points, 4);
- assert.lengthOf(sc.points, 4);
-
- // Process A: VM regions defined -> sum their PSS values (111).
- // Process B: VM regions undefined and no previous value -> assume zero.
- // Process C: Memory dump not present -> assume process not alive (0).
- assert.equal(sa.points[0].x, 0);
- assert.equal(sb.points[0].x, 0);
- assert.equal(sc.points[0].x, 0);
- assert.equal(sa.points[0].y, 111);
- assert.equal(sb.points[0].y, 111);
- assert.equal(sc.points[0].y, 111);
- assert.equal(sa.points[0].yBase, 0);
- assert.equal(sb.points[0].yBase, 111);
- assert.equal(sc.points[0].yBase, 111);
-
- // Process A: VM regions undefined -> assume previous value (111).
- // Process B: VM regions defined -> sum their PSS values (555).
- // Process C: VM regions undefined -> assume previous value (0).
- assert.equal(sa.points[1].x, 5);
- assert.equal(sb.points[1].x, 5);
- assert.equal(sc.points[1].x, 5);
- assert.equal(sa.points[1].y, 111);
- assert.equal(sb.points[1].y, 261);
- assert.equal(sc.points[1].y, 261);
- assert.equal(sa.points[1].yBase, 0);
- assert.equal(sb.points[1].yBase, 111);
- assert.equal(sc.points[1].yBase, 261);
-
- // Process A: VM regions defined -> sum their PSS values (0).
- // Process B: Memory dump not present -> assume process not alive (0).
- // Process C: VM regions defined -> sum their PSS values (999).
- assert.equal(sa.points[2].x, 15);
- assert.equal(sb.points[2].x, 15);
- assert.equal(sc.points[2].x, 15);
- assert.equal(sa.points[2].y, 0);
- assert.equal(sb.points[2].y, 0);
- assert.equal(sc.points[2].y, 210);
- assert.equal(sa.points[2].yBase, 0);
- assert.equal(sb.points[2].yBase, 0);
- assert.equal(sc.points[2].yBase, 0);
-
- // All processes: Memory dump not present -> assume process not alive (0).
- assert.equal(sa.points[3].x, 18);
- assert.equal(sb.points[3].x, 18);
- assert.equal(sc.points[3].x, 18);
- assert.equal(sa.points[3].y, 0);
- assert.equal(sb.points[3].y, 0);
- assert.equal(sc.points[3].y, 0);
- assert.equal(sc.points[3].yBase, 0);
- assert.equal(sc.points[3].yBase, 0);
- assert.equal(sc.points[3].yBase, 0);
-
- // Check model mapping.
- assert.equal(sa.points[1].selectionState, SelectionState.HIGHLIGHTED);
- assert.isTrue(sb.points[2].selected);
- assert.equal(sc.points[3].modelItem, dumps[3]);
- });
-
- test('buildGlobalAllocatedMemoryChartSeries_withoutMemoryAllocatorDumps',
- function() {
- var dumps = createTestGlobalMemoryDumps(false, false);
- var series = tr.ui.tracks.buildGlobalAllocatedMemoryChartSeries(dumps);
-
- assert.isUndefined(series);
- });
-
- test('buildGlobalAllocatedMemoryChartSeries_withMemoryAllocatorDumps',
- function() {
- var dumps = createTestGlobalMemoryDumps(false, true);
- var series = tr.ui.tracks.buildGlobalAllocatedMemoryChartSeries(dumps);
-
- assert.lengthOf(series, 2);
-
- var so = series[0];
- var sv = series[1];
-
- assert.lengthOf(so.points, 4);
- assert.lengthOf(sv.points, 4);
-
- // Oilpan: Only process B dumps allocated objects size (1024).
- // V8: No process dumps allocated objects size (0).
- assert.equal(so.points[0].x, 0);
- assert.equal(sv.points[0].x, 0);
- assert.equal(so.points[0].y, 1024);
- assert.equal(sv.points[0].y, 0);
-
- // Oilpan: Process B did not provide a value and process C dumps (128).
- // V8: Processes B and C dump (512 + 256).
- assert.equal(so.points[1].x, 5);
- assert.equal(sv.points[1].x, 5);
- assert.equal(so.points[1].y, 128);
- assert.equal(sv.points[1].y, 768);
-
- // Oilpan: Process B assumed not alive and process C dumps (512)
- // V8: Process A dumps now, process B assumed not alive, process C did not
- // provide a value (768).
- assert.equal(so.points[2].x, 15);
- assert.equal(sv.points[2].x, 15);
- assert.equal(so.points[2].y, 512);
- assert.equal(sv.points[2].y, 768);
-
- // All processes: Memory dump not present -> assume process not alive (0).
- assert.equal(so.points[3].x, 18);
- assert.equal(sv.points[3].x, 18);
- assert.equal(so.points[3].y, 0);
- assert.equal(sv.points[3].y, 0);
-
- // Check model mapping.
- assert.equal(so.points[1].selectionState, SelectionState.HIGHLIGHTED);
- assert.isTrue(sv.points[2].selected);
- assert.equal(so.points[3].modelItem, dumps[3]);
- });
-
- test('buildProcessAllocatedMemoryChartSeries_withoutMemoryAllocatorDumps',
- function() {
- var dumps = createTestProcessMemoryDumps(false, false);
- var series = tr.ui.tracks.buildProcessAllocatedMemoryChartSeries(dumps);
-
- assert.isUndefined(series);
- });
-
- test('buildProcessAllocatedMemoryChartSeries_withMemoryAllocatorDumps',
- function() {
- var dumps = createTestProcessMemoryDumps(false, true);
- var series = tr.ui.tracks.buildProcessAllocatedMemoryChartSeries(dumps);
-
- // There should be only 2 series (because 'tracing' is not shown in the
- // charts).
- assert.lengthOf(series, 2);
-
- var so = series[0];
- var sv = series[1];
-
- assert.lengthOf(so.points, 2);
- assert.lengthOf(sv.points, 2);
-
- // Oilpan: Process dumps (128).
- // V8: Process dumps (256).
- assert.equal(so.points[0].x, 5.12);
- assert.equal(sv.points[0].x, 5.12);
- assert.equal(so.points[0].y, 128);
- assert.equal(sv.points[0].y, 256);
-
- // Oilpan: Process dumps (512).
- // V8: Process did not provide a value (0).
- assert.equal(so.points[1].x, 14.5);
- assert.equal(sv.points[1].x, 14.5);
- assert.equal(so.points[1].y, 512);
- assert.equal(sv.points[1].y, 0);
-
- // Check model mapping.
- assert.equal(so.points[1].selectionState, SelectionState.HIGHLIGHTED);
- assert.isTrue(sv.points[0].selected);
- assert.equal(so.points[1].modelItem, dumps[1]);
- });
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/model_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/model_track.html
deleted file mode 100644
index 29e8b94c85e..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/model_track.html
+++ /dev/null
@@ -1,432 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="import" href="/tracing/ui/base/draw_helpers.html">
-<link rel="import" href="/tracing/ui/base/ui.html">
-<link rel="import" href="/tracing/ui/tracks/alert_track.html">
-<link rel="import" href="/tracing/ui/tracks/container_track.html">
-<link rel="import" href="/tracing/ui/tracks/cpu_usage_track.html">
-<link rel="import" href="/tracing/ui/tracks/device_track.html">
-<link rel="import" href="/tracing/ui/tracks/global_memory_dump_track.html">
-<link rel="import" href="/tracing/ui/tracks/highlighter.html">
-<link rel="import" href="/tracing/ui/tracks/interaction_track.html">
-<link rel="import" href="/tracing/ui/tracks/kernel_track.html">
-<link rel="import" href="/tracing/ui/tracks/process_track.html">
-
-<style>
-.model-track {
- -webkit-box-flex: 1;
-}
-</style>
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
- var SelectionState = tr.model.SelectionState;
- var EventPresenter = tr.ui.b.EventPresenter;
-
- /**
- * Visualizes a Model by building ProcessTracks and CpuTracks.
- * @constructor
- */
- var ModelTrack = tr.ui.b.define('model-track', tr.ui.tracks.ContainerTrack);
-
-
- ModelTrack.prototype = {
-
- __proto__: tr.ui.tracks.ContainerTrack.prototype,
-
- decorate: function(viewport) {
- tr.ui.tracks.ContainerTrack.prototype.decorate.call(this, viewport);
- this.classList.add('model-track');
-
- var typeInfos = tr.ui.tracks.Highlighter.getAllRegisteredTypeInfos();
- this.highlighters_ = typeInfos.map(
- function(typeInfo) {
- return new typeInfo.constructor(viewport);
- });
-
- this.upperMode_ = false;
- this.annotationViews_ = [];
- },
-
- // upperMode is true if the track is being used on the ruler.
- get upperMode() {
- return this.upperMode_;
- },
-
- set upperMode(upperMode) {
- this.upperMode_ = upperMode;
- this.updateContents_();
- },
-
- detach: function() {
- tr.ui.tracks.ContainerTrack.prototype.detach.call(this);
- },
-
- get model() {
- return this.model_;
- },
-
- set model(model) {
- this.model_ = model;
- this.updateContents_();
-
- this.model_.addEventListener('annotationChange',
- this.updateAnnotations_.bind(this));
- },
-
- get hasVisibleContent() {
- return this.children.length > 0;
- },
-
- updateContents_: function() {
- this.textContent = '';
- if (!this.model_)
- return;
-
- if (this.upperMode_)
- this.updateContentsForUpperMode_();
- else
- this.updateContentsForLowerMode_();
- },
-
- updateContentsForUpperMode_: function() {
- },
-
- updateContentsForLowerMode_: function() {
- if (this.model_.userModel.expectations.length) {
- var mrt = new tr.ui.tracks.InteractionTrack(this.viewport_);
- mrt.model = this.model_;
- this.appendChild(mrt);
- }
-
- if (this.model_.alerts.length) {
- var at = new tr.ui.tracks.AlertTrack(this.viewport_);
- at.alerts = this.model_.alerts;
- this.appendChild(at);
- }
-
- if (this.model_.globalMemoryDumps.length) {
- var gmdt = new tr.ui.tracks.GlobalMemoryDumpTrack(this.viewport_);
- gmdt.memoryDumps = this.model_.globalMemoryDumps;
- this.appendChild(gmdt);
- }
-
- this.appendDeviceTrack_();
- this.appendCpuUsageTrack_();
- this.appendKernelTrack_();
-
- // Get a sorted list of processes.
- var processes = this.model_.getAllProcesses();
- processes.sort(tr.model.Process.compare);
-
- for (var i = 0; i < processes.length; ++i) {
- var process = processes[i];
-
- var track = new tr.ui.tracks.ProcessTrack(this.viewport);
- track.process = process;
- if (!track.hasVisibleContent)
- continue;
-
- this.appendChild(track);
- }
- this.viewport_.rebuildEventToTrackMap();
- this.viewport_.rebuildContainerToTrackMap();
-
- for (var i = 0; i < this.highlighters_.length; i++) {
- this.highlighters_[i].processModel(this.model_);
- }
-
- this.updateAnnotations_();
- },
-
- updateAnnotations_: function() {
- this.annotationViews_ = [];
- var annotations = this.model_.getAllAnnotations();
- for (var i = 0; i < annotations.length; i++) {
- this.annotationViews_.push(
- annotations[i].getOrCreateView(this.viewport_));
- }
- this.invalidateDrawingContainer();
- },
-
- addEventsToTrackMap: function(eventToTrackMap) {
- if (!this.model_)
- return;
-
- var tracks = this.children;
- for (var i = 0; i < tracks.length; ++i)
- tracks[i].addEventsToTrackMap(eventToTrackMap);
-
- if (this.instantEvents === undefined)
- return;
-
- var vp = this.viewport_;
- this.instantEvents.forEach(function(ev) {
- eventToTrackMap.addEvent(ev, this);
- }.bind(this));
- },
-
- appendDeviceTrack_: function() {
- var device = this.model.device;
- var track = new tr.ui.tracks.DeviceTrack(this.viewport);
- track.device = this.model.device;
- if (!track.hasVisibleContent)
- return;
- this.appendChild(track);
- },
-
- appendKernelTrack_: function() {
- var kernel = this.model.kernel;
- var track = new tr.ui.tracks.KernelTrack(this.viewport);
- track.kernel = this.model.kernel;
- if (!track.hasVisibleContent)
- return;
- this.appendChild(track);
- },
-
- appendCpuUsageTrack_: function() {
- var track = new tr.ui.tracks.CpuUsageTrack(this.viewport);
- track.initialize(this.model);
- if (!track.hasVisibleContent)
- return;
- this.appendChild(track);
- },
-
- drawTrack: function(type) {
- var ctx = this.context();
- if (!this.model_)
- return;
-
- var pixelRatio = window.devicePixelRatio || 1;
- var bounds = this.getBoundingClientRect();
- var canvasBounds = ctx.canvas.getBoundingClientRect();
-
- ctx.save();
- ctx.translate(0, pixelRatio * (bounds.top - canvasBounds.top));
-
- var dt = this.viewport.currentDisplayTransform;
- var viewLWorld = dt.xViewToWorld(0);
- var viewRWorld = dt.xViewToWorld(bounds.width * pixelRatio);
-
- switch (type) {
- case tr.ui.tracks.DrawType.GRID:
- this.viewport.drawMajorMarkLines(ctx);
- // The model is the only thing that draws grid lines.
- ctx.restore();
- return;
-
- case tr.ui.tracks.DrawType.FLOW_ARROWS:
- if (this.model_.flowIntervalTree.size === 0) {
- ctx.restore();
- return;
- }
-
- this.drawFlowArrows_(viewLWorld, viewRWorld);
- ctx.restore();
- return;
-
- case tr.ui.tracks.DrawType.INSTANT_EVENT:
- if (!this.model_.instantEvents ||
- this.model_.instantEvents.length === 0)
- break;
-
- tr.ui.b.drawInstantSlicesAsLines(
- ctx,
- this.viewport.currentDisplayTransform,
- viewLWorld,
- viewRWorld,
- bounds.height,
- this.model_.instantEvents,
- 4);
-
- break;
-
- case tr.ui.tracks.DrawType.MARKERS:
- if (!this.viewport.interestRange.isEmpty) {
- this.viewport.interestRange.draw(ctx, viewLWorld, viewRWorld);
- this.viewport.interestRange.drawIndicators(
- ctx, viewLWorld, viewRWorld);
- }
- ctx.restore();
- return;
-
- case tr.ui.tracks.DrawType.HIGHLIGHTS:
- for (var i = 0; i < this.highlighters_.length; i++) {
- this.highlighters_[i].drawHighlight(ctx, dt, viewLWorld, viewRWorld,
- bounds.height);
- }
- ctx.restore();
- return;
-
- case tr.ui.tracks.DrawType.ANNOTATIONS:
- for (var i = 0; i < this.annotationViews_.length; i++) {
- this.annotationViews_[i].draw(ctx);
- }
- ctx.restore();
- return;
- }
- ctx.restore();
-
- tr.ui.tracks.ContainerTrack.prototype.drawTrack.call(this, type);
- },
-
- drawFlowArrows_: function(viewLWorld, viewRWorld) {
- var ctx = this.context();
- var dt = this.viewport.currentDisplayTransform;
- dt.applyTransformToCanvas(ctx);
-
- var pixWidth = dt.xViewVectorToWorld(1);
-
- ctx.strokeStyle = 'rgba(0, 0, 0, 0.4)';
- ctx.fillStyle = 'rgba(0, 0, 0, 0.4)';
- ctx.lineWidth = pixWidth > 1.0 ? 1 : pixWidth;
-
- var events =
- this.model_.flowIntervalTree.findIntersection(viewLWorld, viewRWorld);
-
- // When not showing flow events, show only highlighted/selected ones.
- var onlyHighlighted = !this.viewport.showFlowEvents;
- var canvasBounds = ctx.canvas.getBoundingClientRect();
- for (var i = 0; i < events.length; ++i) {
- if (onlyHighlighted &&
- events[i].selectionState !== SelectionState.SELECTED &&
- events[i].selectionState !== SelectionState.HIGHLIGHTED)
- continue;
- this.drawFlowArrow_(ctx, events[i], canvasBounds, pixWidth);
- }
- },
-
- drawFlowArrow_: function(ctx, flowEvent,
- canvasBounds, pixWidth) {
- var pixelRatio = window.devicePixelRatio || 1;
-
- var startTrack = this.viewport.trackForEvent(flowEvent.startSlice);
- var endTrack = this.viewport.trackForEvent(flowEvent.endSlice);
-
- // TODO(nduca): Figure out how to draw flow arrows even when
- // processes are collapsed, bug #931.
- if (startTrack === undefined || endTrack === undefined)
- return;
-
- var startBounds = startTrack.getBoundingClientRect();
- var endBounds = endTrack.getBoundingClientRect();
-
- if (flowEvent.selectionState == SelectionState.SELECTED) {
- ctx.shadowBlur = 1;
- ctx.shadowColor = 'red';
- ctx.shadowOffsety = 2;
- ctx.strokeStyle = 'red';
- } else if (flowEvent.selectionState == SelectionState.HIGHLIGHTED) {
- ctx.shadowBlur = 1;
- ctx.shadowColor = 'red';
- ctx.shadowOffsety = 2;
- ctx.strokeStyle = 'red';
- } else if (flowEvent.selectionState == SelectionState.DIMMED) {
- ctx.shadowBlur = 0;
- ctx.shadowOffsetX = 0;
- ctx.strokeStyle = 'rgba(0, 0, 0, 0.2)';
- } else {
- var hasBoost = false;
- var startSlice = flowEvent.startSlice;
- hasBoost |= startSlice.selectionState === SelectionState.SELECTED;
- hasBoost |= startSlice.selectionState === SelectionState.HIGHLIGHTED;
- var endSlice = flowEvent.endSlice;
- hasBoost |= endSlice.selectionState === SelectionState.SELECTED;
- hasBoost |= endSlice.selectionState === SelectionState.HIGHLIGHTED;
- if (hasBoost) {
- ctx.shadowBlur = 1;
- ctx.shadowColor = 'rgba(255, 0, 0, 0.4)';
- ctx.shadowOffsety = 2;
- ctx.strokeStyle = 'rgba(255, 0, 0, 0.4)';
- } else {
- ctx.shadowBlur = 0;
- ctx.shadowOffsetX = 0;
- ctx.strokeStyle = 'rgba(0, 0, 0, 0.4)';
- }
- }
-
- var startSize = startBounds.left + startBounds.top +
- startBounds.bottom + startBounds.right;
- var endSize = endBounds.left + endBounds.top +
- endBounds.bottom + endBounds.right;
- // Nothing to do if both ends of the track are collapsed.
- if (startSize === 0 && endSize === 0)
- return;
-
- var startY = this.calculateTrackY_(startTrack, canvasBounds);
- var endY = this.calculateTrackY_(endTrack, canvasBounds);
-
- var pixelStartY = pixelRatio * startY;
- var pixelEndY = pixelRatio * endY;
- var half = (flowEvent.end - flowEvent.start) / 2;
-
- ctx.beginPath();
- ctx.moveTo(flowEvent.start, pixelStartY);
- ctx.bezierCurveTo(
- flowEvent.start + half, pixelStartY,
- flowEvent.start + half, pixelEndY,
- flowEvent.end, pixelEndY);
- ctx.stroke();
-
- var arrowWidth = 5 * pixWidth * pixelRatio;
- var distance = flowEvent.end - flowEvent.start;
- if (distance <= (2 * arrowWidth))
- return;
-
- var tipX = flowEvent.end;
- var tipY = pixelEndY;
- var arrowHeight = (endBounds.height / 4) * pixelRatio;
- tr.ui.b.drawTriangle(ctx,
- tipX, tipY,
- tipX - arrowWidth, tipY - arrowHeight,
- tipX - arrowWidth, tipY + arrowHeight);
- ctx.fill();
- },
-
- calculateTrackY_: function(track, canvasBounds) {
- var bounds = track.getBoundingClientRect();
- var size = bounds.left + bounds.top + bounds.bottom + bounds.right;
- if (size === 0)
- return this.calculateTrackY_(track.parentNode, canvasBounds);
-
- return bounds.top - canvasBounds.top + (bounds.height / 2);
- },
-
- addIntersectingEventsInRangeToSelectionInWorldSpace: function(
- loWX, hiWX, viewPixWidthWorld, selection) {
- function onPickHit(instantEvent) {
- selection.push(instantEvent);
- }
- var instantEventWidth = 3 * viewPixWidthWorld;
- tr.b.iterateOverIntersectingIntervals(this.model_.instantEvents,
- function(x) { return x.start; },
- function(x) { return x.duration + instantEventWidth; },
- loWX, hiWX,
- onPickHit.bind(this));
-
- tr.ui.tracks.ContainerTrack.prototype.
- addIntersectingEventsInRangeToSelectionInWorldSpace.
- apply(this, arguments);
- },
-
- addClosestEventToSelection: function(worldX, worldMaxDist, loY, hiY,
- selection) {
- this.addClosestInstantEventToSelection(this.model_.instantEvents,
- worldX, worldMaxDist, selection);
- tr.ui.tracks.ContainerTrack.prototype.addClosestEventToSelection.
- apply(this, arguments);
- }
- };
-
- return {
- ModelTrack: ModelTrack
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/multi_row_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/multi_row_track.html
deleted file mode 100644
index 04637ef2d2a..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/multi_row_track.html
+++ /dev/null
@@ -1,218 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="import" href="/tracing/ui/tracks/container_track.html">
-<link rel="import" href="/tracing/base/sorted_array_utils.html">
-<link rel="import" href="/tracing/model/model_settings.html">
-<link rel="import" href="/tracing/ui/base/ui.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
- /**
- * A track that displays a group of objects in multiple rows.
- * @constructor
- * @extends {ContainerTrack}
- */
- var MultiRowTrack = tr.ui.b.define(
- 'multi-row-track', tr.ui.tracks.ContainerTrack);
-
- MultiRowTrack.prototype = {
-
- __proto__: tr.ui.tracks.ContainerTrack.prototype,
-
- decorate: function(viewport) {
- tr.ui.tracks.ContainerTrack.prototype.decorate.call(this, viewport);
- this.tooltip_ = '';
- this.heading_ = '';
-
- this.groupingSource_ = undefined;
- this.itemsToGroup_ = undefined;
-
- this.defaultToCollapsedWhenSubRowCountMoreThan = 1;
-
- this.itemsGroupedOnLastUpdateContents_ = undefined;
-
- this.currentSubRows_ = [];
- this.expanded_ = true;
- },
-
- get itemsToGroup() {
- return this.itemsToGroup_;
- },
-
- setItemsToGroup: function(itemsToGroup, opt_groupingSource) {
- this.itemsToGroup_ = itemsToGroup;
- this.groupingSource_ = opt_groupingSource;
- this.updateContents_();
- this.updateExpandedStateFromGroupingSource_();
- },
-
- get heading() {
- return this.heading_;
- },
-
- set heading(h) {
- this.heading_ = h;
- this.updateContents_();
- },
-
- get tooltip() {
- return this.tooltip_;
- },
-
- set tooltip(t) {
- this.tooltip_ = t;
- this.updateContents_();
- },
-
- get subRows() {
- return this.currentSubRows_;
- },
-
- get hasVisibleContent() {
- return this.children.length > 0;
- },
-
- get expanded() {
- return this.expanded_;
- },
-
- set expanded(expanded) {
- if (this.expanded_ == expanded)
- return;
- this.expanded_ = expanded;
- this.expandedStateChanged_();
- },
-
- onHeadingClicked_: function(e) {
- if (this.subRows.length <= 1)
- return;
- this.expanded = !this.expanded;
-
- if (this.groupingSource_) {
- var modelSettings = new tr.model.ModelSettings(
- this.groupingSource_.model);
- modelSettings.setSettingFor(this.groupingSource_, 'expanded',
- this.expanded);
- }
-
- e.stopPropagation();
- },
-
- updateExpandedStateFromGroupingSource_: function() {
- if (this.groupingSource_) {
- var numSubRows = this.subRows.length;
- var modelSettings = new tr.model.ModelSettings(
- this.groupingSource_.model);
- if (numSubRows > 1) {
- var defaultExpanded;
- if (numSubRows > this.defaultToCollapsedWhenSubRowCountMoreThan) {
- defaultExpanded = false;
- } else {
- defaultExpanded = true;
- }
- this.expanded = modelSettings.getSettingFor(
- this.groupingSource_, 'expanded', defaultExpanded);
- } else {
- this.expanded = undefined;
- }
- }
- },
-
- expandedStateChanged_: function() {
- var minH = Math.max(2, Math.ceil(18 / this.children.length));
- var h = (this.expanded_ ? 18 : minH) + 'px';
-
- for (var i = 0; i < this.children.length; i++) {
- this.children[i].height = h;
- if (i === 0)
- this.children[i].arrowVisible = true;
- this.children[i].expanded = this.expanded;
- }
-
- if (this.children.length === 1) {
- this.children[0].expanded = true;
- this.children[0].arrowVisible = false;
- }
- },
-
- updateContents_: function() {
- tr.ui.tracks.ContainerTrack.prototype.updateContents_.call(this);
- if (!this.itemsToGroup_) {
- this.updateHeadingAndTooltip_();
- this.currentSubRows_ = [];
- return;
- }
-
- if (this.areArrayContentsSame_(this.itemsGroupedOnLastUpdateContents_,
- this.itemsToGroup_)) {
- this.updateHeadingAndTooltip_();
- return;
- }
-
- this.itemsGroupedOnLastUpdateContents_ = this.itemsToGroup_;
-
- this.detach();
- if (!this.itemsToGroup_.length) {
- this.currentSubRows_ = [];
- return;
- }
- var subRows = this.buildSubRows_(this.itemsToGroup_);
- this.currentSubRows_ = subRows;
- for (var srI = 0; srI < subRows.length; srI++) {
- var subRow = subRows[srI];
- if (!subRow.length)
- continue;
- var track = this.addSubTrack_(subRow);
- track.addEventListener(
- 'heading-clicked', this.onHeadingClicked_.bind(this));
- }
- this.updateHeadingAndTooltip_();
- this.expandedStateChanged_();
- },
-
- updateHeadingAndTooltip_: function() {
- if (!this.firstChild)
- return;
- this.firstChild.heading = this.heading_;
- this.firstChild.tooltip = this.tooltip_;
- },
-
- /**
- * Breaks up the list of slices into N rows, each of which is a list of
- * slices that are non overlapping.
- */
- buildSubRows_: function(itemsToGroup) {
- throw new Error('Not implemented');
- },
-
- addSubTrack_: function(subRowItems) {
- throw new Error('Not implemented');
- },
-
- areArrayContentsSame_: function(a, b) {
- if (!a || !b)
- return false;
- if (!a.length || !b.length)
- return false;
- if (a.length != b.length)
- return false;
- for (var i = 0; i < a.length; ++i) {
- if (a[i] != b[i])
- return false;
- }
- return true;
- }
- };
-
- return {
- MultiRowTrack: MultiRowTrack
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/object_instance_group_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/object_instance_group_track.html
deleted file mode 100644
index 6bb39093015..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/object_instance_group_track.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="import" href="/tracing/ui/analysis/object_snapshot_view.html">
-<link rel="import" href="/tracing/ui/analysis/object_instance_view.html">
-<link rel="import" href="/tracing/ui/tracks/multi_row_track.html">
-<link rel="import" href="/tracing/ui/tracks/object_instance_track.html">
-<link rel="import" href="/tracing/base/sorted_array_utils.html">
-<link rel="import" href="/tracing/ui/base/ui.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
- /**
- * A track that displays a ObjectInstanceGroup.
- * @constructor
- * @extends {ContainerTrack}
- */
- var ObjectInstanceGroupTrack = tr.ui.b.define(
- 'object-instance-group-track', tr.ui.tracks.MultiRowTrack);
-
- ObjectInstanceGroupTrack.prototype = {
-
- __proto__: tr.ui.tracks.MultiRowTrack.prototype,
-
- decorate: function(viewport) {
- tr.ui.tracks.MultiRowTrack.prototype.decorate.call(this, viewport);
- this.classList.add('object-instance-group-track');
- this.objectInstances_ = undefined;
- },
-
- get objectInstances() {
- return this.itemsToGroup;
- },
-
- set objectInstances(objectInstances) {
- this.setItemsToGroup(objectInstances);
- },
-
- addSubTrack_: function(objectInstances) {
- var hasMultipleRows = this.subRows.length > 1;
- var track = new tr.ui.tracks.ObjectInstanceTrack(this.viewport);
- track.objectInstances = objectInstances;
- this.appendChild(track);
- return track;
- },
-
- buildSubRows_: function(objectInstances) {
- objectInstances.sort(function(x, y) {
- return x.creationTs - y.creationTs;
- });
-
- var subRows = [];
- for (var i = 0; i < objectInstances.length; i++) {
- var objectInstance = objectInstances[i];
-
- var found = false;
- for (var j = 0; j < subRows.length; j++) {
- var subRow = subRows[j];
- var lastItemInSubRow = subRow[subRow.length - 1];
- if (objectInstance.creationTs >= lastItemInSubRow.deletionTs) {
- found = true;
- subRow.push(objectInstance);
- break;
- }
- }
- if (!found) {
- var subRow = [objectInstance];
- subRows.push(subRow);
- }
- }
- return subRows;
- },
- updateHeadingAndTooltip_: function() {
- }
- };
-
- return {
- ObjectInstanceGroupTrack: ObjectInstanceGroupTrack
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/object_instance_track.css b/chromium/third_party/catapult/tracing/tracing/ui/tracks/object_instance_track.css
deleted file mode 100644
index 0919e85524e..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/object_instance_track.css
+++ /dev/null
@@ -1,8 +0,0 @@
-/* Copyright (c) 2012 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.
- */
-
-.object-instance-track {
- height: 18px;
-}
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/object_instance_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/object_instance_track.html
deleted file mode 100644
index 4b6d3cacf11..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/object_instance_track.html
+++ /dev/null
@@ -1,299 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="stylesheet" href="/tracing/ui/tracks/object_instance_track.css">
-
-<link rel="import" href="/tracing/base/extension_registry.html">
-<link rel="import" href="/tracing/base/sorted_array_utils.html">
-<link rel="import" href="/tracing/model/event.html">
-<link rel="import" href="/tracing/ui/base/event_presenter.html">
-<link rel="import" href="/tracing/ui/base/heading.html">
-<link rel="import" href="/tracing/ui/base/ui.html">
-<link rel="import" href="/tracing/ui/tracks/track.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
-
- var SelectionState = tr.model.SelectionState;
- var EventPresenter = tr.ui.b.EventPresenter;
-
- /**
- * A track that displays an array of Slice objects.
- * @constructor
- * @extends {Track}
- */
- var ObjectInstanceTrack = tr.ui.b.define(
- 'object-instance-track', tr.ui.tracks.Track);
-
- ObjectInstanceTrack.prototype = {
- __proto__: tr.ui.tracks.Track.prototype,
-
- decorate: function(viewport) {
- tr.ui.tracks.Track.prototype.decorate.call(this, viewport);
- this.classList.add('object-instance-track');
- this.objectInstances_ = [];
- this.objectSnapshots_ = [];
-
- this.heading_ = document.createElement('tr-ui-heading');
- this.appendChild(this.heading_);
- },
-
- set heading(heading) {
- this.heading_.heading = heading;
- },
-
- get heading() {
- return this.heading_.heading;
- },
-
- set tooltip(tooltip) {
- this.heading_.tooltip = tooltip;
- },
-
- get objectInstances() {
- return this.objectInstances_;
- },
-
- set objectInstances(objectInstances) {
- if (!objectInstances || objectInstances.length == 0) {
- this.heading = '';
- this.objectInstances_ = [];
- this.objectSnapshots_ = [];
- return;
- }
- this.heading = objectInstances[0].typeName;
- this.objectInstances_ = objectInstances;
- this.objectSnapshots_ = [];
- this.objectInstances_.forEach(function(instance) {
- this.objectSnapshots_.push.apply(
- this.objectSnapshots_, instance.snapshots);
- }, this);
- this.objectSnapshots_.sort(function(a, b) {
- return a.ts - b.ts;
- });
- },
-
- get height() {
- return window.getComputedStyle(this).height;
- },
-
- set height(height) {
- this.style.height = height;
- },
-
- get snapshotRadiusView() {
- return 7 * (window.devicePixelRatio || 1);
- },
-
- draw: function(type, viewLWorld, viewRWorld) {
- switch (type) {
- case tr.ui.tracks.DrawType.GENERAL_EVENT:
- this.drawLetterDots_(viewLWorld, viewRWorld);
- break;
- }
- },
-
- drawLetterDots_: function(viewLWorld, viewRWorld) {
- var ctx = this.context();
- var pixelRatio = window.devicePixelRatio || 1;
-
- var bounds = this.getBoundingClientRect();
- var height = bounds.height * pixelRatio;
- var halfHeight = height * 0.5;
- var twoPi = Math.PI * 2;
-
- // Culling parameters.
- var dt = this.viewport.currentDisplayTransform;
- var snapshotRadiusView = this.snapshotRadiusView;
- var snapshotRadiusWorld = dt.xViewVectorToWorld(height);
- var loI;
-
- // Begin rendering in world space.
- ctx.save();
- dt.applyTransformToCanvas(ctx);
-
- // Instances
- var objectInstances = this.objectInstances_;
- var loI = tr.b.findLowIndexInSortedArray(
- objectInstances,
- function(instance) {
- return instance.deletionTs;
- },
- viewLWorld);
- ctx.strokeStyle = 'rgb(0,0,0)';
- for (var i = loI; i < objectInstances.length; ++i) {
- var instance = objectInstances[i];
- var x = instance.creationTs;
- if (x > viewRWorld)
- break;
-
- var right = instance.deletionTs == Number.MAX_VALUE ?
- viewRWorld : instance.deletionTs;
- ctx.fillStyle = EventPresenter.getObjectInstanceColor(instance);
- ctx.fillRect(x, pixelRatio, right - x, height - 2 * pixelRatio);
- }
- ctx.restore();
-
- // Snapshots. Has to run in worldspace because ctx.arc gets transformed.
- var objectSnapshots = this.objectSnapshots_;
- loI = tr.b.findLowIndexInSortedArray(
- objectSnapshots,
- function(snapshot) {
- return snapshot.ts + snapshotRadiusWorld;
- },
- viewLWorld);
- for (var i = loI; i < objectSnapshots.length; ++i) {
- var snapshot = objectSnapshots[i];
- var x = snapshot.ts;
- if (x - snapshotRadiusWorld > viewRWorld)
- break;
- var xView = dt.xWorldToView(x);
-
- ctx.fillStyle = EventPresenter.getObjectSnapshotColor(snapshot);
- ctx.beginPath();
- ctx.arc(xView, halfHeight, snapshotRadiusView, 0, twoPi);
- ctx.fill();
- if (snapshot.selected) {
- ctx.lineWidth = 5;
- ctx.strokeStyle = 'rgb(100,100,0)';
- ctx.stroke();
-
- ctx.beginPath();
- ctx.arc(xView, halfHeight, snapshotRadiusView - 1, 0, twoPi);
- ctx.lineWidth = 2;
- ctx.strokeStyle = 'rgb(255,255,0)';
- ctx.stroke();
- } else {
- ctx.lineWidth = 1;
- ctx.strokeStyle = 'rgb(0,0,0)';
- ctx.stroke();
- }
- }
- ctx.lineWidth = 1;
-
- // For performance reasons we only check the SelectionState of the first
- // instance. If it's DIMMED we assume that all are DIMMED.
- // TODO(egraether): Allow partial highlight.
- var selectionState = SelectionState.NONE;
- if (objectInstances.length &&
- objectInstances[0].selectionState === SelectionState.DIMMED) {
- selectionState = SelectionState.DIMMED;
- }
-
- // Dim the track when there is an active highlight.
- if (selectionState === SelectionState.DIMMED) {
- var width = bounds.width * pixelRatio;
- ctx.fillStyle = 'rgba(255,255,255,0.5)';
- ctx.fillRect(0, 0, width, height);
- ctx.restore();
- }
- },
-
- addEventsToTrackMap: function(eventToTrackMap) {
- if (this.objectInstance_ !== undefined) {
- this.objectInstance_.forEach(function(obj) {
- eventToTrackMap.addEvent(obj, this);
- }, this);
- }
-
- if (this.objectSnapshots_ !== undefined) {
- this.objectSnapshots_.forEach(function(obj) {
- eventToTrackMap.addEvent(obj, this);
- }, this);
- }
- },
-
- addIntersectingEventsInRangeToSelectionInWorldSpace: function(
- loWX, hiWX, viewPixWidthWorld, selection) {
- // Pick snapshots first.
- var foundSnapshot = false;
- function onSnapshot(snapshot) {
- selection.push(snapshot);
- foundSnapshot = true;
- }
- var snapshotRadiusView = this.snapshotRadiusView;
- var snapshotRadiusWorld = viewPixWidthWorld * snapshotRadiusView;
- tr.b.iterateOverIntersectingIntervals(
- this.objectSnapshots_,
- function(x) { return x.ts - snapshotRadiusWorld; },
- function(x) { return 2 * snapshotRadiusWorld; },
- loWX, hiWX,
- onSnapshot);
- if (foundSnapshot)
- return;
-
- // Try picking instances.
- tr.b.iterateOverIntersectingIntervals(
- this.objectInstances_,
- function(x) { return x.creationTs; },
- function(x) { return x.deletionTs - x.creationTs; },
- loWX, hiWX,
- selection.push.bind(selection));
- },
-
- /**
- * Add the item to the left or right of the provided event, if any, to the
- * selection.
- * @param {event} The current event item.
- * @param {Number} offset Number of slices away from the event to look.
- * @param {Selection} selection The selection to add an event to,
- * if found.
- * @return {boolean} Whether an event was found.
- * @private
- */
- addEventNearToProvidedEventToSelection: function(event, offset, selection) {
- var events;
- if (event instanceof tr.model.ObjectSnapshot)
- events = this.objectSnapshots_;
- else if (event instanceof tr.model.ObjectInstance)
- events = this.objectInstances_;
- else
- throw new Error('Unrecognized event');
-
- var index = events.indexOf(event);
- var newIndex = index + offset;
- if (newIndex >= 0 && newIndex < events.length) {
- selection.push(events[newIndex]);
- return true;
- }
- return false;
- },
-
- addAllEventsMatchingFilterToSelection: function(filter, selection) {
- },
-
- addClosestEventToSelection: function(worldX, worldMaxDist, loY, hiY,
- selection) {
- var snapshot = tr.b.findClosestElementInSortedArray(
- this.objectSnapshots_,
- function(x) { return x.ts; },
- worldX,
- worldMaxDist);
-
- if (!snapshot)
- return;
-
- selection.push(snapshot);
-
- // TODO(egraether): Search for object instances as well, which was not
- // implemented because it makes little sense with the current visual and
- // needs to take care of overlapping intervals.
- }
- };
-
-
- var options = new tr.b.ExtensionRegistryOptions(
- tr.b.TYPE_BASED_REGISTRY_MODE);
- tr.b.decorateExtensionRegistry(ObjectInstanceTrack, options);
-
- return {
- ObjectInstanceTrack: ObjectInstanceTrack
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/object_instance_track_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/object_instance_track_test.html
deleted file mode 100644
index 1ba79b9db6c..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/object_instance_track_test.html
+++ /dev/null
@@ -1,111 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="import" href="/tracing/base/iteration_helpers.html">
-<link rel="import" href="/tracing/core/test_utils.html">
-<link rel="import" href="/tracing/model/event_set.html">
-<link rel="import" href="/tracing/model/object_collection.html">
-<link rel="import" href="/tracing/model/scoped_id.html">
-<link rel="import" href="/tracing/model/selection_state.html">
-<link rel="import" href="/tracing/ui/timeline_viewport.html">
-<link rel="import" href="/tracing/ui/tracks/drawing_container.html">
-<link rel="import" href="/tracing/ui/tracks/object_instance_track.html">
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
- var EventSet = tr.model.EventSet;
- var ObjectInstanceTrack = tr.ui.tracks.ObjectInstanceTrack;
- var Viewport = tr.ui.TimelineViewport;
-
- var createObjects = function() {
- var objects = new tr.model.ObjectCollection({});
- var scopedId1 = new tr.model.ScopedId('ptr', '0x1000');
- objects.idWasCreated(scopedId1, 'tr.e.cc', 'Frame', 10);
- objects.addSnapshot(scopedId1, 'tr.e.cc', 'Frame', 10, 'snapshot-1');
- objects.addSnapshot(scopedId1, 'tr.e.cc', 'Frame', 25, 'snapshot-2');
- objects.addSnapshot(scopedId1, 'tr.e.cc', 'Frame', 40, 'snapshot-3');
- objects.idWasDeleted(scopedId1, 'tr.e.cc', 'Frame', 45);
-
- var scopedId2 = new tr.model.ScopedId('ptr', '0x1001');
- objects.idWasCreated(scopedId2, 'skia', 'Picture', 20);
- objects.addSnapshot(scopedId2, 'skia', 'Picture', 20, 'snapshot-1');
- objects.idWasDeleted(scopedId2, 'skia', 'Picture', 25);
- return objects;
- };
-
- test('instantiate', function() {
- var objects = createObjects();
- var frames = objects.getAllInstancesByTypeName()['Frame'];
- frames[0].snapshots[1].selectionState =
- tr.model.SelectionState.SELECTED;
-
- var div = document.createElement('div');
-
- var viewport = new Viewport(div);
- var drawingContainer = new tr.ui.tracks.DrawingContainer(viewport);
- div.appendChild(drawingContainer);
-
- var track = ObjectInstanceTrack(viewport);
- drawingContainer.appendChild(track);
-
- this.addHTMLOutput(div);
- drawingContainer.invalidate();
-
- track.heading = 'testBasic';
- track.objectInstances = frames;
- var dt = new tr.ui.TimelineDisplayTransform();
- dt.xSetWorldBounds(0, 50, track.clientWidth);
- track.viewport.setDisplayTransformImmediately(dt);
- });
-
- test('selectionHitTestingWithThreadTrack', function() {
- var objects = createObjects();
- var frames = objects.getAllInstancesByTypeName()['Frame'];
-
- var track = ObjectInstanceTrack(new Viewport());
- track.objectInstances = frames;
-
- // Hit outside range
- var selection = new EventSet();
- track.addIntersectingEventsInRangeToSelectionInWorldSpace(
- 8, 8.1, 0.1, selection);
- assert.equal(selection.length, 0);
-
- // Hit the first snapshot, via pixel-nearness.
- selection = new EventSet();
- track.addIntersectingEventsInRangeToSelectionInWorldSpace(
- 9.98, 9.99, 0.1, selection);
- assert.equal(selection.length, 1);
- assert.instanceOf(tr.b.getOnlyElement(selection), tr.model.ObjectSnapshot);
-
- // Hit the instance, between the 1st and 2nd snapshots
- selection = new EventSet();
- track.addIntersectingEventsInRangeToSelectionInWorldSpace(
- 20, 20.1, 0.1, selection);
- assert.equal(selection.length, 1);
- assert.instanceOf(tr.b.getOnlyElement(selection), tr.model.ObjectInstance);
- });
-
- test('addEventNearToProvidedEventToSelection', function() {
- var objects = createObjects();
- var frames = objects.getAllInstancesByTypeName()['Frame'];
-
- var track = ObjectInstanceTrack(new Viewport());
- track.objectInstances = frames;
-
- var instance = new tr.model.ObjectInstance(
- {}, new tr.model.ScopedId('ptr', '0x1000'), 'cat', 'n', 10);
-
- assert.doesNotThrow(function() {
- track.addEventNearToProvidedEventToSelection(instance, 0, undefined);
- });
- });
-});
-</script>
-
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/power_series_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/power_series_track.html
deleted file mode 100644
index 5905882acff..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/power_series_track.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/base/color_scheme.html">
-<link rel="import" href="/tracing/ui/base/ui.html">
-<link rel="import" href="/tracing/ui/tracks/chart_axis.html">
-<link rel="import" href="/tracing/ui/tracks/chart_point.html">
-<link rel="import" href="/tracing/ui/tracks/chart_series.html">
-<link rel="import" href="/tracing/ui/tracks/chart_track.html">
-
-<style>
-.power-series-track {
- height: 90px;
-}
-</style>
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
-
- var ColorScheme = tr.b.ColorScheme;
- var ChartTrack = tr.ui.tracks.ChartTrack;
-
- /**
- * A track that displays a PowerSeries.
- *
- * @constructor
- * @extends {ChartTrack}
- */
- var PowerSeriesTrack = tr.ui.b.define('power-series-track', ChartTrack);
-
- PowerSeriesTrack.prototype = {
- __proto__: ChartTrack.prototype,
-
- decorate: function(viewport) {
- ChartTrack.prototype.decorate.call(this, viewport);
- this.classList.add('power-series-track');
- this.heading = 'Power';
- this.powerSeries_ = undefined;
- },
-
- set powerSeries(powerSeries) {
- this.powerSeries_ = powerSeries;
-
- this.series = this.buildChartSeries_();
- this.autoSetAllAxes({expandMax: true});
- },
-
- get hasVisibleContent() {
- return (this.powerSeries_ && this.powerSeries_.samples.length > 0);
- },
-
- addContainersToTrackMap: function(containerToTrackMap) {
- containerToTrackMap.addContainer(this.powerSeries_, this);
- },
-
- buildChartSeries_: function() {
- if (!this.hasVisibleContent)
- return [];
-
- var axis = new tr.ui.tracks.ChartAxis(0, undefined);
- var pts = this.powerSeries_.samples.map(function(smpl) {
- return new tr.ui.tracks.ChartPoint(smpl, smpl.start, smpl.power);
- });
- var renderingConfig = {
- chartType: tr.ui.tracks.ChartSeriesType.AREA,
- colorId: ColorScheme.getColorIdForGeneralPurposeString(this.heading)
- };
-
- return [new tr.ui.tracks.ChartSeries(pts, axis, renderingConfig)];
- }
- };
-
- return {
- PowerSeriesTrack: PowerSeriesTrack
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/power_series_track_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/power_series_track_test.html
deleted file mode 100644
index 29997361918..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/power_series_track_test.html
+++ /dev/null
@@ -1,122 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel='import' href='/tracing/model/device.html'>
-<link rel='import' href='/tracing/model/model.html'>
-<link rel='import' href='/tracing/model/power_series.html'>
-<link rel='import' href='/tracing/ui/base/constants.html'>
-<link rel='import' href='/tracing/ui/timeline_viewport.html'>
-<link rel='import' href='/tracing/ui/tracks/container_to_track_map.html'>
-<link rel='import' href='/tracing/ui/tracks/drawing_container.html'>
-<link rel="import" href="/tracing/ui/tracks/power_series_track.html">
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
-
- var Device = tr.model.Device;
- var Model = tr.Model;
- var PowerSeries = tr.model.PowerSeries;
- var PowerSeriesTrack = tr.ui.tracks.PowerSeriesTrack;
-
- var createDrawingContainer = function(series) {
- var div = document.createElement('div');
- var viewport = new tr.ui.TimelineViewport(div);
- var drawingContainer = new tr.ui.tracks.DrawingContainer(viewport);
- div.appendChild(drawingContainer);
-
- if (series) {
- series.updateBounds();
- setDisplayTransformFromBounds(viewport, series.bounds);
- }
-
- return drawingContainer;
- };
-
- /**
- * Sets the mapping between the input range of timestamps and the output range
- * of horizontal pixels.
- */
- var setDisplayTransformFromBounds = function(viewport, bounds) {
- var dt = new tr.ui.TimelineDisplayTransform();
- var pixelRatio = window.devicePixelRatio || 1;
- var chartPixelWidth =
- (window.innerWidth - tr.ui.b.constants.HEADING_WIDTH) * pixelRatio;
- dt.xSetWorldBounds(bounds.min, bounds.max, chartPixelWidth);
- viewport.setDisplayTransformImmediately(dt);
- };
-
- test('instantiate', function() {
- var series = new PowerSeries(new Model().device);
- series.addPowerSample(0, 1);
- series.addPowerSample(0.5, 2);
- series.addPowerSample(1, 3);
- series.addPowerSample(1.5, 4);
-
- var drawingContainer = createDrawingContainer(series);
- var track = new PowerSeriesTrack(drawingContainer.viewport);
- track.powerSeries = series;
- drawingContainer.appendChild(track);
-
- this.addHTMLOutput(drawingContainer);
- });
-
- test('hasVisibleContent_trueWithPowerSamplesPresent', function() {
- var series = new PowerSeries(new Model().device);
- series.addPowerSample(0, 1);
- series.addPowerSample(0.5, 2);
- series.addPowerSample(1, 3);
- series.addPowerSample(1.5, 4);
-
- var div = document.createElement('div');
- var viewport = new tr.ui.TimelineViewport(div);
-
- var track = new PowerSeriesTrack(viewport);
- track.powerSeries = series;
-
- assert.isTrue(track.hasVisibleContent);
- });
-
- test('hasVisibleContent_falseWithUndefinedPowerSeries', function() {
- var div = document.createElement('div');
- var viewport = new tr.ui.TimelineViewport(div);
-
- var track = new PowerSeriesTrack(viewport);
- track.powerSeries = undefined;
-
- assert.notOk(track.hasVisibleContent);
- });
-
- test('hasVisibleContent_falseWithEmptyPowerSeries', function() {
- var div = document.createElement('div');
- var viewport = new tr.ui.TimelineViewport(div);
-
- var track = new PowerSeriesTrack(viewport);
- var series = new PowerSeries(new Model().device);
- track.powerSeries = series;
-
- assert.notOk(track.hasVisibleContent);
- });
-
- test('addContainersToTrackMap', function() {
- var div = document.createElement('div');
- var viewport = new tr.ui.TimelineViewport(div);
-
- var powerSeriesTrack = new PowerSeriesTrack(viewport);
- var series = new PowerSeries(new Model().device);
- powerSeriesTrack.powerSeries = series;
-
- var containerToTrackMap = new tr.ui.tracks.ContainerToTrackMap();
- powerSeriesTrack.addContainersToTrackMap(containerToTrackMap);
-
- assert.equal(
- containerToTrackMap.getTrackByStableId('Device.PowerSeries'),
- powerSeriesTrack);
- });
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/process_memory_dump_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/process_memory_dump_track.html
deleted file mode 100644
index c197bd9d010..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/process_memory_dump_track.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/ui/tracks/chart_track.html">
-<link rel="import" href="/tracing/ui/tracks/container_track.html">
-<link rel="import" href="/tracing/ui/tracks/memory_dump_track_util.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
-
- var ALLOCATED_MEMORY_TRACK_HEIGHT = 50;
-
- /**
- * A track that displays an array of ProcessMemoryDump objects.
- * @constructor
- * @extends {ContainerTrack}
- */
- var ProcessMemoryDumpTrack = tr.ui.b.define(
- 'process-memory-dump-track', tr.ui.tracks.ContainerTrack);
-
- ProcessMemoryDumpTrack.prototype = {
- __proto__: tr.ui.tracks.ContainerTrack.prototype,
-
- decorate: function(viewport) {
- tr.ui.tracks.ContainerTrack.prototype.decorate.call(this, viewport);
- this.memoryDumps_ = undefined;
- },
-
- get memoryDumps() {
- return this.memoryDumps_;
- },
-
- set memoryDumps(memoryDumps) {
- this.memoryDumps_ = memoryDumps;
- this.updateContents_();
- },
-
- updateContents_: function() {
- this.clearTracks_();
-
- // Show no tracks if there are no dumps.
- if (!this.memoryDumps_ || !this.memoryDumps_.length)
- return;
-
- this.appendAllocatedMemoryTrack_();
- },
-
- appendAllocatedMemoryTrack_: function() {
- var series = tr.ui.tracks.buildProcessAllocatedMemoryChartSeries(
- this.memoryDumps_);
- if (!series)
- return;
-
- var track = new tr.ui.tracks.ChartTrack(this.viewport);
- track.heading = 'Memory per component';
- track.height = ALLOCATED_MEMORY_TRACK_HEIGHT + 'px';
- track.series = series;
- track.autoSetAllAxes({expandMax: true});
- this.appendChild(track);
- }
- };
-
- return {
- ProcessMemoryDumpTrack: ProcessMemoryDumpTrack
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/process_memory_dump_track_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/process_memory_dump_track_test.html
deleted file mode 100644
index a4515d50403..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/process_memory_dump_track_test.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/core/test_utils.html">
-<link rel="import" href="/tracing/ui/timeline_viewport.html">
-<link rel="import" href="/tracing/ui/tracks/drawing_container.html">
-<link rel="import" href="/tracing/ui/tracks/process_memory_dump_track.html">
-<link rel="import" href="/tracing/ui/tracks/memory_dump_track_test_utils.html">
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
- var Viewport = tr.ui.TimelineViewport;
- var ProcessMemoryDumpTrack = tr.ui.tracks.ProcessMemoryDumpTrack;
- var createTestProcessMemoryDumps = tr.ui.tracks.createTestProcessMemoryDumps;
-
- function instantiateTrack(withVMRegions, withAllocatorDumps,
- expectedTrackCount) {
- var dumps = createTestProcessMemoryDumps(withVMRegions, withAllocatorDumps);
-
- var div = document.createElement('div');
- var viewport = new Viewport(div);
- var drawingContainer = new tr.ui.tracks.DrawingContainer(viewport);
- div.appendChild(drawingContainer);
-
- var track = new ProcessMemoryDumpTrack(viewport);
- drawingContainer.appendChild(track);
- drawingContainer.invalidate();
-
- track.memoryDumps = dumps;
-
- // TODO(petrcermak): Check that the div has indeed zero size.
- if (expectedTrackCount > 0)
- this.addHTMLOutput(div);
-
- var dt = new tr.ui.TimelineDisplayTransform();
- dt.xSetWorldBounds(0, 50, track.clientWidth);
- track.viewport.setDisplayTransformImmediately(dt);
-
- assert.lengthOf(track.tracks_, expectedTrackCount);
- };
-
- test('instantiate_withoutMemoryAllocatorDumps', function() {
- instantiateTrack.call(this, false, false, 0);
- });
- test('instantiate_withMemoryAllocatorDumps', function() {
- instantiateTrack.call(this, false, true, 1);
- });
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/process_summary_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/process_summary_track.html
deleted file mode 100644
index 4390766292d..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/process_summary_track.html
+++ /dev/null
@@ -1,130 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/base/color_scheme.html">
-<link rel="import" href="/tracing/ui/base/ui.html">
-<link rel="import" href="/tracing/ui/tracks/rect_track.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
- var ColorScheme = tr.b.ColorScheme;
-
- /**
- * Visualizes a Process's state using a series of rects to represent activity.
- * @constructor
- */
- var ProcessSummaryTrack = tr.ui.b.define('process-summary-track',
- tr.ui.tracks.RectTrack);
-
- ProcessSummaryTrack.buildRectsFromProcess = function(process) {
- if (!process)
- return [];
-
- var ops = [];
- // build list of start/end ops for each top level or important slice
- var pushOp = function(isStart, time, slice) {
- ops.push({
- isStart: isStart,
- time: time,
- slice: slice
- });
- };
- for (var tid in process.threads) {
- var sliceGroup = process.threads[tid].sliceGroup;
-
- sliceGroup.topLevelSlices.forEach(function(slice) {
- pushOp(true, slice.start, undefined);
- pushOp(false, slice.end, undefined);
- });
- sliceGroup.slices.forEach(function(slice) {
- if (slice.important) {
- pushOp(true, slice.start, slice);
- pushOp(false, slice.end, slice);
- }
- });
- }
- ops.sort(function(a, b) { return a.time - b.time; });
-
- var rects = [];
- /**
- * Build a row of rects which display one way for unimportant activity,
- * and during important slices, show up as those important slices.
- *
- * If an important slice starts in the middle of another,
- * just drop it on the floor.
- */
- var genericColorId = ColorScheme.getColorIdForReservedName('generic_work');
- var pushRect = function(start, end, slice) {
- rects.push(new tr.ui.tracks.Rect(
- slice, /* modelItem: show selection state of slice if present */
- slice ? slice.title : '', /* title */
- slice ? slice.colorId : genericColorId, /* colorId */
- start, /* start */
- end - start /* duration */));
- }
- var depth = 0;
- var currentSlice = undefined;
- var lastStart = undefined;
- ops.forEach(function(op) {
- depth += op.isStart ? 1 : -1;
-
- if (currentSlice) {
- // simply find end of current important slice
- if (!op.isStart && op.slice == currentSlice) {
- // important slice has ended
- pushRect(lastStart, op.time, currentSlice);
- lastStart = depth >= 1 ? op.time : undefined;
- currentSlice = undefined;
- }
- } else {
- if (op.isStart) {
- if (depth == 1) {
- lastStart = op.time;
- currentSlice = op.slice;
- } else if (op.slice) {
- // switch to slice
- if (op.time != lastStart) {
- pushRect(lastStart, op.time, undefined);
- lastStart = op.time;
- }
- currentSlice = op.slice;
- }
- } else {
- if (depth == 0) {
- pushRect(lastStart, op.time, undefined);
- lastStart = undefined;
- }
- }
- }
- });
- return rects;
- };
-
- ProcessSummaryTrack.prototype = {
- __proto__: tr.ui.tracks.RectTrack.prototype,
-
- decorate: function(viewport) {
- tr.ui.tracks.RectTrack.prototype.decorate.call(this, viewport);
- },
-
- get process() {
- return this.process_;
- },
-
- set process(process) {
- this.process_ = process;
- this.rects = ProcessSummaryTrack.buildRectsFromProcess(process);
- }
- };
-
- return {
- ProcessSummaryTrack: ProcessSummaryTrack
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/process_summary_track_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/process_summary_track_test.html
deleted file mode 100644
index 11a68527a2e..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/process_summary_track_test.html
+++ /dev/null
@@ -1,110 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2015 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.
--->
-
-<link rel="import" href="/tracing/core/test_utils.html">
-<link rel="import" href="/tracing/model/model.html">
-<link rel="import" href="/tracing/model/slice_group.html">
-<link rel="import" href="/tracing/ui/tracks/process_summary_track.html">
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
- var ProcessSummaryTrack = tr.ui.tracks.ProcessSummaryTrack;
-
- test('buildRectSimple', function() {
- var process;
- var model = tr.c.TestUtils.newModel(function(model) {
- process = model.getOrCreateProcess(1);
- // XXXX
- // XXXX
- var thread1 = process.getOrCreateThread(1);
- thread1.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx(
- {start: 1, duration: 4}));
- var thread2 = process.getOrCreateThread(2);
- thread2.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx(
- {start: 4, duration: 4}));
- });
-
- var rects = ProcessSummaryTrack.buildRectsFromProcess(process);
-
- assert.equal(rects.length, 1);
- var rect = rects[0];
- assert.closeTo(rect.start, 1, 1e-5);
- assert.closeTo(rect.end, 8, 1e-5);
- });
-
- test('buildRectComplex', function() {
- var process;
- var model = tr.c.TestUtils.newModel(function(model) {
- process = model.getOrCreateProcess(1);
- // XXXX X X XX
- // XXXX XXX X
- var thread1 = process.getOrCreateThread(1);
- thread1.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx(
- {start: 1, duration: 4}));
- thread1.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx(
- {start: 9, duration: 1}));
- thread1.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx(
- {start: 11, duration: 1}));
- thread1.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx(
- {start: 13, duration: 2}));
- var thread2 = process.getOrCreateThread(2);
- thread2.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx(
- {start: 4, duration: 4}));
- thread2.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx(
- {start: 9, duration: 3}));
- thread2.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx(
- {start: 16, duration: 1}));
- });
-
- var rects = ProcessSummaryTrack.buildRectsFromProcess(process);
-
- assert.equal(4, rects.length);
- assert.closeTo(rects[0].start, 1, 1e-5);
- assert.closeTo(rects[0].end, 8, 1e-5);
- assert.closeTo(rects[1].start, 9, 1e-5);
- assert.closeTo(rects[1].end, 12, 1e-5);
- assert.closeTo(rects[2].start, 13, 1e-5);
- assert.closeTo(rects[2].end, 15, 1e-5);
- assert.closeTo(rects[3].start, 16, 1e-5);
- assert.closeTo(rects[3].end, 17, 1e-5);
- });
-
- test('buildRectImportantSlice', function() {
- var process;
- var model = tr.c.TestUtils.newModel(function(model) {
- // [ unimportant ]
- // [important]
- var a = tr.c.TestUtils.newSliceEx(
- {title: 'unimportant', start: 4, duration: 21});
- var b = tr.c.TestUtils.newSliceEx(
- {title: 'important', start: 9, duration: 11});
- b.important = true;
- process = model.getOrCreateProcess(1);
- process.getOrCreateThread(1).sliceGroup.pushSlices([a, b]);
-
- model.importantSlice = b;
- });
-
- var rects = ProcessSummaryTrack.buildRectsFromProcess(process);
-
- assert.equal(3, rects.length);
- assert.closeTo(rects[0].start, 4, 1e-5);
- assert.closeTo(rects[0].end, 9, 1e-5);
- assert.closeTo(rects[1].start, 9, 1e-5);
- assert.closeTo(rects[1].end, 20, 1e-5);
- assert.closeTo(rects[2].start, 20, 1e-5);
- assert.closeTo(rects[2].end, 25, 1e-5);
-
- // middle rect represents important slice, so colorId & title are preserved
- assert.equal(rects[1].title, model.importantSlice.title);
- assert.equal(rects[1].colorId, model.importantSlice.colorId);
- });
-});
-</script>
-
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/process_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/process_track.html
deleted file mode 100644
index 42451c042d9..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/process_track.html
+++ /dev/null
@@ -1,155 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="import" href="/tracing/ui/tracks/process_memory_dump_track.html">
-<link rel="import" href="/tracing/ui/tracks/process_track_base.html">
-<link rel="import" href="/tracing/ui/base/draw_helpers.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
- var ProcessTrackBase = tr.ui.tracks.ProcessTrackBase;
-
- /**
- * @constructor
- */
- var ProcessTrack = tr.ui.b.define('process-track', ProcessTrackBase);
-
- ProcessTrack.prototype = {
- __proto__: ProcessTrackBase.prototype,
-
- decorate: function(viewport) {
- tr.ui.tracks.ProcessTrackBase.prototype.decorate.call(this, viewport);
- },
-
- drawTrack: function(type) {
- switch (type) {
- case tr.ui.tracks.DrawType.INSTANT_EVENT:
- if (!this.processBase.instantEvents ||
- this.processBase.instantEvents.length === 0)
- break;
-
- var ctx = this.context();
-
- var pixelRatio = window.devicePixelRatio || 1;
- var bounds = this.getBoundingClientRect();
- var canvasBounds = ctx.canvas.getBoundingClientRect();
-
- ctx.save();
- ctx.translate(0, pixelRatio * (bounds.top - canvasBounds.top));
-
- var dt = this.viewport.currentDisplayTransform;
- var viewLWorld = dt.xViewToWorld(0);
- var viewRWorld = dt.xViewToWorld(
- bounds.width * pixelRatio);
-
- tr.ui.b.drawInstantSlicesAsLines(
- ctx,
- this.viewport.currentDisplayTransform,
- viewLWorld,
- viewRWorld,
- bounds.height,
- this.processBase.instantEvents,
- 2);
-
- ctx.restore();
-
- break;
-
- case tr.ui.tracks.DrawType.BACKGROUND:
- this.drawBackground_();
- // Don't bother recursing further, Process is the only level that
- // draws backgrounds.
- return;
- }
-
- tr.ui.tracks.ContainerTrack.prototype.drawTrack.call(this, type);
- },
-
- drawBackground_: function() {
- var ctx = this.context();
- var canvasBounds = ctx.canvas.getBoundingClientRect();
- var pixelRatio = window.devicePixelRatio || 1;
-
- var draw = false;
- ctx.fillStyle = '#eee';
- for (var i = 0; i < this.children.length; ++i) {
- if (!(this.children[i] instanceof tr.ui.tracks.Track) ||
- (this.children[i] instanceof tr.ui.tracks.SpacingTrack))
- continue;
-
- draw = !draw;
- if (!draw)
- continue;
-
- var bounds = this.children[i].getBoundingClientRect();
- ctx.fillRect(0, pixelRatio * (bounds.top - canvasBounds.top),
- ctx.canvas.width, pixelRatio * bounds.height);
- }
- },
-
- // Process maps to processBase because we derive from ProcessTrackBase.
- set process(process) {
- this.processBase = process;
- },
-
- get process() {
- return this.processBase;
- },
-
- get eventContainer() {
- return this.process;
- },
-
- addContainersToTrackMap: function(containerToTrackMap) {
- tr.ui.tracks.ProcessTrackBase.prototype.addContainersToTrackMap.apply(
- this, arguments);
- containerToTrackMap.addContainer(this.process, this);
- },
-
- appendMemoryDumpTrack_: function() {
- var processMemoryDumps = this.process.memoryDumps;
- if (processMemoryDumps.length) {
- var pmdt = new tr.ui.tracks.ProcessMemoryDumpTrack(this.viewport_);
- pmdt.memoryDumps = processMemoryDumps;
- this.appendChild(pmdt);
- }
- },
-
- addIntersectingEventsInRangeToSelectionInWorldSpace: function(
- loWX, hiWX, viewPixWidthWorld, selection) {
- function onPickHit(instantEvent) {
- selection.push(instantEvent);
- }
- var instantEventWidth = 2 * viewPixWidthWorld;
- tr.b.iterateOverIntersectingIntervals(this.processBase.instantEvents,
- function(x) { return x.start; },
- function(x) { return x.duration + instantEventWidth; },
- loWX, hiWX,
- onPickHit.bind(this));
-
- tr.ui.tracks.ContainerTrack.prototype.
- addIntersectingEventsInRangeToSelectionInWorldSpace.
- apply(this, arguments);
- },
-
- addClosestEventToSelection: function(worldX, worldMaxDist, loY, hiY,
- selection) {
- this.addClosestInstantEventToSelection(this.processBase.instantEvents,
- worldX, worldMaxDist, selection);
- tr.ui.tracks.ContainerTrack.prototype.addClosestEventToSelection.
- apply(this, arguments);
- }
- };
-
- return {
- ProcessTrack: ProcessTrack
- };
-});
-</script>
-
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/process_track_base.css b/chromium/third_party/catapult/tracing/tracing/ui/tracks/process_track_base.css
deleted file mode 100644
index 5f42096bbff..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/process_track_base.css
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright (c) 2013 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.
- */
-
-.process-track-header {
- -webkit-flex: 0 0 auto;
- background-image: -webkit-gradient(linear,
- 0 0, 100% 0,
- from(#E5E5E5),
- to(#D1D1D1));
- border-bottom: 1px solid #8e8e8e;
- border-top: 1px solid white;
- font-size: 75%;
-}
-
-.process-track-name:before {
- content: '\25B8'; /* Right triangle */
- padding: 0 5px;
-}
-
-.process-track-base.expanded .process-track-name:before {
- content: '\25BE'; /* Down triangle */
-}
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/process_track_base.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/process_track_base.html
deleted file mode 100644
index d96f1ce02cb..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/process_track_base.html
+++ /dev/null
@@ -1,273 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="stylesheet" href="/tracing/ui/tracks/process_track_base.css">
-
-<link rel="import" href="/tracing/core/filter.html">
-<link rel="import" href="/tracing/model/model_settings.html">
-<link rel="import" href="/tracing/ui/base/dom_helpers.html">
-<link rel="import" href="/tracing/ui/base/ui.html">
-<link rel="import" href="/tracing/ui/tracks/container_track.html">
-<link rel="import" href="/tracing/ui/tracks/counter_track.html">
-<link rel="import" href="/tracing/ui/tracks/frame_track.html">
-<link rel="import" href="/tracing/ui/tracks/object_instance_group_track.html">
-<link rel="import" href="/tracing/ui/tracks/process_summary_track.html">
-<link rel="import" href="/tracing/ui/tracks/spacing_track.html">
-<link rel="import" href="/tracing/ui/tracks/thread_track.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
-
- var ObjectSnapshotView = tr.ui.analysis.ObjectSnapshotView;
- var ObjectInstanceView = tr.ui.analysis.ObjectInstanceView;
- var SpacingTrack = tr.ui.tracks.SpacingTrack;
-
- /**
- * Visualizes a Process by building ThreadTracks and CounterTracks.
- * @constructor
- */
- var ProcessTrackBase =
- tr.ui.b.define('process-track-base', tr.ui.tracks.ContainerTrack);
-
- ProcessTrackBase.prototype = {
-
- __proto__: tr.ui.tracks.ContainerTrack.prototype,
-
- decorate: function(viewport) {
- tr.ui.tracks.ContainerTrack.prototype.decorate.call(this, viewport);
-
- this.processBase_ = undefined;
-
- this.classList.add('process-track-base');
- this.classList.add('expanded');
-
- this.processNameEl_ = tr.ui.b.createSpan();
- this.processNameEl_.classList.add('process-track-name');
-
- this.headerEl_ = tr.ui.b.createDiv({className: 'process-track-header'});
- this.headerEl_.appendChild(this.processNameEl_);
- this.headerEl_.addEventListener('click', this.onHeaderClick_.bind(this));
-
- this.appendChild(this.headerEl_);
- },
-
- get processBase() {
- return this.processBase_;
- },
-
- set processBase(processBase) {
- this.processBase_ = processBase;
-
- if (this.processBase_) {
- var modelSettings = new tr.model.ModelSettings(this.processBase_.model);
- var defaultValue = this.processBase_.important;
- this.expanded = modelSettings.getSettingFor(
- this.processBase_, 'expanded', defaultValue);
- }
-
- this.updateContents_();
- },
-
- get expanded() {
- return this.classList.contains('expanded');
- },
-
- set expanded(expanded) {
- expanded = !!expanded;
-
- if (this.expanded === expanded)
- return;
-
- this.classList.toggle('expanded');
-
- // Expanding and collapsing tracks is, essentially, growing and shrinking
- // the viewport. We dispatch a change event to trigger any processing
- // to happen.
- this.viewport_.dispatchChangeEvent();
-
- if (!this.processBase_)
- return;
-
- var modelSettings = new tr.model.ModelSettings(this.processBase_.model);
- modelSettings.setSettingFor(this.processBase_, 'expanded', expanded);
- this.updateContents_();
- this.viewport.rebuildEventToTrackMap();
- this.viewport.rebuildContainerToTrackMap();
- },
-
- get hasVisibleContent() {
- if (this.expanded)
- return this.children.length > 1;
- return true;
- },
-
- onHeaderClick_: function(e) {
- e.stopPropagation();
- e.preventDefault();
- this.expanded = !this.expanded;
- },
-
- updateContents_: function() {
- this.clearTracks_();
-
- if (!this.processBase_)
- return;
-
- this.processNameEl_.textContent = this.processBase_.userFriendlyName;
- this.headerEl_.title = this.processBase_.userFriendlyDetails;
-
- // Create the object instance tracks for this process.
- this.willAppendTracks_();
- if (this.expanded) {
- this.appendMemoryDumpTrack_();
- this.appendObjectInstanceTracks_();
- this.appendCounterTracks_();
- this.appendFrameTrack_();
- this.appendThreadTracks_();
- } else {
- this.appendSummaryTrack_();
- }
- this.didAppendTracks_();
- },
-
- addEventsToTrackMap: function(eventToTrackMap) {
- this.tracks_.forEach(function(track) {
- track.addEventsToTrackMap(eventToTrackMap);
- });
- },
-
- willAppendTracks_: function() {
- },
-
- didAppendTracks_: function() {
- },
-
- appendMemoryDumpTrack_: function() {
- },
-
- appendSummaryTrack_: function() {
- var track = new tr.ui.tracks.ProcessSummaryTrack(this.viewport);
- track.process = this.process;
- if (!track.hasVisibleContent)
- return;
- this.appendChild(track);
- // no spacing track, since this track only shown in collapsed state
- },
-
- appendFrameTrack_: function() {
- var frames = this.process ? this.process.frames : undefined;
- if (!frames || !frames.length)
- return;
-
- var track = new tr.ui.tracks.FrameTrack(this.viewport);
- track.frames = frames;
- this.appendChild(track);
- },
-
- appendObjectInstanceTracks_: function() {
- var instancesByTypeName =
- this.processBase_.objects.getAllInstancesByTypeName();
- var instanceTypeNames = tr.b.dictionaryKeys(instancesByTypeName);
- instanceTypeNames.sort();
-
- var didAppendAtLeastOneTrack = false;
- instanceTypeNames.forEach(function(typeName) {
- var allInstances = instancesByTypeName[typeName];
-
- // If a object snapshot has a view it will be shown,
- // unless the view asked for it to not be shown.
- var instanceViewInfo = ObjectInstanceView.getTypeInfo(
- undefined, typeName);
- var snapshotViewInfo = ObjectSnapshotView.getTypeInfo(
- undefined, typeName);
- if (instanceViewInfo && !instanceViewInfo.metadata.showInTrackView)
- instanceViewInfo = undefined;
- if (snapshotViewInfo && !snapshotViewInfo.metadata.showInTrackView)
- snapshotViewInfo = undefined;
- var hasViewInfo = instanceViewInfo || snapshotViewInfo;
-
- // There are some instances that don't merit their own track in
- // the UI. Filter them out.
- var visibleInstances = [];
- for (var i = 0; i < allInstances.length; i++) {
- var instance = allInstances[i];
-
- // Do not create tracks for instances that have no snapshots.
- if (instance.snapshots.length === 0)
- continue;
-
- // Do not create tracks for instances that have implicit snapshots
- // and don't have a view.
- if (instance.hasImplicitSnapshots && !hasViewInfo)
- continue;
-
- visibleInstances.push(instance);
- }
- if (visibleInstances.length === 0)
- return;
-
- // Look up the constructor for this track, or use the default
- // constructor if none exists.
- var trackConstructor =
- tr.ui.tracks.ObjectInstanceTrack.getConstructor(
- undefined, typeName);
- if (!trackConstructor) {
- var snapshotViewInfo = ObjectSnapshotView.getTypeInfo(
- undefined, typeName);
- if (snapshotViewInfo && snapshotViewInfo.metadata.showInstances) {
- trackConstructor = tr.ui.tracks.ObjectInstanceGroupTrack;
- } else {
- trackConstructor = tr.ui.tracks.ObjectInstanceTrack;
- }
- }
- var track = new trackConstructor(this.viewport);
- track.objectInstances = visibleInstances;
- this.appendChild(track);
- didAppendAtLeastOneTrack = true;
- }, this);
- if (didAppendAtLeastOneTrack)
- this.appendChild(new SpacingTrack(this.viewport));
- },
-
- appendCounterTracks_: function() {
- // Add counter tracks for this process.
- var counters = tr.b.dictionaryValues(this.processBase.counters);
- counters.sort(tr.model.Counter.compare);
-
- // Create the counters for this process.
- counters.forEach(function(counter) {
- var track = new tr.ui.tracks.CounterTrack(this.viewport);
- track.counter = counter;
- this.appendChild(track);
- this.appendChild(new SpacingTrack(this.viewport));
- }.bind(this));
- },
-
- appendThreadTracks_: function() {
- // Get a sorted list of threads.
- var threads = tr.b.dictionaryValues(this.processBase.threads);
- threads.sort(tr.model.Thread.compare);
-
- // Create the threads.
- threads.forEach(function(thread) {
- var track = new tr.ui.tracks.ThreadTrack(this.viewport);
- track.thread = thread;
- if (!track.hasVisibleContent)
- return;
- this.appendChild(track);
- this.appendChild(new SpacingTrack(this.viewport));
- }.bind(this));
- }
- };
-
- return {
- ProcessTrackBase: ProcessTrackBase
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/rect_track.css b/chromium/third_party/catapult/tracing/tracing/ui/tracks/rect_track.css
deleted file mode 100644
index 0467c91562c..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/rect_track.css
+++ /dev/null
@@ -1,8 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-
-.rect-track {
- height: 18px;
-}
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/rect_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/rect_track.html
deleted file mode 100644
index 70da91be408..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/rect_track.html
+++ /dev/null
@@ -1,251 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="stylesheet" href="/tracing/ui/tracks/rect_track.css">
-
-<link rel="import" href="/tracing/base/sorted_array_utils.html">
-<link rel="import" href="/tracing/model/proxy_selectable_item.html">
-<link rel="import" href="/tracing/ui/base/draw_helpers.html">
-<link rel="import" href="/tracing/ui/base/fast_rect_renderer.html">
-<link rel="import" href="/tracing/ui/base/heading.html">
-<link rel="import" href="/tracing/ui/base/ui.html">
-<link rel="import" href="/tracing/ui/tracks/track.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
-
- /**
- * A track that displays an array of Rect objects.
- * @constructor
- * @extends {Track}
- */
- var RectTrack = tr.ui.b.define(
- 'rect-track', tr.ui.tracks.Track);
-
- RectTrack.prototype = {
-
- __proto__: tr.ui.tracks.Track.prototype,
-
- decorate: function(viewport) {
- tr.ui.tracks.Track.prototype.decorate.call(this, viewport);
- this.classList.add('rect-track');
- this.asyncStyle_ = false;
- this.rects_ = null;
-
- this.heading_ = document.createElement('tr-ui-heading');
- this.appendChild(this.heading_);
- },
-
- set heading(heading) {
- this.heading_.heading = heading;
- },
-
- get heading() {
- return this.heading_.heading;
- },
-
- set tooltip(tooltip) {
- this.heading_.tooltip = tooltip;
- },
-
- set selectionGenerator(generator) {
- this.heading_.selectionGenerator = generator;
- },
-
- set expanded(expanded) {
- this.heading_.expanded = !!expanded;
- },
-
- set arrowVisible(arrowVisible) {
- this.heading_.arrowVisible = !!arrowVisible;
- },
-
- get expanded() {
- return this.heading_.expanded;
- },
-
- get asyncStyle() {
- return this.asyncStyle_;
- },
-
- set asyncStyle(v) {
- this.asyncStyle_ = !!v;
- },
-
- get rects() {
- return this.rects_;
- },
-
- set rects(rects) {
- this.rects_ = rects || [];
- this.invalidateDrawingContainer();
- },
-
- get height() {
- return window.getComputedStyle(this).height;
- },
-
- set height(height) {
- this.style.height = height;
- this.invalidateDrawingContainer();
- },
-
- get hasVisibleContent() {
- return this.rects_.length > 0;
- },
-
- draw: function(type, viewLWorld, viewRWorld) {
- switch (type) {
- case tr.ui.tracks.DrawType.GENERAL_EVENT:
- this.drawRects_(viewLWorld, viewRWorld);
- break;
- }
- },
-
- drawRects_: function(viewLWorld, viewRWorld) {
- var ctx = this.context();
-
- ctx.save();
- var bounds = this.getBoundingClientRect();
- tr.ui.b.drawSlices(
- ctx,
- this.viewport.currentDisplayTransform,
- viewLWorld,
- viewRWorld,
- bounds.height,
- this.rects_,
- this.asyncStyle_);
- ctx.restore();
-
- if (bounds.height <= 6)
- return;
-
- var fontSize, yOffset;
- if (bounds.height < 15) {
- fontSize = 6;
- yOffset = 1.0;
- } else {
- fontSize = 10;
- yOffset = 2.5;
- }
- tr.ui.b.drawLabels(
- ctx,
- this.viewport.currentDisplayTransform,
- viewLWorld,
- viewRWorld,
- this.rects_,
- this.asyncStyle_,
- fontSize,
- yOffset);
- },
-
- addEventsToTrackMap: function(eventToTrackMap) {
- if (this.rects_ === undefined || this.rects_ === null)
- return;
-
- this.rects_.forEach(function(rect) {
- rect.addToTrackMap(eventToTrackMap, this);
- }, this);
- },
-
- addIntersectingEventsInRangeToSelectionInWorldSpace: function(
- loWX, hiWX, viewPixWidthWorld, selection) {
- function onRect(rect) {
- rect.addToSelection(selection);
- }
- onRect = onRect.bind(this);
- var instantEventWidth = 2 * viewPixWidthWorld;
- tr.b.iterateOverIntersectingIntervals(this.rects_,
- function(x) { return x.start; },
- function(x) { return x.duration == 0 ?
- x.duration + instantEventWidth :
- x.duration; },
- loWX, hiWX,
- onRect);
- },
-
- /**
- * Add the item to the left or right of the provided event, if any, to the
- * selection.
- * @param {rect} The current rect.
- * @param {Number} offset Number of rects away from the event to look.
- * @param {Selection} selection The selection to add an event to,
- * if found.
- * @return {boolean} Whether an event was found.
- * @private
- */
- addEventNearToProvidedEventToSelection: function(event, offset, selection) {
- var index = tr.b.findFirstIndexInArray(this.rects_, function(rect) {
- return rect.modelItem === event;
- });
- if (index === -1)
- return false;
-
- var newIndex = index + offset;
- if (newIndex < 0 || newIndex >= this.rects_.length)
- return false;
-
- this.rects_[newIndex].addToSelection(selection);
- return true;
- },
-
- addAllEventsMatchingFilterToSelection: function(filter, selection) {
- for (var i = 0; i < this.rects_.length; ++i) {
- // TODO(petrcermak): Rather than unpacking the proxy item here,
- // we should probably add an addToSelectionIfMatching(selection, filter)
- // method to SelectableItem (#900).
- var modelItem = this.rects_[i].modelItem;
- if (!modelItem)
- continue;
- if (filter.matchSlice(modelItem))
- selection.push(modelItem);
- }
- },
-
- addClosestEventToSelection: function(worldX, worldMaxDist, loY, hiY,
- selection) {
- var rect = tr.b.findClosestIntervalInSortedIntervals(
- this.rects_,
- function(x) { return x.start; },
- function(x) { return x.end; },
- worldX,
- worldMaxDist);
-
- if (!rect)
- return;
-
- rect.addToSelection(selection);
- }
- };
-
- /**
- * A filled rectangle with a title.
- *
- * @constructor
- * @extends {ProxySelectableItem}
- */
- function Rect(modelItem, title, colorId, start, duration) {
- tr.model.ProxySelectableItem.call(this, modelItem);
- this.title = title;
- this.colorId = colorId;
- this.start = start;
- this.duration = duration;
- this.end = start + duration;
- };
-
- Rect.prototype = {
- __proto__: tr.model.ProxySelectableItem.prototype
- };
-
- return {
- RectTrack: RectTrack,
- Rect: Rect
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/rect_track_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/rect_track_test.html
deleted file mode 100644
index 6dcb905a304..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/rect_track_test.html
+++ /dev/null
@@ -1,407 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="import" href="/tracing/core/test_utils.html">
-<link rel="import" href="/tracing/model/event_set.html">
-<link rel="import" href="/tracing/model/slice.html">
-<link rel="import" href="/tracing/ui/base/dom_helpers.html">
-<link rel="import" href="/tracing/ui/base/draw_helpers.html">
-<link rel="import" href="/tracing/ui/timeline_track_view.html">
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
- var EventSet = tr.model.EventSet;
- var RectTrack = tr.ui.tracks.RectTrack;
- var Rect = tr.ui.tracks.Rect;
- var Slice = tr.model.Slice;
- var Viewport = tr.ui.TimelineViewport;
-
- test('instantiate_withRects', function() {
- var div = document.createElement('div');
-
- var viewport = new Viewport(div);
- var drawingContainer = new tr.ui.tracks.DrawingContainer(viewport);
- div.appendChild(drawingContainer);
-
- var track = RectTrack(viewport);
- drawingContainer.appendChild(track);
-
- this.addHTMLOutput(div);
- drawingContainer.invalidate();
-
- track.heading = 'testBasicRects';
- track.rects = [
- new Rect(undefined, 'a', 0, 1, 1),
- new Rect(undefined, 'b', 1, 2.1, 4.8),
- new Rect(undefined, 'b', 1, 7, 0.5),
- new Rect(undefined, 'c', 2, 7.6, 0.4)
- ];
-
- var dt = new tr.ui.TimelineDisplayTransform();
- dt.xSetWorldBounds(0, 8.8, track.clientWidth);
- track.viewport.setDisplayTransformImmediately(dt);
- });
-
- test('instantiate_withSlices', function() {
- var div = document.createElement('div');
-
- var viewport = new Viewport(div);
- var drawingContainer = new tr.ui.tracks.DrawingContainer(viewport);
- div.appendChild(drawingContainer);
-
- var track = RectTrack(viewport);
- drawingContainer.appendChild(track);
-
- this.addHTMLOutput(div);
- drawingContainer.invalidate();
-
- track.heading = 'testBasicSlices';
- track.rects = [
- new Slice('', 'a', 0, 1, {}, 1),
- new Slice('', 'b', 1, 2.1, {}, 4.8),
- new Slice('', 'b', 1, 7, {}, 0.5),
- new Slice('', 'c', 2, 7.6, {}, 0.4)
- ];
-
- var dt = new tr.ui.TimelineDisplayTransform();
- dt.xSetWorldBounds(0, 8.8, track.clientWidth);
- track.viewport.setDisplayTransformImmediately(dt);
- });
-
- test('instantiate_shrinkingRectSize', function() {
- var div = document.createElement('div');
-
- var viewport = new Viewport(div);
- var drawingContainer = new tr.ui.tracks.DrawingContainer(viewport);
- div.appendChild(drawingContainer);
-
- var track = RectTrack(viewport);
- drawingContainer.appendChild(track);
-
- this.addHTMLOutput(div);
- drawingContainer.invalidate();
-
- track.heading = 'testShrinkingRectSizes';
- var x = 0;
- var widths = [10, 5, 4, 3, 2, 1, 0.5, 0.4, 0.3, 0.2, 0.1, 0.05];
- var slices = [];
- for (var i = 0; i < widths.length; i++) {
- var s = new Rect(undefined, 'a', 1, x, widths[i]);
- x += s.duration + 0.5;
- slices.push(s);
- }
- track.rects = slices;
- var dt = new tr.ui.TimelineDisplayTransform();
- dt.xSetWorldBounds(0, 1.1 * x, track.clientWidth);
- track.viewport.setDisplayTransformImmediately(dt);
- });
-
- test('instantiate_elide', function() {
- var optDicts = [{ trackName: 'elideOff', elide: false },
- { trackName: 'elideOn', elide: true }];
-
- var tooLongTitle = 'Unless eliding this SHOULD NOT BE DISPLAYED. ';
- var bigTitle = 'Very big title name that goes on longer ' +
- 'than you may expect';
-
- for (var dictIndex in optDicts) {
- var dict = optDicts[dictIndex];
-
- var div = document.createElement('div');
- div.appendChild(document.createTextNode(dict.trackName));
-
- var viewport = new Viewport(div);
- var drawingContainer = new tr.ui.tracks.DrawingContainer(viewport);
- div.appendChild(drawingContainer);
-
- var track = new RectTrack(viewport);
- drawingContainer.appendChild(track);
-
- this.addHTMLOutput(div);
- drawingContainer.invalidate();
-
- track.SHOULD_ELIDE_TEXT = dict.elide;
- track.heading = 'Visual: ' + dict.trackName;
- track.rects = [
- // title, colorId, start, args, opt_duration
- new Rect(undefined, 'a ' + tooLongTitle + bigTitle, 0, 1, 1),
- new Rect(undefined, bigTitle, 1, 2.1, 4.8),
- new Rect(undefined, 'cccc cccc cccc', 1, 7, 0.5),
- new Rect(undefined, 'd', 2, 7.6, 1.0)
- ];
- var dt = new tr.ui.TimelineDisplayTransform();
- dt.xSetWorldBounds(0, 9.5, track.clientWidth);
- track.viewport.setDisplayTransformImmediately(dt);
- }
- });
-
- test('findAllObjectsMatchingInRectTrack', function() {
- var track = new RectTrack(new tr.ui.TimelineViewport());
- track.rects = [
- new Slice('', 'a', 0, 1, {}, 1),
- new Slice('', 'b', 1, 2.1, {}, 4.8),
- new Slice('', 'b', 1, 7, {}, 0.5),
- new Slice('', 'c', 2, 7.6, {}, 0.4)
- ];
- var selection = new EventSet();
- track.addAllEventsMatchingFilterToSelection(
- new tr.c.TitleOrCategoryFilter('b'), selection);
-
- var predictedSelection = new EventSet(
- [track.rects[1].modelItem, track.rects[2].modelItem]);
- assert.isTrue(selection.equals(predictedSelection));
- });
-
- test('selectionHitTesting', function() {
- var testEl = document.createElement('div');
- testEl.appendChild(tr.ui.b.createScopedStyle('heading { width: 100px; }'));
- testEl.style.width = '600px';
-
- var viewport = new Viewport(testEl);
- var drawingContainer = new tr.ui.tracks.DrawingContainer(viewport);
- testEl.appendChild(drawingContainer);
-
- var track = new RectTrack(viewport);
- drawingContainer.appendChild(track);
- this.addHTMLOutput(testEl);
-
- drawingContainer.updateCanvasSizeIfNeeded_();
-
- track.heading = 'testSelectionHitTesting';
- track.rects = [
- new Slice('', 'a', 0, 1, {}, 1),
- new Slice('', 'b', 1, 5, {}, 4.8)
- ];
- var y = track.getBoundingClientRect().top + 5;
- var pixelRatio = window.devicePixelRatio || 1;
- var wW = 10;
- var vW = drawingContainer.canvas.getBoundingClientRect().width;
-
- var dt = new tr.ui.TimelineDisplayTransform();
- dt.xSetWorldBounds(0, wW, vW * pixelRatio);
- track.viewport.setDisplayTransformImmediately(dt);
-
- var selection = new EventSet();
- var x = (1.5 / wW) * vW;
- track.addIntersectingEventsInRangeToSelection(
- x, x + 1, y, y + 1, selection);
- assert.isTrue(selection.equals(new EventSet(track.rects[0].modelItem)));
-
- var selection = new EventSet();
- x = (2.1 / wW) * vW;
- track.addIntersectingEventsInRangeToSelection(
- x, x + 1, y, y + 1, selection);
- assert.equal(0, selection.length);
-
- var selection = new EventSet();
- x = (6.8 / wW) * vW;
- track.addIntersectingEventsInRangeToSelection(
- x, x + 1, y, y + 1, selection);
- assert.isTrue(selection.equals(new EventSet(track.rects[1].modelItem)));
-
- var selection = new EventSet();
- x = (9.9 / wW) * vW;
- track.addIntersectingEventsInRangeToSelection(
- x, x + 1, y, y + 1, selection);
- assert.equal(0, selection.length);
- });
-
- test('elide', function() {
- var testEl = document.createElement('div');
-
- var viewport = new Viewport(testEl);
- var drawingContainer = new tr.ui.tracks.DrawingContainer(viewport);
- testEl.appendChild(drawingContainer);
-
- var track = new RectTrack(viewport);
- drawingContainer.appendChild(track);
- this.addHTMLOutput(testEl);
-
- drawingContainer.updateCanvasSizeIfNeeded_();
-
- var bigtitle = 'Super duper long long title ' +
- 'holy moly when did you get so verbose?';
- var smalltitle = 'small';
- track.heading = 'testElide';
- track.rects = [
- // title, colorId, start, args, opt_duration
- new Slice('', bigtitle, 0, 1, {}, 1),
- new Slice('', smalltitle, 1, 2, {}, 1)
- ];
- var dt = new tr.ui.TimelineDisplayTransform();
- dt.xSetWorldBounds(0, 3.3, track.clientWidth);
- track.viewport.setDisplayTransformImmediately(dt);
-
- var stringWidthPair = undefined;
- var pixWidth = dt.xViewVectorToWorld(1);
-
- // Small titles on big slices are not elided.
- stringWidthPair =
- tr.ui.b.elidedTitleCache_.get(
- track.context(),
- pixWidth,
- smalltitle,
- tr.ui.b.elidedTitleCache_.labelWidth(
- track.context(),
- smalltitle),
- 1);
- assert.equal(smalltitle, stringWidthPair.string);
-
- // Keep shrinking the slice until eliding starts.
- var elidedWhenSmallEnough = false;
- for (var sliceLength = 1; sliceLength >= 0.00001; sliceLength /= 2.0) {
- stringWidthPair =
- tr.ui.b.elidedTitleCache_.get(
- track.context(),
- pixWidth,
- smalltitle,
- tr.ui.b.elidedTitleCache_.labelWidth(
- track.context(),
- smalltitle),
- sliceLength);
- if (stringWidthPair.string.length < smalltitle.length) {
- elidedWhenSmallEnough = true;
- break;
- }
- }
- assert.isTrue(elidedWhenSmallEnough);
-
- // Big titles are elided immediately.
- var superBigTitle = '';
- for (var x = 0; x < 10; x++) {
- superBigTitle += bigtitle;
- }
- stringWidthPair =
- tr.ui.b.elidedTitleCache_.get(
- track.context(),
- pixWidth,
- superBigTitle,
- tr.ui.b.elidedTitleCache_.labelWidth(
- track.context(),
- superBigTitle),
- 1);
- assert.isTrue(stringWidthPair.string.length < superBigTitle.length);
-
- // And elided text ends with ...
- var len = stringWidthPair.string.length;
- assert.equal('...', stringWidthPair.string.substring(len - 3, len));
- });
-
- test('rectTrackAddItemNearToProvidedEvent', function() {
- var track = new RectTrack(new tr.ui.TimelineViewport());
- track.rects = [
- new Slice('', 'a', 0, 1, {}, 1),
- new Slice('', 'b', 1, 2.1, {}, 4.8),
- new Slice('', 'b', 1, 7, {}, 0.5),
- new Slice('', 'c', 2, 7.6, {}, 0.4)
- ];
- var sel = new EventSet();
- track.addAllEventsMatchingFilterToSelection(
- new tr.c.TitleOrCategoryFilter('b'), sel);
- var ret;
-
- // Select to the right of B.
- var selRight = new EventSet();
- ret = track.addEventNearToProvidedEventToSelection(sel[0], 1, selRight);
- assert.isTrue(ret);
- assert.equal(track.rects[2].modelItem, selRight[0]);
-
- // Select to the right of the 2nd b.
- var selRight2 = new EventSet();
- ret = track.addEventNearToProvidedEventToSelection(sel[0], 2, selRight2);
- assert.isTrue(ret);
- assert.equal(track.rects[3].modelItem, selRight2[0]);
-
- // Select to 2 to the right of the 2nd b.
- var selRightOfRight = new EventSet();
- ret = track.addEventNearToProvidedEventToSelection(
- selRight[0], 1, selRightOfRight);
- assert.isTrue(ret);
- assert.equal(track.rects[3].modelItem, selRightOfRight[0]);
-
- // Select to the right of the rightmost slice.
- var selNone = new EventSet();
- ret = track.addEventNearToProvidedEventToSelection(
- selRightOfRight[0], 1, selNone);
- assert.isFalse(ret);
- assert.equal(0, selNone.length);
-
- // Select A and then select left.
- var sel = new EventSet();
- track.addAllEventsMatchingFilterToSelection(
- new tr.c.TitleOrCategoryFilter('a'), sel);
- var ret;
-
- selNone = new EventSet();
- ret = track.addEventNearToProvidedEventToSelection(sel[0], -1, selNone);
- assert.isFalse(ret);
- assert.equal(0, selNone.length);
- });
-
- test('rectTrackAddClosestEventToSelection', function() {
- var track = new RectTrack(new tr.ui.TimelineViewport());
- track.rects = [
- new Slice('', 'a', 0, 1, {}, 1),
- new Slice('', 'b', 1, 2.1, {}, 4.8),
- new Slice('', 'b', 1, 7, {}, 0.5),
- new Slice('', 'c', 2, 7.6, {}, 0.4)
- ];
-
- // Before with not range.
- var sel = new EventSet();
- track.addClosestEventToSelection(0, 0, 0, 0, sel);
- assert.equal(0, sel.length);
-
- // Before with negative range.
- var sel = new EventSet();
- track.addClosestEventToSelection(1.5, -10, 0, 0, sel);
- assert.equal(0, sel.length);
-
- // Before first slice.
- var sel = new EventSet();
- track.addClosestEventToSelection(0.5, 1, 0, 0, sel);
- assert.isTrue(sel.equals(new EventSet(track.rects[0].modelItem)));
-
- // Within first slice closer to start.
- var sel = new EventSet();
- track.addClosestEventToSelection(1.3, 1, 0, 0, sel);
- assert.isTrue(sel.equals(new EventSet(track.rects[0].modelItem)));
-
- // Between slices with good range.
- var sel = new EventSet();
- track.addClosestEventToSelection(2.08, 3, 0, 0, sel);
- assert.isTrue(sel.equals(new EventSet(track.rects[1].modelItem)));
-
- // Between slices with bad range.
- var sel = new EventSet();
- track.addClosestEventToSelection(2.05, 0.03, 0, 0, sel);
- assert.equal(0, sel.length);
-
- // Within slice closer to end.
- var sel = new EventSet();
- track.addClosestEventToSelection(6, 100, 0, 0, sel);
- assert.isTrue(sel.equals(new EventSet(track.rects[1].modelItem)));
-
- // Within slice with bad range.
- var sel = new EventSet();
- track.addClosestEventToSelection(1.8, 0.1, 0, 0, sel);
- assert.equal(0, sel.length);
-
- // After last slice with good range.
- var sel = new EventSet();
- track.addClosestEventToSelection(8.5, 1, 0, 0, sel);
- assert.isTrue(sel.equals(new EventSet(track.rects[3].modelItem)));
-
- // After last slice with bad range.
- var sel = new EventSet();
- track.addClosestEventToSelection(10, 1, 0, 0, sel);
- assert.equal(0, sel.length);
- });
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/ruler_track.css b/chromium/third_party/catapult/tracing/tracing/ui/tracks/ruler_track.css
deleted file mode 100644
index 67a04a987ae..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/ruler_track.css
+++ /dev/null
@@ -1,12 +0,0 @@
-/* Copyright (c) 2012 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.
- */
-
-.ruler-track {
- height: 12px;
-}
-
-.ruler-track.tall-mode {
- height: 30px;
-}
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/ruler_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/ruler_track.html
deleted file mode 100644
index 30ce44be39d..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/ruler_track.html
+++ /dev/null
@@ -1,374 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="stylesheet" href="/tracing/ui/tracks/ruler_track.css">
-
-<link rel="import" href="/tracing/ui/base/draw_helpers.html">
-<link rel="import" href="/tracing/ui/base/heading.html">
-<link rel="import" href="/tracing/ui/base/ui.html">
-<link rel="import" href="/tracing/ui/tracks/track.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
- /**
- * A track that displays the ruler.
- * @constructor
- * @extends {Track}
- */
- var RulerTrack = tr.ui.b.define('ruler-track', tr.ui.tracks.Track);
-
- var logOf10 = Math.log(10);
- function log10(x) {
- return Math.log(x) / logOf10;
- }
-
- RulerTrack.prototype = {
- __proto__: tr.ui.tracks.Track.prototype,
-
- decorate: function(viewport) {
- tr.ui.tracks.Track.prototype.decorate.call(this, viewport);
- this.classList.add('ruler-track');
- this.strings_secs_ = [];
- this.strings_msecs_ = [];
- this.strings_usecs_ = [];
- this.strings_nsecs_ = [];
-
- this.viewportChange_ = this.viewportChange_.bind(this);
- viewport.addEventListener('change', this.viewportChange_);
-
- var heading = document.createElement('tr-ui-heading');
- heading.arrowVisible = false;
- this.appendChild(heading);
- },
-
- detach: function() {
- tr.ui.tracks.Track.prototype.detach.call(this);
- this.viewport.removeEventListener('change',
- this.viewportChange_);
- },
-
- viewportChange_: function() {
- if (this.viewport.interestRange.isEmpty)
- this.classList.remove('tall-mode');
- else
- this.classList.add('tall-mode');
- },
-
- draw: function(type, viewLWorld, viewRWorld) {
- switch (type) {
- case tr.ui.tracks.DrawType.GRID:
- this.drawGrid_(viewLWorld, viewRWorld);
- break;
- case tr.ui.tracks.DrawType.MARKERS:
- if (!this.viewport.interestRange.isEmpty)
- this.viewport.interestRange.draw(this.context(),
- viewLWorld, viewRWorld);
- break;
- }
- },
-
- drawGrid_: function(viewLWorld, viewRWorld) {
- var ctx = this.context();
- var pixelRatio = window.devicePixelRatio || 1;
-
- var canvasBounds = ctx.canvas.getBoundingClientRect();
- var trackBounds = this.getBoundingClientRect();
- var width = canvasBounds.width * pixelRatio;
- var height = trackBounds.height * pixelRatio;
-
- var hasInterestRange = !this.viewport.interestRange.isEmpty;
-
- var rulerHeight = hasInterestRange ? (height * 2) / 5 : height;
-
- var vp = this.viewport;
- var dt = vp.currentDisplayTransform;
-
- var idealMajorMarkDistancePix = 150 * pixelRatio;
- var idealMajorMarkDistanceWorld =
- dt.xViewVectorToWorld(idealMajorMarkDistancePix);
-
- var majorMarkDistanceWorld;
-
- // The conservative guess is the nearest enclosing 0.1, 1, 10, 100, etc.
- var conservativeGuess =
- Math.pow(10, Math.ceil(log10(idealMajorMarkDistanceWorld)));
-
- // Once we have a conservative guess, consider things that evenly add up
- // to the conservative guess, e.g. 0.5, 0.2, 0.1 Pick the one that still
- // exceeds the ideal mark distance.
- var divisors = [10, 5, 2, 1];
- for (var i = 0; i < divisors.length; ++i) {
- var tightenedGuess = conservativeGuess / divisors[i];
- if (dt.xWorldVectorToView(tightenedGuess) < idealMajorMarkDistancePix)
- continue;
- majorMarkDistanceWorld = conservativeGuess / divisors[i - 1];
- break;
- }
-
- var unit;
- var unitDivisor;
- var tickLabels = undefined;
- if (majorMarkDistanceWorld < 0.0001) {
- unit = 'ns';
- unitDivisor = 0.000001;
- tickLabels = this.strings_nsecs_;
- } else if (majorMarkDistanceWorld < 0.1) {
- unit = 'us';
- unitDivisor = 0.001;
- tickLabels = this.strings_usecs_;
- } else if (majorMarkDistanceWorld < 100) {
- unit = 'ms';
- unitDivisor = 1;
- tickLabels = this.strings_msecs_;
- } else {
- unit = 's';
- unitDivisor = 1000;
- tickLabels = this.strings_secs_;
- }
-
- var numTicksPerMajor = 5;
- var minorMarkDistanceWorld = majorMarkDistanceWorld / numTicksPerMajor;
- var minorMarkDistancePx = dt.xWorldVectorToView(minorMarkDistanceWorld);
-
- var firstMajorMark =
- Math.floor(viewLWorld / majorMarkDistanceWorld) *
- majorMarkDistanceWorld;
-
- var minorTickH = Math.floor(rulerHeight * 0.25);
-
- ctx.save();
-
- var pixelRatio = window.devicePixelRatio || 1;
- ctx.lineWidth = Math.round(pixelRatio);
-
- // Apply subpixel translate to get crisp lines.
- // http://www.mobtowers.com/html5-canvas-crisp-lines-every-time/
- var crispLineCorrection = (ctx.lineWidth % 2) / 2;
- ctx.translate(crispLineCorrection, -crispLineCorrection);
-
- ctx.fillStyle = 'rgb(0, 0, 0)';
- ctx.strokeStyle = 'rgb(0, 0, 0)';
- ctx.textAlign = 'left';
- ctx.textBaseline = 'top';
-
- ctx.font = (9 * pixelRatio) + 'px sans-serif';
-
- vp.majorMarkPositions = [];
-
- // Each iteration of this loop draws one major mark
- // and numTicksPerMajor minor ticks.
- //
- // Rendering can't be done in world space because canvas transforms
- // affect line width. So, do the conversions manually.
- ctx.beginPath();
- for (var curX = firstMajorMark;
- curX < viewRWorld;
- curX += majorMarkDistanceWorld) {
-
- var curXView = Math.floor(dt.xWorldToView(curX));
-
- var unitValue = curX / unitDivisor;
- var roundedUnitValue = Math.round(unitValue * 100000) / 100000;
-
- if (!tickLabels[roundedUnitValue])
- tickLabels[roundedUnitValue] = roundedUnitValue + ' ' + unit;
- ctx.fillText(tickLabels[roundedUnitValue],
- curXView + (2 * pixelRatio), 0);
-
- vp.majorMarkPositions.push(curXView);
-
- // Major mark
- tr.ui.b.drawLine(ctx, curXView, 0, curXView, rulerHeight);
-
- // Minor marks
- for (var i = 1; i < numTicksPerMajor; ++i) {
- var xView = Math.floor(curXView + minorMarkDistancePx * i);
- tr.ui.b.drawLine(ctx,
- xView, rulerHeight - minorTickH,
- xView, rulerHeight);
- }
- }
-
- // Draw bottom bar.
- ctx.strokeStyle = 'rgb(0, 0, 0)';
- tr.ui.b.drawLine(ctx, 0, height, width, height);
- ctx.stroke();
-
- // Give distance between directly adjacent markers.
- if (!hasInterestRange)
- return;
-
- // Draw middle bar.
- tr.ui.b.drawLine(ctx, 0, rulerHeight, width, rulerHeight);
- ctx.stroke();
-
- // Distance Variables.
- var displayDistance;
- var displayTextColor = 'rgb(0,0,0)';
-
- // Arrow Variables.
- var arrowSpacing = 10 * pixelRatio;
- var arrowColor = 'rgb(128,121,121)';
- var arrowPosY = rulerHeight * 1.75;
- var arrowWidthView = 3 * pixelRatio;
- var arrowLengthView = 10 * pixelRatio;
- var spaceForArrowsView = 2 * (arrowWidthView + arrowSpacing);
-
- ctx.textBaseline = 'middle';
- ctx.font = (14 * pixelRatio) + 'px sans-serif';
- var textPosY = arrowPosY;
-
- var interestRange = vp.interestRange;
-
- // If the range is zero, draw it's min timestamp next to the line.
- if (interestRange.range === 0) {
- var markerWorld = interestRange.min;
- var markerView = dt.xWorldToView(markerWorld);
- var displayValue = markerWorld / unitDivisor;
- displayValue = Math.abs((Math.round(displayValue * 1000) / 1000));
-
- var textToDraw = displayValue + ' ' + unit;
- var textLeftView = markerView + 4 * pixelRatio;
- var textWidthView = ctx.measureText(textToDraw).width;
-
- // Put text to the left in case it gets cut off.
- if (textLeftView + textWidthView > width)
- textLeftView = markerView - 4 * pixelRatio - textWidthView;
-
- ctx.fillStyle = displayTextColor;
- ctx.fillText(textToDraw, textLeftView, textPosY);
- return;
- }
-
- var leftMarker = interestRange.min;
- var rightMarker = interestRange.max;
-
- var leftMarkerView = dt.xWorldToView(leftMarker);
- var rightMarkerView = dt.xWorldToView(rightMarker);
-
- var distanceBetweenMarkers = interestRange.range;
- var distanceBetweenMarkersView =
- dt.xWorldVectorToView(distanceBetweenMarkers);
- var positionInMiddleOfMarkersView =
- leftMarkerView + (distanceBetweenMarkersView / 2);
-
- // Determine units.
- if (distanceBetweenMarkers < 0.0001) {
- unit = 'ns';
- unitDivisor = 0.000001;
- } else if (distanceBetweenMarkers < 0.1) {
- unit = 'us';
- unitDivisor = 0.001;
- } else if (distanceBetweenMarkers < 100) {
- unit = 'ms';
- unitDivisor = 1;
- } else {
- unit = 's';
- unitDivisor = 1000;
- }
-
- // Calculate display value to print.
- displayDistance = distanceBetweenMarkers / unitDivisor;
- var roundedDisplayDistance =
- Math.abs((Math.round(displayDistance * 1000) / 1000));
- var textToDraw = roundedDisplayDistance + ' ' + unit;
- var textWidthView = ctx.measureText(textToDraw).width;
- var spaceForArrowsAndTextView =
- textWidthView + spaceForArrowsView + arrowSpacing;
-
- // Set text positions.
- var textLeftView = positionInMiddleOfMarkersView - textWidthView / 2;
- var textRightView = textLeftView + textWidthView;
-
- if (spaceForArrowsAndTextView > distanceBetweenMarkersView) {
- // Print the display distance text right of the 2 markers.
- textLeftView = rightMarkerView + 2 * arrowSpacing;
-
- // Put text to the left in case it gets cut off.
- if (textLeftView + textWidthView > width)
- textLeftView = leftMarkerView - 2 * arrowSpacing - textWidthView;
-
- ctx.fillStyle = displayTextColor;
- ctx.fillText(textToDraw, textLeftView, textPosY);
-
- // Draw the arrows pointing from outside in and a line in between.
- ctx.strokeStyle = arrowColor;
- ctx.beginPath();
- tr.ui.b.drawLine(ctx, leftMarkerView, arrowPosY, rightMarkerView,
- arrowPosY);
- ctx.stroke();
-
- ctx.fillStyle = arrowColor;
- tr.ui.b.drawArrow(ctx,
- leftMarkerView - 1.5 * arrowSpacing, arrowPosY,
- leftMarkerView, arrowPosY,
- arrowLengthView, arrowWidthView);
- tr.ui.b.drawArrow(ctx,
- rightMarkerView + 1.5 * arrowSpacing, arrowPosY,
- rightMarkerView, arrowPosY,
- arrowLengthView, arrowWidthView);
-
- } else if (spaceForArrowsView <= distanceBetweenMarkersView) {
- var leftArrowStart;
- var rightArrowStart;
- if (spaceForArrowsAndTextView <= distanceBetweenMarkersView) {
- // Print the display distance text.
- ctx.fillStyle = displayTextColor;
- ctx.fillText(textToDraw, textLeftView, textPosY);
-
- leftArrowStart = textLeftView - arrowSpacing;
- rightArrowStart = textRightView + arrowSpacing;
- } else {
- leftArrowStart = positionInMiddleOfMarkersView;
- rightArrowStart = positionInMiddleOfMarkersView;
- }
-
- // Draw the arrows pointing inside out.
- ctx.strokeStyle = arrowColor;
- ctx.fillStyle = arrowColor;
- tr.ui.b.drawArrow(ctx,
- leftArrowStart, arrowPosY,
- leftMarkerView, arrowPosY,
- arrowLengthView, arrowWidthView);
- tr.ui.b.drawArrow(ctx,
- rightArrowStart, arrowPosY,
- rightMarkerView, arrowPosY,
- arrowLengthView, arrowWidthView);
- }
-
- ctx.restore();
- },
-
- /**
- * Adds items intersecting the given range to a selection.
- * @param {number} loVX Lower X bound of the interval to search, in
- * viewspace.
- * @param {number} hiVX Upper X bound of the interval to search, in
- * viewspace.
- * @param {number} loVY Lower Y bound of the interval to search, in
- * viewspace.
- * @param {number} hiVY Upper Y bound of the interval to search, in
- * viewspace.
- * @param {Selection} selection Selection to which to add results.
- */
- addIntersectingEventsInRangeToSelection: function(
- loVX, hiVX, loY, hiY, selection) {
- // Does nothing. There's nothing interesting to pick on the ruler
- // track.
- },
-
- addAllEventsMatchingFilterToSelection: function(filter, selection) {
- }
- };
-
- return {
- RulerTrack: RulerTrack
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/ruler_track_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/ruler_track_test.html
deleted file mode 100644
index 3ca0d72fdf4..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/ruler_track_test.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="import" href="/tracing/core/test_utils.html">
-<link rel="import" href="/tracing/ui/timeline_viewport.html">
-<link rel="import" href="/tracing/ui/tracks/drawing_container.html">
-<link rel="import" href="/tracing/ui/tracks/ruler_track.html">
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
- test('instantiate', function() {
- var div = document.createElement('div');
-
- var viewport = new tr.ui.TimelineViewport(div);
- var drawingContainer = new tr.ui.tracks.DrawingContainer(viewport);
- div.appendChild(drawingContainer);
-
- var track = tr.ui.tracks.RulerTrack(viewport);
- drawingContainer.appendChild(track);
- this.addHTMLOutput(div);
-
- drawingContainer.invalidate();
-
- var dt = new tr.ui.TimelineDisplayTransform();
- dt.setPanAndScale(0, track.clientWidth / 1000);
- track.viewport.setDisplayTransformImmediately(dt);
- });
-});
-</script>
-
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/sample_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/sample_track.html
deleted file mode 100644
index 80010bbc2a3..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/sample_track.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="import" href="/tracing/ui/tracks/rect_track.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
- /**
- * A track that displays an array of Sample objects.
- * @constructor
- * @extends {RectTrack}
- */
- var SampleTrack = tr.ui.b.define(
- 'sample-track', tr.ui.tracks.RectTrack);
-
- SampleTrack.prototype = {
-
- __proto__: tr.ui.tracks.RectTrack.prototype,
-
- decorate: function(viewport) {
- tr.ui.tracks.RectTrack.prototype.decorate.call(this, viewport);
- },
-
- get samples() {
- return this.rects;
- },
-
- set samples(samples) {
- this.rects = samples;
- }
- };
-
- return {
- SampleTrack: SampleTrack
- };
-});
-</script>
-
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/sample_track_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/sample_track_test.html
deleted file mode 100644
index c5c7342af0e..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/sample_track_test.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="import" href="/tracing/model/event_set.html">
-<link rel="import" href="/tracing/model/sample.html">
-<link rel="import" href="/tracing/model/stack_frame.html">
-<link rel="import" href="/tracing/ui/timeline_track_view.html">
-<link rel="import" href="/tracing/ui/tracks/sample_track.html">
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
- var SampleTrack = tr.ui.tracks.SampleTrack;
- var Sample = tr.model.Sample;
- var StackFrame = tr.model.StackFrame;
-
- test('modelMapping', function() {
- var track = new SampleTrack(new tr.ui.TimelineViewport());
- var fA = new StackFrame(undefined, 1, 'cat', 'a', 7);
- var sample = new Sample(undefined, undefined, 'instructions_retired',
- 10, fA, 10);
- track.samples = [sample];
- var me0 = track.rects[0].modelItem;
- assert.equal(me0, sample);
- });
-});
-</script>
-
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/slice_group_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/slice_group_track.html
deleted file mode 100644
index 78ffd07cf00..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/slice_group_track.html
+++ /dev/null
@@ -1,168 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="import" href="/tracing/ui/tracks/multi_row_track.html">
-<link rel="import" href="/tracing/base/sorted_array_utils.html">
-<link rel="import" href="/tracing/ui/base/ui.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
- /**
- * A track that displays a SliceGroup.
- * @constructor
- * @extends {MultiRowTrack}
- */
- var SliceGroupTrack = tr.ui.b.define(
- 'slice-group-track', tr.ui.tracks.MultiRowTrack);
-
- SliceGroupTrack.prototype = {
-
- __proto__: tr.ui.tracks.MultiRowTrack.prototype,
-
- decorate: function(viewport) {
- tr.ui.tracks.MultiRowTrack.prototype.decorate.call(this, viewport);
- this.classList.add('slice-group-track');
- this.group_ = undefined;
- // Set the collapse threshold so we don't collapse by default, but the
- // user can explicitly collapse if they want it.
- this.defaultToCollapsedWhenSubRowCountMoreThan = 100;
- },
-
- addSubTrack_: function(slices) {
- var track = new tr.ui.tracks.SliceTrack(this.viewport);
- track.slices = slices;
- this.appendChild(track);
- return track;
- },
-
- get group() {
- return this.group_;
- },
-
- set group(group) {
- this.group_ = group;
- this.setItemsToGroup(this.group_.slices, this.group_);
- },
-
- get eventContainer() {
- return this.group;
- },
-
- addContainersToTrackMap: function(containerToTrackMap) {
- tr.ui.tracks.MultiRowTrack.prototype.addContainersToTrackMap.apply(
- this, arguments);
- containerToTrackMap.addContainer(this.group, this);
- },
-
- /**
- * Breaks up the list of slices into N rows, each of which is a list of
- * slices that are non overlapping.
- */
- buildSubRows_: function(slices) {
- var precisionUnit = this.group.model.intrinsicTimeUnit;
-
- // This function works by walking through slices by start time.
- //
- // The basic idea here is to insert each slice as deep into the subrow
- // list as it can go such that every subSlice is fully contained by its
- // parent slice.
- //
- // Visually, if we start with this:
- // 0: [ a ]
- // 1: [ b ]
- // 2: [c][d]
- //
- // To place this slice:
- // [e]
- // We first check row 2's last item, [d]. [e] wont fit into [d] (they dont
- // even intersect). So we go to row 1. That gives us [b], and [d] wont fit
- // into that either. So, we go to row 0 and its last slice, [a]. That can
- // completely contain [e], so that means we should add [e] as a subchild
- // of [a]. That puts it on row 1, yielding:
- // 0: [ a ]
- // 1: [ b ][e]
- // 2: [c][d]
- //
- // If we then get this slice:
- // [f]
- // We do the same deepest-to-shallowest walk of the subrows trying to fit
- // it. This time, it doesn't fit in any open slice. So, we simply append
- // it to row 0:
- // 0: [ a ] [f]
- // 1: [ b ][e]
- // 2: [c][d]
- if (!slices.length)
- return [];
-
- var ops = [];
- for (var i = 0; i < slices.length; i++) {
- if (slices[i].subSlices)
- slices[i].subSlices.splice(0,
- slices[i].subSlices.length);
- ops.push(i);
- }
-
- ops.sort(function(ix, iy) {
- var x = slices[ix];
- var y = slices[iy];
- if (x.start != y.start)
- return x.start - y.start;
-
- // Elements get inserted into the slices array in order of when the
- // slices start. Because slices must be properly nested, we break
- // start-time ties by assuming that the elements appearing earlier in
- // the slices array (and thus ending earlier) start earlier.
- return ix - iy;
- });
-
- var subRows = [[]];
- this.badSlices_ = []; // TODO(simonjam): Connect this again.
-
- for (var i = 0; i < ops.length; i++) {
- var op = ops[i];
- var slice = slices[op];
-
- // Try to fit the slice into the existing subrows.
- var inserted = false;
- for (var j = subRows.length - 1; j >= 0; j--) {
- if (subRows[j].length == 0)
- continue;
-
- var insertedSlice = subRows[j][subRows[j].length - 1];
- if (slice.start < insertedSlice.start) {
- this.badSlices_.push(slice);
- inserted = true;
- }
- if (insertedSlice.bounds(slice, precisionUnit)) {
- // Insert it into subRow j + 1.
- while (subRows.length <= j + 1)
- subRows.push([]);
- subRows[j + 1].push(slice);
- if (insertedSlice.subSlices)
- insertedSlice.subSlices.push(slice);
- inserted = true;
- break;
- }
- }
- if (inserted)
- continue;
-
- // Append it to subRow[0] as a root.
- subRows[0].push(slice);
- }
-
- return subRows;
- }
- };
-
- return {
- SliceGroupTrack: SliceGroupTrack
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/slice_group_track_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/slice_group_track_test.html
deleted file mode 100644
index 6e3ff9813c4..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/slice_group_track_test.html
+++ /dev/null
@@ -1,293 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="import" href="/tracing/core/test_utils.html">
-<link rel="import" href="/tracing/ui/timeline_track_view.html">
-<link rel="import" href="/tracing/model/slice_group.html">
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
- var ProcessTrack = tr.ui.tracks.ProcessTrack;
- var ThreadTrack = tr.ui.tracks.ThreadTrack;
- var SliceGroup = tr.model.SliceGroup;
- var SliceGroupTrack = tr.ui.tracks.SliceGroupTrack;
- var newSliceEx = tr.c.TestUtils.newSliceEx;
-
- test('subRowBuilderBasic', function() {
- var m = new tr.Model();
- var t1 = m.getOrCreateProcess(1).getOrCreateThread(2);
- var group = t1.sliceGroup;
- var sA = group.pushSlice(newSliceEx({title: 'a', start: 1, duration: 2}));
- var sB = group.pushSlice(newSliceEx({title: 'a', start: 3, duration: 1}));
-
- var track = new SliceGroupTrack(new tr.ui.TimelineViewport());
- track.group = group;
- var subRows = track.subRows;
-
- assert.equal(track.badSlices_.length, 0);
- assert.equal(subRows.length, 1);
- assert.equal(subRows[0].length, 2);
- assert.deepEqual(subRows[0], [sA, sB]);
- });
-
- test('subRowBuilderBasic2', function() {
- var m = new tr.Model();
- var t1 = m.getOrCreateProcess(1).getOrCreateThread(2);
- var group = t1.sliceGroup;
- var sA = group.pushSlice(newSliceEx({title: 'a', start: 1, duration: 4}));
- var sB = group.pushSlice(newSliceEx({title: 'b', start: 3, duration: 1}));
-
- var track = new SliceGroupTrack(new tr.ui.TimelineViewport());
- track.group = group;
- var subRows = track.subRows;
-
- assert.equal(track.badSlices_.length, 0);
- assert.equal(subRows.length, 2);
- assert.equal(subRows[0].length, 1);
- assert.equal(subRows[1].length, 1);
- assert.deepEqual(subRows[0], [sA]);
- assert.deepEqual(subRows[1], [sB]);
- });
-
- test('subRowBuilderNestedExactly', function() {
- var m = new tr.Model();
- var t1 = m.getOrCreateProcess(1).getOrCreateThread(2);
- var group = t1.sliceGroup;
-
- var sB = group.pushSlice(newSliceEx({title: 'b', start: 1, duration: 4}));
- var sA = group.pushSlice(newSliceEx({title: 'a', start: 1, duration: 4}));
-
- var track = new SliceGroupTrack(new tr.ui.TimelineViewport());
- track.group = group;
- var subRows = track.subRows;
-
- assert.equal(track.badSlices_.length, 0);
- assert.equal(subRows.length, 2);
- assert.equal(subRows[0].length, 1);
- assert.equal(subRows[1].length, 1);
- assert.deepEqual(subRows[0], [sB]);
- assert.deepEqual(subRows[1], [sA]);
- });
-
- test('subRowBuilderInstantEvents', function() {
- var m = new tr.Model();
- var t1 = m.getOrCreateProcess(1).getOrCreateThread(2);
- var group = t1.sliceGroup;
-
- var sA = group.pushSlice(newSliceEx({title: 'a', start: 1, duration: 0}));
- var sB = group.pushSlice(newSliceEx({title: 'b', start: 2, duration: 0}));
-
- var track = new SliceGroupTrack(new tr.ui.TimelineViewport());
- track.group = group;
- var subRows = track.subRows;
-
- assert.equal(track.badSlices_.length, 0);
- assert.equal(subRows.length, 1);
- assert.equal(subRows[0].length, 2);
- assert.deepEqual(subRows[0], [sA, sB]);
- });
-
- test('subRowBuilderTwoInstantEvents', function() {
- var m = new tr.Model();
- var t1 = m.getOrCreateProcess(1).getOrCreateThread(2);
- var group = t1.sliceGroup;
-
- var sA = group.pushSlice(newSliceEx({title: 'a', start: 1, duration: 0}));
- var sB = group.pushSlice(newSliceEx({title: 'b', start: 1, duration: 0}));
-
- var track = new SliceGroupTrack(new tr.ui.TimelineViewport());
- track.group = group;
- var subRows = track.subRows;
-
- assert.equal(track.badSlices_.length, 0);
- assert.equal(subRows.length, 2);
- assert.deepEqual(subRows[0], [sA]);
- assert.deepEqual(subRows[1], [sB]);
- });
-
- test('subRowBuilderOutOfOrderAddition', function() {
- var m = new tr.Model();
- var t1 = m.getOrCreateProcess(1).getOrCreateThread(2);
- var group = t1.sliceGroup;
-
- // Pattern being tested:
- // [ a ][ b ]
- // Where insertion is done backward.
- var sB = group.pushSlice(newSliceEx({title: 'b', start: 3, duration: 1}));
- var sA = group.pushSlice(newSliceEx({title: 'a', start: 1, duration: 2}));
-
- var track = new SliceGroupTrack(new tr.ui.TimelineViewport());
- track.group = group;
- var subRows = track.subRows;
-
- assert.equal(track.badSlices_.length, 0);
- assert.equal(subRows.length, 1);
- assert.equal(subRows[0].length, 2);
- assert.deepEqual(subRows[0], [sA, sB]);
- });
-
- test('subRowBuilderOutOfOrderAddition2', function() {
- var m = new tr.Model();
- var t1 = m.getOrCreateProcess(1).getOrCreateThread(2);
- var group = t1.sliceGroup;
-
- // Pattern being tested:
- // [ a ]
- // [ b ]
- // Where insertion is done backward.
- var sB = group.pushSlice(newSliceEx({title: 'b', start: 3, duration: 1}));
- var sA = group.pushSlice(newSliceEx({title: 'a', start: 1, duration: 5}));
-
- var track = new SliceGroupTrack(new tr.ui.TimelineViewport());
- track.group = group;
- var subRows = track.subRows;
-
- assert.equal(track.badSlices_.length, 0);
- assert.equal(subRows.length, 2);
- assert.equal(subRows[0].length, 1);
- assert.equal(subRows[1].length, 1);
- assert.deepEqual(subRows[0], [sA]);
- assert.deepEqual(subRows[1], [sB]);
- });
-
- test('subRowBuilderOnNestedZeroLength', function() {
- var m = new tr.Model();
- var t1 = m.getOrCreateProcess(1).getOrCreateThread(2);
- var group = t1.sliceGroup;
-
- // Pattern being tested:
- // [ a ]
- // [ b1 ] []<- b2 where b2.duration = 0 and b2.end == a.end.
- var sA = group.pushSlice(newSliceEx({title: 'a', start: 1, duration: 3}));
- var sB1 = group.pushSlice(newSliceEx({title: 'b1', start: 1, duration: 2}));
- var sB2 = group.pushSlice(newSliceEx({title: 'b2', start: 4, duration: 0}));
-
- var track = new SliceGroupTrack(new tr.ui.TimelineViewport());
- track.group = group;
- var subRows = track.subRows;
-
- assert.equal(track.badSlices_.length, 0);
- assert.equal(subRows.length, 2);
- assert.deepEqual(subRows[0], [sA]);
- assert.deepEqual(subRows[1], [sB1, sB2]);
- });
-
- test('subRowBuilderOnGroup1', function() {
- var m = new tr.Model();
- var t1 = m.getOrCreateProcess(1).getOrCreateThread(2);
- var group = t1.sliceGroup;
-
- // Pattern being tested:
- // [ a ] [ c ]
- // [ b ]
- var sA = group.pushSlice(newSliceEx({title: 'a', start: 1, duration: 3}));
- var sB = group.pushSlice(newSliceEx({title: 'b', start: 1.5, duration: 1}));
- var sC = group.pushSlice(newSliceEx({title: 'c', start: 5, duration: 0}));
-
- var track = new SliceGroupTrack(new tr.ui.TimelineViewport());
- track.group = group;
- var subRows = track.subRows;
-
- assert.equal(track.badSlices_.length, 0);
- assert.equal(subRows.length, 2);
- assert.deepEqual(subRows[0], [sA, sC]);
- assert.deepEqual(subRows[1], [sB]);
- });
-
- test('subRowBuilderOnGroup2', function() {
- var m = new tr.Model();
- var t1 = m.getOrCreateProcess(1).getOrCreateThread(2);
- var group = t1.sliceGroup;
-
- // Pattern being tested:
- // [ a ] [ d ]
- // [ b ]
- // [ c ]
- var sA = group.pushSlice(newSliceEx({title: 'a', start: 1, duration: 3}));
- var sB = group.pushSlice(newSliceEx({title: 'b', start: 1.5, duration: 1}));
- var sC = group.pushSlice(newSliceEx(
- {title: 'c', start: 1.75, duration: 0.5}));
- var sD = group.pushSlice(newSliceEx(
- {title: 'c', start: 5, duration: 0.25}));
-
- var track = new SliceGroupTrack(new tr.ui.TimelineViewport());
- track.group = group;
-
- var subRows = track.subRows;
- assert.equal(track.badSlices_.length, 0);
- assert.equal(subRows.length, 3);
- assert.deepEqual(subRows[0], [sA, sD]);
- assert.deepEqual(subRows[1], [sB]);
- assert.deepEqual(subRows[2], [sC]);
- });
-
- test('trackFiltering', function() {
- var m = new tr.Model();
- var t1 = m.getOrCreateProcess(1).getOrCreateThread(2);
- var group = t1.sliceGroup;
-
- var sA = group.pushSlice(newSliceEx({title: 'a', start: 1, duration: 3}));
- var sB = group.pushSlice(newSliceEx({title: 'b', start: 1.5, duration: 1}));
-
- var track = new SliceGroupTrack(new tr.ui.TimelineViewport());
- track.group = group;
-
- assert.equal(track.subRows.length, 2);
- assert.isTrue(track.hasVisibleContent);
- });
-
-test('sliceGroupContainerMap', function() {
- var vp = new tr.ui.TimelineViewport();
- var containerToTrack = vp.containerToTrackMap;
- var model = new tr.Model();
- var process = model.getOrCreateProcess(123);
- var thread = process.getOrCreateThread(456);
- var group = new SliceGroup(thread);
-
- var processTrack = new ProcessTrack(vp);
- var threadTrack = new ThreadTrack(vp);
- var groupTrack = new SliceGroupTrack(vp);
- processTrack.process = process;
- threadTrack.thread = thread;
- groupTrack.group = group;
- processTrack.appendChild(threadTrack);
- threadTrack.appendChild(groupTrack);
-
- assert.equal(processTrack.eventContainer, process);
- assert.equal(threadTrack.eventContainer, thread);
- assert.equal(groupTrack.eventContainer, group);
-
- assert.isUndefined(containerToTrack.getTrackByStableId('123'));
- assert.isUndefined(containerToTrack.getTrackByStableId('123.456'));
- assert.isUndefined(
- containerToTrack.getTrackByStableId('123.456.SliceGroup'));
-
- vp.modelTrackContainer = {
- addContainersToTrackMap: function(containerToTrackMap) {
- processTrack.addContainersToTrackMap(containerToTrackMap);
- },
- addEventListener: function() {}
- };
- vp.rebuildContainerToTrackMap();
-
- // Check that all tracks call childs' addContainersToTrackMap()
- // by checking the resulting map.
- assert.equal(containerToTrack.getTrackByStableId('123'), processTrack);
- assert.equal(containerToTrack.getTrackByStableId('123.456'), threadTrack);
- assert.equal(containerToTrack.getTrackByStableId('123.456.SliceGroup'),
- groupTrack);
-
- // Check the track's eventContainer getter.
- assert.equal(processTrack.eventContainer, process);
- assert.equal(threadTrack.eventContainer, thread);
- assert.equal(groupTrack.eventContainer, group);
- });
-});
-</script>
-
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/slice_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/slice_track.html
deleted file mode 100644
index 87123811d62..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/slice_track.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="import" href="/tracing/ui/tracks/rect_track.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
- /**
- * A track that displays an array of Slice objects.
- * @constructor
- * @extends {RectTrack}
- */
- var SliceTrack = tr.ui.b.define(
- 'slice-track', tr.ui.tracks.RectTrack);
-
- SliceTrack.prototype = {
-
- __proto__: tr.ui.tracks.RectTrack.prototype,
-
- decorate: function(viewport) {
- tr.ui.tracks.RectTrack.prototype.decorate.call(this, viewport);
- },
-
- get slices() {
- return this.rects;
- },
-
- set slices(slices) {
- this.rects = slices;
- }
- };
-
- return {
- SliceTrack: SliceTrack
- };
-});
-</script>
-
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/slice_track_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/slice_track_test.html
deleted file mode 100644
index 2c22784a848..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/slice_track_test.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="import" href="/tracing/model/event_set.html">
-<link rel="import" href="/tracing/model/slice.html">
-<link rel="import" href="/tracing/ui/timeline_track_view.html">
-<link rel="import" href="/tracing/ui/tracks/slice_track.html">
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
- var SliceTrack = tr.ui.tracks.SliceTrack;
- var Slice = tr.model.Slice;
-
- test('modelMapping', function() {
- var track = new SliceTrack(new tr.ui.TimelineViewport());
- var slice = new Slice('', 'a', 0, 1, {}, 1);
- track.slices = [slice];
- var me0 = track.rects[0].modelItem;
- assert.equal(slice, me0);
- });
-});
-</script>
-
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/spacing_track.css b/chromium/third_party/catapult/tracing/tracing/ui/tracks/spacing_track.css
deleted file mode 100644
index 094eee0862d..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/spacing_track.css
+++ /dev/null
@@ -1,7 +0,0 @@
-/* Copyright (c) 2013 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.
- */
-.spacing-track {
- height: 4px;
-}
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/spacing_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/spacing_track.html
deleted file mode 100644
index 5eea1c903e0..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/spacing_track.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="stylesheet" href="/tracing/ui/tracks/spacing_track.css">
-
-<link rel="import" href="/tracing/ui/base/heading.html">
-<link rel="import" href="/tracing/ui/tracks/track.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
- /**
- * A track used to provide whitespace between the tracks above and below it.
- *
- * @constructor
- * @extends {tr.ui.tracks.Track}
- */
- var SpacingTrack = tr.ui.b.define('spacing-track', tr.ui.tracks.Track);
-
- SpacingTrack.prototype = {
- __proto__: tr.ui.tracks.Track.prototype,
-
- decorate: function(viewport) {
- tr.ui.tracks.Track.prototype.decorate.call(this, viewport);
- this.classList.add('spacing-track');
-
- this.heading_ = document.createElement('tr-ui-heading');
- this.appendChild(this.heading_);
- },
-
- addAllEventsMatchingFilterToSelection: function(filter, selection) {
- }
- };
-
- return {
- SpacingTrack: SpacingTrack
- };
-});
-</script>
-
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/stacked_bars_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/stacked_bars_track.html
deleted file mode 100644
index e3e9ea89d40..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/stacked_bars_track.html
+++ /dev/null
@@ -1,130 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="import" href="/tracing/ui/base/heading.html">
-<link rel="import" href="/tracing/ui/base/ui.html">
-<link rel="import" href="/tracing/ui/tracks/track.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
- /**
- * A track that displays traces as stacked bars.
- * @constructor
- * @extends {Track}
- */
- var StackedBarsTrack = tr.ui.b.define(
- 'stacked-bars-track', tr.ui.tracks.Track);
-
- StackedBarsTrack.prototype = {
-
- __proto__: tr.ui.tracks.Track.prototype,
-
- decorate: function(viewport) {
- tr.ui.tracks.Track.prototype.decorate.call(this, viewport);
- this.classList.add('stacked-bars-track');
- this.objectInstance_ = null;
-
- this.heading_ = document.createElement('tr-ui-heading');
- this.appendChild(this.heading_);
- },
-
- set heading(heading) {
- this.heading_.heading = heading;
- },
-
- get heading() {
- return this.heading_.heading;
- },
-
- set tooltip(tooltip) {
- this.heading_.tooltip = tooltip;
- },
-
- addEventsToTrackMap: function(eventToTrackMap) {
- var objectSnapshots = this.objectInstance_.snapshots;
- objectSnapshots.forEach(function(obj) {
- eventToTrackMap.addEvent(obj, this);
- }, this);
- },
-
- /**
- * Used to hit-test clicks in the graph.
- */
- addIntersectingEventsInRangeToSelectionInWorldSpace: function(
- loWX, hiWX, viewPixWidthWorld, selection) {
- function onSnapshot(snapshot) {
- selection.push(snapshot);
- }
-
- var snapshots = this.objectInstance_.snapshots;
- var maxBounds = this.objectInstance_.parent.model.bounds.max;
-
- tr.b.iterateOverIntersectingIntervals(
- snapshots,
- function(x) { return x.ts; },
- function(x, i) {
- if (i == snapshots.length - 1) {
- if (snapshots.length == 1)
- return maxBounds;
-
- return snapshots[i].ts - snapshots[i - 1].ts;
- }
-
- return snapshots[i + 1].ts - snapshots[i].ts;
- },
- loWX, hiWX,
- onSnapshot);
- },
-
- /**
- * Add the item to the left or right of the provided item, if any, to the
- * selection.
- * @param {slice} The current slice.
- * @param {Number} offset Number of slices away from the object to look.
- * @param {Selection} selection The selection to add an event to,
- * if found.
- * @return {boolean} Whether an event was found.
- * @private
- */
- addEventNearToProvidedEventToSelection: function(event, offset, selection) {
- if (!(event instanceof tr.model.ObjectSnapshot))
- throw new Error('Unrecognized event');
- var objectSnapshots = this.objectInstance_.snapshots;
- var index = objectSnapshots.indexOf(event);
- var newIndex = index + offset;
- if (newIndex >= 0 && newIndex < objectSnapshots.length) {
- selection.push(objectSnapshots[newIndex]);
- return true;
- }
- return false;
- },
-
- addAllEventsMatchingFilterToSelection: function(filter, selection) {
- },
-
- addClosestEventToSelection: function(worldX, worldMaxDist, loY, hiY,
- selection) {
- var snapshot = tr.b.findClosestElementInSortedArray(
- this.objectInstance_.snapshots,
- function(x) { return x.ts; },
- worldX,
- worldMaxDist);
-
- if (!snapshot)
- return;
-
- selection.push(snapshot);
- }
- };
-
- return {
- StackedBarsTrack: StackedBarsTrack
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/thread_track.css b/chromium/third_party/catapult/tracing/tracing/ui/tracks/thread_track.css
deleted file mode 100644
index c42cee032d8..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/thread_track.css
+++ /dev/null
@@ -1,10 +0,0 @@
-/* Copyright (c) 2012 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.
- */
-
-.thread-track {
- -webkit-box-orient: vertical;
- display: -webkit-box;
- position: relative;
-}
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/thread_track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/thread_track.html
deleted file mode 100644
index aca956546b3..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/thread_track.html
+++ /dev/null
@@ -1,163 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="stylesheet" href="/tracing/ui/tracks/thread_track.css">
-
-<link rel="import" href="/tracing/base/iteration_helpers.html">
-<link rel="import" href="/tracing/core/filter.html">
-<link rel="import" href="/tracing/model/event_set.html">
-<link rel="import" href="/tracing/ui/base/ui.html">
-<link rel="import" href="/tracing/ui/tracks/async_slice_group_track.html">
-<link rel="import" href="/tracing/ui/tracks/container_track.html">
-<link rel="import" href="/tracing/ui/tracks/sample_track.html">
-<link rel="import" href="/tracing/ui/tracks/slice_group_track.html">
-<link rel="import" href="/tracing/ui/tracks/slice_track.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
- /**
- * Visualizes a Thread using a series of SliceTracks.
- * @constructor
- */
- var ThreadTrack = tr.ui.b.define('thread-track',
- tr.ui.tracks.ContainerTrack);
- ThreadTrack.prototype = {
- __proto__: tr.ui.tracks.ContainerTrack.prototype,
-
- decorate: function(viewport) {
- tr.ui.tracks.ContainerTrack.prototype.decorate.call(this, viewport);
- this.classList.add('thread-track');
- },
-
- get thread() {
- return this.thread_;
- },
-
- set thread(thread) {
- this.thread_ = thread;
- this.updateContents_();
- },
-
- get hasVisibleContent() {
- return this.tracks_.length > 0;
- },
-
- get eventContainer() {
- return this.thread;
- },
-
- addContainersToTrackMap: function(containerToTrackMap) {
- tr.ui.tracks.ContainerTrack.prototype.addContainersToTrackMap.apply(
- this, arguments);
- containerToTrackMap.addContainer(this.thread, this);
- },
-
- updateContents_: function() {
- this.detach();
-
- if (!this.thread_)
- return;
-
- this.heading = this.thread_.userFriendlyName + ': ';
- this.tooltip = this.thread_.userFriendlyDetails;
-
- if (this.thread_.asyncSliceGroup.length)
- this.appendAsyncSliceTracks_();
-
- this.appendThreadSamplesTracks_();
-
- if (this.thread_.timeSlices) {
- var timeSlicesTrack = new tr.ui.tracks.SliceTrack(this.viewport);
- timeSlicesTrack.heading = '';
- timeSlicesTrack.height = tr.ui.b.THIN_SLICE_HEIGHT + 'px';
- timeSlicesTrack.slices = this.thread_.timeSlices;
- if (timeSlicesTrack.hasVisibleContent)
- this.appendChild(timeSlicesTrack);
- }
-
- if (this.thread_.sliceGroup.length) {
- var track = new tr.ui.tracks.SliceGroupTrack(this.viewport);
- track.heading = this.thread_.userFriendlyName;
- track.tooltip = this.thread_.userFriendlyDetails;
- track.group = this.thread_.sliceGroup;
- if (track.hasVisibleContent)
- this.appendChild(track);
- }
- },
-
- appendAsyncSliceTracks_: function() {
- var subGroups = this.thread_.asyncSliceGroup.viewSubGroups;
- subGroups.forEach(function(subGroup) {
- var asyncTrack = new tr.ui.tracks.AsyncSliceGroupTrack(this.viewport);
- var title = subGroup.slices[0].viewSubGroupTitle;
- asyncTrack.group = subGroup;
- asyncTrack.heading = title;
- if (asyncTrack.hasVisibleContent)
- this.appendChild(asyncTrack);
- }, this);
- },
-
- appendThreadSamplesTracks_: function() {
- var threadSamples = this.thread_.samples;
- if (threadSamples === undefined || threadSamples.length === 0)
- return;
- var samplesByTitle = {};
- threadSamples.forEach(function(sample) {
- if (samplesByTitle[sample.title] === undefined)
- samplesByTitle[sample.title] = [];
- samplesByTitle[sample.title].push(sample);
- });
-
- var sampleTitles = tr.b.dictionaryKeys(samplesByTitle);
- sampleTitles.sort();
-
- sampleTitles.forEach(function(sampleTitle) {
- var samples = samplesByTitle[sampleTitle];
- var samplesTrack = new tr.ui.tracks.SampleTrack(this.viewport);
- samplesTrack.group = this.thread_;
- samplesTrack.samples = samples;
- samplesTrack.heading = this.thread_.userFriendlyName + ': ' +
- sampleTitle;
- samplesTrack.tooltip = this.thread_.userFriendlyDetails;
- samplesTrack.selectionGenerator = function() {
- var selection = new tr.model.EventSet();
- for (var i = 0; i < samplesTrack.samples.length; i++) {
- selection.push(samplesTrack.samples[i]);
- }
- return selection;
- };
- this.appendChild(samplesTrack);
- }, this);
- },
-
- collapsedDidChange: function(collapsed) {
- if (collapsed) {
- var h = parseInt(this.tracks[0].height);
- for (var i = 0; i < this.tracks.length; ++i) {
- if (h > 2) {
- this.tracks[i].height = Math.floor(h) + 'px';
- } else {
- this.tracks[i].style.display = 'none';
- }
- h = h * 0.5;
- }
- } else {
- for (var i = 0; i < this.tracks.length; ++i) {
- this.tracks[i].height = this.tracks[0].height;
- this.tracks[i].style.display = '';
- }
- }
- }
- };
-
- return {
- ThreadTrack: ThreadTrack
- };
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/thread_track_test.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/thread_track_test.html
deleted file mode 100644
index 068c4f01e02..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/thread_track_test.html
+++ /dev/null
@@ -1,145 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-
-<link rel="import" href="/tracing/core/test_utils.html">
-<link rel="import" href="/tracing/model/event_set.html">
-<link rel="import" href="/tracing/model/instant_event.html">
-<link rel="import" href="/tracing/ui/base/dom_helpers.html">
-<link rel="import" href="/tracing/ui/timeline_track_view.html">
-<link rel="import" href="/tracing/ui/tracks/thread_track.html">
-
-<script>
-'use strict';
-
-tr.b.unittest.testSuite(function() {
- var HighlightInstantEvent = tr.model.ThreadHighlightInstantEvent;
- var Process = tr.model.Process;
- var EventSet = tr.model.EventSet;
- var StackFrame = tr.model.StackFrame;
- var Sample = tr.model.Sample;
- var Thread = tr.model.Thread;
- var ThreadSlice = tr.model.ThreadSlice;
- var ThreadTrack = tr.ui.tracks.ThreadTrack;
- var Viewport = tr.ui.TimelineViewport;
- var newAsyncSlice = tr.c.TestUtils.newAsyncSlice;
- var newAsyncSliceNamed = tr.c.TestUtils.newAsyncSliceNamed;
- var newSliceEx = tr.c.TestUtils.newSliceEx;
-
- test('selectionHitTestingWithThreadTrack', function() {
- var model = new tr.Model();
- var p1 = model.getOrCreateProcess(1);
- var t1 = p1.getOrCreateThread(1);
- t1.sliceGroup.pushSlice(new ThreadSlice('', 'a', 0, 1, {}, 4));
- t1.sliceGroup.pushSlice(new ThreadSlice('', 'b', 0, 5.1, {}, 4));
-
- var testEl = document.createElement('div');
- testEl.appendChild(tr.ui.b.createScopedStyle('heading { width: 100px; }'));
- testEl.style.width = '600px';
-
- var viewport = new Viewport(testEl);
- var drawingContainer = new tr.ui.tracks.DrawingContainer(viewport);
- testEl.appendChild(drawingContainer);
-
- var track = new ThreadTrack(viewport);
- drawingContainer.appendChild(track);
- drawingContainer.updateCanvasSizeIfNeeded_();
- track.thread = t1;
-
- var y = track.getBoundingClientRect().top;
- var h = track.getBoundingClientRect().height;
- var wW = 10;
- var vW = drawingContainer.canvas.getBoundingClientRect().width;
- var dt = new tr.ui.TimelineDisplayTransform();
- dt.xSetWorldBounds(0, wW, vW);
- track.viewport.setDisplayTransformImmediately(dt);
-
- var selection = new EventSet();
- var x = (1.5 / wW) * vW;
- track.addIntersectingEventsInRangeToSelection(
- x, x + 1, y, y + 1, selection);
- assert.isTrue(selection.equals(
- new EventSet([t1.sliceGroup.slices[0], t1.sliceGroup.slices[1]])));
-
- var selection = new EventSet();
- track.addIntersectingEventsInRangeToSelection(
- (1.5 / wW) * vW, (1.8 / wW) * vW,
- y, y + h, selection);
- assert.isTrue(selection.equals(
- new EventSet([t1.sliceGroup.slices[0], t1.sliceGroup.slices[1]])));
- });
-
- test('filterThreadSlices', function() {
- var model = new tr.Model();
- var thread = new Thread(new Process(model, 7), 1);
- thread.sliceGroup.pushSlice(newSliceEx(
- {title: 'a', start: 0, duration: 0}));
- thread.asyncSliceGroup.push(newAsyncSliceNamed('a', 0, 5, t, t));
-
- var t = new ThreadTrack(new tr.ui.TimelineViewport());
- t.thread = thread;
-
- assert.equal(t.tracks_.length, 2);
- assert.instanceOf(t.tracks_[0], tr.ui.tracks.AsyncSliceGroupTrack);
- assert.instanceOf(t.tracks_[1], tr.ui.tracks.SliceGroupTrack);
- });
-
- test('sampleThreadSlices', function() {
- var thread;
- var cpu;
- var model = tr.c.TestUtils.newModelWithEvents([], {
- shiftWorldToZero: false,
- pruneContainers: false,
- customizeModelCallback: function(model) {
- cpu = model.kernel.getOrCreateCpu(1);
- thread = model.getOrCreateProcess(1).getOrCreateThread(2);
-
- var fA = model.addStackFrame(new StackFrame(
- undefined, 1, 'cat', 'a', 7));
- var fAB = model.addStackFrame(new StackFrame(
- fA, 2, 'cat', 'b', 7));
- var fABC = model.addStackFrame(new StackFrame(
- fAB, 3, 'cat', 'c', 7));
- var fAD = model.addStackFrame(new StackFrame(
- fA, 4, 'cat', 'd', 7));
-
- model.samples.push(new Sample(undefined, thread, 'instructions_retired',
- 10, fABC, 10));
- model.samples.push(new Sample(undefined, thread, 'instructions_retired',
- 20, fAB, 10));
- model.samples.push(new Sample(undefined, thread, 'instructions_retired',
- 30, fAB, 10));
- model.samples.push(new Sample(undefined, thread, 'instructions_retired',
- 40, fAD, 10));
-
- model.samples.push(new Sample(undefined, thread, 'page_fault',
- 25, fAB, 10));
- model.samples.push(new Sample(undefined, thread, 'page_fault',
- 35, fAD, 10));
- }
- });
-
- var t = new ThreadTrack(new tr.ui.TimelineViewport());
- t.thread = thread;
- assert.equal(t.tracks_.length, 2);
-
- // Instructions retired
- var t0 = t.tracks_[0];
- assert.notEqual(t0.heading.indexOf('instructions_retired'), -1);
- assert.instanceOf(t0, tr.ui.tracks.SampleTrack);
- assert.equal(t0.samples.length, 4);
- t0.samples.forEach(function(s) {
- assert.instanceOf(s, tr.model.Sample);
- });
-
- // page_fault
- var t1 = t.tracks_[1];
- assert.notEqual(t1.heading.indexOf('page_fault'), -1);
- assert.instanceOf(t1, tr.ui.tracks.SampleTrack);
- assert.equal(t1.samples.length, 2);
- });
-});
-</script>
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/track.css b/chromium/third_party/catapult/tracing/tracing/ui/tracks/track.css
deleted file mode 100644
index 3d56eef5b8d..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/track.css
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Copyright (c) 2012 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.
- */
-
-.track-button {
- background-color: rgba(255, 255, 255, 0.5);
- border: 1px solid rgba(0, 0, 0, 0.1);
- color: rgba(0,0,0,0.2);
- font-size: 10px;
- height: 12px;
- text-align: center;
- width: 12px;
-}
-
-.track-button:hover {
- background-color: rgba(255, 255, 255, 1.0);
- border: 1px solid rgba(0, 0, 0, 0.5);
- box-shadow: 0 0 .05em rgba(0, 0, 0, 0.4);
- color: rgba(0, 0, 0, 1);
-}
-
-.track-close-button {
- left: 2px;
- position: absolute;
- top: 2px;
-}
-
-.track-collapse-button {
- left: 3px;
- position: absolute;
- top: 2px;
-}
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/tracks/track.html b/chromium/third_party/catapult/tracing/tracing/ui/tracks/track.html
deleted file mode 100644
index 09a54c27223..00000000000
--- a/chromium/third_party/catapult/tracing/tracing/ui/tracks/track.html
+++ /dev/null
@@ -1,167 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2013 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.
--->
-<link rel="stylesheet" href="/tracing/ui/tracks/track.css">
-
-<link rel="import" href="/tracing/ui/base/container_that_decorates_its_children.html">
-<link rel="import" href="/tracing/ui/base/ui.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.ui.tracks', function() {
- /**
- * The base class for all tracks, which render data into a provided div.
- * @constructor
- */
- var Track = tr.ui.b.define('track',
- tr.ui.b.ContainerThatDecoratesItsChildren);
- Track.prototype = {
- __proto__: tr.ui.b.ContainerThatDecoratesItsChildren.prototype,
-
- decorate: function(viewport) {
- tr.ui.b.ContainerThatDecoratesItsChildren.prototype.decorate.call(this);
- if (viewport === undefined)
- throw new Error('viewport is required when creating a Track.');
-
- this.viewport_ = viewport;
- this.classList.add('track');
- },
-
- get viewport() {
- return this.viewport_;
- },
-
- get drawingContainer() {
- var cur = this;
- while (cur) {
- if (cur instanceof tr.ui.tracks.DrawingContainer)
- return cur;
- cur = cur.parentElement;
- }
- return undefined;
- },
-
- get eventContainer() {
- },
-
- invalidateDrawingContainer: function() {
- var dc = this.drawingContainer;
- if (dc)
- dc.invalidate();
- },
-
- context: function() {
- // This is a little weird here, but we have to be able to walk up the
- // parent tree to get the context.
- if (!this.parentNode)
- return undefined;
- if (!this.parentNode.context)
- throw new Error('Parent container does not support context() method.');
- return this.parentNode.context();
- },
-
- decorateChild_: function(childTrack) {
- },
-
- undecorateChild_: function(childTrack) {
- if (childTrack.detach)
- childTrack.detach();
- },
-
- updateContents_: function() {
- },
-
- /**
- * Wrapper function around draw() that performs transformations on the
- * context necessary for the track's contents to be drawn in the right place
- * given the current pan and zoom.
- */
- drawTrack: function(type) {
- var ctx = this.context();
-
- var pixelRatio = window.devicePixelRatio || 1;
- var bounds = this.getBoundingClientRect();
- var canvasBounds = ctx.canvas.getBoundingClientRect();
-
- ctx.save();
- ctx.translate(0, pixelRatio * (bounds.top - canvasBounds.top));
-
- var dt = this.viewport.currentDisplayTransform;
- var viewLWorld = dt.xViewToWorld(0);
- var viewRWorld = dt.xViewToWorld(bounds.width * pixelRatio);
-
- this.draw(type, viewLWorld, viewRWorld);
- ctx.restore();
- },
-
- draw: function(type, viewLWorld, viewRWorld) {
- },
-
- addEventsToTrackMap: function(eventToTrackMap) {
- },
-
- addContainersToTrackMap: function(containerToTrackMap) {
- },
-
- addIntersectingEventsInRangeToSelection: function(
- loVX, hiVX, loVY, hiVY, selection) {
-
- var pixelRatio = window.devicePixelRatio || 1;
- var dt = this.viewport.currentDisplayTransform;
- var viewPixWidthWorld = dt.xViewVectorToWorld(1);
- var loWX = dt.xViewToWorld(loVX * pixelRatio);
- var hiWX = dt.xViewToWorld(hiVX * pixelRatio);
-
- var clientRect = this.getBoundingClientRect();
- var a = Math.max(loVY, clientRect.top);
- var b = Math.min(hiVY, clientRect.bottom);
- if (a > b)
- return;
-
- this.addIntersectingEventsInRangeToSelectionInWorldSpace(
- loWX, hiWX, viewPixWidthWorld, selection);
- },
-
- addIntersectingEventsInRangeToSelectionInWorldSpace: function(
- loWX, hiWX, viewPixWidthWorld, selection) {
- },
-
- /**
- * Gets implemented by supporting track types. The method adds the event
- * closest to worldX to the selection.
- *
- * @param {number} worldX The position that is looked for.
- * @param {number} worldMaxDist The maximum distance allowed from worldX to
- * the event.
- * @param {number} loY Lower Y bound of the search interval in view space.
- * @param {number} hiY Upper Y bound of the search interval in view space.
- * @param {Selection} selection Selection to which to add hits.
- */
- addClosestEventToSelection: function(
- worldX, worldMaxDist, loY, hiY, selection) {
- },
-
- addClosestInstantEventToSelection: function(instantEvents, worldX,
- worldMaxDist, selection) {
- var instantEvent = tr.b.findClosestElementInSortedArray(
- instantEvents,
- function(x) { return x.start; },
- worldX,
- worldMaxDist);
-
- if (!instantEvent)
- return;
-
- selection.push(instantEvent);
- }
- };
-
- return {
- Track: Track
- };
-});
-</script>