summaryrefslogtreecommitdiffstats
path: root/devtools/client/canvasdebugger/test/browser_canvas-frontend-call-list.js
blob: 5f9ce876f5126a042b1a4e100e5e84294c9966e0 (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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */

/**
 * Tests if all the function calls associated with an animation frame snapshot
 * are properly displayed in the UI.
 */

function* ifTestingSupported() {
  let { target, panel } = yield initCanvasDebuggerFrontend(SIMPLE_CANVAS_URL);
  let { window, $, EVENTS, SnapshotsListView, CallsListView } = panel.panelWin;

  yield reload(target);

  let recordingFinished = once(window, EVENTS.SNAPSHOT_RECORDING_FINISHED);
  let callListPopulated = once(window, EVENTS.CALL_LIST_POPULATED);
  SnapshotsListView._onRecordButtonClick();
  yield promise.all([recordingFinished, callListPopulated]);

  is(CallsListView.itemCount, 8,
    "All the function calls should now be displayed in the UI.");

  testItem(CallsListView.getItemAtIndex(0),
    "1", "Object", "clearRect", "(0, 0, 128, 128)", "doc_simple-canvas.html:25");

  testItem(CallsListView.getItemAtIndex(1),
    "2", "Object", "fillStyle", " = rgb(192, 192, 192)", "doc_simple-canvas.html:20");
  testItem(CallsListView.getItemAtIndex(2),
    "3", "Object", "fillRect", "(0, 0, 128, 128)", "doc_simple-canvas.html:21");

  testItem(CallsListView.getItemAtIndex(3),
    "4", "Object", "fillStyle", " = rgba(0, 0, 192, 0.5)", "doc_simple-canvas.html:20");
  testItem(CallsListView.getItemAtIndex(4),
    "5", "Object", "fillRect", "(30, 30, 55, 50)", "doc_simple-canvas.html:21");

  testItem(CallsListView.getItemAtIndex(5),
    "6", "Object", "fillStyle", " = rgba(192, 0, 0, 0.5)", "doc_simple-canvas.html:20");
  testItem(CallsListView.getItemAtIndex(6),
    "7", "Object", "fillRect", "(10, 10, 55, 50)", "doc_simple-canvas.html:21");

  testItem(CallsListView.getItemAtIndex(7),
    "8", "", "requestAnimationFrame", "(Function)", "doc_simple-canvas.html:30");

  function testItem(item, index, context, name, args, location) {
    let i = CallsListView.indexOfItem(item);
    is(i, index - 1,
      "The item at index " + index + " is correctly displayed in the UI.");

    is($(".call-item-index", item.target).getAttribute("value"), index,
      "The item's gutter label has the correct text.");

    if (context) {
      is($(".call-item-context", item.target).getAttribute("value"), context,
        "The item's context label has the correct text.");
    } else {
      is($(".call-item-context", item.target) + "", "[object XULElement]",
        "The item's context label should not be available.");
    }

    is($(".call-item-name", item.target).getAttribute("value"), name,
      "The item's name label has the correct text.");
    is($(".call-item-args", item.target).getAttribute("value"), args,
      "The item's args label has the correct text.");
    is($(".call-item-location", item.target).getAttribute("value"), location,
      "The item's location label has the correct text.");
  }

  yield teardown(panel);
  finish();
}