| Index: tools/telemetry/telemetry/web_perf/timeline_interaction_record.py
|
| diff --git a/tools/telemetry/telemetry/web_perf/timeline_interaction_record.py b/tools/telemetry/telemetry/web_perf/timeline_interaction_record.py
|
| index 436538f8d65916db161b0d0d3c10a79845f40f0e..43f3248adbbcb8de958c81ecb19c6d7c8e742c70 100644
|
| --- a/tools/telemetry/telemetry/web_perf/timeline_interaction_record.py
|
| +++ b/tools/telemetry/telemetry/web_perf/timeline_interaction_record.py
|
| @@ -39,7 +39,27 @@ def _AssertFlagsAreValid(flags):
|
| for f in flags:
|
| if f not in FLAGS:
|
| raise AssertionError(
|
| - 'Unrecognized flag for a timeline Interaction record: %s' % f)
|
| + 'Unrecognized flag for a timeline interaction record: %s' % f)
|
| +
|
| +def GetJavaScriptMarker(label, flags):
|
| + """Computes the marker string of an interaction record.
|
| +
|
| + This marker string can be used with JavaScript API console.time()
|
| + and console.timeEnd() to mark the beginning and end of the
|
| + interaction record..
|
| +
|
| + Args:
|
| + label: The label used to identify the interaction record.
|
| + flags: the flags for the interaction record see FLAGS above.
|
| +
|
| + Returns:
|
| + The interaction record marker string (e.g., Interaction.Label/flag1,flag2).
|
| +
|
| + Raises:
|
| + AssertionError: If one or more of the flags is unrecognized.
|
| + """
|
| + _AssertFlagsAreValid(flags)
|
| + return 'Interaction.%s/%s' % (label, ','.join(flags))
|
|
|
| class TimelineInteractionRecord(object):
|
| """Represents an interaction that took place during a timeline recording.
|
| @@ -51,8 +71,8 @@ class TimelineInteractionRecord(object):
|
| interactions.
|
|
|
| From the point of view of the page, each interaction might have a different
|
| - logical name: ClickComposeButton and SendEmail, for instance. From the point
|
| - of view of the benchmarking harness, the names aren't so interesting as what
|
| + label: ClickComposeButton and SendEmail, for instance. From the point
|
| + of view of the benchmarking harness, the labels aren't so interesting as what
|
| the performance expectations are for that interaction: was it loading
|
| resources from the network? was there an animation?
|
|
|
| @@ -62,7 +82,7 @@ class TimelineInteractionRecord(object):
|
| story.
|
|
|
| Instead, we expect pages to mark up the timeline what they are doing, with
|
| - logical names, and flags indicating the semantics of that interaction. This
|
| + label and flags indicating the semantics of that interaction. This
|
| is currently done by pushing markers into the console.time/timeEnd API: this
|
| for instance can be issued in JS:
|
|
|
| @@ -83,9 +103,9 @@ class TimelineInteractionRecord(object):
|
| * repeatable: Allows other interactions to use the same logical name
|
| """
|
|
|
| - def __init__(self, logical_name, start, end, async_event=None):
|
| - assert logical_name
|
| - self.logical_name = logical_name
|
| + def __init__(self, label, start, end, async_event=None):
|
| + assert label
|
| + self.label = label
|
| self.start = start
|
| self.end = end
|
| self.is_smooth = False
|
| @@ -108,7 +128,7 @@ class TimelineInteractionRecord(object):
|
| 'end thread')
|
| m = re.match('Interaction\.(.+)\/(.+)', async_event.name)
|
| if m:
|
| - logical_name = m.group(1)
|
| + label = m.group(1)
|
| if m.group(1) != '':
|
| flags = m.group(2).split(',')
|
| else:
|
| @@ -116,10 +136,10 @@ class TimelineInteractionRecord(object):
|
| else:
|
| m = re.match('Interaction\.(.+)', async_event.name)
|
| assert m
|
| - logical_name = m.group(1)
|
| + label = m.group(1)
|
| flags = []
|
|
|
| - record = TimelineInteractionRecord(logical_name, async_event.start,
|
| + record = TimelineInteractionRecord(label, async_event.start,
|
| async_event.end, async_event)
|
| _AssertFlagsAreValid(flags)
|
| record.is_smooth = IS_SMOOTH in flags
|
| @@ -134,14 +154,6 @@ class TimelineInteractionRecord(object):
|
| bounds.AddValue(self.end)
|
| return bounds
|
|
|
| - @staticmethod
|
| - def GetJavaScriptMarker(logical_name, flags):
|
| - """ Get the marker string of an interaction record with logical_name
|
| - and flags.
|
| - """
|
| - _AssertFlagsAreValid(flags)
|
| - return 'Interaction.%s/%s' % (logical_name, ','.join(flags))
|
| -
|
| def HasMetric(self, metric_type):
|
| if metric_type not in METRICS:
|
| raise AssertionError('Unrecognized metric type for a timeline '
|
| @@ -234,9 +246,9 @@ class TimelineInteractionRecord(object):
|
| flags.append(IS_RESPONSIVE)
|
| flags_str = ','.join(flags)
|
|
|
| - return ('TimelineInteractionRecord(logical_name=\'%s\', start=%f, end=%f,' +
|
| + return ('TimelineInteractionRecord(label=\'%s\', start=%f, end=%f,' +
|
| ' flags=%s, async_event=%s)') % (
|
| - self.logical_name,
|
| + self.label,
|
| self.start,
|
| self.end,
|
| flags_str,
|
|
|