Bug 1445807 - Remove unsafe CPOWs in Source Editor tests
MozReview-Commit-ID: 8OaDw0HSTx
--- a/devtools/client/sourceeditor/test/browser.ini
+++ b/devtools/client/sourceeditor/test/browser.ini
@@ -36,17 +36,14 @@ support-files =
[browser_editor_history.js]
[browser_editor_markers.js]
[browser_editor_movelines.js]
[browser_editor_prefs.js]
[browser_editor_script_injection.js]
[browser_editor_addons.js]
[browser_codemirror.js]
[browser_css_autocompletion.js]
-uses-unsafe-cpows = true
[browser_css_getInfo.js]
-uses-unsafe-cpows = true
[browser_css_statemachine.js]
-uses-unsafe-cpows = true
[browser_detectindent.js]
[browser_vimemacs.js]
skip-if = os == 'linux'&&debug # bug 981707
--- a/devtools/client/sourceeditor/test/browser_css_autocompletion.js
+++ b/devtools/client/sourceeditor/test/browser_css_autocompletion.js
@@ -65,83 +65,76 @@ const TEST_URI = "data:text/html;charset
/* eslint-enable max-len */
" <button class='category-name visible'></button>",
" <div class='devtools-toolbarbutton' label='true'>",
" <hbox class='toolbarbutton-menubutton-button'></hbox></div>",
" </body>",
" </html>"
].join("\n"));
-let doc = null;
+let browser;
let index = 0;
let completer = null;
-let progress;
-let progressDiv;
let inspector;
-function test() {
- waitForExplicitFinish();
- addTab(TEST_URI).then(function() {
- doc = gBrowser.contentDocumentAsCPOW;
- runTests();
- });
+add_task(async function test() {
+ let tab = await addTab(TEST_URI);
+ browser = tab.linkedBrowser;
+ await runTests();
+ browser = null;
+ gBrowser.removeCurrentTab();
+});
+
+async function runTests() {
+ let target = TargetFactory.forTab(gBrowser.selectedTab);
+ await target.makeRemote();
+ inspector = InspectorFront(target.client, target.form);
+ let walker = await inspector.getWalker();
+ completer = new CSSCompleter({walker: walker,
+ cssProperties: getClientCssProperties()});
+ await checkStateAndMoveOn();
+ await completer.walker.release();
+ inspector.destroy();
+ inspector = null;
+ completer = null;
}
-function runTests() {
- progress = doc.getElementById("progress");
- progressDiv = doc.querySelector("#progress > div");
- let target = TargetFactory.forTab(gBrowser.selectedTab);
- target.makeRemote().then(() => {
- inspector = InspectorFront(target.client, target.form);
- inspector.getWalker().then(walker => {
- completer = new CSSCompleter({walker: walker,
- cssProperties: getClientCssProperties()});
- checkStateAndMoveOn();
- });
- });
-}
-
-function checkStateAndMoveOn() {
+async function checkStateAndMoveOn() {
if (index == tests.length) {
- finishUp();
return;
}
let [lineCh, expectedSuggestions] = tests[index];
let [line, ch] = lineCh;
- progress.dataset.progress = ++index;
- progressDiv.style.width = 100 * index / tests.length + "%";
+ ++index;
+ await ContentTask.spawn(browser, [index, tests.length], function([idx, len]) {
+ let progress = content.document.getElementById("progress");
+ let progressDiv = content.document.querySelector("#progress > div");
+ progress.dataset.progress = idx;
+ progressDiv.style.width = 100 * idx / len + "%";
+ });
- completer.complete(limit(source, lineCh), {line, ch})
- .then(actualSuggestions => checkState(expectedSuggestions, actualSuggestions))
- .then(checkStateAndMoveOn);
+ let actualSuggestions = await completer.complete(limit(source, lineCh), {line, ch});
+ await checkState(expectedSuggestions, actualSuggestions);
+ await checkStateAndMoveOn();
}
-function checkState(expected, actual) {
+async function checkState(expected, actual) {
if (expected.length != actual.length) {
ok(false, "Number of suggestions did not match up for state " + index +
". Expected: " + expected.length + ", Actual: " + actual.length);
- progress.classList.add("failed");
+ await ContentTask.spawn(browser, null, function() {
+ let progress = content.document.getElementById("progress");
+ progress.classList.add("failed");
+ });
return;
}
for (let i = 0; i < actual.length; i++) {
if (expected[i] != actual[i].label) {
ok(false, "Suggestion " + i + " of state " + index + " did not match up" +
". Expected: " + expected[i] + ". Actual: " + actual[i].label);
return;
}
}
ok(true, "Test " + index + " passed. ");
}
-
-function finishUp() {
- completer.walker.release().then(() => {
- inspector.destroy();
- inspector = null;
- completer = null;
- gBrowser.removeCurrentTab();
- finish();
- });
- progress = null;
- progressDiv = null;
-}
--- a/devtools/client/sourceeditor/test/browser_css_getInfo.js
+++ b/devtools/client/sourceeditor/test/browser_css_getInfo.js
@@ -118,28 +118,20 @@ const TEST_URI = "data:text/html;charset
" <h2>State machine tests for CSS autocompleter.</h2><br>",
" <div id='progress' data-progress='0'>",
" <div></div>",
" </div>",
" </body>",
" </html>"
].join("\n"));
-let doc = null;
-function test() {
- waitForExplicitFinish();
- gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
- BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser).then(() => {
- doc = gBrowser.contentDocumentAsCPOW;
- runTests();
- });
- gBrowser.loadURI(TEST_URI);
-}
+add_task(async function test() {
+ let tab = await addTab(TEST_URI);
+ let browser = tab.linkedBrowser;
-function runTests() {
let completer = new CSSCompleter({
cssProperties: getClientCssProperties()
});
let matches = (arr, toCheck) => !arr.some((x, i) => x != toCheck[i]);
let checkState = (expected, actual) => {
if (expected[0] == "null" && actual == null) {
return true;
} else if (expected[0] == actual.state && expected[0] == "selector" &&
@@ -153,29 +145,34 @@ function runTests() {
matches(expected[1], actual.selectors) &&
expected[2] == actual.propertyName &&
expected[3] == actual.value) {
return true;
}
return false;
};
- let progress = doc.getElementById("progress");
- let progressDiv = doc.querySelector("#progress > div");
let i = 0;
for (let expected of tests) {
+ ++i;
let caret = expected.splice(0, 1)[0];
- progress.dataset.progress = ++i;
- progressDiv.style.width = 100 * i / tests.length + "%";
+ await ContentTask.spawn(browser, [i, tests.length], function([idx, len]) {
+ let progress = content.document.getElementById("progress");
+ let progressDiv = content.document.querySelector("#progress > div");
+ progress.dataset.progress = idx;
+ progressDiv.style.width = 100 * idx / len + "%";
+ });
let actual = completer.getInfoAt(source, caret);
if (checkState(expected, actual)) {
ok(true, "Test " + i + " passed. ");
} else {
ok(false, "Test " + i + " failed. Expected state : [" + expected + "] " +
"but found [" + actual.state + ", " +
(actual.selector || actual.selectors) + ", " +
actual.propertyName + ", " + actual.value + "].");
- progress.classList.add("failed");
+ await ContentTask.spawn(browser, null, function() {
+ let progress = content.document.getElementById("progress");
+ progress.classList.add("failed");
+ });
}
}
gBrowser.removeCurrentTab();
- finish();
-}
+});
--- a/devtools/client/sourceeditor/test/browser_css_statemachine.js
+++ b/devtools/client/sourceeditor/test/browser_css_statemachine.js
@@ -49,27 +49,20 @@ const TEST_URI = "data:text/html;charset
" <h2>State machine tests for CSS autocompleter.</h2><br>",
" <div id='progress' data-progress='0'>",
" <div></div>",
" </div>",
" </body>",
" </html>"
].join("\n"));
-var doc = null;
-function test() {
- waitForExplicitFinish();
- gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser, TEST_URI);
- BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser).then(() => {
- doc = gBrowser.contentDocumentAsCPOW;
- runTests();
- });
-}
+add_task(async function test() {
+ let tab = await addTab(TEST_URI);
+ let browser = tab.linkedBrowser;
-function runTests() {
let completer = new CSSCompleter({
cssProperties: getClientCssProperties()
});
let checkState = state => {
if (state[0] == "null" && (!completer.state || completer.state == "null")) {
return true;
} else if (state[0] == completer.state && state[0] == "selector" &&
state[1] == completer.selectorState &&
@@ -83,29 +76,34 @@ function runTests() {
} else if (state[0] == completer.state &&
state[2] == completer.completing &&
state[0] != "selector" && state[0] != "value") {
return true;
}
return false;
};
- let progress = doc.getElementById("progress");
- let progressDiv = doc.querySelector("#progress > div");
let i = 0;
for (let testcase of tests) {
- progress.dataset.progress = ++i;
- progressDiv.style.width = 100 * i / tests.length + "%";
+ ++i;
+ await ContentTask.spawn(browser, [i, tests.length], function([idx, len]) {
+ let progress = content.document.getElementById("progress");
+ let progressDiv = content.document.querySelector("#progress > div");
+ progress.dataset.progress = idx;
+ progressDiv.style.width = 100 * idx / len + "%";
+ });
completer.resolveState(limit(source, testcase[0]),
{line: testcase[0][0], ch: testcase[0][1]});
if (checkState(testcase[1])) {
ok(true, "Test " + i + " passed. ");
} else {
ok(false, "Test " + i + " failed. Expected state : [" + testcase[1] + "] " +
"but found [" + completer.state + ", " + completer.selectorState +
", " + completer.completing + ", " +
(completer.propertyName || completer.selector) + "].");
- progress.classList.add("failed");
+ await ContentTask.spawn(browser, null, function() {
+ let progress = content.document.getElementById("progress");
+ progress.classList.add("failed");
+ });
}
}
gBrowser.removeCurrentTab();
- finish();
-}
+});