--- a/devtools/client/commandline/test/browser_cmd_pagemod_export.js
+++ b/devtools/client/commandline/test/browser_cmd_pagemod_export.js
@@ -9,48 +9,61 @@ const TEST_URI = "http://example.com/bro
function test() {
return Task.spawn(spawnTest).then(finish, helpers.handleError);
}
function* spawnTest() {
let options = yield helpers.openTab(TEST_URI);
yield helpers.openToolbar(options);
- const documentElement = options.document.documentElement;
- const initialHtml = documentElement.innerHTML;
+ function getHTML() {
+ return ContentTask.spawn(options.browser, {}, function* () {
+ return content.document.documentElement.innerHTML;
+ });
+ }
+
+ const initialHtml = yield getHTML();
+
function resetContent() {
- options.document.documentElement.innerHTML = initialHtml;
+ return ContentTask.spawn(options.browser, initialHtml, function* (html) {
+ content.document.documentElement.innerHTML = html;
+ });
}
// Test exporting HTML
- let oldOpen = options.window.open;
- let openURL = "";
- options.window.open = function (url) {
- // The URL is a data: URL that contains the document source
- openURL = decodeURIComponent(url);
- };
+ yield ContentTask.spawn(options.browser, {}, function* () {
+ content.wrappedJSObject.oldOpen = content.open;
+ content.wrappedJSObject.openURL = "";
+ content.wrappedJSObject.open = function (url) {
+ // The URL is a data: URL that contains the document source
+ content.wrappedJSObject.openURL = decodeURIComponent(url);
+ };
+ });
yield helpers.audit(options, [
{
setup: "export html",
skipIf: true,
check: {
input: "export html",
hints: " [destination]",
markup: "VVVVVVVVVVV",
status: "VALID",
},
exec: {
output: ""
},
- post: function () {
- isnot(openURL.indexOf('<html lang="en">'), -1, "export html works: <html>");
- isnot(openURL.indexOf("<title>GCLI"), -1, "export html works: <title>");
- isnot(openURL.indexOf('<p id="someid">#'), -1, "export html works: <p>");
- }
+ post: Task.async(function* () {
+ yield ContentTask.spawn(options.browser, {}, function* () {
+ let openURL = content.wrappedJSObject.openURL;
+ isnot(openURL.indexOf('<html lang="en">'), -1, "export html works: <html>");
+ isnot(openURL.indexOf("<title>GCLI"), -1, "export html works: <title>");
+ isnot(openURL.indexOf('<p id="someid">#'), -1, "export html works: <p>");
+ });
+ })
},
{
setup: "export html stdout",
check: {
input: "export html stdout",
hints: "",
markup: "VVVVVVVVVVVVVVVVVV",
status: "VALID",
@@ -63,18 +76,21 @@ function* spawnTest() {
/<html lang="en">/,
/<title>GCLI/,
/<p id="someid">#/
]
}
}
]);
- options.window.open = oldOpen;
- oldOpen = undefined;
+ yield ContentTask.spawn(options.browser, {}, function* () {
+ content.wrappedJSObject.open = content.wrappedJSObject.oldOpen;
+ delete content.wrappedJSObject.openURL;
+ delete content.wrappedJSObject.oldOpen;
+ });
// Test 'pagemod replace'
yield helpers.audit(options, [
{
setup: "pagemod replace",
check: {
input: "pagemod replace",
hints: " <search> <replace> [ignoreCase] [selector] [root] [attrOnly] [contentOnly] [attributes]",
@@ -109,92 +125,94 @@ function* spawnTest() {
status: "VALID"
}
},
{
setup: "pagemod replace sOme foOBar",
exec: {
output: /^[^:]+: 13\. [^:]+: 0\. [^:]+: 0\.\s*$/
},
- post: function () {
- is(documentElement.innerHTML, initialHtml, "no change in the page");
- }
+ post: Task.async(function* () {
+ let html = yield getHTML();
+ is(html, initialHtml, "no change in the page");
+ })
},
{
setup: "pagemod replace sOme foOBar true",
exec: {
output: /^[^:]+: 13\. [^:]+: 2\. [^:]+: 2\.\s*$/
},
- post: function () {
- let html = documentElement.innerHTML;
+ post: Task.async(function* () {
+ let html = yield getHTML();
isnot(html.indexOf('<p class="foOBarclass">.foOBarclass'), -1,
".someclass changed to .foOBarclass");
isnot(html.indexOf('<p id="foOBarid">#foOBarid'), -1,
"#someid changed to #foOBarid");
- resetContent();
- }
+ yield resetContent();
+ })
},
{
setup: "pagemod replace some foobar --contentOnly",
exec: {
output: /^[^:]+: 13\. [^:]+: 2\. [^:]+: 0\.\s*$/
},
- post: function () {
- let html = documentElement.innerHTML;
+ post: Task.async(function* () {
+ let html = yield getHTML();
isnot(html.indexOf('<p class="someclass">.foobarclass'), -1,
".someclass changed to .foobarclass (content only)");
isnot(html.indexOf('<p id="someid">#foobarid'), -1,
"#someid changed to #foobarid (content only)");
- resetContent();
- }
+ yield resetContent();
+ })
},
{
setup: "pagemod replace some foobar --attrOnly",
exec: {
output: /^[^:]+: 13\. [^:]+: 0\. [^:]+: 2\.\s*$/
},
- post: function () {
- let html = documentElement.innerHTML;
+ post: Task.async(function* () {
+ let html = yield getHTML();
isnot(html.indexOf('<p class="foobarclass">.someclass'), -1,
".someclass changed to .foobarclass (attr only)");
isnot(html.indexOf('<p id="foobarid">#someid'), -1,
"#someid changed to #foobarid (attr only)");
- resetContent();
- }
+ yield resetContent();
+ })
},
{
setup: "pagemod replace some foobar --root head",
exec: {
output: /^[^:]+: 2\. [^:]+: 0\. [^:]+: 0\.\s*$/
},
- post: function () {
- is(documentElement.innerHTML, initialHtml, "nothing changed");
- }
+ post: Task.async(function* () {
+ let html = yield getHTML();
+ is(html, initialHtml, "nothing changed");
+ })
},
{
setup: "pagemod replace some foobar --selector .someclass,div,span",
exec: {
output: /^[^:]+: 4\. [^:]+: 1\. [^:]+: 1\.\s*$/
},
- post: function () {
- let html = documentElement.innerHTML;
+ post: Task.async(function* () {
+ let html = yield getHTML();
isnot(html.indexOf('<p class="foobarclass">.foobarclass'), -1,
".someclass changed to .foobarclass");
isnot(html.indexOf('<p id="someid">#someid'), -1,
"#someid did not change");
- resetContent();
- }
+ yield resetContent();
+ })
},
]);
// Test 'pagemod remove element'
yield helpers.audit(options, [
{
setup: "pagemod remove",
check: {
@@ -222,76 +240,78 @@ function* spawnTest() {
status: "VALID"
},
},
{
setup: "pagemod remove element p",
exec: {
output: /^[^:]+: 3\. [^:]+: 3\.\s*$/
},
- post: function () {
- let html = documentElement.innerHTML;
+ post: Task.async(function* () {
+ let html = yield getHTML();
is(html.indexOf('<p class="someclass">'), -1, "p.someclass removed");
is(html.indexOf('<p id="someid">'), -1, "p#someid removed");
is(html.indexOf("<p><strong>"), -1, "<p> wrapping <strong> removed");
isnot(html.indexOf("<span>"), -1, "<span> not removed");
- resetContent();
- }
+ yield resetContent();
+ })
},
{
setup: "pagemod remove element p head",
exec: {
output: /^[^:]+: 0\. [^:]+: 0\.\s*$/
},
- post: function () {
- is(documentElement.innerHTML, initialHtml, "nothing changed in the page");
- }
+ post: Task.async(function* () {
+ let html = yield getHTML();
+ is(html, initialHtml, "nothing changed in the page");
+ })
},
{
setup: "pagemod remove element p --ifEmptyOnly",
exec: {
output: /^[^:]+: 3\. [^:]+: 0\.\s*$/
},
- post: function () {
- is(documentElement.innerHTML, initialHtml, "nothing changed in the page");
- }
+ post: Task.async(function* () {
+ let html = yield getHTML();
+ is(html, initialHtml, "nothing changed in the page");
+ })
},
{
setup: "pagemod remove element meta,title --ifEmptyOnly",
exec: {
output: /^[^:]+: 2\. [^:]+: 1\.\s*$/
},
- post: function () {
- let html = documentElement.innerHTML;
+ post: Task.async(function* () {
+ let html = yield getHTML();
is(html.indexOf("<meta charset="), -1, "<meta> removed");
isnot(html.indexOf("<title>"), -1, "<title> not removed");
- resetContent();
- }
+ yield resetContent();
+ })
},
{
setup: "pagemod remove element p --stripOnly",
exec: {
output: /^[^:]+: 3\. [^:]+: 3\.\s*$/
},
- post: function () {
- let html = documentElement.innerHTML;
+ post: Task.async(function* () {
+ let html = yield getHTML();
is(html.indexOf('<p class="someclass">'), -1, "p.someclass removed");
is(html.indexOf('<p id="someid">'), -1, "p#someid removed");
is(html.indexOf("<p><strong>"), -1, "<p> wrapping <strong> removed");
isnot(html.indexOf(".someclass"), -1, ".someclass still exists");
isnot(html.indexOf("#someid"), -1, "#someid still exists");
isnot(html.indexOf("<strong>p"), -1, "<strong> still exists");
- resetContent();
- }
+ yield resetContent();
+ })
},
]);
// Test 'pagemod remove attribute'
yield helpers.audit(options, [
{
setup: "pagemod remove attribute",
check: {
@@ -329,64 +349,69 @@ function* spawnTest() {
});
}
},
{
setup: "pagemod remove attribute foo bar",
exec: {
output: /^[^:]+: 0\. [^:]+: 0\.\s*$/
},
- post: function () {
- is(documentElement.innerHTML, initialHtml, "nothing changed in the page");
- }
+ post: Task.async(function* () {
+ let html = yield getHTML();
+ is(html, initialHtml, "nothing changed in the page");
+ })
},
{
setup: "pagemod remove attribute foo p",
exec: {
output: /^[^:]+: 3\. [^:]+: 0\.\s*$/
},
- post: function () {
- is(documentElement.innerHTML, initialHtml, "nothing changed in the page");
- }
+ post: Task.async(function* () {
+ let html = yield getHTML();
+ is(html, initialHtml, "nothing changed in the page");
+ })
},
{
setup: "pagemod remove attribute id p,span",
exec: {
output: /^[^:]+: 5\. [^:]+: 1\.\s*$/
},
- post: function () {
- is(documentElement.innerHTML.indexOf('<p id="someid">#someid'), -1,
- "p#someid attribute removed");
- isnot(documentElement.innerHTML.indexOf("<p>#someid"), -1,
- "p with someid content still exists");
+ post: Task.async(function* () {
+ let html = yield getHTML();
- resetContent();
- }
+ is(html.indexOf('<p id="someid">#someid'), -1, "p#someid attribute removed");
+ isnot(html.indexOf("<p>#someid"), -1, "p with someid content still exists");
+
+ yield resetContent();
+ })
},
{
setup: "pagemod remove attribute Class p",
exec: {
output: /^[^:]+: 3\. [^:]+: 0\.\s*$/
},
- post: function () {
- is(documentElement.innerHTML, initialHtml, "nothing changed in the page");
- }
+ post: Task.async(function* () {
+ let html = yield getHTML();
+ is(html, initialHtml, "nothing changed in the page");
+ })
},
{
setup: "pagemod remove attribute Class p --ignoreCase",
exec: {
output: /^[^:]+: 3\. [^:]+: 1\.\s*$/
},
- post: function () {
- is(documentElement.innerHTML.indexOf('<p class="someclass">.someclass'), -1,
+ post: Task.async(function* () {
+ let html = yield getHTML();
+
+ is(html.indexOf('<p class="someclass">.someclass'), -1,
"p.someclass attribute removed");
- isnot(documentElement.innerHTML.indexOf("<p>.someclass"), -1,
+ isnot(html.indexOf("<p>.someclass"), -1,
"p with someclass content still exists");
- resetContent();
- }
+ yield resetContent();
+ })
},
]);
// Shutdown
yield helpers.closeToolbar(options);
yield helpers.closeTab(options);
}