| <!DOCTYPE html> |
| <!-- |
| Copyright 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="/perf_insights/mappers/scheduling/map_input_blockers.html"> |
| <link rel="import" href="/perf_insights/mre/mre_result.html"> |
| <link rel="import" href="/tracing/base/iteration_helpers.html"> |
| <link rel="import" href="/tracing/core/test_utils.html"> |
| <link rel="import" href="/tracing/extras/chrome/chrome_test_utils.html"> |
| |
| <script> |
| 'use strict'; |
| |
| tr.b.unittest.testSuite(function() { |
| var TestUtils = tr.c.TestUtils; |
| var ThreadSlice = tr.model.ThreadSlice; |
| |
| test('mapperTest', function() { |
| var m = tr.e.chrome.ChromeTestUtils.newChromeModel(function(m) { |
| var mainThread = m.rendererMain; |
| |
| // Set up a model with two events that are blocking input event handling. |
| mainThread.sliceGroup.pushSlice(TestUtils.newSliceEx({ |
| type: ThreadSlice, |
| start: -10, |
| duration: 15, |
| title: 'blockingEvent1' |
| })); |
| |
| mainThread.sliceGroup.pushSlice(TestUtils.newSliceEx({ |
| type: ThreadSlice, |
| start: 5, |
| duration: 4, |
| title: 'blockingEvent2' |
| })); |
| |
| var inputEvent = mainThread.sliceGroup.pushSlice(TestUtils.newSliceEx({ |
| type: ThreadSlice, |
| start: 10, |
| duration: 10, |
| title: 'LatencyInfo.Flow', |
| args: {step: 'HandleInputEventMain'} |
| })); |
| |
| var flow = TestUtils.newFlowEventEx({ |
| start: 0, |
| duration: 10 |
| }); |
| inputEvent.inFlowEvents.push(flow); |
| }); |
| |
| var result = new pi.mre.MreResult(); |
| pie.mapInputBlockersForTest(result, m); |
| |
| assert.equal(tr.b.dictionaryLength(result.pairs), 1); |
| |
| // The mapper computes the amount of delay each blocking event contributed |
| // to the input event. |
| var inputBlockers = result.pairs.inputBlockers; |
| assert.deepEqual(inputBlockers.blockingEvent1, [5]); |
| assert.deepEqual(inputBlockers.blockingEvent2, [4]); |
| }); |
| }); |
| |
| </script> |