diff --git a/tools/telemetry/telemetry/internal/backends/chrome_inspector/inspector_network.py b/tools/chrome_proxy/common/inspector_network.py similarity index 96% rename from tools/telemetry/telemetry/internal/backends/chrome_inspector/inspector_network.py rename to tools/chrome_proxy/common/inspector_network.py index 5ec73ec907d86b..122cc879911217 100644 --- a/tools/telemetry/telemetry/internal/backends/chrome_inspector/inspector_network.py +++ b/tools/chrome_proxy/common/inspector_network.py @@ -4,6 +4,8 @@ import logging from telemetry.core import exceptions +from telemetry.timeline import trace_data +from telemetry.timeline import model class InspectorNetworkException(Exception): @@ -224,4 +226,6 @@ def Stop(self): self._is_recording = False if len(events) == 0: return None - return events + builder = trace_data.TraceDataBuilder() + builder.AddEventsTo(trace_data.INSPECTOR_TRACE_PART, events) + return model.TimelineModel(builder.AsData(), shift_world_to_zero=False) diff --git a/tools/telemetry/telemetry/internal/backends/chrome_inspector/inspector_network_unittest.py b/tools/chrome_proxy/common/inspector_network_unittest.py similarity index 90% rename from tools/telemetry/telemetry/internal/backends/chrome_inspector/inspector_network_unittest.py rename to tools/chrome_proxy/common/inspector_network_unittest.py index fc1c3712ffedde..0bad858c8aa2a3 100644 --- a/tools/telemetry/telemetry/internal/backends/chrome_inspector/inspector_network_unittest.py +++ b/tools/chrome_proxy/common/inspector_network_unittest.py @@ -2,8 +2,9 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +from common import inspector_network +from common import network_metrics from telemetry import decorators -from telemetry.internal.backends.chrome_inspector import inspector_network from telemetry.testing import tab_test_case @@ -20,12 +21,13 @@ def __init__(self, *args): super(InspectorNetworkTabTest, self).__init__(*args) def _NavigateAndGetHTTPResponseEvents(self, page): - self._tab.StartTimelineRecording() + network = inspector_network.InspectorNetwork( + self._tab._inspector_backend._websocket) + network.timeline_recorder.Start() self.Navigate(page) - self._tab.StopTimelineRecording() - - self.assertTrue(self._tab.timeline_model) - return self._tab.timeline_model.GetAllEventsOfName('HTTPResponse') + timeline_model = network.timeline_recorder.Stop() + self.assertTrue(timeline_model) + return timeline_model.GetAllEventsOfName('HTTPResponse') # crbug.com/449979, crbug.com/452279, crbug.com/455269, crbug.com/483212 @decorators.Disabled('mac', 'android', 'win', 'linux', 'chromeos') diff --git a/tools/chrome_proxy/common/network_metrics.py b/tools/chrome_proxy/common/network_metrics.py index 0d571b8e1ad0cf..10f70c5077070d 100644 --- a/tools/chrome_proxy/common/network_metrics.py +++ b/tools/chrome_proxy/common/network_metrics.py @@ -9,10 +9,11 @@ import logging import zlib +from common import inspector_network from metrics import Metric +from telemetry.timeline import model from telemetry.page import page_test # All network metrics are Chrome only for now. -from telemetry.internal.backends.chrome_inspector import inspector_network from telemetry.value import scalar @@ -138,15 +139,18 @@ def __init__(self): def Start(self, page, tab): self._events = None - tab.StartTimelineRecording() + network = inspector_network.InspectorNetwork( + tab._inspector_backend._websocket) + self._timeline_recorder = network.timeline_recorder + self._timeline_recorder.Start() def Stop(self, page, tab): assert self._events is None - tab.StopTimelineRecording() + self._timeline_model = self._timeline_recorder.Stop() def IterResponses(self, tab): if self._events is None: - self._events = tab.timeline_model.GetAllEventsOfName('HTTPResponse') + self._events = self._timeline_model.GetAllEventsOfName('HTTPResponse') if len(self._events) == 0: return for e in self._events: diff --git a/tools/telemetry/telemetry/internal/backends/chrome_inspector/inspector_backend.py b/tools/telemetry/telemetry/internal/backends/chrome_inspector/inspector_backend.py index 012b5fe0b2fd8e..342a4446024c2f 100644 --- a/tools/telemetry/telemetry/internal/backends/chrome_inspector/inspector_backend.py +++ b/tools/telemetry/telemetry/internal/backends/chrome_inspector/inspector_backend.py @@ -13,13 +13,10 @@ from telemetry.internal.backends.chrome_inspector import devtools_http from telemetry.internal.backends.chrome_inspector import inspector_console from telemetry.internal.backends.chrome_inspector import inspector_memory -from telemetry.internal.backends.chrome_inspector import inspector_network from telemetry.internal.backends.chrome_inspector import inspector_page from telemetry.internal.backends.chrome_inspector import inspector_runtime from telemetry.internal.backends.chrome_inspector import inspector_websocket from telemetry.internal.backends.chrome_inspector import websocket -from telemetry.timeline import model as timeline_model_module -from telemetry.timeline import trace_data as trace_data_module def _HandleInspectorWebSocketExceptions(func): @@ -70,8 +67,6 @@ def __init__(self, app, devtools_client, context, timeout=60): self._page = inspector_page.InspectorPage( self._websocket, timeout=timeout) self._runtime = inspector_runtime.InspectorRuntime(self._websocket) - self._network = inspector_network.InspectorNetwork(self._websocket) - self._timeline_model = None def Disconnect(self): """Disconnects the inspector websocket. @@ -282,32 +277,6 @@ def SynthesizeScrollGesture(self, x=100, y=800, xDistance=0, yDistance=-500, } return self._runtime.RunInspectorCommand(scroll_command, timeout) - # Timeline public methods. - - @property - def timeline_model(self): - return self._timeline_model - - @_HandleInspectorWebSocketExceptions - def StartTimelineRecording(self): - self._network.timeline_recorder.Start() - - @_HandleInspectorWebSocketExceptions - def StopTimelineRecording(self): - builder = trace_data_module.TraceDataBuilder() - - data = self._network.timeline_recorder.Stop() - if data: - builder.AddEventsTo(trace_data_module.INSPECTOR_TRACE_PART, data) - self._timeline_model = timeline_model_module.TimelineModel( - builder.AsData(), shift_world_to_zero=False) - - # Network public methods. - - @_HandleInspectorWebSocketExceptions - def ClearCache(self): - self._network.ClearCache() - # Methods used internally by other backends. def _HandleInspectorDomainNotification(self, res): diff --git a/tools/telemetry/telemetry/internal/browser/web_contents.py b/tools/telemetry/telemetry/internal/browser/web_contents.py index d360f1d87f4975..000c1ee4656830 100644 --- a/tools/telemetry/telemetry/internal/browser/web_contents.py +++ b/tools/telemetry/telemetry/internal/browser/web_contents.py @@ -256,24 +256,6 @@ def message_output_stream(self, stream): def timeline_model(self): return self._inspector_backend.timeline_model - def StartTimelineRecording(self): - """Starts timeline recording. - - Raises: - exceptions.TimeoutException - exceptions.DevtoolsTargetCrashException - """ - self._inspector_backend.StartTimelineRecording() - - def StopTimelineRecording(self): - """Stops timeline recording. - - Raises: - exceptions.TimeoutException - exceptions.DevtoolsTargetCrashException - """ - self._inspector_backend.StopTimelineRecording() - def IsAlive(self): """Whether the WebContents is still operating normally.