michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: http://creativecommons.org/publicdomain/zero/1.0/ */ michael@0: michael@0: /** michael@0: * Tests if the slider in the calls list view works as advertised. michael@0: */ michael@0: michael@0: function ifTestingSupported() { michael@0: let [target, debuggee, panel] = yield initCanavsDebuggerFrontend(SIMPLE_CANVAS_URL); michael@0: let { window, $, EVENTS, gFront, SnapshotsListView, CallsListView } = panel.panelWin; michael@0: michael@0: yield reload(target); michael@0: michael@0: let recordingFinished = once(window, EVENTS.SNAPSHOT_RECORDING_FINISHED); michael@0: let callListPopulated = once(window, EVENTS.CALL_LIST_POPULATED); michael@0: let thumbnailsDisplayed = once(window, EVENTS.THUMBNAILS_DISPLAYED); michael@0: SnapshotsListView._onRecordButtonClick(); michael@0: yield promise.all([recordingFinished, callListPopulated, thumbnailsDisplayed]); michael@0: michael@0: let firstSnapshot = SnapshotsListView.getItemAtIndex(0); michael@0: let firstSnapshotOverview = yield firstSnapshot.attachment.actor.getOverview(); michael@0: michael@0: let thumbnails = firstSnapshotOverview.thumbnails; michael@0: is(thumbnails.length, 4, michael@0: "There should be 4 thumbnails cached for the snapshot item."); michael@0: michael@0: let thumbnailImageElementSet = waitForMozSetImageElement(window); michael@0: $("#calls-slider").value = 1; michael@0: let thumbnailPixels = yield thumbnailImageElementSet; michael@0: michael@0: ok(sameArray(thumbnailPixels, thumbnails[0].pixels), michael@0: "The screenshot element should have a thumbnail as an immediate background."); michael@0: michael@0: yield once(window, EVENTS.CALL_SCREENSHOT_DISPLAYED); michael@0: ok(true, "The full-sized screenshot was displayed for the item at index 1."); michael@0: michael@0: let thumbnailImageElementSet = waitForMozSetImageElement(window); michael@0: $("#calls-slider").value = 2; michael@0: let thumbnailPixels = yield thumbnailImageElementSet; michael@0: michael@0: ok(sameArray(thumbnailPixels, thumbnails[1].pixels), michael@0: "The screenshot element should have a thumbnail as an immediate background."); michael@0: michael@0: yield once(window, EVENTS.CALL_SCREENSHOT_DISPLAYED); michael@0: ok(true, "The full-sized screenshot was displayed for the item at index 2."); michael@0: michael@0: let thumbnailImageElementSet = waitForMozSetImageElement(window); michael@0: $("#calls-slider").value = 7; michael@0: let thumbnailPixels = yield thumbnailImageElementSet; michael@0: michael@0: ok(sameArray(thumbnailPixels, thumbnails[3].pixels), michael@0: "The screenshot element should have a thumbnail as an immediate background."); michael@0: michael@0: yield once(window, EVENTS.CALL_SCREENSHOT_DISPLAYED); michael@0: ok(true, "The full-sized screenshot was displayed for the item at index 7."); michael@0: michael@0: let thumbnailImageElementSet = waitForMozSetImageElement(window); michael@0: $("#calls-slider").value = 4; michael@0: let thumbnailPixels = yield thumbnailImageElementSet; michael@0: michael@0: ok(sameArray(thumbnailPixels, thumbnails[2].pixels), michael@0: "The screenshot element should have a thumbnail as an immediate background."); michael@0: michael@0: yield once(window, EVENTS.CALL_SCREENSHOT_DISPLAYED); michael@0: ok(true, "The full-sized screenshot was displayed for the item at index 4."); michael@0: michael@0: let thumbnailImageElementSet = waitForMozSetImageElement(window); michael@0: $("#calls-slider").value = 0; michael@0: let thumbnailPixels = yield thumbnailImageElementSet; michael@0: michael@0: ok(sameArray(thumbnailPixels, thumbnails[0].pixels), michael@0: "The screenshot element should have a thumbnail as an immediate background."); michael@0: michael@0: yield once(window, EVENTS.CALL_SCREENSHOT_DISPLAYED); michael@0: ok(true, "The full-sized screenshot was displayed for the item at index 0."); michael@0: michael@0: yield teardown(panel); michael@0: finish(); michael@0: } michael@0: michael@0: function waitForMozSetImageElement(panel) { michael@0: let deferred = promise.defer(); michael@0: panel._onMozSetImageElement = deferred.resolve; michael@0: return deferred.promise; michael@0: } michael@0: michael@0: function sameArray(a, b) { michael@0: if (a.length != b.length) { michael@0: return false; michael@0: } michael@0: for (let i = 0; i < a.length; i++) { michael@0: if (a[i] !== b[i]) { michael@0: return false; michael@0: } michael@0: } michael@0: return true; michael@0: }