Bug 1445807 - Remove unsafe CPOWs in Source Editor tests r=jryans

MozReview-Commit-ID: 8OaDw0HSTx

--HG--
extra : rebase_source : c7557af34c286e8c6d99021b9c4615ed12f370a6
This commit is contained in:
Oriol Brufau 2018-03-20 21:52:13 +01:00
parent 29b065e859
commit b76ef6c3e0
4 changed files with 65 additions and 80 deletions

View File

@ -41,11 +41,8 @@ support-files =
[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

View File

@ -70,57 +70,62 @@ const TEST_URI = "data:text/html;charset=UTF-8," + encodeURIComponent(
" </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();
});
function runTests() {
progress = doc.getElementById("progress");
progressDiv = doc.querySelector("#progress > div");
async function runTests() {
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();
});
});
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 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;
}
@ -133,15 +138,3 @@ function checkState(expected, actual) {
}
ok(true, "Test " + index + " passed. ");
}
function finishUp() {
completer.walker.release().then(() => {
inspector.destroy();
inspector = null;
completer = null;
gBrowser.removeCurrentTab();
finish();
});
progress = null;
progressDiv = null;
}

View File

@ -123,18 +123,10 @@ const TEST_URI = "data:text/html;charset=UTF-8," + encodeURIComponent(
" </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()
});
@ -158,13 +150,16 @@ function runTests() {
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. ");
@ -173,9 +168,11 @@ function runTests() {
"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();
}
});

View File

@ -54,17 +54,10 @@ const TEST_URI = "data:text/html;charset=UTF-8," + encodeURIComponent(
" </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()
});
@ -88,12 +81,15 @@ function runTests() {
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])) {
@ -103,9 +99,11 @@ function runTests() {
"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();
}
});