зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1258899 - teach manifest processor about dir member. r=baku
This commit is contained in:
Родитель
c5e251b3b9
Коммит
bd05cc6aa3
|
@ -32,6 +32,8 @@ const orientationTypes = new Set(['any', 'natural', 'landscape', 'portrait',
|
|||
'portrait-primary', 'portrait-secondary', 'landscape-primary',
|
||||
'landscape-secondary'
|
||||
]);
|
||||
const textDirections = new Set(['ltr', 'rtl', 'auto']);
|
||||
|
||||
Cu.import('resource://gre/modules/Console.jsm');
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
// ValueExtractor is used by the various processors to get values
|
||||
|
@ -50,6 +52,9 @@ this.ManifestProcessor = { // jshint ignore:line
|
|||
get orientationTypes() {
|
||||
return orientationTypes;
|
||||
},
|
||||
get textDirections() {
|
||||
return textDirections;
|
||||
},
|
||||
// process() method processes JSON text into a clean manifest
|
||||
// that conforms with the W3C specification. Takes an object
|
||||
// expecting the following dictionary items:
|
||||
|
@ -79,6 +84,7 @@ this.ManifestProcessor = { // jshint ignore:line
|
|||
const extractor = new ValueExtractor(console, domBundle);
|
||||
const imgObjProcessor = new ImageObjectProcessor(console, extractor);
|
||||
const processedManifest = {
|
||||
'dir': processDirMember.call(this),
|
||||
'lang': processLangMember(),
|
||||
'start_url': processStartURLMember(),
|
||||
'display': processDisplayMember.call(this),
|
||||
|
@ -94,6 +100,21 @@ this.ManifestProcessor = { // jshint ignore:line
|
|||
processedManifest.scope = processScopeMember();
|
||||
return processedManifest;
|
||||
|
||||
function processDirMember() {
|
||||
const spec = {
|
||||
objectName: 'manifest',
|
||||
object: rawManifest,
|
||||
property: 'dir',
|
||||
expectedType: 'string',
|
||||
trim: true,
|
||||
};
|
||||
const value = extractor.extractValue(spec);
|
||||
if (this.textDirections.has(value)) {
|
||||
return value;
|
||||
}
|
||||
return 'auto';
|
||||
}
|
||||
|
||||
function processNameMember() {
|
||||
const spec = {
|
||||
objectName: 'manifest',
|
||||
|
|
|
@ -9,6 +9,7 @@ support-files =
|
|||
[test_ImageObjectProcessor_src.html]
|
||||
[test_ImageObjectProcessor_type.html]
|
||||
[test_ManifestProcessor_background_color.html]
|
||||
[test_ManifestProcessor_dir.html]
|
||||
[test_ManifestProcessor_display.html]
|
||||
[test_ManifestProcessor_icons.html]
|
||||
[test_ManifestProcessor_JSON.html]
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<!--
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1258899
|
||||
-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Test for Bug 1258899</title>
|
||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
||||
<script src="common.js"></script>
|
||||
<script>
|
||||
/**
|
||||
* dir member
|
||||
* https://w3c.github.io/manifest/#dir-member
|
||||
**/
|
||||
'use strict';
|
||||
//Type checks
|
||||
typeTests.forEach((type) => {
|
||||
var expected = `Expect non - string dir to default to "auto".`;
|
||||
data.jsonText = JSON.stringify({
|
||||
dir: type
|
||||
});
|
||||
var result = processor.process(data);
|
||||
is(result.dir, 'auto', expected);
|
||||
});
|
||||
|
||||
/*Test valid values*/
|
||||
var validDirs = ['ltr', 'rtl', 'auto']
|
||||
validDirs.forEach((dir) => {
|
||||
var expected = `Expect dir value to be ${dir}.`;
|
||||
data.jsonText = JSON.stringify({dir});
|
||||
var result = processor.process(data);
|
||||
is(result.dir, dir, expected);
|
||||
});
|
||||
|
||||
//trim tests
|
||||
validDirs.forEach((dir) => {
|
||||
var expected = `Expect trimmed dir to be returned.`;
|
||||
var expandeddir = seperators + lineTerminators + dir + lineTerminators + seperators;
|
||||
data.jsonText = JSON.stringify({
|
||||
dir: expandeddir
|
||||
});
|
||||
var result = processor.process(data);
|
||||
is(result.dir, dir, expected);
|
||||
});
|
||||
|
||||
//Unknown/Invalid directions
|
||||
var invalidDirs = ['LTR', 'RtL', `fooo${whiteSpace}rtl`, '', 'bar baz, some value', 'ltr rtl auto', 'AuTo'];
|
||||
invalidDirs.forEach((dir) => {
|
||||
var expected = `Expect default dir "auto" to be returned: '${dir}'`;
|
||||
data.jsonText = JSON.stringify({dir});
|
||||
var result = processor.process(data);
|
||||
is(result.dir, 'auto', expected);
|
||||
});
|
||||
</script>
|
||||
</head>
|
Загрузка…
Ссылка в новой задаче