Index: tools/telemetry/telemetry/core/tab_unittest.py |
diff --git a/tools/telemetry/telemetry/core/tab_unittest.py b/tools/telemetry/telemetry/core/tab_unittest.py |
index 89eaddca0ac99f1c422139ab1ec83aa78c4fe781..09815fd44c33b199ef8f84ce6cd070a336642e52 100644 |
--- a/tools/telemetry/telemetry/core/tab_unittest.py |
+++ b/tools/telemetry/telemetry/core/tab_unittest.py |
@@ -103,7 +103,8 @@ class TabTest(tab_test_case.TabTestCase): |
self._tab.ClearHighlight(bitmap.WEB_PAGE_TEST_ORANGE) |
trace_data = self._browser.StopTracing() |
timeline_model = model.TimelineModel(trace_data) |
- renderer_thread = timeline_model.GetRendererThreadFromTab(self._tab) |
+ renderer_thread = timeline_model.GetRendererThreadFromTabId( |
+ self._tab.id) |
found_video_start_event = False |
for event in renderer_thread.async_slices: |
if event.name == '__ClearHighlight.video_capture_start': |
@@ -111,6 +112,47 @@ class TabTest(tab_test_case.TabTestCase): |
break |
self.assertTrue(found_video_start_event) |
+ def testGetRendererThreadFromTabId(self): |
+ self.assertEquals(self._tab.url, 'about:blank') |
+ # Create 3 tabs. The third tab is closed before we call StartTracing. |
+ first_tab = self._tab |
+ second_tab = self._browser.tabs.New() |
+ second_tab.Navigate('about:blank') |
+ second_tab.WaitForDocumentReadyStateToBeInteractiveOrBetter() |
+ third_tab = self._browser.tabs.New() |
+ third_tab.Navigate('about:blank') |
+ third_tab.WaitForDocumentReadyStateToBeInteractiveOrBetter() |
+ third_tab.Close() |
+ |
+ self._browser.StartTracing(tracing_backend.MINIMAL_TRACE_CATEGORIES) |
+ first_tab.ExecuteJavaScript('console.time("first-tab-marker");') |
+ first_tab.ExecuteJavaScript('console.timeEnd("first-tab-marker");') |
+ second_tab.ExecuteJavaScript('console.time("second-tab-marker");') |
+ second_tab.ExecuteJavaScript('console.timeEnd("second-tab-marker");') |
+ trace_data = self._browser.StopTracing() |
+ timeline_model = model.TimelineModel(trace_data) |
+ |
+ # Assert that the renderer_thread of the first tab contains |
+ # 'first-tab-marker'. |
+ renderer_thread = timeline_model.GetRendererThreadFromTabId( |
+ first_tab.id) |
+ first_tab_markers = [ |
+ renderer_thread.IterAllSlicesOfName('first-tab-marker')] |
+ self.assertEquals(1, len(first_tab_markers)) |
+ |
+ # Close second tab and assert that the renderer_thread of the second tab |
+ # contains 'second-tab-marker'. |
+ second_tab.Close() |
+ renderer_thread = timeline_model.GetRendererThreadFromTabId( |
+ second_tab.id) |
+ second_tab_markers = [ |
+ renderer_thread.IterAllSlicesOfName('second-tab-marker')] |
+ self.assertEquals(1, len(second_tab_markers)) |
+ |
+ # Third tab wasn't available when we start tracing, so there is no |
+ # renderer_thread corresponding to it in the the trace. |
+ self.assertIs(None, timeline_model.GetRendererThreadFromTabId(third_tab.id)) |
+ |
class GpuTabTest(tab_test_case.TabTestCase): |
def setUp(self): |