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

Unified Diff: chrome/browser/resources/tracing/timeline_track_test.html

Issue 10161025: Allow about:tracing Counters to be selected (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixen. Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/tracing/timeline_track_test.html
diff --git a/chrome/browser/resources/tracing/timeline_track_test.html b/chrome/browser/resources/tracing/timeline_track_test.html
index 855b0349e2d2a03571f78297d27e840845ded77e..6fd42e7ceec01e555b668759547f94094967f4d0 100644
--- a/chrome/browser/resources/tracing/timeline_track_test.html
+++ b/chrome/browser/resources/tracing/timeline_track_test.html
@@ -49,6 +49,7 @@ found in the LICENSE file.
var TimelineCpu = tracing.TimelineCpu;
var TimelineCpuTrack = tracing.TimelineCpuTrack;
var TimelineProcess = tracing.TimelineProcess;
+ var TimelineSelection = tracing.TimelineSelection;
var TimelineSliceTrack = tracing.TimelineSliceTrack;
var TimelineSlice = tracing.TimelineSlice;
var TimelineThread = tracing.TimelineThread;
@@ -87,8 +88,7 @@ found in the LICENSE file.
new TimelineSlice('c', 2, 7.6, {}, 0.4)
];
track.viewport = new TimelineViewport(testEl);
- track.viewport.setPanAndScale(0,
- track.clientWidth / (1.1 * track.slices[track.slices.length - 1].end));
+ track.viewport.xSetWorldRange(0, 8.8, track.clientWidth);
}
function testFindAllObjectsMatchingInSliceTrack() {
@@ -99,11 +99,13 @@ found in the LICENSE file.
new TimelineSlice('b', 1, 7, {}, 0.5),
new TimelineSlice('c', 2, 7.6, {}, 0.4)
];
- var hits = track.findAllObjectsMatchingFilter(
- new tracing.TimelineFilter("b"));
- assertEquals(2, hits.length);
- assertEquals(track.slices[1], hits[0].slice);
- assertEquals(track.slices[2], hits[1].slice);
+ var selection = new TimelineSelection();
+ track.addAllObjectsMatchingFilterToSelection(
+ new tracing.TimelineFilter("b"), selection);
+
+ assertEquals(2, selection.length);
+ assertEquals(track.slices[1], selection[0].slice);
+ assertEquals(track.slices[2], selection[1].slice);
}
function testShrinkingSliceSizes() {
@@ -121,15 +123,14 @@ found in the LICENSE file.
}
track.slices = slices;
track.viewport = new TimelineViewport(testEl);
- track.viewport.setPanAndScale(0,
- track.clientWidth / (1.1 * track.slices[track.slices.length - 1].end));
+ track.viewport.xSetWorldRange(0, 1.1 * x, track.clientWidth);
}
- function testPick() {
- var testEl = getTestDiv('testPick');
- var track = TimelineSliceTrack();
+ function testSelectionHitTesting() {
+ var testEl = getTestDiv('testSelectionHitTesting');
+ var track = new TimelineSliceTrack();
testEl.appendChild(track);
- track.heading = 'testPick';
+ track.heading = 'testSelectionHitTesting';
track.headingWidth = '100px';
track.slices = [
new TimelineSlice('a', 0, 1, {}, 1),
@@ -137,25 +138,52 @@ found in the LICENSE file.
];
track.style.width = '500px';
track.viewport = new TimelineViewport(testEl);
- track.viewport.setPanAndScale(0,
- track.clientWidth / (1.1 * track.slices[track.slices.length - 1].end));
+ track.viewport.xSetWorldRange(0, 7.6, track.clientWidth);
var clientRect = track.getBoundingClientRect();
- var hits = [];
- track.pick(1.5, clientRect.top + 5, function(x, y, z) { hits.push(z); });
- assertEquals(track.slices[0], hits[0]);
+ var selection = new TimelineSelection();
+ track.addIntersectingItemsToSelection(1.5, clientRect.top + 5, selection);
+ assertEquals(track.slices[0], selection[0].slice);
+
+ var selection = new TimelineSelection();
+ track.addIntersectingItemsToSelection(2, clientRect.top + 5, selection);
+ assertEquals(0, selection.length);
+
+ var selection = new TimelineSelection();
+ track.addIntersectingItemsToSelection(6.8, clientRect.top + 5, selection);
+ assertEquals(track.slices[1], selection[0].slice);
+
+ var selection = new TimelineSelection();
+ track.addIntersectingItemsToSelection(6.9, clientRect.top + 5, selection);
+ assertEquals(0, selection.length);
+ }
+
+ function testSelectionHitTestingWithTimelineThreadTrack() {
+ var model = new tracing.TimelineModel();
+ var p1 = model.getOrCreateProcess(1);
+ var t1 = p1.getOrCreateThread(1);
+ t1.subRows[0].push(new tracing.TimelineThreadSlice('a', 0, 1, {}, 5));
+ t1.subRows[0].push(new tracing.TimelineThreadSlice('b', 0, 5.1, {}, 4));
+
+ var testEl = getTestDiv('testSelectionHitTestingWithTimelineThreadTrack');
+ var track = new tracing.TimelineThreadTrack();
+ testEl.appendChild(track);
+ track.heading = 'testSelectionHitTestingWithTimelineThreadTrack';
+ track.headingWidth = '100px';
+ track.thread = t1;
- hits = [];
- track.pick(2, clientRect.top + 5, function(x, y, z) { hits.push(z); });
- assertEquals(0, hits.length);
+ track.style.width = '500px';
+ track.viewport = new TimelineViewport(testEl);
+ track.viewport.xSetWorldRange(0, 10, track.clientWidth);
+ var clientRect = track.getBoundingClientRect();
- hits = [];
- track.pick(6.8, clientRect.top + 5, function(x, y, z) { hits.push(z); });
- assertEquals(track.slices[1], hits[0]);
+ var selection = new TimelineSelection();
+ track.addIntersectingItemsToSelection(1.5, clientRect.top + 5, selection);
+ assertEquals(t1.subRows[0][0], selection[0].slice);
- hits = [];
- track.pick(6.9, clientRect.top + 5, function(x, y, z) { hits.push(z); });
- assertEquals(0, hits.length);
+ var selection = new TimelineSelection();
+ track.addIntersectingItemsInRangeToSelection(1.5, 1.8, clientRect.top + 5, clientRect.top + 7, selection);
+ assertEquals(t1.subRows[0][0], selection[0].slice);
}
function testBasicCpu() {
@@ -173,8 +201,7 @@ found in the LICENSE file.
track.heading = 'CPU ' + cpu.cpuNumber;
track.cpu = cpu;
track.viewport = new TimelineViewport(testEl);
- track.viewport.setPanAndScale(0,
- track.clientWidth / (1.1 * cpu.maxTimestamp));
+ track.viewport.xSetWorldRange(0, 11.1, track.clientWidth);
}
function testViewport() {
@@ -211,8 +238,72 @@ found in the LICENSE file.
track.heading = ctr.name;
track.counter = ctr;
track.viewport = new TimelineViewport(testEl);
- track.viewport.setPanAndScale(0,
- track.clientWidth / (1.1 * ctr.maxTimestamp));
+ track.viewport.xSetWorldRange(0, 7.7, track.clientWidth);
+ }
+
+ function runOffscreenCounterTest(timestamps, samples, testFn) {
+ var testEl = document.createElement('div');
+ var ctr = new TimelineCounter(undefined,
+ 'foo', 'foo');
+ var n = samples.length / timestamps.length;
+ ctr.timestamps = timestamps;
+ ctr.samples = samples;
+ ctr.seriesNames = []
+ ctr.seriesColors = []
+ for (var i = 0; i < n; ++i) {
+ ctr.seriesNames.push('value' + i);
+ ctr.seriesColors.push(tracing.getStringColorId(ctr.seriesNames[i]));
+ }
+ ctr.updateBounds();
+
+ var track = new TimelineCounterTrack();
+ testEl.appendChild(track);
+ document.body.appendChild(testEl);
+
+ track.heading = ctr.name;
+ track.counter = ctr;
+ track.viewport = new TimelineViewport(testEl);
+ track.viewport.xSetWorldRange(0, 10, track.clientWidth);
+
+ try {
+ testFn(ctr, track);
+ } finally {
+ document.body.removeChild(testEl);
+ }
+ }
+
+ function testBasicCounterXPointPicking() {
+ var timestamps = [0, 1, 2, 3, 4, 5, 6, 7];
+ var samples = [0, 5,
+ 3, 3,
+ 1, 1,
+ 2, 1.1,
+ 3, 0,
+ 1, 7,
+ 3, 0,
+ 3.1, 0.5];
+ runOffscreenCounterTest(timestamps, samples, function(ctr, track) {
+ var clientRect = track.getBoundingClientRect();
+ var y75 = clientRect.top + 0.75 * clientRect.height;
+ var sel;
+
+ // In bounds.
+ sel = new tracing.TimelineSelection();
+ track.addIntersectingItemsToSelection(1.5, y75, sel);
+ assertEquals(1, sel.length);
+ assertEquals(track, sel[0].track);
+ assertEquals(ctr, sel[0].counter);
+ assertEquals(1, sel[0].sampleIndex);
+
+ // Outside bouds.
+ sel = new tracing.TimelineSelection();
+ track.addIntersectingItemsToSelection(-1, y75, sel);
+ assertEquals(0, sel.length);
+
+ sel = new tracing.TimelineSelection();
+ track.addIntersectingItemsToSelection(8, y75, sel);
+ assertEquals(0, sel.length);
+ });
}
/* You'll need visual inspection to test eliding with this one. */
@@ -222,7 +313,7 @@ found in the LICENSE file.
for (var dictIndex in optDicts) {
var dict = optDicts[dictIndex];
var testEl = getTestDiv(dict.trackName);
- var track = TimelineSliceTrack();
+ var track = new TimelineSliceTrack();
if (dict.elide) {
track.SHOULD_ELIDE_TEXT = true;
} else {
@@ -241,14 +332,13 @@ found in the LICENSE file.
new TimelineSlice('d', 2, 7.6, {}, 1.0)
];
track.viewport = new TimelineViewport(testEl);
- track.viewport.setPanAndScale(0,
- track.clientWidth / (1.1 * track.slices[track.slices.length - 1].end));
+ track.viewport.xSetWorldRange(0, 9.5, track.clientWidth);
}
}
function testElide() {
var testEl = getTestDiv('testElide');
- var track = TimelineSliceTrack();
+ var track = new TimelineSliceTrack();
testEl.appendChild(track);
var bigtitle = 'Super duper long long title ' +
'holy moly when did you get so verbose?';
@@ -261,8 +351,7 @@ found in the LICENSE file.
new TimelineSlice(smalltitle, 1, 2, {}, 1)
];
track.viewport = new TimelineViewport(testEl);
- track.viewport.setPanAndScale(0,
- track.clientWidth / (1.1 * track.slices[track.slices.length - 1].end));
+ track.viewport.xSetWorldRange(0, 3.3, track.clientWidth);
var stringWidthPair = undefined;
var pixWidth = track.viewport_.xViewVectorToWorld(1);
@@ -319,9 +408,7 @@ found in the LICENSE file.
track.toolTip = thread.userFriendlyDetails + ':';
track.thread = thread;
track.viewport = new TimelineViewport(testEl);
- track.viewport.setPanAndScale(0,
- track.clientWidth /
- (1.1 * (thread.maxTimestamp - thread.minTimestamp)));
+ track.viewport.xSetWorldRange(0, 8.2, track.clientWidth);
}
function testTimelineThreadTrackWithTallSlices() {
@@ -345,9 +432,7 @@ found in the LICENSE file.
track.toolTip = thread.userFriendlyDetails + ':';
track.thread = thread;
track.viewport = new TimelineViewport(testEl);
- track.viewport.setPanAndScale(0,
- track.clientWidth
- / (1.1 * (thread.maxTimestamp - thread.minTimestamp)));
+ track.viewport.xSetWorldRange(0, 1.1, track.clientWidth);
}
function testTimelineThreadTrackWithRegularAndAsyncSlices() {
@@ -375,11 +460,56 @@ found in the LICENSE file.
track.toolTip = thread.userFriendlyDetails + ':';
track.thread = thread;
track.viewport = new TimelineViewport(testEl);
- track.viewport.setPanAndScale(0,
- track.clientWidth /
- (1.1 * (thread.maxTimestamp - thread.minTimestamp)));
+ track.viewport.xSetWorldRange(0, 8.15, track.clientWidth);
}
+ function testTimelineSliceTrackAddItemNearToProvidedHit() {
+ var track = new TimelineSliceTrack();
+ track.slices = [
+ new TimelineSlice('a', 0, 1, {}, 1),
+ new TimelineSlice('b', 1, 2.1, {}, 4.8),
+ new TimelineSlice('b', 1, 7, {}, 0.5),
+ new TimelineSlice('c', 2, 7.6, {}, 0.4)
+ ];
+ var sel = new tracing.TimelineSelection();
+ track.addAllObjectsMatchingFilterToSelection(new tracing.TimelineFilter("b"), sel);
+ var ret;
+
+ // Select to the right of B.
+ var selRight = new tracing.TimelineSelection();
+ ret = track.addItemNearToProvidedHitToSelection(sel[0], 1, selRight);
+ assertTrue(ret);
+ assertEquals(track.slices[2], selRight[0].slice);
+
+ // Select to the right of the 2nd b.
+ var selRight2 = new tracing.TimelineSelection();
+ ret = track.addItemNearToProvidedHitToSelection(sel[0], 2, selRight2);
+ assertTrue(ret);
+ assertEquals(track.slices[3], selRight2[0].slice);
+
+ // Select to 2 to the right of the 2nd b.
+ var selRightOfRight = new tracing.TimelineSelection();
+ ret = track.addItemNearToProvidedHitToSelection(selRight[0], 1, selRightOfRight);
+ assertTrue(ret);
+ assertEquals(track.slices[3], selRightOfRight[0].slice);
+
+ // Select to the right of the rightmost slice.
+ var selNone = new tracing.TimelineSelection();
+ ret = track.addItemNearToProvidedHitToSelection(selRightOfRight[0], 1, selNone);
+ assertFalse(ret);
+ assertEquals(0, selNone.length);
+
+ // Select A and then select left.
+ var sel = new tracing.TimelineSelection();
+ track.addAllObjectsMatchingFilterToSelection(new tracing.TimelineFilter("a"), sel);
+ var ret;
+
+ selNone = new tracing.TimelineSelection();
+ ret = track.addItemNearToProvidedHitToSelection(sel[0], -1, selNone);
+ assertFalse(ret);
+ assertEquals(0, selNone.length);
+
+ }
</script>
</body>
</html>
« no previous file with comments | « chrome/browser/resources/tracing/timeline_track.js ('k') | chrome/browser/resources/tracing/timeline_view.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698