| Index: tools/telemetry/telemetry/web_perf/metrics/rendering_stats_unittest.py
|
| diff --git a/tools/telemetry/telemetry/web_perf/metrics/rendering_stats_unittest.py b/tools/telemetry/telemetry/web_perf/metrics/rendering_stats_unittest.py
|
| index 4ec6644e36a2d55c5b82e10caba530e7c2835aba..20b0132ac9a3b0ed8594edd008a3bcb5571bf2fb 100644
|
| --- a/tools/telemetry/telemetry/web_perf/metrics/rendering_stats_unittest.py
|
| +++ b/tools/telemetry/telemetry/web_perf/metrics/rendering_stats_unittest.py
|
| @@ -6,12 +6,9 @@ import random
|
| import unittest
|
|
|
| from telemetry.web_perf.metrics.rendering_stats import (
|
| - UI_COMP_NAME, BEGIN_COMP_NAME, END_COMP_NAME)
|
| -from telemetry.web_perf.metrics.rendering_stats import (
|
| - GetScrollInputLatencyEvents)
|
| -from telemetry.web_perf.metrics.rendering_stats import (
|
| - ComputeMouseWheelScrollLatency)
|
| -from telemetry.web_perf.metrics.rendering_stats import ComputeTouchScrollLatency
|
| + UI_COMP_NAME, BEGIN_COMP_NAME, ORIGINAL_COMP_NAME, END_COMP_NAME)
|
| +from telemetry.web_perf.metrics.rendering_stats import ComputeInputEventLatency
|
| +from telemetry.web_perf.metrics.rendering_stats import GetInputLatencyEvents
|
| from telemetry.web_perf.metrics.rendering_stats import HasRenderingStats
|
| from telemetry.web_perf.metrics.rendering_stats import RenderingStats
|
| from telemetry.web_perf.metrics.rendering_stats import NotEnoughFramesError
|
| @@ -67,12 +64,8 @@ class ReferenceRenderingStats(object):
|
| class ReferenceInputLatencyStats(object):
|
| """ Stores expected data for comparison with actual input latency stats """
|
| def __init__(self):
|
| - self.mouse_wheel_scroll_latency = []
|
| - self.touch_scroll_latency = []
|
| - self.js_touch_scroll_latency = []
|
| - self.mouse_wheel_scroll_events = []
|
| - self.touch_scroll_events = []
|
| - self.js_touch_scroll_events = []
|
| + self.input_event_latency = []
|
| + self.input_event = []
|
|
|
| def AddMainThreadRenderingStats(mock_timer, thread, first_frame,
|
| ref_stats = None):
|
| @@ -155,24 +148,26 @@ def AddImplThreadRenderingStats(mock_timer, thread, first_frame,
|
| data['visible_content_area']) * 100.0, 3))
|
|
|
|
|
| -def AddInputLatencyStats(mock_timer, input_type, start_thread, end_thread,
|
| +def AddInputLatencyStats(mock_timer, start_thread, end_thread,
|
| ref_latency_stats = None):
|
| """ Adds a random input latency stats event.
|
|
|
| - input_type: The input type for which the latency slice is generated.
|
| start_thread: The start thread on which the async slice is added.
|
| end_thread: The end thread on which the async slice is ended.
|
| ref_latency_stats: A ReferenceInputLatencyStats object for expected values.
|
| """
|
|
|
| mock_timer.Advance(2, 4)
|
| + original_comp_time = mock_timer.Get() * 1000.0
|
| + mock_timer.Advance(2, 4)
|
| ui_comp_time = mock_timer.Get() * 1000.0
|
| mock_timer.Advance(2, 4)
|
| begin_comp_time = mock_timer.Get() * 1000.0
|
| mock_timer.Advance(10, 20)
|
| end_comp_time = mock_timer.Get() * 1000.0
|
|
|
| - data = { UI_COMP_NAME: {'time': ui_comp_time},
|
| + data = { ORIGINAL_COMP_NAME: {'time': original_comp_time},
|
| + UI_COMP_NAME: {'time': ui_comp_time},
|
| BEGIN_COMP_NAME: {'time': begin_comp_time},
|
| END_COMP_NAME: {'time': end_comp_time} }
|
|
|
| @@ -183,7 +178,7 @@ def AddInputLatencyStats(mock_timer, input_type, start_thread, end_thread,
|
|
|
| async_sub_slice = tracing_async_slice.AsyncSlice(
|
| 'benchmark', 'InputLatency', timestamp)
|
| - async_sub_slice.args = {'data': data, 'step': input_type}
|
| + async_sub_slice.args = {'data': data}
|
| async_sub_slice.parent_slice = async_slice
|
| async_sub_slice.start_thread = start_thread
|
| async_sub_slice.end_thread = end_thread
|
| @@ -196,20 +191,9 @@ def AddInputLatencyStats(mock_timer, input_type, start_thread, end_thread,
|
| if not ref_latency_stats:
|
| return
|
|
|
| - if input_type == 'MouseWheel':
|
| - ref_latency_stats.mouse_wheel_scroll_events.append(async_sub_slice)
|
| - ref_latency_stats.mouse_wheel_scroll_latency.append(
|
| - (data[END_COMP_NAME]['time'] - data[BEGIN_COMP_NAME]['time']) / 1000.0)
|
| -
|
| - if input_type == 'GestureScrollUpdate':
|
| - ref_latency_stats.touch_scroll_events.append(async_sub_slice)
|
| - ref_latency_stats.touch_scroll_latency.append(
|
| - (data[END_COMP_NAME]['time'] - data[UI_COMP_NAME]['time']) / 1000.0)
|
| -
|
| - if input_type == 'TouchMove':
|
| - ref_latency_stats.js_touch_scroll_events.append(async_sub_slice)
|
| - ref_latency_stats.js_touch_scroll_latency.append(
|
| - (data[END_COMP_NAME]['time'] - data[UI_COMP_NAME]['time']) / 1000.0)
|
| + ref_latency_stats.input_event.append(async_sub_slice)
|
| + ref_latency_stats.input_event_latency.append(
|
| + (data[END_COMP_NAME]['time'] - data[ORIGINAL_COMP_NAME]['time']) / 1000.0)
|
|
|
| class RenderingStatsUnitTest(unittest.TestCase):
|
| def testHasRenderingStats(self):
|
| @@ -379,7 +363,7 @@ class RenderingStatsUnitTest(unittest.TestCase):
|
| self.assertEquals(stats.recorded_pixel_counts,
|
| renderer_ref_stats.recorded_pixel_counts)
|
|
|
| - def testScrollLatencyFromTimeline(self):
|
| + def testInputLatencyFromTimeline(self):
|
| timeline = model.TimelineModel()
|
|
|
| # Create a browser process and a renderer process.
|
| @@ -389,41 +373,26 @@ class RenderingStatsUnitTest(unittest.TestCase):
|
| renderer_main = renderer.GetOrCreateThread(tid = 21)
|
|
|
| timer = MockTimer()
|
| - ref_latency_stats = ReferenceInputLatencyStats()
|
| + ref_latency = ReferenceInputLatencyStats()
|
|
|
| # Create 10 input latency stats events for Action A.
|
| timer.Advance(2, 4)
|
| renderer_main.BeginSlice('webkit.console', 'ActionA', timer.Get(), '')
|
| for _ in xrange(0, 10):
|
| - AddInputLatencyStats(timer, 'MouseWheel', browser_main,
|
| - renderer_main, ref_latency_stats)
|
| - AddInputLatencyStats(timer, 'GestureScrollUpdate', browser_main,
|
| - renderer_main, ref_latency_stats)
|
| - AddInputLatencyStats(timer, 'TouchMove', browser_main,
|
| - renderer_main, ref_latency_stats)
|
| + AddInputLatencyStats(timer, browser_main, renderer_main, ref_latency)
|
| timer.Advance(2, 4)
|
| renderer_main.EndSlice(timer.Get())
|
|
|
| # Create 5 input latency stats events not within any action.
|
| timer.Advance(2, 4)
|
| for _ in xrange(0, 5):
|
| - AddInputLatencyStats(timer, 'MouseWheel', browser_main,
|
| - renderer_main, None)
|
| - AddInputLatencyStats(timer, 'GestureScrollUpdate', browser_main,
|
| - renderer_main, None)
|
| - AddInputLatencyStats(timer, 'TouchMove', browser_main,
|
| - renderer_main, None)
|
| + AddInputLatencyStats(timer, browser_main, renderer_main, None)
|
|
|
| # Create 10 input latency stats events for Action B.
|
| timer.Advance(2, 4)
|
| renderer_main.BeginSlice('webkit.console', 'ActionB', timer.Get(), '')
|
| for _ in xrange(0, 10):
|
| - AddInputLatencyStats(timer, 'MouseWheel', browser_main,
|
| - renderer_main, ref_latency_stats)
|
| - AddInputLatencyStats(timer, 'GestureScrollUpdate', browser_main,
|
| - renderer_main, ref_latency_stats)
|
| - AddInputLatencyStats(timer, 'TouchMove', browser_main,
|
| - renderer_main, ref_latency_stats)
|
| + AddInputLatencyStats(timer, browser_main, renderer_main, ref_latency)
|
| timer.Advance(2, 4)
|
| renderer_main.EndSlice(timer.Get())
|
|
|
| @@ -431,21 +400,14 @@ class RenderingStatsUnitTest(unittest.TestCase):
|
| timer.Advance(2, 4)
|
| renderer_main.BeginSlice('webkit.console', 'ActionA', timer.Get(), '')
|
| for _ in xrange(0, 10):
|
| - AddInputLatencyStats(timer, 'MouseWheel', browser_main,
|
| - renderer_main, ref_latency_stats)
|
| - AddInputLatencyStats(timer, 'GestureScrollUpdate', browser_main,
|
| - renderer_main, ref_latency_stats)
|
| - AddInputLatencyStats(timer, 'TouchMove', browser_main,
|
| - renderer_main, ref_latency_stats)
|
| + AddInputLatencyStats(timer, browser_main, renderer_main, ref_latency)
|
| timer.Advance(2, 4)
|
| renderer_main.EndSlice(timer.Get())
|
|
|
| browser.FinalizeImport()
|
| renderer.FinalizeImport()
|
|
|
| - mouse_wheel_scroll_events = []
|
| - touch_scroll_events = []
|
| - js_touch_scroll_events = []
|
| + input_events = []
|
|
|
| timeline_markers = timeline.FindTimelineMarkers(
|
| ['ActionA', 'ActionB', 'ActionA'])
|
| @@ -453,25 +415,8 @@ class RenderingStatsUnitTest(unittest.TestCase):
|
| for marker in timeline_markers ]:
|
| if timeline_range.is_empty:
|
| continue
|
| - tmp_mouse_events = GetScrollInputLatencyEvents(
|
| - 'MouseWheel', browser, timeline_range)
|
| - tmp_touch_scroll_events = GetScrollInputLatencyEvents(
|
| - 'GestureScrollUpdate', browser, timeline_range)
|
| - tmp_js_touch_scroll_events = GetScrollInputLatencyEvents(
|
| - 'TouchMove', browser, timeline_range)
|
| - mouse_wheel_scroll_events.extend(tmp_mouse_events)
|
| - touch_scroll_events.extend(tmp_touch_scroll_events)
|
| - js_touch_scroll_events.extend(tmp_js_touch_scroll_events)
|
| -
|
| - self.assertEquals(mouse_wheel_scroll_events,
|
| - ref_latency_stats.mouse_wheel_scroll_events)
|
| - self.assertEquals(touch_scroll_events,
|
| - ref_latency_stats.touch_scroll_events)
|
| - self.assertEquals(js_touch_scroll_events,
|
| - ref_latency_stats.js_touch_scroll_events)
|
| - self.assertEquals(ComputeMouseWheelScrollLatency(mouse_wheel_scroll_events),
|
| - ref_latency_stats.mouse_wheel_scroll_latency)
|
| - self.assertEquals(ComputeTouchScrollLatency(touch_scroll_events),
|
| - ref_latency_stats.touch_scroll_latency)
|
| - self.assertEquals(ComputeTouchScrollLatency(js_touch_scroll_events),
|
| - ref_latency_stats.js_touch_scroll_latency)
|
| + input_events.extend(GetInputLatencyEvents(browser, timeline_range))
|
| +
|
| + self.assertEquals(input_events, ref_latency.input_event)
|
| + self.assertEquals(ComputeInputEventLatency(input_events),
|
| + ref_latency.input_event_latency)
|
|
|