|
1 /* Any copyright is dedicated to the Public Domain. |
|
2 http://creativecommons.org/publicdomain/zero/1.0/ */ |
|
3 |
|
4 /** |
|
5 * Tests if the slider in the calls list view works as advertised. |
|
6 */ |
|
7 |
|
8 function ifTestingSupported() { |
|
9 let [target, debuggee, panel] = yield initCanavsDebuggerFrontend(SIMPLE_CANVAS_URL); |
|
10 let { window, $, EVENTS, gFront, SnapshotsListView, CallsListView } = panel.panelWin; |
|
11 |
|
12 yield reload(target); |
|
13 |
|
14 let recordingFinished = once(window, EVENTS.SNAPSHOT_RECORDING_FINISHED); |
|
15 let callListPopulated = once(window, EVENTS.CALL_LIST_POPULATED); |
|
16 let thumbnailsDisplayed = once(window, EVENTS.THUMBNAILS_DISPLAYED); |
|
17 SnapshotsListView._onRecordButtonClick(); |
|
18 yield promise.all([recordingFinished, callListPopulated, thumbnailsDisplayed]); |
|
19 |
|
20 let firstSnapshot = SnapshotsListView.getItemAtIndex(0); |
|
21 let firstSnapshotOverview = yield firstSnapshot.attachment.actor.getOverview(); |
|
22 |
|
23 let thumbnails = firstSnapshotOverview.thumbnails; |
|
24 is(thumbnails.length, 4, |
|
25 "There should be 4 thumbnails cached for the snapshot item."); |
|
26 |
|
27 let thumbnailImageElementSet = waitForMozSetImageElement(window); |
|
28 $("#calls-slider").value = 1; |
|
29 let thumbnailPixels = yield thumbnailImageElementSet; |
|
30 |
|
31 ok(sameArray(thumbnailPixels, thumbnails[0].pixels), |
|
32 "The screenshot element should have a thumbnail as an immediate background."); |
|
33 |
|
34 yield once(window, EVENTS.CALL_SCREENSHOT_DISPLAYED); |
|
35 ok(true, "The full-sized screenshot was displayed for the item at index 1."); |
|
36 |
|
37 let thumbnailImageElementSet = waitForMozSetImageElement(window); |
|
38 $("#calls-slider").value = 2; |
|
39 let thumbnailPixels = yield thumbnailImageElementSet; |
|
40 |
|
41 ok(sameArray(thumbnailPixels, thumbnails[1].pixels), |
|
42 "The screenshot element should have a thumbnail as an immediate background."); |
|
43 |
|
44 yield once(window, EVENTS.CALL_SCREENSHOT_DISPLAYED); |
|
45 ok(true, "The full-sized screenshot was displayed for the item at index 2."); |
|
46 |
|
47 let thumbnailImageElementSet = waitForMozSetImageElement(window); |
|
48 $("#calls-slider").value = 7; |
|
49 let thumbnailPixels = yield thumbnailImageElementSet; |
|
50 |
|
51 ok(sameArray(thumbnailPixels, thumbnails[3].pixels), |
|
52 "The screenshot element should have a thumbnail as an immediate background."); |
|
53 |
|
54 yield once(window, EVENTS.CALL_SCREENSHOT_DISPLAYED); |
|
55 ok(true, "The full-sized screenshot was displayed for the item at index 7."); |
|
56 |
|
57 let thumbnailImageElementSet = waitForMozSetImageElement(window); |
|
58 $("#calls-slider").value = 4; |
|
59 let thumbnailPixels = yield thumbnailImageElementSet; |
|
60 |
|
61 ok(sameArray(thumbnailPixels, thumbnails[2].pixels), |
|
62 "The screenshot element should have a thumbnail as an immediate background."); |
|
63 |
|
64 yield once(window, EVENTS.CALL_SCREENSHOT_DISPLAYED); |
|
65 ok(true, "The full-sized screenshot was displayed for the item at index 4."); |
|
66 |
|
67 let thumbnailImageElementSet = waitForMozSetImageElement(window); |
|
68 $("#calls-slider").value = 0; |
|
69 let thumbnailPixels = yield thumbnailImageElementSet; |
|
70 |
|
71 ok(sameArray(thumbnailPixels, thumbnails[0].pixels), |
|
72 "The screenshot element should have a thumbnail as an immediate background."); |
|
73 |
|
74 yield once(window, EVENTS.CALL_SCREENSHOT_DISPLAYED); |
|
75 ok(true, "The full-sized screenshot was displayed for the item at index 0."); |
|
76 |
|
77 yield teardown(panel); |
|
78 finish(); |
|
79 } |
|
80 |
|
81 function waitForMozSetImageElement(panel) { |
|
82 let deferred = promise.defer(); |
|
83 panel._onMozSetImageElement = deferred.resolve; |
|
84 return deferred.promise; |
|
85 } |
|
86 |
|
87 function sameArray(a, b) { |
|
88 if (a.length != b.length) { |
|
89 return false; |
|
90 } |
|
91 for (let i = 0; i < a.length; i++) { |
|
92 if (a[i] !== b[i]) { |
|
93 return false; |
|
94 } |
|
95 } |
|
96 return true; |
|
97 } |