author | Matt R <matthieu.rigolot@gmail.com> |
Tue, 09 May 2017 16:51:55 +0100 | |
changeset 358623 | 3f6a1965ff0de221ac0de81d50a63997e19c5622 |
parent 358622 | 23e285c5aa7068672d2bf025b23fdeee0cd4f06b |
child 358624 | 21ae7e6b4b44af904ad99668863ddbd5440ba0e6 |
push id | 31833 |
push user | cbook@mozilla.com |
push date | Wed, 17 May 2017 09:14:24 +0000 |
treeherder | mozilla-central@95990be385ca [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | tromey |
bugs | 1355523 |
milestone | 55.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/devtools/client/styleeditor/StyleEditorUI.jsm +++ b/devtools/client/styleeditor/StyleEditorUI.jsm @@ -24,18 +24,16 @@ const { showFilePicker, } = require("resource://devtools/client/styleeditor/StyleEditorUtil.jsm"); const {SplitView} = require("resource://devtools/client/shared/SplitView.jsm"); const {StyleSheetEditor} = require("resource://devtools/client/styleeditor/StyleSheetEditor.jsm"); const {PluralForm} = require("devtools/shared/plural-form"); const {PrefObserver} = require("devtools/client/shared/prefs"); const csscoverage = require("devtools/shared/fronts/csscoverage"); const {console} = require("resource://gre/modules/Console.jsm"); -const promise = require("promise"); -const defer = require("devtools/shared/defer"); const {ResponsiveUIManager} = require("resource://devtools/client/responsivedesign/responsivedesign.jsm"); const {KeyCodes} = require("devtools/client/shared/keycodes"); const LOAD_ERROR = "error-load"; const STYLE_EDITOR_TEMPLATE = "stylesheet"; const SELECTOR_HIGHLIGHTER_TYPE = "SelectorHighlighter"; const PREF_MEDIA_SIDEBAR = "devtools.styleeditor.showMediaSidebar"; @@ -657,17 +655,17 @@ StyleEditorUI.prototype = { // selected by the source editor. Only after we select that particular // editor and go the required line and column, it will become null. this._styleSheetBoundToSelect = this._styleSheetToSelect; this._styleSheetToSelect = null; return this._selectEditor(editor, toSelect.line, toSelect.col); } } - return promise.resolve(); + return Promise.resolve(); }, /** * Returns whether a given editor is the current editor to be selected. Tests * based on href or underlying stylesheet. * * @param {StyleSheetEditor} editor * The editor to test. @@ -705,53 +703,51 @@ StyleEditorUI.prototype = { editor.sourceEditor.setCursor({line: line, ch: col}); this._styleSheetBoundToSelect = null; }); let summaryPromise = this.getEditorSummary(editor).then((summary) => { this._view.activeSummary = summary; }); - return promise.all([editorPromise, summaryPromise]); + return Promise.all([editorPromise, summaryPromise]); }, getEditorSummary: function (editor) { - if (editor.summary) { - return promise.resolve(editor.summary); - } - - let deferred = defer(); let self = this; - this.on("editor-added", function onAdd(e, selected) { - if (selected == editor) { - self.off("editor-added", onAdd); - deferred.resolve(editor.summary); - } + if (editor.summary) { + return Promise.resolve(editor.summary); + } + + return new Promise(resolve => { + this.on("editor-added", function onAdd(e, selected) { + if (selected == editor) { + self.off("editor-added", onAdd); + resolve(editor.summary); + } + }); }); - - return deferred.promise; }, getEditorDetails: function (editor) { - if (editor.details) { - return promise.resolve(editor.details); - } - - let deferred = defer(); let self = this; - this.on("editor-added", function onAdd(e, selected) { - if (selected == editor) { - self.off("editor-added", onAdd); - deferred.resolve(editor.details); - } + if (editor.details) { + return Promise.resolve(editor.details); + } + + return new Promise(resolve => { + this.on("editor-added", function onAdd(e, selected) { + if (selected == editor) { + self.off("editor-added", onAdd); + resolve(editor.details); + } + }); }); - - return deferred.promise; }, /** * Returns an identifier for the given style sheet. * * @param {StyleSheet} styleSheet * The style sheet to be identified. */
--- a/devtools/client/styleeditor/StyleSheetEditor.jsm +++ b/devtools/client/styleeditor/StyleSheetEditor.jsm @@ -9,17 +9,16 @@ this.EXPORTED_SYMBOLS = ["StyleSheetEdit const Cc = Components.classes; const Ci = Components.interfaces; const Cu = Components.utils; const {require} = Cu.import("resource://devtools/shared/Loader.jsm", {}); const Editor = require("devtools/client/sourceeditor/editor"); const promise = require("promise"); -const defer = require("devtools/shared/defer"); const {shortSource, prettifyCSS} = require("devtools/shared/inspector/css-logic"); const {console} = require("resource://gre/modules/Console.jsm"); const Services = require("Services"); const EventEmitter = require("devtools/shared/event-emitter"); const {Task} = require("devtools/shared/task"); const {FileUtils} = require("resource://gre/modules/FileUtils.jsm"); const {NetUtil} = require("resource://gre/modules/NetUtil.jsm"); const {TextDecoder, OS} = Cu.import("resource://gre/modules/osfile.jsm", {}); @@ -474,25 +473,27 @@ StyleSheetEditor.prototype = { /** * Get the source editor for this editor. * * @return {Promise} * Promise that will resolve with the editor. */ getSourceEditor: function () { - let deferred = defer(); + let self = this; if (this.sourceEditor) { - return promise.resolve(this); + return Promise.resolve(this); } - this.on("source-editor-load", () => { - deferred.resolve(this); + + return new Promise(resolve => { + this.on("source-editor-load", () => { + resolve(self); + }); }); - return deferred.promise; }, /** * Focus the Style Editor input. */ focus: function () { if (this.sourceEditor) { this.sourceEditor.focus();
--- a/devtools/client/styleeditor/test/browser_styleeditor_autocomplete.js +++ b/devtools/client/styleeditor/test/browser_styleeditor_autocomplete.js @@ -151,49 +151,48 @@ function testState(testCases, index, sou let ready = sourceEditor.once(evt); EventUtils.synthesizeKey(key, mods, panelWindow); return ready; } function checkState(testCases, index, sourceEditor, popup) { - let deferred = defer(); - executeSoon(() => { - let [, details] = testCases[index]; - details = details || {}; - let {total, current, inserted} = details; + return new Promise(resolve => { + executeSoon(() => { + let [, details] = testCases[index]; + details = details || {}; + let {total, current, inserted} = details; - if (total != undefined) { - ok(popup.isOpen, "Popup is open for index " + index); - is(total, popup.itemCount, - "Correct total suggestions for index " + index); - is(current, popup.selectedIndex, - "Correct index is selected for index " + index); - if (inserted) { - let { text } = popup.getItemAtIndex(current); - let { line, ch } = sourceEditor.getCursor(); - let lineText = sourceEditor.getText(line); - is(lineText.substring(ch - text.length, ch), text, - "Current suggestion from the popup is inserted into the editor."); + if (total != undefined) { + ok(popup.isOpen, "Popup is open for index " + index); + is(total, popup.itemCount, + "Correct total suggestions for index " + index); + is(current, popup.selectedIndex, + "Correct index is selected for index " + index); + if (inserted) { + let { text } = popup.getItemAtIndex(current); + let { line, ch } = sourceEditor.getCursor(); + let lineText = sourceEditor.getText(line); + is(lineText.substring(ch - text.length, ch), text, + "Current suggestion from the popup is inserted into the editor."); + } + } else { + ok(!popup.isOpen, "Popup is closed for index " + index); + if (inserted) { + let { text } = popup.getItemAtIndex(current); + let { line, ch } = sourceEditor.getCursor(); + let lineText = sourceEditor.getText(line); + is(lineText.substring(ch - text.length, ch), text, + "Current suggestion from the popup is inserted into the editor."); + } } - } else { - ok(!popup.isOpen, "Popup is closed for index " + index); - if (inserted) { - let { text } = popup.getItemAtIndex(current); - let { line, ch } = sourceEditor.getCursor(); - let lineText = sourceEditor.getText(line); - is(lineText.substring(ch - text.length, ch), text, - "Current suggestion from the popup is inserted into the editor."); - } - } - deferred.resolve(); + resolve(); + }); }); - - return deferred.promise; } /** * Returns a list of all property names and a map of property name vs possible * CSS values provided by the Gecko engine. * * @return {Object} An object with following properties: * - CSSProperties {Array} Array of string containing all the possible
--- a/devtools/client/styleeditor/test/browser_styleeditor_filesave.js +++ b/devtools/client/styleeditor/test/browser_styleeditor_filesave.js @@ -46,21 +46,20 @@ add_task(function* () { yield dirty; is(editor.sourceEditor.isClean(), true, "Editor is clean."); ok(!editor.summary.classList.contains("unsaved"), "Star icon is not present in the corresponding summary."); }); function copy(srcChromeURL, destFileName) { - let deferred = defer(); - let destFile = FileUtils.getFile("ProfD", [destFileName]); - write(read(srcChromeURL), destFile, deferred.resolve); - - return deferred.promise; + return new Promise(resolve => { + let destFile = FileUtils.getFile("ProfD", [destFileName]); + write(read(srcChromeURL), destFile, resolve); + }); } function read(srcChromeURL) { let scriptableStream = Cc["@mozilla.org/scriptableinputstream;1"] .getService(Ci.nsIScriptableInputStream); let channel = NetUtil.newChannel({ uri: srcChromeURL,
--- a/devtools/client/styleeditor/test/browser_styleeditor_inline_friendly_names.js +++ b/devtools/client/styleeditor/test/browser_styleeditor_inline_friendly_names.js @@ -41,27 +41,25 @@ function testIndentifierGeneration(ui) { "URI is the identifier of style sheet file."); is(ui.getStyleSheetIdentifier(fakeInlineStyleSheet), "inline-2-at-http://example.com/", "Inline sheets are identified by their page and position in the page."); } function saveFirstInlineStyleSheet(ui) { - let deferred = defer(); - let editor = ui.editors[0]; - - let destFile = FileUtils.getFile("ProfD", [SAVE_PATH]); + return new Promise(resolve => { + let editor = ui.editors[0]; + let destFile = FileUtils.getFile("ProfD", [SAVE_PATH]); - editor.saveToFile(destFile, function (file) { - ok(file, "File was correctly saved."); - deferred.resolve(); + editor.saveToFile(destFile, function (file) { + ok(file, "File was correctly saved."); + resolve(); + }); }); - - return deferred.promise; } function testFriendlyNamesAfterSave(ui) { let firstEditor = ui.editors[0]; let secondEditor = ui.editors[1]; // The friendly name of first sheet should've been remembered, the second // should not be the same (bug 969900).
--- a/devtools/client/styleeditor/test/browser_styleeditor_media_sidebar.js +++ b/devtools/client/styleeditor/test/browser_styleeditor_media_sidebar.js @@ -126,18 +126,18 @@ function testRule(rule, text, matches, l function openEditor(editor) { getLinkFor(editor).click(); return editor.getSourceEditor(); } function listenForMediaChange(UI) { - let deferred = defer(); - UI.once("media-list-changed", () => { - deferred.resolve(); + return new Promise(resolve => { + UI.once("media-list-changed", () => { + resolve(); + }); }); - return deferred.promise; } function getLinkFor(editor) { return editor.summary.querySelector(".stylesheet-name"); }
--- a/devtools/client/styleeditor/test/browser_styleeditor_media_sidebar_sourcemaps.js +++ b/devtools/client/styleeditor/test/browser_styleeditor_media_sidebar_sourcemaps.js @@ -54,18 +54,18 @@ function testRule(rule, text, lineno) { function openEditor(editor) { getLinkFor(editor).click(); return editor.getSourceEditor(); } function listenForMediaChange(UI) { - let deferred = defer(); - UI.once("media-list-changed", () => { - deferred.resolve(); + return new Promise(resolve => { + UI.once("media-list-changed", () => { + resolve(); + }); }); - return deferred.promise; } function getLinkFor(editor) { return editor.summary.querySelector(".stylesheet-name"); }
--- a/devtools/client/styleeditor/test/browser_styleeditor_new.js +++ b/devtools/client/styleeditor/test/browser_styleeditor_new.js @@ -22,47 +22,44 @@ add_task(function* () { yield waitForPropertyChange; testUpdated(editor, originalHref); }); function createNew(ui, panelWindow) { info("Creating a new stylesheet now"); - let deferred = defer(); - ui.once("editor-added", (ev, editor) => { - editor.getSourceEditor().then(deferred.resolve); - }); + return new Promise(resolve => { + ui.once("editor-added", (ev, editor) => { + editor.getSourceEditor().then(resolve); + }); - waitForFocus(function () { - // create a new style sheet - let newButton = panelWindow.document - .querySelector(".style-editor-newButton"); - ok(newButton, "'new' button exists"); + waitForFocus(function () { + // create a new style sheet + let newButton = panelWindow.document + .querySelector(".style-editor-newButton"); + ok(newButton, "'new' button exists"); - EventUtils.synthesizeMouseAtCenter(newButton, {}, panelWindow); - }, panelWindow); - - return deferred.promise; + EventUtils.synthesizeMouseAtCenter(newButton, {}, panelWindow); + }, panelWindow); + }); } function onPropertyChange(editor) { - let deferred = defer(); - - editor.styleSheet.on("property-change", function onProp(property) { - // wait for text to be entered fully - let text = editor.sourceEditor.getText(); - if (property == "ruleCount" && text == TESTCASE_CSS_SOURCE + "}") { - editor.styleSheet.off("property-change", onProp); - deferred.resolve(); - } + return new Promise(resolve => { + editor.styleSheet.on("property-change", function onProp(property) { + // wait for text to be entered fully + let text = editor.sourceEditor.getText(); + if (property == "ruleCount" && text == TESTCASE_CSS_SOURCE + "}") { + editor.styleSheet.off("property-change", onProp); + resolve(); + } + }); }); - - return deferred.promise; } function* testInitialState(editor) { info("Testing the initial state of the new editor"); let summary = editor.summary; ok(editor.sourceLoaded, "new editor is loaded when attached"); @@ -78,28 +75,26 @@ function* testInitialState(editor) { selector: "body", name: "background-color" }); is(color, "rgb(255, 255, 255)", "content's background color is initially white"); } function typeInEditor(editor, panelWindow) { - let deferred = defer(); + return new Promise(resolve => { + waitForFocus(function () { + for (let c of TESTCASE_CSS_SOURCE) { + EventUtils.synthesizeKey(c, {}, panelWindow); + } + ok(editor.unsaved, "new editor has unsaved flag"); - waitForFocus(function () { - for (let c of TESTCASE_CSS_SOURCE) { - EventUtils.synthesizeKey(c, {}, panelWindow); - } - ok(editor.unsaved, "new editor has unsaved flag"); - - deferred.resolve(); - }, panelWindow); - - return deferred.promise; + resolve(); + }, panelWindow); + }); } function testUpdated(editor, originalHref) { info("Testing the state of the new editor after editing it"); is(editor.sourceEditor.getText(), TESTCASE_CSS_SOURCE + "}", "rule bracket has been auto-closed");
--- a/devtools/client/styleeditor/test/browser_styleeditor_opentab.js +++ b/devtools/client/styleeditor/test/browser_styleeditor_opentab.js @@ -17,103 +17,97 @@ add_task(function* () { is(ui._openLinkNewTabItem.getAttribute("hidden"), "false", "The menu item is not hidden"); let url = "https://example.com/browser/devtools/client/styleeditor/test/" + "simple.css"; is(ui._contextMenuStyleSheet.href, url, "Correct URL for sheet"); let originalOpenUILinkIn = ui._window.openUILinkIn; - let tabOpenedDefer = defer(); + let tabOpenedDefer = new Promise(resolve => { + ui._window.openUILinkIn = newUrl => { + // Reset the actual openUILinkIn function before proceeding. + ui._window.openUILinkIn = originalOpenUILinkIn; - ui._window.openUILinkIn = newUrl => { - // Reset the actual openUILinkIn function before proceeding. - ui._window.openUILinkIn = originalOpenUILinkIn; - - is(newUrl, url, "The correct tab has been opened"); - tabOpenedDefer.resolve(); - }; + is(newUrl, url, "The correct tab has been opened"); + resolve(); + }; + }); ui._openLinkNewTabItem.click(); info(`Waiting for a tab to open - ${url}`); - yield tabOpenedDefer.promise; + yield tabOpenedDefer; yield rightClickInlineStyleSheet(ui, ui.editors[1]); is(ui._openLinkNewTabItem.getAttribute("disabled"), "true", "The menu item is disabled"); is(ui._openLinkNewTabItem.getAttribute("hidden"), "false", "The menu item is not hidden"); yield rightClickNoStyleSheet(ui); is(ui._openLinkNewTabItem.getAttribute("hidden"), "true", "The menu item is not hidden"); }); function onPopupShow(contextMenu) { - let deferred = defer(); - contextMenu.addEventListener("popupshown", function () { - deferred.resolve(); - }, {once: true}); - return deferred.promise; + return new Promise(resolve => { + contextMenu.addEventListener("popupshown", function () { + resolve(); + }, {once: true}); + }); } function onPopupHide(contextMenu) { - let deferred = defer(); - contextMenu.addEventListener("popuphidden", function () { - deferred.resolve(); - }, {once: true}); - return deferred.promise; + return new Promise(resolve => { + contextMenu.addEventListener("popuphidden", function () { + resolve(); + }, {once: true}); + }); } function rightClickStyleSheet(ui, editor) { - let deferred = defer(); + return new Promise(resolve => { + onPopupShow(ui._contextMenu).then(()=> { + onPopupHide(ui._contextMenu).then(() => { + resolve(); + }); + ui._contextMenu.hidePopup(); + }); - onPopupShow(ui._contextMenu).then(()=> { - onPopupHide(ui._contextMenu).then(() => { - deferred.resolve(); - }); - ui._contextMenu.hidePopup(); + EventUtils.synthesizeMouseAtCenter( + editor.summary.querySelector(".stylesheet-name"), + {button: 2, type: "contextmenu"}, + ui._window); }); - - EventUtils.synthesizeMouseAtCenter( - editor.summary.querySelector(".stylesheet-name"), - {button: 2, type: "contextmenu"}, - ui._window); - - return deferred.promise; } function rightClickInlineStyleSheet(ui, editor) { - let deferred = defer(); + return new Promise(resolve => { + onPopupShow(ui._contextMenu).then(()=> { + onPopupHide(ui._contextMenu).then(() => { + resolve(); + }); + ui._contextMenu.hidePopup(); + }); - onPopupShow(ui._contextMenu).then(()=> { - onPopupHide(ui._contextMenu).then(() => { - deferred.resolve(); - }); - ui._contextMenu.hidePopup(); + EventUtils.synthesizeMouseAtCenter( + editor.summary.querySelector(".stylesheet-name"), + {button: 2, type: "contextmenu"}, + ui._window); }); - - EventUtils.synthesizeMouseAtCenter( - editor.summary.querySelector(".stylesheet-name"), - {button: 2, type: "contextmenu"}, - ui._window); - - return deferred.promise; } function rightClickNoStyleSheet(ui) { - let deferred = defer(); + return new Promise(resolve => { + onPopupShow(ui._contextMenu).then(()=> { + onPopupHide(ui._contextMenu).then(() => { + resolve(); + }); + ui._contextMenu.hidePopup(); + }); - onPopupShow(ui._contextMenu).then(()=> { - onPopupHide(ui._contextMenu).then(() => { - deferred.resolve(); - }); - ui._contextMenu.hidePopup(); + EventUtils.synthesizeMouseAtCenter( + ui._panelDoc.querySelector("#splitview-tpl-summary-stylesheet"), + {button: 2, type: "contextmenu"}, + ui._window); }); - - EventUtils.synthesizeMouseAtCenter( - ui._panelDoc.querySelector("#splitview-tpl-summary-stylesheet"), - {button: 2, type: "contextmenu"}, - ui._window); - - return deferred.promise; }
--- a/devtools/client/styleeditor/test/browser_styleeditor_private_perwindowpb.js +++ b/devtools/client/styleeditor/test/browser_styleeditor_private_perwindowpb.js @@ -41,45 +41,43 @@ add_task(function* () { }); }); win.close(); yield onUnload; }); function checkDiskCacheFor(host) { let foundPrivateData = false; - let deferred = defer(); - Visitor.prototype = { - onCacheStorageInfo: function (num) { - info("disk storage contains " + num + " entries"); - }, - onCacheEntryInfo: function (uri) { - let urispec = uri.asciiSpec; - info(urispec); - foundPrivateData |= urispec.includes(host); - }, - onCacheEntryVisitCompleted: function () { - is(foundPrivateData, false, "web content present in disk cache"); - deferred.resolve(); - } - }; - function Visitor() {} + return new Promise(resolve => { + Visitor.prototype = { + onCacheStorageInfo: function (num) { + info("disk storage contains " + num + " entries"); + }, + onCacheEntryInfo: function (uri) { + let urispec = uri.asciiSpec; + info(urispec); + foundPrivateData |= urispec.includes(host); + }, + onCacheEntryVisitCompleted: function () { + is(foundPrivateData, false, "web content present in disk cache"); + resolve(); + } + }; + function Visitor() {} - let storage = cache.diskCacheStorage(LoadContextInfo.default, false); - storage.asyncVisitStorage(new Visitor(), - /* Do walk entries */ - true); - - return deferred.promise; + let storage = cache.diskCacheStorage(LoadContextInfo.default, false); + storage.asyncVisitStorage(new Visitor(), + /* Do walk entries */ + true); + }); } function waitForDelayedStartupFinished(win) { - let deferred = defer(); - Services.obs.addObserver(function observer(subject, topic) { - if (win == subject) { - Services.obs.removeObserver(observer, topic); - deferred.resolve(); - } - }, "browser-delayed-startup-finished"); - - return deferred.promise; + return new Promise(resolve => { + Services.obs.addObserver(function observer(subject, topic) { + if (win == subject) { + Services.obs.removeObserver(observer, topic); + resolve(); + } + }, "browser-delayed-startup-finished"); + }); }
--- a/devtools/client/styleeditor/test/browser_styleeditor_scroll.js +++ b/devtools/client/styleeditor/test/browser_styleeditor_scroll.js @@ -33,17 +33,17 @@ add_task(function* () { let longEditor = ui.editors[1]; info(`Selecting doc_long.css and scrolling to line ${LINE_TO_SELECT}`); // We need to wait for editor-selected if we want to check the scroll // position as scrolling occurs after selectStyleSheet resolves but before the // event is emitted. let selectEventPromise = waitForEditorToBeSelected(longEditor, ui); - ui.selectStyleSheet(longEditor.styleSheet, LINE_TO_SELECT); + yield ui.selectStyleSheet(longEditor.styleSheet, LINE_TO_SELECT); yield selectEventPromise; info("Checking that the correct line is visible after initial load"); let { from, to } = longEditor.sourceEditor.getViewport(); info(`Lines ${from}-${to} are visible (expected ${LINE_TO_SELECT}).`); ok(from <= LINE_TO_SELECT, "The editor scrolled too much.");
--- a/devtools/client/styleeditor/test/browser_styleeditor_sourcemap_watching.js +++ b/devtools/client/styleeditor/test/browser_styleeditor_sourcemap_watching.js @@ -70,41 +70,37 @@ add_task(function* () { yield styleApplied; color = yield getComputedStyleProperty({selector: "div", name: "color"}); is(color, "rgb(0, 0, 255)", "div is blue after saving file"); }); function editSCSS(editor) { - let deferred = defer(); - - editor.sourceEditor.setText(CSS_TEXT); + return new Promise(resolve => { + editor.sourceEditor.setText(CSS_TEXT); - editor.saveToFile(null, function (file) { - ok(file, "Scss file should be saved"); - deferred.resolve(); + editor.saveToFile(null, function (file) { + ok(file, "Scss file should be saved"); + resolve(); + }); }); - - return deferred.promise; } function editCSSFile(CSSFile) { return write(CSS_TEXT, CSSFile); } function pauseForTimeChange() { - let deferred = defer(); - - // We have to wait for the system time to turn over > 1000 ms so that - // our file's last change time will show a change. This reflects what - // would happen in real life with a user manually saving the file. - setTimeout(deferred.resolve, 2000); - - return deferred.promise; + return new Promise(resolve => { + // We have to wait for the system time to turn over > 1000 ms so that + // our file's last change time will show a change. This reflects what + // would happen in real life with a user manually saving the file. + setTimeout(resolve, 2000); + }); } /* Helpers */ function getLinkFor(editor) { return editor.summary.querySelector(".stylesheet-name"); } @@ -135,28 +131,26 @@ function read(srcChromeURL) { } scriptableStream.close(); input.close(); return data; } function write(data, file) { - let deferred = defer(); - - let converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"] - .createInstance(Ci.nsIScriptableUnicodeConverter); + return new Promise(resolve => { + let converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"] + .createInstance(Ci.nsIScriptableUnicodeConverter); - converter.charset = "UTF-8"; + converter.charset = "UTF-8"; - let istream = converter.convertToInputStream(data); - let ostream = FileUtils.openSafeFileOutputStream(file); + let istream = converter.convertToInputStream(data); + let ostream = FileUtils.openSafeFileOutputStream(file); - NetUtil.asyncCopy(istream, ostream, function (status) { - if (!Components.isSuccessCode(status)) { - info("Coudln't write to " + file.path); - return; - } - deferred.resolve(file); + NetUtil.asyncCopy(istream, ostream, function (status) { + if (!Components.isSuccessCode(status)) { + info("Coudln't write to " + file.path); + return; + } + resolve(file); + }); }); - - return deferred.promise; }
--- a/devtools/client/styleeditor/test/browser_styleeditor_syncAlreadyOpen.js +++ b/devtools/client/styleeditor/test/browser_styleeditor_syncAlreadyOpen.js @@ -24,27 +24,28 @@ add_task(function* () { let { inspector, view, toolbox } = yield openRuleView(); // In this test, make sure the style editor is open before making // changes in the inspector. let { ui } = yield openStyleEditor(); let editor = yield ui.editors[0].getSourceEditor(); - let onEditorChange = defer(); - editor.sourceEditor.on("change", onEditorChange.resolve); + let onEditorChange = new Promise(resolve => { + editor.sourceEditor.on("change", resolve); + }); yield toolbox.getPanel("inspector"); yield selectNode("#testid", inspector); let ruleEditor = getRuleViewRuleEditor(view, 1); // Disable the "font-size" property. let propEditor = ruleEditor.rule.textProps[0].editor; let onModification = view.once("ruleview-changed"); propEditor.enable.click(); yield onModification; yield openStyleEditor(); - yield onEditorChange.promise; + yield onEditorChange; let text = editor.sourceEditor.getText(); is(text, expectedText, "style inspector changes are synced"); });
--- a/devtools/client/styleeditor/test/browser_styleeditor_syncIntoRuleView.js +++ b/devtools/client/styleeditor/test/browser_styleeditor_syncIntoRuleView.js @@ -28,21 +28,19 @@ add_task(function* () { yield typeInEditor(editor, panel.panelWindow); yield waitForRuleView; let value = getRuleViewPropertyValue(view, "#testid", "color"); is(value, "chartreuse", "check that edits were synced to rule view"); }); function typeInEditor(editor, panelWindow) { - let deferred = defer(); + return new Promise(resolve => { + waitForFocus(function () { + for (let c of TESTCASE_CSS_SOURCE) { + EventUtils.synthesizeKey(c, {}, panelWindow); + } + ok(editor.unsaved, "new editor has unsaved flag"); - waitForFocus(function () { - for (let c of TESTCASE_CSS_SOURCE) { - EventUtils.synthesizeKey(c, {}, panelWindow); - } - ok(editor.unsaved, "new editor has unsaved flag"); - - deferred.resolve(); - }, panelWindow); - - return deferred.promise; + resolve(); + }, panelWindow); + }); }
--- a/devtools/client/styleeditor/test/browser_styleeditor_transition_rule.js +++ b/devtools/client/styleeditor/test/browser_styleeditor_transition_rule.js @@ -40,12 +40,12 @@ add_task(function* () { function openEditor(editor) { let link = editor.summary.querySelector(".stylesheet-name"); link.click(); return editor.getSourceEditor(); } function listenForStyleChange(sheet) { - let deferred = defer(); - sheet.on("style-applied", deferred.resolve); - return deferred.promise; + return new Promise(resolve => { + sheet.on("style-applied", resolve); + }); }
--- a/devtools/client/styleeditor/test/head.js +++ b/devtools/client/styleeditor/test/head.js @@ -18,49 +18,47 @@ const TEST_HOST = "mochi.test:8888"; /** * Add a new test tab in the browser and load the given url. * @param {String} url The url to be loaded in the new tab * @param {Window} win The window to add the tab to (default: current window). * @return a promise that resolves to the tab object when the url is loaded */ var addTab = function (url, win) { info("Adding a new tab with URL: '" + url + "'"); - let def = defer(); - let targetWindow = win || window; - let targetBrowser = targetWindow.gBrowser; + return new Promise(resolve => { + let targetWindow = win || window; + let targetBrowser = targetWindow.gBrowser; - let tab = targetBrowser.selectedTab = targetBrowser.addTab(url); - BrowserTestUtils.browserLoaded(targetBrowser.selectedBrowser) - .then(function () { - info("URL '" + url + "' loading complete"); - def.resolve(tab); - }); - - return def.promise; + let tab = targetBrowser.selectedTab = targetBrowser.addTab(url); + BrowserTestUtils.browserLoaded(targetBrowser.selectedBrowser) + .then(function () { + info("URL '" + url + "' loading complete"); + resolve(tab); + }); + }); }; /** * Navigate the currently selected tab to a new URL and wait for it to load. * @param {String} url The url to be loaded in the current tab. * @return a promise that resolves when the page has fully loaded. */ -var navigateTo = Task.async(function* (url) { +var navigateTo = function (url) { info(`Navigating to ${url}`); let browser = gBrowser.selectedBrowser; - let navigating = defer(); - browser.addEventListener("load", function () { - navigating.resolve(); - }, {capture: true, once: true}); + return new Promise(resolve => { + browser.addEventListener("load", function () { + resolve(); + }, {capture: true, once: true}); - browser.loadURI(url); - - yield navigating.promise; -}); + browser.loadURI(url); + }); +}; var navigateToAndWaitForStyleSheets = Task.async(function* (url, ui) { let onReset = ui.once("stylesheets-reset"); yield navigateTo(url); yield onReset; }); var reloadPageAndWaitForStyleSheets = Task.async(function* (ui) {