| OLD | NEW |
| 1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import logging | 5 import logging |
| 6 import time | 6 import time |
| 7 import urlparse | 7 import urlparse |
| 8 | 8 |
| 9 from telemetry.core import exceptions | 9 from telemetry.core import exceptions |
| 10 from telemetry.internal.actions.drag import DragAction | 10 from telemetry.internal.actions.drag import DragAction |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 class ActionRunner(object): | 28 class ActionRunner(object): |
| 29 | 29 |
| 30 def __init__(self, tab, skip_waits=False): | 30 def __init__(self, tab, skip_waits=False): |
| 31 self._tab = tab | 31 self._tab = tab |
| 32 self._skip_waits = skip_waits | 32 self._skip_waits = skip_waits |
| 33 | 33 |
| 34 def _RunAction(self, action): | 34 def _RunAction(self, action): |
| 35 action.WillRunAction(self._tab) | 35 action.WillRunAction(self._tab) |
| 36 action.RunAction(self._tab) | 36 action.RunAction(self._tab) |
| 37 | 37 |
| 38 # TODO(nednguyen): remove this API when crbug.com/475090 is fixed. | |
| 39 def _BeginInteraction(self, label, repeatable=False): | |
| 40 """Marks the beginning of an interaction record. | |
| 41 | |
| 42 An interaction record is a labeled time period containing | |
| 43 interaction that developers care about. Each set of metrics | |
| 44 specified in flags will be calculated for this time period.. The | |
| 45 End() method in the returned object must be called once to mark | |
| 46 the end of the timeline. | |
| 47 | |
| 48 Args: | |
| 49 label: A label for this particular interaction. This can be any | |
| 50 user-defined string, but must not contain '/'. | |
| 51 repeatable: Whether other interactions may use the same logical name | |
| 52 as this interaction. All interactions with the same logical name must | |
| 53 have the same flags. | |
| 54 """ | |
| 55 flags = [] | |
| 56 if repeatable: | |
| 57 flags.append(timeline_interaction_record.REPEATABLE) | |
| 58 | |
| 59 interaction = Interaction(self._tab, label, flags) | |
| 60 interaction.Begin() | |
| 61 return interaction | |
| 62 | |
| 63 # TODO(nednguyen): remove this API when crbug.com/475090 is fixed. | |
| 64 def BeginGestureInteraction(self, label, repeatable=False): | |
| 65 """Marks the beginning of a gesture-based interaction record. | |
| 66 | |
| 67 This is similar to normal interaction record, but it will | |
| 68 auto-narrow the interaction time period to only include the | |
| 69 synthetic gesture event output by Chrome. This is typically use to | |
| 70 reduce noise in gesture-based analysis (e.g., analysis for a | |
| 71 swipe/scroll). | |
| 72 | |
| 73 The interaction record label will be prepended with 'Gesture_'. | |
| 74 | |
| 75 Args: | |
| 76 label: A label for this particular interaction. This can be any | |
| 77 user-defined string, but must not contain '/'. | |
| 78 repeatable: Whether other interactions may use the same logical name | |
| 79 as this interaction. All interactions with the same logical name must | |
| 80 have the same flags. | |
| 81 """ | |
| 82 return self._BeginInteraction('Gesture_' + label, repeatable) | |
| 83 | |
| 84 def CreateInteraction(self, label, repeatable=False): | 38 def CreateInteraction(self, label, repeatable=False): |
| 85 """ Create an action.Interaction object that issues interaction record. | 39 """ Create an action.Interaction object that issues interaction record. |
| 86 | 40 |
| 87 An interaction record is a labeled time period containing | 41 An interaction record is a labeled time period containing |
| 88 interaction that developers care about. Each set of metrics | 42 interaction that developers care about. Each set of metrics |
| 89 specified in flags will be calculated for this time period. | 43 specified in flags will be calculated for this time period. |
| 90 | 44 |
| 91 To mark the start of interaction record, call Begin() method on the returned | 45 To mark the start of interaction record, call Begin() method on the returned |
| 92 object. To mark the finish of interaction record, call End() method on | 46 object. To mark the finish of interaction record, call End() method on |
| 93 it. Or better yet, use the with statement to create an | 47 it. Or better yet, use the with statement to create an |
| (...skipping 612 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 706 self._action_runner.ExecuteJavaScript('console.time("%s");' % | 660 self._action_runner.ExecuteJavaScript('console.time("%s");' % |
| 707 timeline_interaction_record.GetJavaScriptMarker( | 661 timeline_interaction_record.GetJavaScriptMarker( |
| 708 self._label, self._flags)) | 662 self._label, self._flags)) |
| 709 | 663 |
| 710 def End(self): | 664 def End(self): |
| 711 assert self._started | 665 assert self._started |
| 712 self._started = False | 666 self._started = False |
| 713 self._action_runner.ExecuteJavaScript('console.timeEnd("%s");' % | 667 self._action_runner.ExecuteJavaScript('console.timeEnd("%s");' % |
| 714 timeline_interaction_record.GetJavaScriptMarker( | 668 timeline_interaction_record.GetJavaScriptMarker( |
| 715 self._label, self._flags)) | 669 self._label, self._flags)) |
| OLD | NEW |