diff options
Diffstat (limited to 'chromium/third_party/catapult/tracing/tracing/importer/user_model_builder_test.html')
-rw-r--r-- | chromium/third_party/catapult/tracing/tracing/importer/user_model_builder_test.html | 883 |
1 files changed, 0 insertions, 883 deletions
diff --git a/chromium/third_party/catapult/tracing/tracing/importer/user_model_builder_test.html b/chromium/third_party/catapult/tracing/tracing/importer/user_model_builder_test.html deleted file mode 100644 index 9938675bc42..00000000000 --- a/chromium/third_party/catapult/tracing/tracing/importer/user_model_builder_test.html +++ /dev/null @@ -1,883 +0,0 @@ -<!DOCTYPE html> -<!-- -Copyright (c) 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="/tracing/extras/chrome/cc/input_latency_async_slice.html"> -<link rel="import" href="/tracing/extras/chrome/chrome_test_utils.html"> -<link rel="import" href="/tracing/importer/user_expectation_verifier.html"> - -<script> -'use strict'; - -tr.b.unittest.testSuite(function() { - var INPUT_TYPE = tr.e.cc.INPUT_EVENT_TYPE_NAMES; - var chrome_test_utils = tr.e.chrome.ChromeTestUtils; - var UserExpectationVerifier = tr.importer.UserExpectationVerifier; - - function addFrameEventForInput(model, event) { - var frame = chrome_test_utils.addFrameEvent(model, - {start: event.start, end: event.end, isTopLevel: true}); - model.flowEvents.push(tr.c.TestUtils.newFlowEventEx({ - id: event.id, - start: event.start, - end: event.end, - startSlice: frame, - endSlice: frame - })); - } - - test('empty', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - }; - verifier.expectedIRs = [ - ]; - verifier.verify(); - }); - - test('slowMouseMoveResponses', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addInputEvent( - model, INPUT_TYPE.MOUSE_DOWN, {start: 0, end: 10}); - var mouseMove = chrome_test_utils.addInputEvent( - model, INPUT_TYPE.MOUSE_MOVE, {start: 10, end: 20, id: '0x100'}); - addFrameEventForInput(model, mouseMove); - - mouseMove = chrome_test_utils.addInputEvent( - model, INPUT_TYPE.MOUSE_MOVE, {start: 70, end: 80, id: '0x101'}); - addFrameEventForInput(model, mouseMove); - - mouseMove = chrome_test_utils.addInputEvent( - model, INPUT_TYPE.MOUSE_MOVE, {start: 130, end: 140, id: '0x102'}); - addFrameEventForInput(model, mouseMove); - }; - verifier.expectedIRs = [ - {title: 'Idle', start: 0, end: 10, eventCount: 0}, - {title: 'Mouse Response', start: 10, end: 20, eventCount: 4}, - {title: 'Idle', start: 20, end: 70, eventCount: 0}, - {title: 'Mouse Response', start: 70, end: 80, eventCount: 3}, - {title: 'Idle', start: 80, end: 130, eventCount: 0}, - {title: 'Mouse Response', start: 130, end: 140, eventCount: 3} - ]; - verifier.verify(); - }); - - test('mouseEventResponses', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - var mouseDown = chrome_test_utils.addInputEvent( - model, INPUT_TYPE.MOUSE_DOWN, {start: 0, end: 50, id: '0x100'}); - addFrameEventForInput(model, mouseDown); - - var mouseUp = chrome_test_utils.addInputEvent(model, INPUT_TYPE.MOUSE_UP, - {start: 50, end: 100, id: '0x101'}); - addFrameEventForInput(model, mouseUp); - - var mouseMove = chrome_test_utils.addInputEvent( - model, INPUT_TYPE.MOUSE_MOVE, {start: 200, end: 250, id: '0x102'}); - addFrameEventForInput(model, mouseMove); - }; - verifier.expectedIRs = [ - {title: 'Mouse Response', start: 0, end: 50, eventCount: 3}, - {title: 'Mouse Response', start: 50, end: 100, eventCount: 3}, - {title: 'Idle', start: 100, end: 200, eventCount: 0}, - {title: 'Mouse Response', start: 200, end: 250, eventCount: 3} - ]; - verifier.verify(); - }); - - test('mouseEventsIgnored', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addInputEvent(model, INPUT_TYPE.MOUSE_MOVE, - {start: 0, end: 50}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.MOUSE_DOWN, - {start: 50, end: 100}); - }; - verifier.expectedIRs = [ - {title: 'Idle', start: 0, end: 100, eventCount: 0} - ]; - verifier.verify(); - }); - - test('unassociatedEvents', function() { - // Unassociated ThreadSlices that start during an Idle should be associated - // with it. Expect the Idle IR to have 2 associated events: both of the - // ThreadSlices in the model. - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - var start = tr.c.TestUtils.newSliceEx( - {title: 'model start', start: 0, end: 1, type: tr.model.ThreadSlice}); - start.isTopLevel = true; - model.browserMain.sliceGroup.pushSlice(start); - - var end = tr.c.TestUtils.newSliceEx( - {title: 'model end', start: 9, end: 10, type: tr.model.ThreadSlice}); - end.isTopLevel = true; - model.browserMain.sliceGroup.pushSlice(end); - }; - verifier.expectedIRs = [ - {title: 'Idle', start: 0, end: 10, eventCount: 2} - ]; - verifier.verify(); - }); - - test('stillLoading', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addFrameEvent(model, {start: 0, end: 10}); - chrome_test_utils.addNavigationStartEvent(model, {start: 10}); - chrome_test_utils.addFrameEvent(model, {start: 19, end: 20}); - }; - verifier.expectedIRs = [ - {title: 'Idle', start: 0, end: 10, eventCount: 0}, - {title: 'Successful Load', start: 10, end: 20, eventCount: 0} - ]; - verifier.verify(); - }); - - test('overlappingIdleAndLoadCollectUnassociatedEvents', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addFrameEvent(model, {start: 0, end: 10}); - chrome_test_utils.addNavigationStartEvent(model, {start: 10}); - chrome_test_utils.addFirstContentfulPaintEvent(model, {start: 30}); - chrome_test_utils.addFrameEvent(model, {start: 35, end: 40}); - // 3 Idle events. - chrome_test_utils.addRenderingEvent(model, {start: 5, end: 15}); - chrome_test_utils.addRenderingEvent(model, {start: 11, end: 15}); - chrome_test_utils.addRenderingEvent(model, {start: 13, end: 15}); - // 1 Idle event. - chrome_test_utils.addRenderingEvent(model, {start: 35, end: 36}); - }; - verifier.expectedIRs = [ - {title: 'Idle', start: 0, end: 10, eventCount: 3}, - {title: 'Successful Load', start: 10, end: 30, eventCount: 0}, - {title: 'Idle', start: 30, end: 40, eventCount: 1} - ]; - verifier.verify(); - }); - - test('flingFlingFling', function() { - // This trace gave me so many different kinds of trouble that I'm just going - // to copy it straight in here, without trying to clarify it at all. - // measurmt-traces/mobile/cnet_fling_up_fling_down_motox_2013.json - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addFrameEvent(model, {start: 0, end: 10}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_START, - {start: 919, end: 998}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.FLING_CANCEL, - {start: 919, end: 1001}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TAP_DOWN, - {start: 919, end: 1001}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TAP_CANCEL, - {start: 974, end: 1020}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_BEGIN, - {start: 974, end: 1020}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_UPDATE, - {start: 974, end: 1040}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_MOVE, - {start: 974, end: 1054}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_MOVE, - {start: 990, end: 1021}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_UPDATE, - {start: 990, end: 1052}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_MOVE, - {start: 1006, end: 1021}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_MOVE, - {start: 1022, end: 1036}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_UPDATE, - {start: 1022, end: 1052}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_MOVE, - {start: 1038, end: 1049}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_UPDATE, - {start: 1038, end: 1068}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_END, - {start: 1046, end: 1050}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.FLING_START, - {start: 1046, end: 1077}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_START, - {start: 1432, end: 2238}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.FLING_CANCEL, - {start: 1432, end: 2241}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_MOVE, - {start: 1516, end: 2605}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_BEGIN, - {start: 1532, end: 2274}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_UPDATE, - {start: 1532, end: 2294}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_UPDATE, - {start: 1549, end: 2310}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_END, - {start: 1627, end: 2275}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.FLING_START, - {start: 1627, end: 2310}); - chrome_test_utils.addFrameEvent(model, {start: 2990, end: 3000}); - }; - verifier.expectedIRs = [ - {title: 'Idle', start: 0, end: 919, eventCount: 0}, - {title: 'Scroll,Tap,Touch Response', start: 919, end: 1054, - eventCount: 6, isAnimationBegin: true}, - {title: 'Scroll,Touch Animation', start: 1054, end: 1068, - eventCount: 8}, - {title: 'Fling Animation', start: 1054, end: 1432, - eventCount: 2}, - {title: 'Scroll,Touch Response', start: 1432, end: 2605, - eventCount: 5, isAnimationBegin: true}, - {title: 'Scroll Animation', start: 1549, end: 2310, - eventCount: 1}, - {title: 'Fling Animation', start: 2605, end: 3000, - eventCount: 1} - ]; - verifier.verify(); - }); - - test('keyboardEvents', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addInputEvent(model, INPUT_TYPE.KEY_DOWN_RAW, - {start: 0, end: 45}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.CHAR, - {start: 10, end: 50}); - }; - verifier.expectedIRs = [ - {title: 'Keyboard Response', start: 0, end: 50, eventCount: 2} - ]; - verifier.verify(); - }); - - test('mouseResponses', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addInputEvent(model, INPUT_TYPE.CLICK, - {start: 0, end: 100}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.CONTEXT_MENU, - {start: 200, end: 300}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.MOUSE_WHEEL, - {start: 400, end: 500}); - }; - verifier.expectedIRs = [ - {title: 'Mouse Response', start: 0, end: 100, eventCount: 1}, - {title: 'Idle', start: 100, end: 200, eventCount: 0}, - {title: 'Mouse Response', start: 200, end: 300, eventCount: 1}, - {title: 'Idle', start: 300, end: 400, eventCount: 0}, - {title: 'MouseWheel Response', start: 400, end: 500, - eventCount: 1} - ]; - verifier.verify(); - }); - - test('mouseWheelAnimation', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addInputEvent(model, INPUT_TYPE.MOUSE_WHEEL, - {start: 0, end: 20}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.MOUSE_WHEEL, - {start: 16, end: 36}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.MOUSE_WHEEL, - {start: 55, end: 75}); - - // This threshold uses both events' start times, not end...start. - chrome_test_utils.addInputEvent(model, INPUT_TYPE.MOUSE_WHEEL, - {start: 100, end: 150}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.MOUSE_WHEEL, - {start: 141, end: 191}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.MOUSE_WHEEL, - {start: 182, end: 200}); - }; - verifier.expectedIRs = [ - {title: 'MouseWheel Response', start: 0, end: 20, eventCount: 1}, - {title: 'MouseWheel Animation', start: 20, end: 75, - eventCount: 2}, - {title: 'Idle', start: 75, end: 100, eventCount: 0}, - {title: 'MouseWheel Response', start: 100, end: 150, - eventCount: 1}, - {title: 'MouseWheel Response', start: 141, end: 191, - eventCount: 1}, - {title: 'MouseWheel Response', start: 182, end: 200, - eventCount: 1} - ]; - verifier.verify(); - }); - - test('mouseDownUpResponse', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addInputEvent(model, INPUT_TYPE.MOUSE_DOWN, - {start: 0, end: 100}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.MOUSE_UP, - {start: 200, end: 210}); - }; - verifier.expectedIRs = [ - {title: 'Idle', start: 0, end: 200, eventCount: 0}, - {title: 'Mouse Response', start: 200, end: 210, eventCount: 2} - ]; - verifier.verify(); - }); - - test('ignoreLoneMouseMoves', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addInputEvent(model, INPUT_TYPE.MOUSE_MOVE, - {start: 0, end: 100}); - }; - verifier.expectedIRs = [ - {title: 'Idle', start: 0, end: 100, eventCount: 0} - ]; - verifier.verify(); - }); - - test('mouseDrags', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addInputEvent( - model, INPUT_TYPE.MOUSE_DOWN, {start: 0, end: 100}); - var mouseMove = chrome_test_utils.addInputEvent( - model, INPUT_TYPE.MOUSE_MOVE, {start: 200, end: 215}); - addFrameEventForInput(model, mouseMove); - mouseMove = chrome_test_utils.addInputEvent( - model, INPUT_TYPE.MOUSE_MOVE, {start: 210, end: 220}); - addFrameEventForInput(model, mouseMove); - mouseMove = chrome_test_utils.addInputEvent( - model, INPUT_TYPE.MOUSE_MOVE, {start: 221, end: 240}); - addFrameEventForInput(model, mouseMove); - }; - verifier.expectedIRs = [ - {title: 'Idle', start: 0, end: 200, eventCount: 0}, - {title: 'Mouse Response', start: 200, end: 215, eventCount: 4}, - {title: 'Mouse Animation', start: 215, end: 240, eventCount: 6} - ]; - verifier.verify(); - }); - - test('twoScrollsNoFling', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_BEGIN, - {start: 0, end: 100}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_UPDATE, - {start: 20, end: 100}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_UPDATE, - {start: 40, end: 100}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_UPDATE, - {start: 60, end: 150}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_UPDATE, - {start: 70, end: 150}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_END, - {start: 80, end: 150}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_BEGIN, - {start: 300, end: 400}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_UPDATE, - {start: 320, end: 400}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_UPDATE, - {start: 330, end: 450}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_UPDATE, - {start: 340, end: 450}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_UPDATE, - {start: 350, end: 500}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_END, - {start: 360, end: 500}); - }; - verifier.expectedIRs = [ - {title: 'Scroll Response', start: 0, end: 100, eventCount: 2, - isAnimationBegin: true}, - {title: 'Scroll Animation', start: 100, end: 150, eventCount: 4}, - {title: 'Idle', start: 150, end: 300, eventCount: 0}, - {title: 'Scroll Response', start: 300, end: 400, eventCount: 2, - isAnimationBegin: true}, - {title: 'Scroll Animation', start: 400, end: 500, eventCount: 4} - ]; - verifier.verify(); - }); - - test('cssAnimations', function() { - // CSS Animations happen on the renderer process, not the browser process. - // They are merged if they overlap. - // They are merged with other kinds of animations. - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addEvent(model.rendererMain, { - title: 'Animation', start: 0, end: 100, isTopLevel: true}); - chrome_test_utils.addFrameEvent(model, {start: 10, end: 20}); - chrome_test_utils.addEvent(model.rendererMain, { - title: 'Animation', start: 131, end: 200, isTopLevel: true}); - chrome_test_utils.addFrameEvent(model, {start: 150, end: 160}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.FLING_START, - {start: 150, end: 180}); - chrome_test_utils.addFrameEvent(model, {start: 290, end: 300}); - }; - verifier.expectedIRs = [ - {title: 'CSS Animation', start: 0, end: 200, eventCount: 4}, - {title: 'Fling Animation', start: 150, end: 300, eventCount: 1} - ]; - verifier.verify(); - }); - - test('cssAnimationStates', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - // If a top-level Animation async slice does not have state-change instant - // subSlices, then assume that the animation was running throughout the - // async slice. - chrome_test_utils.addEvent(model.rendererMain, { - title: 'Animation', start: 181, end: 250, isTopLevel: true}); - chrome_test_utils.addFrameEvent(model, {start: 200, end: 240}); - - // Animation ranges should be merged if there is less than 32ms dead time - // between them. - - // If a top-level Animation async slice has state-change instant events, - // then run a state machine to find the time ranges when the animation was - // actually running. - - // This animation was running from 10-40 and 50-60. - var animationA = tr.c.TestUtils.newAsyncSliceEx( - {title: 'Animation', start: 50, end: 500, isTopLevel: true}); - animationA.subSlices.push(tr.c.TestUtils.newInstantEvent( - {title: 'Animation', start: 71, args: {state: 'running'}})); - animationA.subSlices.push(tr.c.TestUtils.newInstantEvent( - {title: 'Animation', start: 104, args: {state: 'pending'}})); - animationA.subSlices.push(tr.c.TestUtils.newInstantEvent( - {title: 'Animation', start: 137, args: {state: 'running'}})); - animationA.subSlices.push(tr.c.TestUtils.newInstantEvent( - {title: 'Animation', start: 150, args: {state: 'paused'}})); - animationA.subSlices.push(tr.c.TestUtils.newInstantEvent( - {title: 'Animation', start: 281, args: {state: 'running'}})); - animationA.subSlices.push(tr.c.TestUtils.newInstantEvent( - {title: 'Animation', start: 350, args: {state: 'idle'}})); - model.rendererMain.asyncSliceGroup.push(animationA); - chrome_test_utils.addFrameEvent(model, {start: 80, end: 90}); - chrome_test_utils.addFrameEvent(model, {start: 290, end: 300}); - - // An animation without a frame event isn't really an animation. - chrome_test_utils.addEvent(model.rendererMain, { - title: 'Animation', start: 350, end: 382, isTopLevel: true}); - - // This animation was running from model.bounds.min-50 and - // 70-model.bounds.max. - var animationB = tr.c.TestUtils.newAsyncSliceEx( - {title: 'Animation', start: 0, end: 500, isTopLevel: true}); - animationB.subSlices.push(tr.c.TestUtils.newInstantEvent( - {title: 'Animation', start: 40, args: {state: 'finished'}})); - animationB.subSlices.push(tr.c.TestUtils.newInstantEvent( - {title: 'Animation', start: 382, args: {state: 'running'}})); - model.rendererMain.asyncSliceGroup.push(animationB); - chrome_test_utils.addFrameEvent(model, {start: 10, end: 20}); - chrome_test_utils.addFrameEvent(model, {start: 390, end: 400}); - }; - verifier.expectedIRs = [ - {title: 'CSS Animation', start: 0, end: 350, eventCount: 15}, - {title: 'Idle', start: 350, end: 382, eventCount: 0}, - {title: 'CSS Animation', start: 382, end: 500, eventCount: 4}, - ]; - verifier.verify(); - }); - - test('flingThatIsntstopped', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addInputEvent(model, INPUT_TYPE.FLING_START, - {start: 32, end: 100}); - chrome_test_utils.addFlingAnimationEvent(model, {start: 38, end: 200}); - chrome_test_utils.addFrameEvent(model, {start: 290, end: 300}); - }; - verifier.expectedIRs = [ - {title: 'Fling Animation', start: 32, end: 200, eventCount: 2}, - {title: 'Idle', start: 200, end: 300, eventCount: 0} - ]; - verifier.verify(); - }); - - test('flingThatIsStopped', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addInputEvent(model, INPUT_TYPE.FLING_START, - {start: 32, end: 100}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.FLING_CANCEL, - {start: 105, end: 150}); - }; - verifier.expectedIRs = [ - {title: 'Fling Animation', start: 32, end: 105, eventCount: 2}, - {title: 'Idle', start: 105, end: 150, eventCount: 0} - ]; - verifier.verify(); - }); - - test('flingFling', function() { - // measurmt-traces/mobile/facebook_obama_scroll_dialog_box.html - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addInputEvent(model, INPUT_TYPE.FLING_START, - {start: 0, end: 30}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_START, - {start: 100, end: 130}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.FLING_CANCEL, - {start: 100, end: 130}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_MOVE, - {start: 110, end: 140}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_MOVE, - {start: 170, end: 180}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_END, - {start: 200, end: 210}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.FLING_START, - {start: 200, end: 220}); - chrome_test_utils.addFrameEvent(model, {start: 230, end: 240}); - }; - verifier.expectedIRs = [ - {title: 'Fling Animation', start: 0, end: 100, eventCount: 2}, - {title: 'Touch Response', start: 100, end: 140, eventCount: 2, - isAnimationBegin: true}, - {title: 'Touch Animation', start: 140, end: 210, eventCount: 2}, - {title: 'Fling Animation', start: 200, end: 240, eventCount: 1} - ]; - verifier.verify(); - }); - - test('load', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addNavigationStartEvent(model, {start: 0}); - chrome_test_utils.addFirstContentfulPaintEvent(model, {start: 20}); - }; - verifier.expectedIRs = [ - {title: 'Successful Load', start: 0, end: 20, eventCount: 0} - ]; - verifier.verify(); - }); - - test('loadStartup', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addRenderingEvent(model, {start: 2, end: 3}); - chrome_test_utils.addCreateThreadsEvent(model, {start: 5, end: 10}); - // Throw an second one in there, just to try to confuse the algo. - chrome_test_utils.addCreateThreadsEvent(model, {start: 25, end: 30}); - chrome_test_utils.addFrameEvent(model, {start: 11, end: 20}); - }; - verifier.expectedIRs = [ - {title: 'Startup', start: 2, end: 20, eventCount: 2}, - {title: 'Idle', start: 20, end: 30, eventCount: 0} - ]; - verifier.verify(); - }); - - test('totalIdle', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addFrameEvent(model, {start: 0, end: 10}); - }; - verifier.expectedIRs = [ - {title: 'Idle', start: 0, end: 10, eventCount: 0} - ]; - verifier.verify(); - }); - - test('multipleIdles', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addFrameEvent(model, {start: 0, end: 1}); - chrome_test_utils.addNavigationStartEvent(model, {start: 1}); - chrome_test_utils.addFirstContentfulPaintEvent(model, {start: 4}); - chrome_test_utils.addFrameEvent(model, {start: 12, end: 13}); - }; - verifier.expectedIRs = [ - {title: 'Idle', start: 0, end: 1, eventCount: 0}, - {title: 'Successful Load', start: 1, end: 4, eventCount: 0}, - {title: 'Idle', start: 4, end: 13, eventCount: 0} - ]; - verifier.verify(); - }); - - test('touchStartTouchEndTap', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_START, - {start: 0, end: 10}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_END, - {start: 200, end: 210}); - }; - verifier.expectedIRs = [ - {title: 'Touch Response', start: 0, end: 210, eventCount: 2, - isAnimationBegin: true} - ]; - verifier.verify(); - }); - - test('touchMoveResponseAnimation', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_START, - {start: 0, end: 10}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_MOVE, - {start: 50, end: 100}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_MOVE, - {start: 70, end: 150}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_END, - {start: 200, end: 300}); - }; - verifier.expectedIRs = [ - {title: 'Touch Response', start: 0, end: 100, eventCount: 2, - isAnimationBegin: true}, - {title: 'Touch Animation', start: 100, end: 300, eventCount: 2} - ]; - verifier.verify(); - }); - - test('tapEvents', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TAP, - {start: 0, end: 50}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TAP_DOWN, - {start: 300, end: 310}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TAP, - {start: 320, end: 350}); - }; - verifier.expectedIRs = [ - {title: 'Tap Response', start: 0, end: 50, eventCount: 1}, - {title: 'Idle', start: 50, end: 300, eventCount: 0}, - {title: 'Tap Response', start: 300, end: 350, eventCount: 2} - ]; - verifier.verify(); - }); - - test('tapAndTapCancelResponses', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TAP_DOWN, - {start: 0, end: 100}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TAP_CANCEL, - {start: 300, end: 350}); - }; - verifier.expectedIRs = [ - {title: 'Tap Response', start: 0, end: 100, eventCount: 1}, - {title: 'Idle', start: 100, end: 300, eventCount: 0}, - {title: 'Tap Response', start: 300, end: 350, eventCount: 1} - ]; - verifier.verify(); - }); - - test('tapCancelResponse', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TAP_DOWN, - {start: 0, end: 100}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TAP_CANCEL, - {start: 150, end: 200}); - }; - verifier.expectedIRs = [ - {title: 'Tap Response', start: 0, end: 200, eventCount: 2} - ]; - verifier.verify(); - }); - - test('pinchResponseAnimation', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addFrameEvent(model, {start: 0, end: 10}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.PINCH_BEGIN, - {start: 100, end: 150}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.PINCH_UPDATE, - {start: 130, end: 160}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.PINCH_UPDATE, - {start: 140, end: 200}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.PINCH_UPDATE, - {start: 150, end: 205}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.PINCH_UPDATE, - {start: 210, end: 220}); - // pause > 200ms - chrome_test_utils.addInputEvent(model, INPUT_TYPE.PINCH_UPDATE, - {start: 421, end: 470}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.PINCH_END, - {start: 460, end: 500}); - }; - verifier.expectedIRs = [ - {title: 'Idle', start: 0, end: 100, eventCount: 0}, - {title: 'Pinch Response', start: 100, end: 160, eventCount: 2, - isAnimationBegin: true}, - {title: 'Pinch Animation', start: 160, end: 220, eventCount: 3}, - {title: 'Idle', start: 220, end: 421, eventCount: 0}, - {title: 'Pinch Animation', start: 421, end: 500, eventCount: 2} - ]; - verifier.verify(); - }); - - test('tapThenScroll', function() { - // measurmt-traces/mobile/google_io_instrument_strumming.json - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_START, - {start: 0, end: 20}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_END, - {start: 40, end: 100}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_START, - {start: 50, end: 120}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_MOVE, - {start: 80, end: 150}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_MOVE, - {start: 180, end: 200}); - }; - verifier.expectedIRs = [ - {title: 'Touch Response', start: 0, end: 100, eventCount: 2, - isAnimationBegin: true}, - {title: 'Touch Response', start: 50, end: 150, eventCount: 2, - isAnimationBegin: true}, - {title: 'Touch Animation', start: 150, end: 200, eventCount: 1} - ]; - verifier.verify(); - }); - - test('pinchFlingTapTouchEventsOverlap', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addFrameEvent(model, {start: 0, end: 10}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_START, - {start: 20, end: 50}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TAP_DOWN, - {start: 20, end: 30}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.FLING_CANCEL, - {start: 20, end: 50}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_MOVE, - {start: 60, end: 100}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_START, - {start: 60, end: 110}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.PINCH_BEGIN, - {start: 60, end: 100}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TAP_CANCEL, - {start: 65, end: 75}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_MOVE, - {start: 70, end: 100}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.PINCH_UPDATE, - {start: 70, end: 100}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_UPDATE, - {start: 75, end: 100}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_MOVE, - {start: 80, end: 100}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_UPDATE, - {start: 85, end: 100}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_BEGIN, - {start: 75, end: 100}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_MOVE, - {start: 150, end: 200}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_UPDATE, - {start: 150, end: 200}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.FLING_START, - {start: 180, end: 210}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_END, - {start: 190, end: 210}); - chrome_test_utils.addFrameEvent(model, {start: 215, end: 220}); - }; - verifier.expectedIRs = [ - {title: 'Idle', start: 0, end: 20, eventCount: 0}, - {title: 'Pinch,Scroll,Tap,Touch Response', start: 20, end: 110, - eventCount: 9, isAnimationBegin: true}, - {title: 'Scroll,Touch Animation', start: 110, end: 210, - eventCount: 6}, - {title: 'Fling Animation', start: 180, end: 220, eventCount: 1} - ]; - verifier.verify(); - }); - - test('scrollThenFling', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_UPDATE, - {start: 0, end: 40}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_UPDATE, - {start: 50, end: 100}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.FLING_START, - {start: 80, end: 100}); - chrome_test_utils.addFrameEvent(model, {start: 190, end: 200}); - }; - verifier.expectedIRs = [ - {title: 'Scroll Animation', start: 0, end: 100, eventCount: 2}, - {title: 'Fling Animation', start: 80, end: 200, eventCount: 1} - ]; - verifier.verify(); - }); - - /* - This test was generated from - /test_data/measurmt-traces/mobile/fling_HN_to_rest.json - */ - test('flingHNToRest', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addEvent(model.browserMain, - {title: 'model start', start: 0, end: 1}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_START, - {start: 1274, end: 1297}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TAP_DOWN, - {start: 1274, end: 1305}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_MOVE, - {start: 1343, end: 1350}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_MOVE, - {start: 1359, end: 1366}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TAP_CANCEL, - {start: 1359, end: 1366}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_BEGIN, - {start: 1359, end: 1367}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_UPDATE, - {start: 1359, end: 1387}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_MOVE, - {start: 1375, end: 1385}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_UPDATE, - {start: 1375, end: 1416}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_MOVE, - {start: 1389, end: 1404}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_UPDATE, - {start: 1389, end: 1429}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_MOVE, - {start: 1405, end: 1418}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_UPDATE, - {start: 1405, end: 1449}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_MOVE, - {start: 1419, end: 1432}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.SCROLL_UPDATE, - {start: 1419, end: 1474}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_END, - {start: 1427, end: 1435}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.FLING_START, - {start: 1427, end: 1474}); - chrome_test_utils.addFlingAnimationEvent(model, {start: 1440, end: 2300}); - chrome_test_utils.addEvent(model.browserMain, - {title: 'model end', start: 3184, end: 3185}); - }; - verifier.expectedIRs = [ - {title: 'Idle', start: 0, end: 1274, eventCount: 0}, - {title: 'Scroll,Tap,Touch Response', start: 1274, end: 1387, - eventCount: 6, isAnimationBegin: true}, - {title: 'Scroll,Touch Animation', start: 1387, end: 1474, - eventCount: 10}, - {title: 'Fling Animation', start: 1427, end: 2300, - eventCount: 2}, - {title: 'Idle', start: 2300, end: 3185, eventCount: 0} - ]; - verifier.verify(); - }); - - test('TapResponseOverlappingTouchAnimation', function() { - var verifier = new UserExpectationVerifier(); - verifier.customizeModelCallback = function(model) { - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_MOVE, - {start: 0, end: 10}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_MOVE, - {start: 5, end: 15}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TOUCH_MOVE, - {start: 10, end: 20}); - chrome_test_utils.addInputEvent(model, INPUT_TYPE.TAP, - {start: 15, end: 100}); - }; - verifier.expectedIRs = [ - {title: 'Tap,Touch Response', start: 0, end: 100, - eventCount: 4} - ]; - verifier.verify(); - }); -}); -</script> |