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 """Common utilities used in unit tests, within this directory.""" | 5 """Common utilities used in unit tests, within this directory.""" |
6 | 6 |
7 import devtools_monitor | 7 import devtools_monitor |
| 8 import loading_model |
8 import loading_trace | 9 import loading_trace |
9 import page_track | 10 import page_track |
10 import request_track | 11 import request_track |
11 import tracing | 12 import tracing |
12 | 13 |
13 | 14 |
14 class FakeRequestTrack(devtools_monitor.Track): | 15 class FakeRequestTrack(devtools_monitor.Track): |
15 def __init__(self, events): | 16 def __init__(self, events): |
16 super(FakeRequestTrack, self).__init__(None) | 17 super(FakeRequestTrack, self).__init__(None) |
17 self._events = [self._RewriteEvent(e) for e in events] | 18 self._events = [self._RewriteEvent(e) for e in events] |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 request = FakeRequestTrack(requests) | 74 request = FakeRequestTrack(requests) |
74 page_event_track = FakePageTrack(page_events if page_events else []) | 75 page_event_track = FakePageTrack(page_events if page_events else []) |
75 if trace_events: | 76 if trace_events: |
76 tracing_track = tracing.TracingTrack(None) | 77 tracing_track = tracing.TracingTrack(None) |
77 tracing_track.Handle('Tracing.dataCollected', | 78 tracing_track.Handle('Tracing.dataCollected', |
78 {'params': {'value': [e for e in trace_events]}}) | 79 {'params': {'value': [e for e in trace_events]}}) |
79 else: | 80 else: |
80 tracing_track = None | 81 tracing_track = None |
81 return loading_trace.LoadingTrace( | 82 return loading_trace.LoadingTrace( |
82 None, None, page_event_track, request, tracing_track) | 83 None, None, page_event_track, request, tracing_track) |
| 84 |
| 85 |
| 86 class SimpleLens(object): |
| 87 """A simple replacement for RequestDependencyLens. |
| 88 |
| 89 Uses only the initiator url of a request for determining a dependency. |
| 90 """ |
| 91 def __init__(self, trace): |
| 92 self._trace = trace |
| 93 |
| 94 def GetRequestDependencies(self): |
| 95 url_to_rq = {} |
| 96 deps = [] |
| 97 for rq in self._trace.request_track.GetEvents(): |
| 98 assert rq.url not in url_to_rq |
| 99 url_to_rq[rq.url] = rq |
| 100 for rq in self._trace.request_track.GetEvents(): |
| 101 initiating_url = rq.initiator['url'] |
| 102 if initiating_url in url_to_rq: |
| 103 deps.append((url_to_rq[initiating_url], rq, rq.initiator['type'])) |
| 104 return deps |
| 105 |
| 106 |
| 107 class TestResourceGraph(loading_model.ResourceGraph): |
| 108 """Replace the default request lens in a ResourceGraph with our SimpleLens.""" |
| 109 REQUEST_LENS = SimpleLens |
| 110 |
| 111 @classmethod |
| 112 def FromRequestList(cls, requests, page_events=None, trace_events=None): |
| 113 return cls(LoadingTraceFromEvents(requests, page_events, trace_events)) |
OLD | NEW |