Index: tools/telemetry/telemetry/core/backends/chrome_inspector/inspector_timeline_unittest.py |
diff --git a/tools/telemetry/telemetry/core/backends/chrome_inspector/inspector_timeline_unittest.py b/tools/telemetry/telemetry/core/backends/chrome_inspector/inspector_timeline_unittest.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f653b9c18fd107b2056d39d1233741ae6ff62a24 |
--- /dev/null |
+++ b/tools/telemetry/telemetry/core/backends/chrome_inspector/inspector_timeline_unittest.py |
@@ -0,0 +1,41 @@ |
+# Copyright 2013 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+from telemetry.core import util |
+from telemetry.core.backends.chrome_inspector import inspector_timeline |
+from telemetry.unittest_util import tab_test_case |
+ |
+ |
+class InspectorTimelineTabTest(tab_test_case.TabTestCase): |
+ """Test case that opens a browser and creates and then checks an event.""" |
+ |
+ def _WaitForAnimationFrame(self): |
+ """Wait until the variable window.done is set on the tab.""" |
+ def _IsDone(): |
+ return bool(self._tab.EvaluateJavaScript('window.done')) |
+ util.WaitFor(_IsDone, 5) |
+ |
+ def testGotTimeline(self): |
+ # While the timeline is recording, call window.webkitRequestAnimationFrame. |
+ # This will create a FireAnimationEvent, which can be checked below. See: |
+ # https://developer.mozilla.org/en/docs/Web/API/window.requestAnimationFrame |
+ with inspector_timeline.InspectorTimeline.Recorder(self._tab): |
+ self._tab.ExecuteJavaScript( |
+ """ |
+ var done = false; |
+ function sleep(ms) { |
+ var endTime = (new Date().getTime()) + ms; |
+ while ((new Date().getTime()) < endTime); |
+ } |
+ window.webkitRequestAnimationFrame(function() { |
+ sleep(10); |
+ window.done = true; |
+ }); |
+ """) |
+ self._WaitForAnimationFrame() |
+ |
+ # There should be at least a FireAnimationFrame record with some duration. |
+ events = self._tab.timeline_model.GetAllEventsOfName('FireAnimationFrame') |
+ self.assertTrue(len(events) > 0) |
+ self.assertTrue(events[0].duration > 0) |