Bug 1354883 - convert uses of 'defer' to 'new Promise' in client/canvasdebugger
MozReview-Commit-ID: 8mVRs0v6CKu
--- a/devtools/client/canvasdebugger/canvasdebugger.js
+++ b/devtools/client/canvasdebugger/canvasdebugger.js
@@ -3,17 +3,16 @@
* You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
var { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components;
const { require } = Cu.import("resource://devtools/shared/Loader.jsm", {});
const { XPCOMUtils } = require("resource://gre/modules/XPCOMUtils.jsm");
const { SideMenuWidget } = require("resource://devtools/client/shared/widgets/SideMenuWidget.jsm");
-const promise = require("promise");
const Services = require("Services");
const EventEmitter = require("devtools/shared/event-emitter");
const { CallWatcherFront } = require("devtools/shared/fronts/call-watcher");
const { CanvasFront } = require("devtools/shared/fronts/canvas");
const DevToolsUtils = require("devtools/shared/DevToolsUtils");
const flags = require("devtools/shared/flags");
const { LocalizationHelper } = require("devtools/shared/l10n");
const { PluralForm } = require("devtools/shared/plural-form");
@@ -96,28 +95,28 @@ const CALLS_LIST_SLOW_SAVE_DELAY = 100;
* The current target and the Canvas front, set by this tool's host.
*/
var gToolbox, gTarget, gFront;
/**
* Initializes the canvas debugger controller and views.
*/
function startupCanvasDebugger() {
- return promise.all([
+ return Promise.all([
EventsHandler.initialize(),
SnapshotsListView.initialize(),
CallsListView.initialize()
]);
}
/**
* Destroys the canvas debugger controller and views.
*/
function shutdownCanvasDebugger() {
- return promise.all([
+ return Promise.all([
EventsHandler.destroy(),
SnapshotsListView.destroy(),
CallsListView.destroy()
]);
}
/**
* Functions handling target-related lifetime events.
--- a/devtools/client/canvasdebugger/panel.js
+++ b/devtools/client/canvasdebugger/panel.js
@@ -1,17 +1,16 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set ft=javascript ts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
const { Cc, Ci, Cu, Cr } = require("chrome");
-const promise = require("promise");
const EventEmitter = require("devtools/shared/event-emitter");
const { CanvasFront } = require("devtools/shared/fronts/canvas");
const DevToolsUtils = require("devtools/shared/DevToolsUtils");
function CanvasDebuggerPanel(iframeWindow, toolbox) {
this.panelWin = iframeWindow;
this._toolbox = toolbox;
this._destroyer = null;
@@ -30,17 +29,17 @@ CanvasDebuggerPanel.prototype = {
*/
open: function () {
let targetPromise;
// Local debugging needs to make the target remote.
if (!this.target.isRemote) {
targetPromise = this.target.makeRemote();
} else {
- targetPromise = promise.resolve(this.target);
+ targetPromise = Promise.resolve(this.target);
}
return targetPromise
.then(() => {
this.panelWin.gToolbox = this._toolbox;
this.panelWin.gTarget = this.target;
this.panelWin.gFront = new CanvasFront(this.target.client, this.target.form);
return this.panelWin.startupCanvasDebugger();
--- a/devtools/client/canvasdebugger/test/browser_canvas-frontend-slider-02.js
+++ b/devtools/client/canvasdebugger/test/browser_canvas-frontend-slider-02.js
@@ -74,19 +74,19 @@ function* ifTestingSupported() {
yield once(window, EVENTS.CALL_SCREENSHOT_DISPLAYED);
ok(true, "The full-sized screenshot was displayed for the item at index 0.");
yield teardown(panel);
finish();
}
function waitForMozSetImageElement(panel) {
- let deferred = promise.defer();
- panel._onMozSetImageElement = deferred.resolve;
- return deferred.promise;
+ return new Promise((resolve, reject) => {
+ panel._onMozSetImageElement = resolve;
+ });
}
function sameArray(a, b) {
if (a.length != b.length) {
return false;
}
for (let i = 0; i < a.length; i++) {
if (a[i] !== b[i]) {
--- a/devtools/client/canvasdebugger/test/head.js
+++ b/devtools/client/canvasdebugger/test/head.js
@@ -3,17 +3,16 @@
"use strict";
var { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components;
var { generateUUID } = Cc["@mozilla.org/uuid-generator;1"].getService(Ci.nsIUUIDGenerator);
var { require } = Cu.import("resource://devtools/shared/Loader.jsm", {});
var Services = require("Services");
-var promise = require("promise");
var { gDevTools } = require("devtools/client/framework/devtools");
var { DebuggerClient } = require("devtools/shared/client/main");
var { DebuggerServer } = require("devtools/server/main");
var { CallWatcherFront } = require("devtools/shared/fronts/call-watcher");
var { CanvasFront } = require("devtools/shared/fronts/canvas");
var { setTimeout } = require("sdk/timers");
var DevToolsUtils = require("devtools/shared/DevToolsUtils");
var flags = require("devtools/shared/flags");
@@ -68,48 +67,47 @@ registerCleanupFunction(() => {
function loadFrameScripts() {
mm = gBrowser.selectedBrowser.messageManager;
mm.loadFrameScript(FRAME_SCRIPT_UTILS_URL, false);
}
function addTab(aUrl, aWindow) {
info("Adding tab: " + aUrl);
- let deferred = promise.defer();
let targetWindow = aWindow || window;
let targetBrowser = targetWindow.gBrowser;
targetWindow.focus();
let tab = targetBrowser.selectedTab = targetBrowser.addTab(aUrl);
let linkedBrowser = tab.linkedBrowser;
- BrowserTestUtils.browserLoaded(linkedBrowser)
- .then(function () {
- info("Tab added and finished loading: " + aUrl);
- deferred.resolve(tab);
- });
-
- return deferred.promise;
+ return new Promise((resolve, reject) => {
+ BrowserTestUtils.browserLoaded(linkedBrowser)
+ .then(function () {
+ info("Tab added and finished loading: " + aUrl);
+ resolve(tab);
+ });
+ });
}
function removeTab(aTab, aWindow) {
info("Removing tab.");
- let deferred = promise.defer();
let targetWindow = aWindow || window;
let targetBrowser = targetWindow.gBrowser;
let tabContainer = targetBrowser.tabContainer;
- tabContainer.addEventListener("TabClose", function (aEvent) {
- info("Tab removed and finished closing.");
- deferred.resolve();
- }, {once: true});
+ return new Promise((resolve, reject) => {
+ tabContainer.addEventListener("TabClose", function (aEvent) {
+ info("Tab removed and finished closing.");
+ resolve();
+ }, {once: true});
- targetBrowser.removeTab(aTab);
- return deferred.promise;
+ targetBrowser.removeTab(aTab);
+ });
}
function handleError(aError) {
ok(false, "Got an error: " + aError.message + "\n" + aError.stack);
finish();
}
var gRequiresWebGL = false;
@@ -144,40 +142,38 @@ function isTestingSupported() {
info("This test requires WebGL support.");
info("Apparently, WebGL is" + (supported ? "" : " not") + " supported.");
return supported;
}
function once(aTarget, aEventName, aUseCapture = false) {
info("Waiting for event: '" + aEventName + "' on " + aTarget + ".");
- let deferred = promise.defer();
-
- for (let [add, remove] of [
- ["on", "off"], // Use event emitter before DOM events for consistency
- ["addEventListener", "removeEventListener"],
- ["addListener", "removeListener"]
- ]) {
- if ((add in aTarget) && (remove in aTarget)) {
- aTarget[add](aEventName, function onEvent(...aArgs) {
- info("Got event: '" + aEventName + "' on " + aTarget + ".");
- aTarget[remove](aEventName, onEvent, aUseCapture);
- deferred.resolve(...aArgs);
- }, aUseCapture);
- break;
+ return new Promise((resolve, reject) => {
+ for (let [add, remove] of [
+ ["on", "off"], // Use event emitter before DOM events for consistency
+ ["addEventListener", "removeEventListener"],
+ ["addListener", "removeListener"]
+ ]) {
+ if ((add in aTarget) && (remove in aTarget)) {
+ aTarget[add](aEventName, function onEvent(...aArgs) {
+ info("Got event: '" + aEventName + "' on " + aTarget + ".");
+ aTarget[remove](aEventName, onEvent, aUseCapture);
+ resolve(...aArgs);
+ }, aUseCapture);
+ break;
+ }
}
- }
-
- return deferred.promise;
+ });
}
function waitForTick() {
- let deferred = promise.defer();
- executeSoon(deferred.resolve);
- return deferred.promise;
+ return new Promise((resolve, reject) => {
+ executeSoon(resolve);
+ });
}
function navigateInHistory(aTarget, aDirection, aWaitForTargetEvent = "navigate") {
executeSoon(() => content.history[aDirection]());
return once(aTarget, aWaitForTargetEvent);
}
function navigate(aTarget, aUrl, aWaitForTargetEvent = "navigate") {
@@ -252,36 +248,34 @@ function teardown({target}) {
});
}
/**
* Takes a string `script` and evaluates it directly in the content
* in potentially a different process.
*/
function evalInDebuggee(script) {
- let deferred = promise.defer();
-
if (!mm) {
throw new Error("`loadFrameScripts()` must be called when using MessageManager.");
}
- let id = generateUUID().toString();
- mm.sendAsyncMessage("devtools:test:eval", { script: script, id: id });
- mm.addMessageListener("devtools:test:eval:response", handler);
+ return new Promise((resolve, reject) => {
+ let id = generateUUID().toString();
+ mm.sendAsyncMessage("devtools:test:eval", { script: script, id: id });
+ mm.addMessageListener("devtools:test:eval:response", handler);
- function handler({ data }) {
- if (id !== data.id) {
- return;
- }
+ function handler({ data }) {
+ if (id !== data.id) {
+ return;
+ }
- mm.removeMessageListener("devtools:test:eval:response", handler);
- deferred.resolve(data.value);
- }
-
- return deferred.promise;
+ mm.removeMessageListener("devtools:test:eval:response", handler);
+ resolve(data.value);
+ }
+ });
}
function getSourceActor(aSources, aURL) {
let item = aSources.getItemForAttachment(a => a.source.url === aURL);
return item ? item.value : null;
}
/**
@@ -291,14 +285,15 @@ function getSourceActor(aSources, aURL)
* Invoked once in a while until it returns true.
* @param number interval [optional]
* How often the predicate is invoked, in milliseconds.
*/
function* waitUntil(predicate, interval = 10) {
if (yield predicate()) {
return Promise.resolve(true);
}
- let deferred = Promise.defer();
- setTimeout(function () {
- waitUntil(predicate).then(() => deferred.resolve(true));
- }, interval);
- return deferred.promise;
+
+ return new Promise((resolve, reject) => {
+ setTimeout(function () {
+ waitUntil(predicate).then(() => resolve(true));
+ }, interval);
+ });
}