Bug 1508991 - Enable ESLint for dom/manifest/ (manual changes) r=Standard8,Ehsan

Differential Revision: https://phabricator.services.mozilla.com/D13208

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Julia 2018-12-18 20:39:42 +00:00
parent d252be35ef
commit 7e1563241b
18 changed files with 81 additions and 103 deletions

View file

@ -191,7 +191,6 @@ dom/grid/**
dom/html/** dom/html/**
dom/jsurl/** dom/jsurl/**
dom/localstorage/** dom/localstorage/**
dom/manifest/**
dom/media/test/** dom/media/test/**
dom/media/tests/** dom/media/tests/**
dom/media/webaudio/** dom/media/webaudio/**

View file

@ -20,17 +20,11 @@
/* exported EXPORTED_SYMBOLS*/ /* exported EXPORTED_SYMBOLS*/
/* globals Components */ /* globals Components */
"use strict"; "use strict";
const {
utils: Cu,
interfaces: Ci,
classes: Cc,
} = Components;
ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
ChromeUtils.import("resource://gre/modules/Services.jsm");
XPCOMUtils.defineLazyGlobalGetters(this, ["URL"]); XPCOMUtils.defineLazyGlobalGetters(this, ["URL"]);
const netutil = Cc["@mozilla.org/network/util;1"]
.getService(Ci.nsINetUtil);
function ImageObjectProcessor(aConsole, aExtractor) { function ImageObjectProcessor(aConsole, aExtractor) {
this.console = aConsole; this.console = aConsole;
@ -92,7 +86,7 @@ ImageObjectProcessor.prototype.process = function(
}; };
let value = extractor.extractValue(spec); let value = extractor.extractValue(spec);
if (value) { if (value) {
value = netutil.parseRequestContentType(value, charset, hadCharset); value = Services.netUtils.parseRequestContentType(value, charset, hadCharset);
} }
return value || undefined; return value || undefined;
} }

View file

@ -11,8 +11,6 @@
"use strict"; "use strict";
ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
const { ManifestObtainer } = const { ManifestObtainer } =
ChromeUtils.import("resource://gre/modules/ManifestObtainer.jsm", {}); ChromeUtils.import("resource://gre/modules/ManifestObtainer.jsm", {});
const { ManifestIcons } = const { ManifestIcons } =

View file

@ -3,9 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
/* globals Components, Task, PromiseMessage */ /* globals Components, Task, PromiseMessage */
"use strict"; "use strict";
const {
utils: Cu,
} = Components;
ChromeUtils.import("resource://gre/modules/PromiseMessage.jsm"); ChromeUtils.import("resource://gre/modules/PromiseMessage.jsm");
var ManifestFinder = {// jshint ignore:line var ManifestFinder = {// jshint ignore:line

View file

@ -1,11 +1,5 @@
"use strict"; "use strict";
const {
utils: Cu,
classes: Cc,
interfaces: Ci,
} = Components;
ChromeUtils.import("resource://gre/modules/PromiseMessage.jsm"); ChromeUtils.import("resource://gre/modules/PromiseMessage.jsm");
var ManifestIcons = { var ManifestIcons = {
@ -22,7 +16,7 @@ var ManifestIcons = {
}, },
async contentFetchIcon(aWindow, manifest, iconSize) { async contentFetchIcon(aWindow, manifest, iconSize) {
return await getIcon(aWindow, toIconArray(manifest.icons), iconSize); return getIcon(aWindow, toIconArray(manifest.icons), iconSize);
}, },
}; };

View file

@ -25,16 +25,9 @@
*/ */
/* globals Components, Task, PromiseMessage, XPCOMUtils, ManifestProcessor, BrowserUtils*/ /* globals Components, Task, PromiseMessage, XPCOMUtils, ManifestProcessor, BrowserUtils*/
"use strict"; "use strict";
const {
utils: Cu,
classes: Cc,
interfaces: Ci,
} = Components;
ChromeUtils.import("resource://gre/modules/PromiseMessage.jsm"); ChromeUtils.import("resource://gre/modules/PromiseMessage.jsm");
ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
ChromeUtils.import("resource://gre/modules/ManifestProcessor.jsm"); ChromeUtils.import("resource://gre/modules/ManifestProcessor.jsm");
ChromeUtils.defineModuleGetter(this, "BrowserUtils", // jshint ignore:line
"resource://gre/modules/BrowserUtils.jsm");
var ManifestObtainer = { // jshint ignore:line var ManifestObtainer = { // jshint ignore:line
/** /**

View file

@ -21,9 +21,7 @@
*/ */
/* globals Components, ValueExtractor, ImageObjectProcessor, ConsoleAPI*/ /* globals Components, ValueExtractor, ImageObjectProcessor, ConsoleAPI*/
"use strict"; "use strict";
const {
utils: Cu,
} = Components;
ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
XPCOMUtils.defineLazyGlobalGetters(this, ["URL"]); XPCOMUtils.defineLazyGlobalGetters(this, ["URL"]);
const displayModes = new Set(["fullscreen", "standalone", "minimal-ui", const displayModes = new Set(["fullscreen", "standalone", "minimal-ui",

View file

@ -7,11 +7,6 @@
*/ */
/* globals Components*/ /* globals Components*/
"use strict"; "use strict";
const {
classes: Cc,
interfaces: Ci,
utils: Cu,
} = Components;
ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");

View file

@ -7,7 +7,7 @@ const { ManifestObtainer } = ChromeUtils.import("resource://gre/modules/Manifest
const defaultURL = new URL("http://example.org/browser/dom/manifest/test/resource.sjs"); const defaultURL = new URL("http://example.org/browser/dom/manifest/test/resource.sjs");
defaultURL.searchParams.set("Content-Type", "application/manifest+json"); defaultURL.searchParams.set("Content-Type", "application/manifest+json");
const manifest = JSON.stringify({ const manifestMock = JSON.stringify({
icons: [{ icons: [{
sizes: "50x50", sizes: "50x50",
src: "red-50.png?Content-type=image/png", src: "red-50.png?Content-type=image/png",
@ -17,9 +17,9 @@ const manifest = JSON.stringify({
}], }],
}); });
function makeTestURL(manifest) { function makeTestURL() {
const url = new URL(defaultURL); const url = new URL(defaultURL);
const body = `<link rel="manifest" href='${defaultURL}&body=${manifest}'>`; const body = `<link rel="manifest" href='${defaultURL}&body=${manifestMock}'>`;
url.searchParams.set("Content-Type", "text/html; charset=utf-8"); url.searchParams.set("Content-Type", "text/html; charset=utf-8");
url.searchParams.set("body", encodeURIComponent(body)); url.searchParams.set("body", encodeURIComponent(body));
return url.href; return url.href;
@ -42,7 +42,7 @@ function getIconColor(icon) {
} }
add_task(async function() { add_task(async function() {
const tabOptions = {gBrowser, url: makeTestURL(manifest)}; const tabOptions = {gBrowser, url: makeTestURL()};
await BrowserTestUtils.withNewTab(tabOptions, async function(browser) { await BrowserTestUtils.withNewTab(tabOptions, async function(browser) {
const manifest = await ManifestObtainer.browserObtainManifest(browser); const manifest = await ManifestObtainer.browserObtainManifest(browser);
let icon = await ManifestIcons.browserFetchIcon(browser, manifest, 25); let icon = await ManifestIcons.browserFetchIcon(browser, manifest, 25);

View file

@ -100,7 +100,7 @@ add_task(async function() {
return collector; return collector;
}, []); }, []);
const results = await Promise.all(promises); await Promise.all(promises);
function testObtainingManifest(aTest) { function testObtainingManifest(aTest) {
return async function(aBrowser) { return async function(aBrowser) {

View file

@ -7,10 +7,10 @@ const { Manifests } = ChromeUtils.import("resource://gre/modules/Manifest.jsm",
const defaultURL = new URL("http://example.org/browser/dom/manifest/test/resource.sjs"); const defaultURL = new URL("http://example.org/browser/dom/manifest/test/resource.sjs");
defaultURL.searchParams.set("Content-Type", "application/manifest+json"); defaultURL.searchParams.set("Content-Type", "application/manifest+json");
const manifest = JSON.stringify({short_name: "hello World", scope: "/browser/"}); const manifestMock = JSON.stringify({short_name: "hello World", scope: "/browser/"});
const manifestUrl = `${defaultURL}&body=${manifest}`; const manifestUrl = `${defaultURL}&body=${manifestMock}`;
function makeTestURL(manifest) { function makeTestURL() {
const url = new URL(defaultURL); const url = new URL(defaultURL);
const body = `<link rel="manifest" href='${manifestUrl}'>`; const body = `<link rel="manifest" href='${manifestUrl}'>`;
url.searchParams.set("Content-Type", "text/html; charset=utf-8"); url.searchParams.set("Content-Type", "text/html; charset=utf-8");
@ -20,7 +20,7 @@ function makeTestURL(manifest) {
add_task(async function() { add_task(async function() {
const tabOptions = {gBrowser, url: makeTestURL(manifest)}; const tabOptions = {gBrowser, url: makeTestURL()};
await BrowserTestUtils.withNewTab(tabOptions, async function(browser) { await BrowserTestUtils.withNewTab(tabOptions, async function(browser) {
@ -46,4 +46,3 @@ add_task(async function() {
}); });
}); });

View file

@ -66,13 +66,6 @@ validSizes.forEach(({test, expect}) => {
is(sizes, expect.join(" "), expected); is(sizes, expect.join(" "), expected);
}); });
var testIcon = {
icons: [{
src: "test",
sizes: undefined,
}],
};
var invalidSizes = ["invalid", "", " ", "16 x 16", "32", "21", "16xx16", "16 x x 6"]; var invalidSizes = ["invalid", "", " ", "16 x 16", "32", "21", "16xx16", "16 x x 6"];
invalidSizes.forEach((invalidSize) => { invalidSizes.forEach((invalidSize) => {
var expected = "Expect invalid sizes to return undefined."; var expected = "Expect invalid sizes to return undefined.";

View file

@ -15,6 +15,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1079453
* https://w3c.github.io/manifest/#src-member * https://w3c.github.io/manifest/#src-member
**/ **/
"use strict"; "use strict";
var noSrc = { var noSrc = {
icons: [{}, { icons: [{}, {
src: [], src: [],
@ -53,23 +54,24 @@ var invalidSrc = {
}], }],
}; };
var expected = `Expect icons with invalid src prop to be filtered out.`; expected = `Expect icons with invalid src prop to be filtered out.`;
data.jsonText = JSON.stringify(noSrc); data.jsonText = JSON.stringify(invalidSrc);
var result = processor.process(data); result = processor.process(data);
is(result.icons.length, 0, expected); is(result.icons.length, 0, expected);
var expected = `Expect icon's src to be a string.`; expected = `Expect icon's src to be a string.`;
var withSrc = { var withSrc = {
icons: [{ icons: [{
src: "pass", src: "pass",
}], }],
}; };
data.jsonText = JSON.stringify(withSrc); data.jsonText = JSON.stringify(withSrc);
var result = processor.process(data); result = processor.process(data);
is(typeof result.icons[0].src, "string", expected); is(typeof result.icons[0].src, "string", expected);
var expected = `Expect only icons with a src prop to be kept.`;
var withSrc = { expected = `Expect only icons with a src prop to be kept.`;
withSrc = {
icons: [{ icons: [{
src: "pass", src: "pass",
}, { }, {
@ -79,28 +81,30 @@ var withSrc = {
}], }],
}; };
data.jsonText = JSON.stringify(withSrc); data.jsonText = JSON.stringify(withSrc);
var result = processor.process(data); result = processor.process(data);
is(result.icons.length, 2, expected); is(result.icons.length, 2, expected);
var expectedURL = new URL("pass", manifestURL); var expectedURL = new URL("pass", manifestURL);
for (var icon of result.icons) { for (var icon of result.icons) {
var expected = `Expect src prop to be ${expectedURL.toString()}`; expected = `Expect src prop to be ${expectedURL.toString()}`;
is(icon.src.toString(), expectedURL.toString(), expected); is(icon.src.toString(), expectedURL.toString(), expected);
} }
// Resolve URLs relative to manfiest // Resolve URLs relative to manfiest
var URLs = ["path", "/path", "../../path"]; var URLs = ["path", "/path", "../../path"];
URLs.forEach((url) => { URLs.forEach((url) => {
var expected = `Resolve icon src URLs relative to manifest.`; expected = `Resolve icon src URLs relative to manifest.`;
data.jsonText = JSON.stringify({ data.jsonText = JSON.stringify({
icons: [{ icons: [{
src: url, src: url,
}], }],
}); });
var absURL = new URL(url, manifestURL).toString(); var absURL = new URL(url, manifestURL).toString();
var result = processor.process(data); result = processor.process(data);
is(result.icons[0].src.toString(), absURL, expected); is(result.icons[0].src.toString(), absURL, expected);
}); });
</script> </script>
</head> </head>

View file

@ -23,7 +23,7 @@ typeTests.forEach((type) => {
icons: type, icons: type,
}); });
var result = processor.process(data); var result = processor.process(data);
var y = SpecialPowers.unwrap(result.icons); SpecialPowers.unwrap(result.icons);
is(result.icons.length, 0, expected); is(result.icons.length, 0, expected);
}); });
</script> </script>

View file

@ -16,6 +16,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1143879
/* globals is, typeTests, data, processor, seperators, lineTerminators, todo_is*/ /* globals is, typeTests, data, processor, seperators, lineTerminators, todo_is*/
"use strict"; "use strict";
// Type checks: checks that only strings are accepted. // Type checks: checks that only strings are accepted.
for (var type of typeTests) { for (var type of typeTests) {
var expected = `Expect non-string to be undefined.`; var expected = `Expect non-string to be undefined.`;
data.jsonText = JSON.stringify({ data.jsonText = JSON.stringify({
@ -52,24 +53,28 @@ var validTags = [
"de-CH-x-phonebk", "az-Arab-x-AZE-derbend", "x-whatever", "de-CH-x-phonebk", "az-Arab-x-AZE-derbend", "x-whatever",
"qaa-Qaaa-QM-x-southern", "qaa-Qaaa-QM-x-southern",
]; ];
for (var tag of validTags) { for (var tag of validTags) {
var expected = `Expect lang to be ${tag}.`; expected = `Expect lang to be ${tag}.`;
data.jsonText = JSON.stringify({ data.jsonText = JSON.stringify({
lang: tag, lang: tag,
}); });
var result = processor.process(data); result = processor.process(data);
is(result.lang, tag, expected); is(result.lang, tag, expected);
} }
// trim tests - check that language tags get trimmed properly. // trim tests - check that language tags get trimmed properly.
for (var tag of validTags) { for (tag of validTags) {
var expected = `Expect trimmed tag to be returned.`; expected = `Expect trimmed tag to be returned.`;
var expandedtag = seperators + lineTerminators + tag; var expandedtag = seperators + lineTerminators + tag;
expandedtag += lineTerminators + seperators; expandedtag += lineTerminators + seperators;
data.jsonText = JSON.stringify({ data.jsonText = JSON.stringify({
lang: expandedtag, lang: expandedtag,
}); });
var result = processor.process(data); result = processor.process(data);
is(result.lang, tag, expected); is(result.lang, tag, expected);
} }
@ -78,12 +83,14 @@ var invalidTags = [
"de-419-DE", " a-DE ", "ar-a-aaa-b-bbb-a-ccc", "sdafsdfaadsfdsf", "i", "de-419-DE", " a-DE ", "ar-a-aaa-b-bbb-a-ccc", "sdafsdfaadsfdsf", "i",
"i-phone", "en US", "EN-*-US-JP", "JA-INVALID-TAG", "123123123", "i-phone", "en US", "EN-*-US-JP", "JA-INVALID-TAG", "123123123",
]; ];
for (var item of invalidTags) { for (var item of invalidTags) {
var expected = `Expect invalid tag (${item}) to be treated as undefined.`; expected = `Expect invalid tag (${item}) to be treated as undefined.`;
data.jsonText = JSON.stringify({ data.jsonText = JSON.stringify({
lang: item, lang: item,
}); });
var result = processor.process(data); result = processor.process(data);
todo_is(result.lang, undefined, expected); todo_is(result.lang, undefined, expected);
} }
@ -99,13 +106,13 @@ var canonicalTags = [
"qaa-Qaaa-QM-x-southern", "qaa-Qaaa-QM-x-southern",
]; ];
for (var tag of canonicalTags) { for (tag of canonicalTags) {
var uppedTag = tag.toUpperCase(); var uppedTag = tag.toUpperCase();
var expected = `Expect tag (${uppedTag}) to be in canonical form (${tag}).`; expected = `Expect tag (${uppedTag}) to be in canonical form (${tag}).`;
data.jsonText = JSON.stringify({ data.jsonText = JSON.stringify({
lang: uppedTag, lang: uppedTag,
}); });
var result = processor.process(data); result = processor.process(data);
todo_is(result.lang, tag, expected); todo_is(result.lang, tag, expected);
} }

View file

@ -10,11 +10,13 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1079453
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
<script src="common.js"></script> <script src="common.js"></script>
<script> <script>
/** /**
* Manifest scope * Manifest scope
* https://w3c.github.io/manifest/#scope-member * https://w3c.github.io/manifest/#scope-member
**/ **/
"use strict"; "use strict";
var expected = "Expect non-string scope to be undefined"; var expected = "Expect non-string scope to be undefined";
typeTests.forEach((type) => { typeTests.forEach((type) => {
data.jsonText = JSON.stringify({ data.jsonText = JSON.stringify({
@ -24,21 +26,21 @@ typeTests.forEach((type) => {
is(result.scope, undefined, expected); is(result.scope, undefined, expected);
}); });
var expected = "Expect different origin to be treated as undefined"; expected = "Expect different origin to be treated as undefined";
data.jsonText = JSON.stringify({ data.jsonText = JSON.stringify({
scope: "http://not-same-origin", scope: "http://not-same-origin",
}); });
var result = processor.process(data); var result = processor.process(data);
is(result.scope, undefined, expected); is(result.scope, undefined, expected);
var expected = "Expect the empty string to be treated as undefined."; expected = "Expect the empty string to be treated as undefined.";
data.jsonText = JSON.stringify({ data.jsonText = JSON.stringify({
scope: "", scope: "",
}); });
var result = processor.process(data); result = processor.process(data);
is(result.scope, undefined, expected); is(result.scope, undefined, expected);
var expected = "Resolve URLs relative to manifest."; expected = "Resolve URLs relative to manifest.";
var URLs = ["path", "/path", "../../path"]; var URLs = ["path", "/path", "../../path"];
URLs.forEach((url) => { URLs.forEach((url) => {
data.jsonText = JSON.stringify({ data.jsonText = JSON.stringify({
@ -46,43 +48,43 @@ URLs.forEach((url) => {
start_url: "/path", start_url: "/path",
}); });
var absURL = new URL(url, manifestURL).toString(); var absURL = new URL(url, manifestURL).toString();
var result = processor.process(data); result = processor.process(data);
is(result.scope, absURL, expected); is(result.scope, absURL, expected);
}); });
var expected = "If start URL is not in scope, return undefined."; expected = "If start URL is not in scope, return undefined.";
data.jsonText = JSON.stringify({ data.jsonText = JSON.stringify({
scope: "foo", scope: "foo",
start_url: "bar", start_url: "bar",
}); });
var result = processor.process(data); result = processor.process(data);
is(result.scope, undefined, expected); is(result.scope, undefined, expected);
var expected = "If start URL is in scope, use the scope."; expected = "If start URL is in scope, use the scope.";
data.jsonText = JSON.stringify({ data.jsonText = JSON.stringify({
start_url: "foobar", start_url: "foobar",
scope: "foo", scope: "foo",
}); });
var result = processor.process(data); result = processor.process(data);
is(result.scope.toString(), new URL("foo", manifestURL).toString(), expected); is(result.scope.toString(), new URL("foo", manifestURL).toString(), expected);
var expected = "Expect start_url to be " + new URL("foobar", manifestURL).toString(); expected = "Expect start_url to be " + new URL("foobar", manifestURL).toString();
is(result.start_url.toString(), new URL("foobar", manifestURL).toString(), expected); is(result.start_url.toString(), new URL("foobar", manifestURL).toString(), expected);
var expected = "If start URL is in scope, use the scope."; expected = "If start URL is in scope, use the scope.";
data.jsonText = JSON.stringify({ data.jsonText = JSON.stringify({
start_url: "/foo/", start_url: "/foo/",
scope: "/foo/", scope: "/foo/",
}); });
var result = processor.process(data); result = processor.process(data);
is(result.scope.toString(), new URL("/foo/", manifestURL).toString(), expected); is(result.scope.toString(), new URL("/foo/", manifestURL).toString(), expected);
var expected = "If start URL is in scope, use the scope."; expected = "If start URL is in scope, use the scope.";
data.jsonText = JSON.stringify({ data.jsonText = JSON.stringify({
start_url: ".././foo/", start_url: ".././foo/",
scope: "../foo/", scope: "../foo/",
}); });
var result = processor.process(data); result = processor.process(data);
is(result.scope.toString(), new URL("/foo/", manifestURL).toString(), expected); is(result.scope.toString(), new URL("/foo/", manifestURL).toString(), expected);
</script> </script>

View file

@ -33,27 +33,30 @@ var result = processor.process(data);
is(result.start_url.toString(), docURL.toString(), expected); is(result.start_url.toString(), docURL.toString(), expected);
// Empty string test // Empty string test
var expected = `Expect empty string for start_url to become document's URL.`; expected = `Expect empty string for start_url to become document's URL.`;
data.jsonText = JSON.stringify({ data.jsonText = JSON.stringify({
start_url: "", start_url: "",
}); });
var result = processor.process(data); result = processor.process(data);
is(result.start_url.toString(), docURL.toString(), expected); is(result.start_url.toString(), docURL.toString(), expected);
// Resolve URLs relative to manfiest // Resolve URLs relative to manfiest
var URLs = ["path", "/path", "../../path", var URLs = ["path", "/path", "../../path",
`${whiteSpace}path${whiteSpace}`, `${whiteSpace}path${whiteSpace}`,
`${whiteSpace}/path`, `${whiteSpace}/path`,
`${whiteSpace}../../path`, `${whiteSpace}../../path`,
]; ];
URLs.forEach((url) => { URLs.forEach((url) => {
var expected = `Resolve URLs relative to manifest.`; expected = `Resolve URLs relative to manifest.`;
data.jsonText = JSON.stringify({ data.jsonText = JSON.stringify({
start_url: url, start_url: url,
}); });
var absURL = new URL(url, manifestURL).toString(); var absURL = new URL(url, manifestURL).toString();
var result = processor.process(data); result = processor.process(data);
is(result.start_url.toString(), absURL, expected); is(result.start_url.toString(), absURL, expected);
}); });
</script> </script>
</head> </head>

View file

@ -54,7 +54,8 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1265279
// no point in continuing // no point in continuing
if (!hasOnAppInstalledProp) { if (!hasOnAppInstalledProp) {
const err = new Error("No 'onappinstalled' IDL attribute. Aborting early."); const err = new Error("No 'onappinstalled' IDL attribute. Aborting early.");
return reject(err); reject(err);
return;
} }
is(ifrWindow.onappinstalled, null, "window install is initially set to null"); is(ifrWindow.onappinstalled, null, "window install is initially set to null");