OLD | NEW |
1 # Copyright 2016 The Chromium Authors. All rights reserved. | 1 # Copyright 2016 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 """Monitor tracing events on chrome via chrome remote debugging.""" | 5 """Monitor tracing events on chrome via chrome remote debugging.""" |
6 | 6 |
7 import itertools | 7 import itertools |
8 import logging | 8 import logging |
9 import operator | 9 import operator |
10 | 10 |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 | 79 |
80 def GetMatchingMainFrameEvents(self, category, name): | 80 def GetMatchingMainFrameEvents(self, category, name): |
81 """Gets events matching |category| and |name| that occur in the main frame. | 81 """Gets events matching |category| and |name| that occur in the main frame. |
82 | 82 |
83 Events without a 'frame' key in their |args| are discarded. | 83 Events without a 'frame' key in their |args| are discarded. |
84 """ | 84 """ |
85 matching_events = self.GetMatchingEvents(category, name) | 85 matching_events = self.GetMatchingEvents(category, name) |
86 return [e for e in matching_events | 86 return [e for e in matching_events |
87 if 'frame' in e.args and e.args['frame'] == self.GetMainFrameID()] | 87 if 'frame' in e.args and e.args['frame'] == self.GetMainFrameID()] |
88 | 88 |
| 89 def GetMainFrameRoutingID(self): |
| 90 """Returns the main frame routing ID.""" |
| 91 for event in self.GetMatchingEvents( |
| 92 'navigation', 'RenderFrameImpl::OnNavigate'): |
| 93 return event.args['id'] |
| 94 assert False |
| 95 |
89 def GetMainFrameID(self): | 96 def GetMainFrameID(self): |
90 """Returns the main frame ID.""" | 97 """Returns the main frame ID.""" |
91 if not self._main_frame_id: | 98 if not self._main_frame_id: |
92 navigation_start_events = self.GetMatchingEvents( | 99 navigation_start_events = self.GetMatchingEvents( |
93 'blink.user_timing', 'navigationStart') | 100 'blink.user_timing', 'navigationStart') |
94 first_event = min(navigation_start_events, key=lambda e: e.start_msec) | 101 first_event = min(navigation_start_events, key=lambda e: e.start_msec) |
95 self._main_frame_id = first_event.args['frame'] | 102 self._main_frame_id = first_event.args['frame'] |
96 | 103 |
97 return self._main_frame_id | 104 return self._main_frame_id |
98 | 105 |
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
542 self._left = _IntervalTree(self.start, left_end, left_events) | 549 self._left = _IntervalTree(self.start, left_end, left_events) |
543 self._right = _IntervalTree(right_start, self.end, right_events) | 550 self._right = _IntervalTree(right_start, self.end, right_events) |
544 | 551 |
545 def _IsLeaf(self): | 552 def _IsLeaf(self): |
546 return self._left is None | 553 return self._left is None |
547 | 554 |
548 @classmethod | 555 @classmethod |
549 def _Overlaps(cls, event, start, end): | 556 def _Overlaps(cls, event, start, end): |
550 return (min(end, event.end_msec) - max(start, event.start_msec) > 0 | 557 return (min(end, event.end_msec) - max(start, event.start_msec) > 0 |
551 or start <= event.start_msec < end) # For instant events. | 558 or start <= event.start_msec < end) # For instant events. |
OLD | NEW |