summaryrefslogtreecommitdiffstats
path: root/devtools/client/canvasdebugger/test/browser_canvas-frontend-record-04.js
blob: fde8501e667b1170e9613216471ddfe6f301d801 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */

/**
 * Bug 1122766
 * Tests that the canvas actor correctly returns from recordAnimationFrame
 * in the scenario where a loop starts with rAF and has rAF in the beginning
 * of its loop, when the recording starts before the rAFs start.
 */

function* ifTestingSupported() {
  let { target, panel } = yield initCanvasDebuggerFrontend(RAF_BEGIN_URL);
  let { window, EVENTS, gFront, SnapshotsListView } = panel.panelWin;
  loadFrameScripts();

  yield reload(target);

  let recordingFinished = once(window, EVENTS.SNAPSHOT_RECORDING_FINISHED);
  SnapshotsListView._onRecordButtonClick();

  // Wait until after the recording started to trigger the content.
  // Use the gFront method rather than the SNAPSHOT_RECORDING_STARTED event
  // which triggers before the underlying actor call
  yield waitUntil(function* () { return !(yield gFront.isRecording()); });

  // Start animation in content
  evalInDebuggee("start();");

  yield recordingFinished;
  ok(true, "Finished recording a snapshot of the animation loop.");

  yield removeTab(target.tab);
  finish();
}