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 5d92f1faccf80ad6c73e286733ddb03c3238dead..d4f77af1c1aa50427167bb73599df3cd965a29ee 100644 |
--- a/tools/telemetry/telemetry/web_perf/metrics/rendering_stats_unittest.py |
+++ b/tools/telemetry/telemetry/web_perf/metrics/rendering_stats_unittest.py |
@@ -10,8 +10,11 @@ import telemetry.timeline.bounds as timeline_bounds |
from telemetry.timeline import model |
from telemetry.util.statistics import DivideIfPossibleOrZero |
from telemetry.web_perf.metrics.rendering_stats import ( |
- UI_COMP_NAME, BEGIN_COMP_NAME, ORIGINAL_COMP_NAME, END_COMP_NAME) |
-from telemetry.web_perf.metrics.rendering_stats import ComputeInputEventLatency |
+ UI_COMP_NAME, BEGIN_COMP_NAME, ORIGINAL_COMP_NAME, |
+ BEGIN_SCROLL_UPDATE_COMP_NAME, FORWARD_SCROLL_UPDATE_COMP_NAME, |
+ END_COMP_NAME) |
+from telemetry.web_perf.metrics.rendering_stats import ( |
+ ComputeInputEventLatencies) |
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 NotEnoughFramesError |
@@ -66,6 +69,7 @@ class ReferenceInputLatencyStats(object): |
def __init__(self): |
self.input_event_latency = [] |
self.input_event = [] |
+ self.scroll_update_latency = [] |
def AddMainThreadRenderingStats(mock_timer, thread, first_frame, |
ref_stats = None): |
@@ -163,6 +167,8 @@ def AddInputLatencyStats(mock_timer, start_thread, end_thread, |
ui_comp_time = mock_timer.Get() * 1000.0 |
mock_timer.Advance(2, 4) |
begin_comp_time = mock_timer.Get() * 1000.0 |
+ mock_timer.Advance(2, 4) |
+ forward_comp_time = mock_timer.Get() * 1000.0 |
mock_timer.Advance(10, 20) |
end_comp_time = mock_timer.Get() * 1000.0 |
@@ -188,12 +194,37 @@ def AddInputLatencyStats(mock_timer, start_thread, end_thread, |
async_slice.end_thread = end_thread |
start_thread.AddAsyncSlice(async_slice) |
+ # Add scroll update latency info. |
+ scroll_update_data = { |
+ BEGIN_SCROLL_UPDATE_COMP_NAME: {'time': begin_comp_time}, |
+ FORWARD_SCROLL_UPDATE_COMP_NAME: {'time': forward_comp_time}, |
+ END_COMP_NAME: {'time': end_comp_time} } |
+ |
+ scroll_async_slice = tracing_async_slice.AsyncSlice( |
+ 'benchmark', 'InputLatency', timestamp) |
+ |
+ scroll_async_sub_slice = tracing_async_slice.AsyncSlice( |
+ 'benchmark', 'InputLatency', timestamp) |
+ scroll_async_sub_slice.args = {'data': scroll_update_data} |
+ scroll_async_sub_slice.parent_slice = scroll_async_slice |
+ scroll_async_sub_slice.start_thread = start_thread |
+ scroll_async_sub_slice.end_thread = end_thread |
+ |
+ scroll_async_slice.sub_slices.append(scroll_async_sub_slice) |
+ scroll_async_slice.start_thread = start_thread |
+ scroll_async_slice.end_thread = end_thread |
+ start_thread.AddAsyncSlice(scroll_async_slice) |
+ |
if not ref_latency_stats: |
return |
ref_latency_stats.input_event.append(async_sub_slice) |
+ ref_latency_stats.input_event.append(scroll_async_sub_slice) |
ref_latency_stats.input_event_latency.append( |
(data[END_COMP_NAME]['time'] - data[ORIGINAL_COMP_NAME]['time']) / 1000.0) |
+ ref_latency_stats.scroll_update_latency.append( |
+ (scroll_update_data[END_COMP_NAME]['time'] - |
+ scroll_update_data[BEGIN_SCROLL_UPDATE_COMP_NAME]['time']) / 1000.0) |
class RenderingStatsUnitTest(unittest.TestCase): |
@@ -419,5 +450,9 @@ class RenderingStatsUnitTest(unittest.TestCase): |
input_events.extend(GetInputLatencyEvents(browser, timeline_range)) |
self.assertEquals(input_events, ref_latency.input_event) |
- self.assertEquals(ComputeInputEventLatency(input_events), |
+ input_event_latency_result, scroll_update_latency_result = ( |
+ ComputeInputEventLatencies(input_events)) |
+ self.assertEquals(input_event_latency_result, |
ref_latency.input_event_latency) |
+ self.assertEquals(scroll_update_latency_result, |
+ ref_latency.scroll_update_latency) |