166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Copyright (c) 2013 The Chromium Authors. All rights reserved. 266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Use of this source code is governed by a BSD-style license that can be 366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// found in the LICENSE file. 466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis'use strict'; 666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.require('tracing.test_utils'); 866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.require('tracing.timeline_track_view'); 966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.require('tracing.trace_model.slice_group'); 1066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 1166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.unittest.testSuite('tracing.tracks.slice_group_track', function() { 1266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var SliceGroup = tracing.trace_model.SliceGroup; 1388448d9ae4dfff1805045790ef5f32495d62abccJeff Brown var SliceGroupTrack = tracing.tracks.SliceGroupTrack; 1466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var newSliceNamed = tracing.test_utils.newSliceNamed; 152da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 1666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('subRowBuilderBasic', function() { 1788448d9ae4dfff1805045790ef5f32495d62abccJeff Brown var group = new SliceGroup(); 182da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var sA = group.pushSlice(newSliceNamed('a', 1, 2)); 192da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var sB = group.pushSlice(newSliceNamed('a', 3, 1)); 202da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 2166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var track = new SliceGroupTrack(new tracing.TimelineViewport()); 222da489cd246702bee5938545b18a6f710ed214bcJamie Gennis track.group = group; 2366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var subRows = track.subRows; 242da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 252da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(0, track.badSlices_.length); 262da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(1, subRows.length); 272da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(2, subRows[0].length); 282da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertArrayEquals([sA, sB], subRows[0]); 2966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 302da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 3166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('subRowBuilderBasic2', function() { 3288448d9ae4dfff1805045790ef5f32495d62abccJeff Brown var group = new SliceGroup(); 332da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var sA = group.pushSlice(newSliceNamed('a', 1, 4)); 342da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var sB = group.pushSlice(newSliceNamed('b', 3, 1)); 352da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 3666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var track = new SliceGroupTrack(new tracing.TimelineViewport()); 372da489cd246702bee5938545b18a6f710ed214bcJamie Gennis track.group = group; 3866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var subRows = track.subRows; 392da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 402da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(0, track.badSlices_.length); 412da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(2, subRows.length); 422da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(1, subRows[0].length); 432da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(1, subRows[1].length); 442da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertArrayEquals([sA], subRows[0]); 452da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertArrayEquals([sB], subRows[1]); 4666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 472da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 4866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('subRowBuilderNestedExactly', function() { 4988448d9ae4dfff1805045790ef5f32495d62abccJeff Brown var group = new SliceGroup(); 502da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var sA = group.pushSlice(newSliceNamed('a', 1, 4)); 512da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var sB = group.pushSlice(newSliceNamed('b', 1, 4)); 522da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 5366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var track = new SliceGroupTrack(new tracing.TimelineViewport()); 542da489cd246702bee5938545b18a6f710ed214bcJamie Gennis track.group = group; 5566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var subRows = track.subRows; 562da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 572da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(0, track.badSlices_.length); 582da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(2, subRows.length); 592da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(1, subRows[0].length); 602da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(1, subRows[1].length); 616e58f015d94bedc1072f08b30f0a5a6ac6e653efJamie Gennis assertArrayEquals([sB], subRows[0]); 626e58f015d94bedc1072f08b30f0a5a6ac6e653efJamie Gennis assertArrayEquals([sA], subRows[1]); 6366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 642da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 6566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('subRowBuilderInstantEvents', function() { 6688448d9ae4dfff1805045790ef5f32495d62abccJeff Brown var group = new SliceGroup(); 672da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var sA = group.pushSlice(newSliceNamed('a', 1, 0)); 682da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var sB = group.pushSlice(newSliceNamed('b', 2, 0)); 692da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 7066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var track = new SliceGroupTrack(new tracing.TimelineViewport()); 712da489cd246702bee5938545b18a6f710ed214bcJamie Gennis track.group = group; 7266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var subRows = track.subRows; 732da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 742da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(0, track.badSlices_.length); 752da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(1, subRows.length); 762da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(2, subRows[0].length); 772da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertArrayEquals([sA, sB], subRows[0]); 7866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 792da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 8066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('subRowBuilderTwoInstantEvents', function() { 8188448d9ae4dfff1805045790ef5f32495d62abccJeff Brown var group = new SliceGroup(); 822da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var sB = group.pushSlice(newSliceNamed('b', 1, 0)); 836e58f015d94bedc1072f08b30f0a5a6ac6e653efJamie Gennis var sA = group.pushSlice(newSliceNamed('a', 1, 0)); 842da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 8566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var track = new SliceGroupTrack(new tracing.TimelineViewport()); 862da489cd246702bee5938545b18a6f710ed214bcJamie Gennis track.group = group; 8766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var subRows = track.subRows; 882da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 892da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(0, track.badSlices_.length); 902da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(2, subRows.length); 912da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertArrayEquals([sA], subRows[0]); 922da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertArrayEquals([sB], subRows[1]); 9366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 942da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 9566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('subRowBuilderOutOfOrderAddition', function() { 9688448d9ae4dfff1805045790ef5f32495d62abccJeff Brown var group = new SliceGroup(); 972da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 982da489cd246702bee5938545b18a6f710ed214bcJamie Gennis // Pattern being tested: 992da489cd246702bee5938545b18a6f710ed214bcJamie Gennis // [ a ][ b ] 1002da489cd246702bee5938545b18a6f710ed214bcJamie Gennis // Where insertion is done backward. 1012da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var sB = group.pushSlice(newSliceNamed('b', 3, 1)); 1022da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var sA = group.pushSlice(newSliceNamed('a', 1, 2)); 1032da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 10466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var track = new SliceGroupTrack(new tracing.TimelineViewport()); 1052da489cd246702bee5938545b18a6f710ed214bcJamie Gennis track.group = group; 10666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var subRows = track.subRows; 1072da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 1082da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(0, track.badSlices_.length); 1092da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(1, subRows.length); 1102da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(2, subRows[0].length); 1112da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertArrayEquals([sA, sB], subRows[0]); 11266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 1132da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 11466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('subRowBuilderOutOfOrderAddition2', function() { 11588448d9ae4dfff1805045790ef5f32495d62abccJeff Brown var group = new SliceGroup(); 1162da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 1172da489cd246702bee5938545b18a6f710ed214bcJamie Gennis // Pattern being tested: 1182da489cd246702bee5938545b18a6f710ed214bcJamie Gennis // [ a ] 1192da489cd246702bee5938545b18a6f710ed214bcJamie Gennis // [ b ] 1202da489cd246702bee5938545b18a6f710ed214bcJamie Gennis // Where insertion is done backward. 1212da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var sB = group.pushSlice(newSliceNamed('b', 3, 1)); 1222da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var sA = group.pushSlice(newSliceNamed('a', 1, 5)); 1232da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 12466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var track = new SliceGroupTrack(new tracing.TimelineViewport()); 1252da489cd246702bee5938545b18a6f710ed214bcJamie Gennis track.group = group; 12666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var subRows = track.subRows; 1272da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 1282da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(0, track.badSlices_.length); 1292da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(2, subRows.length); 1302da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(1, subRows[0].length); 1312da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(1, subRows[1].length); 1322da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertArrayEquals([sA], subRows[0]); 1332da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertArrayEquals([sB], subRows[1]); 13466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 1352da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 13666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('subRowBuilderOnNestedZeroLength', function() { 13788448d9ae4dfff1805045790ef5f32495d62abccJeff Brown var group = new SliceGroup(); 1382da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 1392da489cd246702bee5938545b18a6f710ed214bcJamie Gennis // Pattern being tested: 1402da489cd246702bee5938545b18a6f710ed214bcJamie Gennis // [ a ] 1412da489cd246702bee5938545b18a6f710ed214bcJamie Gennis // [ b1 ] []<- b2 where b2.duration = 0 and b2.end == a.end. 1422da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var sB1 = group.pushSlice(newSliceNamed('b1', 1, 2)); 1432da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var sB2 = group.pushSlice(newSliceNamed('b2', 4, 0)); 1446e58f015d94bedc1072f08b30f0a5a6ac6e653efJamie Gennis var sA = group.pushSlice(newSliceNamed('a', 1, 3)); 1452da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 14666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var track = new SliceGroupTrack(new tracing.TimelineViewport()); 1472da489cd246702bee5938545b18a6f710ed214bcJamie Gennis track.group = group; 14866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var subRows = track.subRows; 1492da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 1502da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(0, track.badSlices_.length); 1512da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(2, subRows.length); 1522da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertArrayEquals([sA], subRows[0]); 1532da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertArrayEquals([sB1, sB2], subRows[1]); 15466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 1552da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 15666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('subRowBuilderOnGroup1', function() { 15788448d9ae4dfff1805045790ef5f32495d62abccJeff Brown var group = new SliceGroup(); 1582da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 1592da489cd246702bee5938545b18a6f710ed214bcJamie Gennis // Pattern being tested: 1602da489cd246702bee5938545b18a6f710ed214bcJamie Gennis // [ a ] [ c ] 1612da489cd246702bee5938545b18a6f710ed214bcJamie Gennis // [ b ] 1622da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var sA = group.pushSlice(newSliceNamed('a', 1, 3)); 1632da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var sB = group.pushSlice(newSliceNamed('b', 1.5, 1)); 1642da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var sC = group.pushSlice(newSliceNamed('c', 5, 0)); 1652da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 16666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var track = new SliceGroupTrack(new tracing.TimelineViewport()); 1672da489cd246702bee5938545b18a6f710ed214bcJamie Gennis track.group = group; 16866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var subRows = track.subRows; 1692da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 1702da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(0, track.badSlices_.length); 1712da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(2, subRows.length); 1722da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertArrayEquals([sA, sC], subRows[0]); 1732da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertArrayEquals([sB], subRows[1]); 17466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 1752da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 17666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('subRowBuilderOnGroup2', function() { 17788448d9ae4dfff1805045790ef5f32495d62abccJeff Brown var group = new SliceGroup(); 1782da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 1792da489cd246702bee5938545b18a6f710ed214bcJamie Gennis // Pattern being tested: 1802da489cd246702bee5938545b18a6f710ed214bcJamie Gennis // [ a ] [ d ] 1812da489cd246702bee5938545b18a6f710ed214bcJamie Gennis // [ b ] 1822da489cd246702bee5938545b18a6f710ed214bcJamie Gennis // [ c ] 1832da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var sA = group.pushSlice(newSliceNamed('a', 1, 3)); 1842da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var sB = group.pushSlice(newSliceNamed('b', 1.5, 1)); 1852da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var sC = group.pushSlice(newSliceNamed('c', 1.75, 0.5)); 1862da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var sD = group.pushSlice(newSliceNamed('c', 5, 0.25)); 1872da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 18866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var track = new SliceGroupTrack(new tracing.TimelineViewport()); 1892da489cd246702bee5938545b18a6f710ed214bcJamie Gennis track.group = group; 1902da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 19166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var subRows = track.subRows; 1922da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(0, track.badSlices_.length); 1932da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertEquals(3, subRows.length); 1942da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertArrayEquals([sA, sD], subRows[0]); 1952da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertArrayEquals([sB], subRows[1]); 1962da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assertArrayEquals([sC], subRows[2]); 19766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 1982da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 19966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('trackFiltering', function() { 20088448d9ae4dfff1805045790ef5f32495d62abccJeff Brown var group = new SliceGroup(); 2012da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 2022da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var sA = group.pushSlice(newSliceNamed('a', 1, 3)); 2032da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var sB = group.pushSlice(newSliceNamed('b', 1.5, 1)); 2042da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 20566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var track = new SliceGroupTrack(new tracing.TimelineViewport()); 2062da489cd246702bee5938545b18a6f710ed214bcJamie Gennis track.group = group; 2072da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 20866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals(2, track.subRows.length); 20966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertTrue(track.hasVisibleContent); 2102da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 21188448d9ae4dfff1805045790ef5f32495d62abccJeff Brown track.categoryFilter = new tracing.TitleFilter('x'); 21266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertFalse(track.hasVisibleContent); 2132da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 21488448d9ae4dfff1805045790ef5f32495d62abccJeff Brown track.categoryFilter = new tracing.TitleFilter('a'); 21566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertTrue(track.hasVisibleContent); 21666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals(1, track.subRows.length); 2172da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 21888448d9ae4dfff1805045790ef5f32495d62abccJeff Brown track.categoryFilter = new tracing.TitleFilter('b'); 21966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertTrue(track.hasVisibleContent); 22066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals(1, track.subRows.length); 22166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 22266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis}); 223