| <!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="/extras/chrome/cc/input_latency_async_slice.html"> |
| <link rel="import" href="/core/test_utils.html"> |
| <link rel="import" href="/model/model.html"> |
| <link rel="import" href="/model/model_indices.html"> |
| |
| <script> |
| 'use strict'; |
| |
| tr.b.unittest.testSuite(function() { |
| var newAsyncSliceEx = tr.c.test_utils.newAsyncSliceEx; |
| var newSliceEx = tr.c.test_utils.newSliceEx; |
| var newFlowEventEx = tr.c.test_utils.newFlowEventEx; |
| var newModel = tr.c.test_utils.newModel; |
| |
| test('matchByType_oldStyle', function() { |
| var sOuter = newAsyncSliceEx({ |
| title: 'InputLatency', |
| cat: 'benchmark', |
| start: 0, |
| end: 10, |
| id: '0x100', |
| isTopLevel: true, |
| args: { |
| data: { |
| INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT: {'time' : 0}, |
| INPUT_EVENT_LATENCY_TERMINATED_FRAME_SWAP_COMPONENT: {time: 10} |
| } |
| } |
| }); |
| |
| var sInner = newAsyncSliceEx({ |
| title: 'InputLatency:GestureScrollUpdate', |
| cat: 'benchmark', |
| start: 2, |
| end: 10, |
| id: '0x100', |
| args: { |
| 'step': 'GestureScrollUpdate' |
| } |
| }); |
| sOuter.subSlices.push(sInner); |
| assert.isTrue(sOuter instanceof tr.e.cc.InputLatencyAsyncSlice); |
| assert.isTrue(sInner instanceof tr.e.cc.InputLatencyAsyncSlice); |
| assert.equal(sOuter.inputLatency, 10); |
| }); |
| |
| test('matchByType_newStyle', function() { |
| var sInfo = newAsyncSliceEx({ |
| title: 'InputLatency::GestureScrollUpdate', |
| cat: 'benchmark', |
| start: 2, |
| end: 10, |
| id: '0x100', |
| isTopLevel: true, |
| args: { |
| data: { |
| INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT: {'time' : 0}, |
| INPUT_EVENT_LATENCY_TERMINATED_FRAME_SWAP_COMPONENT: {time: 10} |
| } |
| } |
| }); |
| |
| assert.isTrue(sInfo instanceof tr.e.cc.InputLatencyAsyncSlice); |
| assert.equal(sInfo.inputLatency, 10); |
| }); |
| |
| test('matchByCategory', function() { |
| var sInfo = newAsyncSliceEx({ |
| title: 'InputLatency::BadTypeName', |
| cat: 'benchmark,latencyInfo', |
| start: 2, |
| end: 10, |
| id: '0x100', |
| isTopLevel: true, |
| args: { |
| data: { |
| INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT: {'time' : 0}, |
| INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT: {'time' : 0}, |
| INPUT_EVENT_LATENCY_TERMINATED_FRAME_SWAP_COMPONENT: {time: 10} |
| } |
| } |
| }); |
| |
| assert.isTrue(sInfo instanceof tr.e.cc.InputLatencyAsyncSlice); |
| assert.equal(sInfo.inputLatency, 10); |
| }); |
| |
| test('testGetAssociatedEvents', function() { |
| var m = newModel(function(m) { |
| |
| var p = m.getOrCreateProcess(1); |
| var t = p.getOrCreateThread(1); |
| |
| var s0 = newSliceEx({ |
| title: 'a', |
| start: 0.0, |
| duration: 0.5 |
| }); |
| |
| var s1 = newSliceEx({ |
| title: 'b', |
| start: 0.5, |
| duration: 0.5 |
| }); |
| |
| var s2 = newSliceEx({ |
| title: 'c', |
| start: 1.0, |
| duration: 0.5 |
| }); |
| |
| var f1 = newFlowEventEx({ |
| 'title': 'test1', |
| start: 0, |
| end: 10, |
| startSlice: s0, |
| endSlice: s1, |
| id: '0x100' |
| }); |
| |
| var f2 = newFlowEventEx({ |
| 'title': 'test2', |
| start: 20, |
| end: 30, |
| startSlice: s1, |
| endSlice: s2, |
| id: '0x100' |
| }); |
| |
| m.flowEvents.push(f1); |
| m.flowEvents.push(f2); |
| |
| m.as0 = newAsyncSliceEx({ |
| title: 'InputLatency::TestShouldReturnEmpty', |
| cat: 'benchmark,latencyInfo', |
| start: 2, |
| end: 10, |
| id: '0x101', |
| isTopLevel: true, |
| startThread: t |
| }); |
| |
| m.as1 = newAsyncSliceEx({ |
| title: 'InputLatency::TestShouldReturnTwoElements', |
| cat: 'benchmark,latencyInfo', |
| start: 2, |
| end: 10, |
| id: '0x100', |
| isTopLevel: true, |
| startThread: t |
| }); |
| |
| }); |
| |
| assert.equal(m.as0.associatedEvents.length, 0); |
| assert.equal(m.as1.associatedEvents.length, 5); |
| assert.equal(m.as1.associatedEvents[0].id, '0x100'); |
| }); |
| |
| }); |
| </script> |