@@ -33,7 +33,7 @@ describe('Manifest Parser', function() {
3333 assert . equal ( parsedManifest . value . name . value , undefined ) ;
3434 assert . equal ( parsedManifest . value . short_name . value , undefined ) ;
3535 assert . equal ( parsedManifest . value . start_url . value , undefined ) ;
36- assert . equal ( parsedManifest . value . display . value , undefined ) ;
36+ assert . equal ( parsedManifest . value . display . value , 'browser' ) ;
3737 assert . equal ( parsedManifest . value . orientation . value , undefined ) ;
3838 assert . equal ( parsedManifest . value . theme_color . value , undefined ) ;
3939 assert . equal ( parsedManifest . value . background_color . value , undefined ) ;
@@ -43,19 +43,6 @@ describe('Manifest Parser', function() {
4343 // prefer_related_applications
4444 } ) ;
4545
46- it ( 'accepts unknown values' , function ( ) {
47- // TODO(bckenny): this is the same exact test as above
48- let parsedManifest = manifestParser ( '{}' ) ;
49- assert ( ! parsedManifest . debugString ) ;
50- assert . equal ( parsedManifest . value . name . value , undefined ) ;
51- assert . equal ( parsedManifest . value . short_name . value , undefined ) ;
52- assert . equal ( parsedManifest . value . start_url . value , undefined ) ;
53- assert . equal ( parsedManifest . value . display . value , undefined ) ;
54- assert . equal ( parsedManifest . value . orientation . value , undefined ) ;
55- assert . equal ( parsedManifest . value . theme_color . value , undefined ) ;
56- assert . equal ( parsedManifest . value . background_color . value , undefined ) ;
57- } ) ;
58-
5946 describe ( 'icon parsing' , function ( ) {
6047 it ( 'parses basic string' , function ( ) {
6148 let parsedManifest = manifestParser ( '{"icons": [{"src": "192.png", "sizes": "192x192"}]}' ) ;
@@ -131,4 +118,82 @@ describe('Manifest Parser', function() {
131118 assert . equal ( parsedManifest . value . short_name . value , undefined ) ;
132119 } ) ;
133120 } ) ;
121+
122+ /**
123+ * @see https://w3c.github.io/manifest/#display-member
124+ */
125+ describe ( 'display parsing' , ( ) => {
126+ it ( 'falls back to \'browser\' and issues a warning for an invalid value' , ( ) => {
127+ const parsedManifest = manifestParser ( '{"display": {} }' ) ;
128+ const display = parsedManifest . value . display ;
129+ assert . ok ( display . debugString ) ;
130+ assert . equal ( display . value , 'browser' ) ;
131+ } ) ;
132+
133+ it ( 'falls back to \'browser\' and issues a warning for an invalid value' , ( ) => {
134+ const parsedManifest = manifestParser ( '{"display": 5 }' ) ;
135+ const display = parsedManifest . value . display ;
136+ assert . ok ( display . debugString ) ;
137+ assert . equal ( display . value , 'browser' ) ;
138+ } ) ;
139+
140+ it ( 'falls back to \'browser\' and issues no warning when undefined' , ( ) => {
141+ const parsedManifest = manifestParser ( '{}' ) ;
142+ const display = parsedManifest . value . display ;
143+ assert . ok ( ! display . debugString ) ;
144+ assert . equal ( display . value , 'browser' ) ;
145+ assert . equal ( display . rawValue , undefined ) ;
146+ } ) ;
147+
148+ it ( 'trims whitespace' , ( ) => {
149+ const displayValue = ' fullscreen ' ;
150+ const parsedManifest = manifestParser ( `{"display": "${ displayValue } " }` ) ;
151+ const display = parsedManifest . value . display ;
152+ assert . ok ( ! display . debugString ) ;
153+ assert . equal ( display . value , 'fullscreen' ) ;
154+ } ) ;
155+
156+ it ( 'converts to lowercase' , ( ) => {
157+ const displayValue = 'fUlLScrEEn' ;
158+ const parsedManifest = manifestParser ( `{"display": "${ displayValue } " }` ) ;
159+ const display = parsedManifest . value . display ;
160+ assert . ok ( ! display . debugString ) ;
161+ assert . equal ( display . value , 'fullscreen' ) ;
162+ } ) ;
163+
164+ it ( 'falls back to \'browser\' and issues a warning when a non-existent mode' , ( ) => {
165+ const parsedManifest = manifestParser ( '{"display": "fullestscreen" }' ) ;
166+ const display = parsedManifest . value . display ;
167+ assert . ok ( display . debugString ) ;
168+ assert . equal ( display . value , 'browser' ) ;
169+ } ) ;
170+
171+ it ( 'correctly parses `fullscreen` display mode' , ( ) => {
172+ const parsedManifest = manifestParser ( '{"display": "fullscreen" }' ) ;
173+ const display = parsedManifest . value . display ;
174+ assert . ok ( ! display . debugString ) ;
175+ assert . equal ( display . value , 'fullscreen' ) ;
176+ } ) ;
177+
178+ it ( 'correctly parses `standalone` display mode' , ( ) => {
179+ const parsedManifest = manifestParser ( '{"display": "standalone" }' ) ;
180+ const display = parsedManifest . value . display ;
181+ assert . ok ( ! display . debugString ) ;
182+ assert . equal ( display . value , 'standalone' ) ;
183+ } ) ;
184+
185+ it ( 'correctly parses `minimal-ui` display mode' , ( ) => {
186+ const parsedManifest = manifestParser ( '{"display": "minimal-ui" }' ) ;
187+ const display = parsedManifest . value . display ;
188+ assert . ok ( ! display . debugString ) ;
189+ assert . equal ( display . value , 'minimal-ui' ) ;
190+ } ) ;
191+
192+ it ( 'correctly parses `browser` display mode' , ( ) => {
193+ const parsedManifest = manifestParser ( '{"display": "browser" }' ) ;
194+ const display = parsedManifest . value . display ;
195+ assert . ok ( ! display . debugString ) ;
196+ assert . equal ( display . value , 'browser' ) ;
197+ } ) ;
198+ } ) ;
134199} ) ;
0 commit comments