Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / third_party / trace-viewer / src / tracing / tracks / thread_track_test.js
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 'use strict';
6
7 tvcm.require('tracing.test_utils');
8 tvcm.require('tracing.timeline_track_view');
9 tvcm.require('tracing.tracks.thread_track');
10 tvcm.require('tvcm.ui.dom_helpers');
11
12 tvcm.unittest.testSuite('tracing.tracks.thread_track_test', function() {
13   var Process = tracing.trace_model.Process;
14   var Selection = tracing.Selection;
15   var Thread = tracing.trace_model.Thread;
16   var ThreadSlice = tracing.trace_model.ThreadSlice;
17   var ThreadTrack = tracing.tracks.ThreadTrack;
18   var Viewport = tracing.TimelineViewport;
19   var newAsyncSlice = tracing.test_utils.newAsyncSlice;
20   var newAsyncSliceNamed = tracing.test_utils.newAsyncSliceNamed;
21   var newSliceNamed = tracing.test_utils.newSliceNamed;
22
23   test('selectionHitTestingWithThreadTrack', function() {
24     var model = new tracing.TraceModel();
25     var p1 = model.getOrCreateProcess(1);
26     var t1 = p1.getOrCreateThread(1);
27     t1.sliceGroup.pushSlice(new ThreadSlice('', 'a', 0, 1, {}, 4));
28     t1.sliceGroup.pushSlice(new ThreadSlice('', 'b', 0, 5.1, {}, 4));
29
30     var testEl = document.createElement('div');
31     testEl.appendChild(tvcm.ui.createScopedStyle('heading { width: 100px; }'));
32     testEl.style.width = '600px';
33
34     var viewport = new Viewport(testEl);
35     var drawingContainer = new tracing.tracks.DrawingContainer(viewport);
36     testEl.appendChild(drawingContainer);
37
38     var track = new ThreadTrack(viewport);
39     drawingContainer.appendChild(track);
40     drawingContainer.updateCanvasSizeIfNeeded_();
41     track.thread = t1;
42
43     var y = track.getBoundingClientRect().top;
44     var h = track.getBoundingClientRect().height;
45     var wW = 10;
46     var vW = drawingContainer.canvas.getBoundingClientRect().width;
47     var dt = new tracing.TimelineDisplayTransform();
48     dt.xSetWorldBounds(0, wW, vW);
49     track.viewport.setDisplayTransformImmediately(dt);
50
51     var selection = new Selection();
52     var x = (1.5 / wW) * vW;
53     track.addIntersectingItemsInRangeToSelection(x, x + 1, y, y + 1, selection);
54     assertEquals(t1.sliceGroup.slices[0], selection[0]);
55
56     var selection = new Selection();
57     track.addIntersectingItemsInRangeToSelection(
58         (1.5 / wW) * vW, (1.8 / wW) * vW,
59         y, y + h, selection);
60     assertEquals(t1.sliceGroup.slices[0], selection[0]);
61   });
62
63   test('filterThreadSlices', function() {
64     var model = new tracing.TraceModel();
65     var thread = new Thread(new Process(model, 7), 1);
66     thread.sliceGroup.pushSlice(newSliceNamed('a', 0, 0));
67     thread.asyncSliceGroup.push(newAsyncSliceNamed('a', 0, 5, t, t));
68
69     var t = new ThreadTrack(new tracing.TimelineViewport());
70     t.thread = thread;
71
72     assertEquals(t.tracks_.length, 2);
73     assertTrue(t.tracks_[0] instanceof tracing.tracks.AsyncSliceGroupTrack);
74     assertTrue(t.tracks_[1] instanceof tracing.tracks.SliceGroupTrack);
75   });
76
77   test('sampleThreadSlices', function() {
78     var model = new tracing.TraceModel();
79     var thread = new Thread(new Process(model, 7), 1);
80     thread.addSample('a', 'b', 0);
81     thread.addSample('a', 'c', 5);
82     thread.addSample('aa', 'd', 10);
83     thread.addSample('aa', 'e', 15);
84     var t = new ThreadTrack(new tracing.TimelineViewport());
85     t.thread = thread;
86     assertEquals(1, t.tracks_.length);
87     assertTrue(t.tracks_[0] instanceof tracing.tracks.SliceTrack);
88     assertTrue(4, t.tracks_[0].slices.length);
89     var slices = t.tracks_[0].slices;
90     assertTrue(4, slices.length);
91     assertTrue(slices[0] instanceof tracing.trace_model.Sample);
92     assertTrue(slices[1] instanceof tracing.trace_model.Sample);
93     assertTrue(slices[2] instanceof tracing.trace_model.Sample);
94     assertTrue(slices[3] instanceof tracing.trace_model.Sample);
95   });
96 });