OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <title>MediaMetadata interface</title> | 2 <title>MediaMetadata interface</title> |
3 <script src="../../resources/testharness.js"></script> | 3 <script src="../../resources/testharness.js"></script> |
4 <script src="../../resources/testharnessreport.js"></script> | 4 <script src="../../resources/testharnessreport.js"></script> |
5 <script> | 5 <script> |
6 | 6 |
7 test(function() { | 7 test(function() { |
8 var metadata = new MediaMetadata({}); | 8 var metadata = new MediaMetadata({}); |
9 assert_not_equals(metadata, null); | 9 assert_not_equals(metadata, null); |
10 | 10 |
11 assert_throws(new TypeError(), _ => new MediaMetadata('foobar')); | 11 assert_throws(new TypeError(), _ => new MediaMetadata('foobar')); |
12 assert_throws(new TypeError(), _ => new MediaMetadata(42)); | 12 assert_throws(new TypeError(), _ => new MediaMetadata(42)); |
13 }, 'Test that MediaMetadata is constructed using a dictionary'); | 13 }, 'Test that MediaMetadata is constructed using a dictionary'); |
14 | 14 |
15 test(function() { | 15 test(function() { |
16 var metadata = new MediaMetadata(); | 16 var metadata = new MediaMetadata(); |
17 assert_not_equals(metadata, null); | 17 assert_not_equals(metadata, null); |
18 }, "Test that MediaMetadata constructor can take no parameter"); | 18 }, "Test that MediaMetadata constructor can take no parameter"); |
19 | 19 |
20 test(function() { | 20 test(function() { |
| 21 var image1 = { src: 'http://example.com/1', sizes: 'sizes1', type: 'type1' }
; |
| 22 var image2 = { src: 'http://example.com/2', sizes: 'sizes2', type: 'type2' }
; |
21 var metadata = new MediaMetadata({ | 23 var metadata = new MediaMetadata({ |
22 title: 'foo', album: 'bar', artist: 'plop', | 24 title: 'foo', album: 'bar', artist: 'plop', artwork: [ image1, image2 ] |
23 artwork: [ { src: 'src1', sizes: 'sizes1', type: 'type1'}, | 25 }); |
24 { src: 'src2', sizes: 'sizes2', type: 'type2'} ] }); | 26 |
25 assert_equals(metadata.title, 'foo'); | 27 assert_equals(metadata.title, 'foo'); |
26 assert_equals(metadata.album, 'bar'); | 28 assert_equals(metadata.album, 'bar'); |
27 assert_equals(metadata.artist, 'plop'); | 29 assert_equals(metadata.artist, 'plop'); |
28 assert_equals(2, metadata.artwork.length); | 30 assert_equals(metadata.artwork.length, 2); |
29 | |
30 var image1 = new MediaImage({ src: 'src1', sizes: 'sizes1', type: 'type1'}); | |
31 var image2 = new MediaImage({ src: 'src2', sizes: 'sizes2', type: 'type2'}); | |
32 assert_equals(metadata.artwork[0].src, image1.src); | 31 assert_equals(metadata.artwork[0].src, image1.src); |
33 assert_equals(metadata.artwork[0].sizes, image1.sizes); | 32 assert_equals(metadata.artwork[0].sizes, image1.sizes); |
34 assert_equals(metadata.artwork[0].type, image1.type); | 33 assert_equals(metadata.artwork[0].type, image1.type); |
35 assert_equals(metadata.artwork[1].src, image2.src); | 34 assert_equals(metadata.artwork[1].src, image2.src); |
36 assert_equals(metadata.artwork[1].sizes, image2.sizes); | 35 assert_equals(metadata.artwork[1].sizes, image2.sizes); |
37 assert_equals(metadata.artwork[1].type, image2.type); | 36 assert_equals(metadata.artwork[1].type, image2.type); |
38 }, 'Test the different values allowed in MediaMetadata init dictionary'); | 37 }, 'Test the different values allowed in MediaMetadata init dictionary'); |
39 | 38 |
40 test(function() { | 39 test(function() { |
41 var metadata = new MediaMetadata({}); | 40 var metadata = new MediaMetadata({}); |
(...skipping 10 matching lines...) Expand all Loading... |
52 assert_equals(metadata.album, ''); | 51 assert_equals(metadata.album, ''); |
53 assert_equals(0, metadata.artwork.length); | 52 assert_equals(0, metadata.artwork.length); |
54 }, 'Test the default values for MediaMetadata with no init dictionary'); | 53 }, 'Test the default values for MediaMetadata with no init dictionary'); |
55 | 54 |
56 test(function() { | 55 test(function() { |
57 var metadata = new MediaMetadata({ randomValueThatWillNotBeAdded: '... hopef
ully ;)' }); | 56 var metadata = new MediaMetadata({ randomValueThatWillNotBeAdded: '... hopef
ully ;)' }); |
58 assert_equals(metadata.randomValueThatWillNotBeAdded, undefined); | 57 assert_equals(metadata.randomValueThatWillNotBeAdded, undefined); |
59 }, 'Test that passing unknown values to the dictionary is a no-op'); | 58 }, 'Test that passing unknown values to the dictionary is a no-op'); |
60 | 59 |
61 test(function() { | 60 test(function() { |
| 61 var image1 = { src: 'http://example.com/1', sizes: 'sizes1', type: 'type1' }
; |
| 62 var image2 = { src: 'http://example.com/2', sizes: 'sizes2', type: 'type2' }
; |
62 var metadata = new MediaMetadata({ | 63 var metadata = new MediaMetadata({ |
63 title: 'foo', album: 'bar', artist: 'plop', | 64 title: 'foo', album: 'bar', artist: 'plop', artwork: [ image1, image2 ] |
64 artwork: [ { src: 'src1', sizes: 'sizes1', type: 'type1'}, | 65 }); |
65 { src: 'src2', sizes: 'sizes2', type: 'type2'} ] }); | |
66 | 66 |
67 metadata.title = 'something else'; | 67 metadata.title = 'something else'; |
68 assert_equals(metadata.title, 'something else'); | 68 assert_equals(metadata.title, 'something else'); |
69 | 69 |
70 metadata.album = 'other value'; | 70 metadata.album = 'other value'; |
71 assert_equals(metadata.album, 'other value'); | 71 assert_equals(metadata.album, 'other value'); |
72 | 72 |
73 metadata.artist = 'someone else'; | 73 metadata.artist = 'someone else'; |
74 assert_equals(metadata.artist, 'someone else'); | 74 assert_equals(metadata.artist, 'someone else'); |
75 | 75 |
76 var image = new MediaImage({ src: 'http://example.com/', sizes: '40x40', typ
e: 'image/png' }); | 76 var image = { src: 'http://example.com/', sizes: '40x40', type: 'image/png'
}; |
77 metadata.artwork = [ image ]; | 77 metadata.artwork = [ image ]; |
78 assert_equals(metadata.artwork.length, 1); | 78 assert_equals(metadata.artwork.length, 1); |
79 assert_equals(metadata.artwork[0].src, 'http://example.com/'); | 79 assert_equals(metadata.artwork[0].src, 'http://example.com/'); |
80 assert_equals(metadata.artwork[0].sizes, '40x40'); | 80 assert_equals(metadata.artwork[0].sizes, '40x40'); |
81 assert_equals(metadata.artwork[0].type, 'image/png'); | 81 assert_equals(metadata.artwork[0].type, 'image/png'); |
82 }, "Test that MediaMetadata is read/write"); | 82 }, "Test that MediaMetadata is read/write"); |
83 | 83 |
| 84 test(function() { |
| 85 var metadata = new MediaMetadata({ artwork: [ { src: 'http://foo.com/' } ] }
); |
| 86 assert_throws(new TypeError(), _ => { |
| 87 metadata.artwork.push({ |
| 88 src: 'http://example.com/', sizes: '40x40', type: 'image/png', |
| 89 }); |
| 90 }); |
| 91 |
| 92 metadata.artwork[0].src = 'bar'; |
| 93 assert_equals(metadata.artwork[0].src, 'http://foo.com/'); |
| 94 }, "Test that MediaMetadat.artwork can't be modified"); |
| 95 |
| 96 test(function() { |
| 97 var metadata = new MediaMetadata({ artwork: [{ |
| 98 src: 'http://example.com/', sizes: '40x40', type: 'image/png', |
| 99 some_other_value: 'foo', |
| 100 }]}); |
| 101 assert_equals(metadata.artwork[0].src, 'http://example.com/'); |
| 102 assert_equals(metadata.artwork[0].sizes, '40x40'); |
| 103 assert_equals(metadata.artwork[0].type, 'image/png'); |
| 104 assert_false('some_other_value' in metadata.artwork[0]); |
| 105 |
| 106 metadata.artwork[0].something_else = 'bar'; |
| 107 assert_false('something_else' in metadata.artwork[0]); |
| 108 }, "Test that MediaMetadata.artwork will not expose unknown properties"); |
| 109 |
| 110 test(function() { |
| 111 var metadata = new MediaMetadata({ artwork: [ |
| 112 { src: 'http://example.com/1', sizes: '40x40', type: 'image/png' }, |
| 113 { src: 'http://example.com/2', sizes: '40x40', type: 'image/png' }, |
| 114 ]}); |
| 115 |
| 116 assert_true(Object.isFrozen(metadata.artwork)); |
| 117 for (var i = 0; i < metadata.artwork.length; ++i) |
| 118 assert_true(Object.isFrozen(metadata.artwork[i])); |
| 119 }, "Test that MediaMetadata.artwork is Frozen"); |
| 120 |
| 121 test(function() { |
| 122 var metadata = new MediaMetadata({ artwork: [ |
| 123 { src: 'http://example.com', sizes: '40x40', type: 'image/png' }, |
| 124 { src: '../foo', sizes: '40x40', type: 'image/png' }, |
| 125 { src: '/foo/bar', sizes: '40x40', type: 'image/png' }, |
| 126 ]}); |
| 127 |
| 128 assert_equals(metadata.artwork[0].src, new URL('http://example.com', documen
t.URL).href) |
| 129 assert_equals(metadata.artwork[1].src, new URL('../foo', document.URL).href) |
| 130 assert_equals(metadata.artwork[2].src, new URL('/foo/bar', document.URL).hre
f) |
| 131 }, "Test that MediaMetadata.artwork returns parsed urls"); |
| 132 |
| 133 test(function() { |
| 134 var metadata = 42; |
| 135 |
| 136 assert_throws(new TypeError(), _ => { |
| 137 metadata |
| 138 new MediaMetadata({ artwork: [ { src: 'http://[example.com]' }] }); |
| 139 }); |
| 140 assert_equals(metadata, 42); |
| 141 |
| 142 metadata = new MediaMetadata(); |
| 143 assert_throws(new TypeError(), _ => { |
| 144 metadata.artwork = [ |
| 145 // Valid url. |
| 146 { src: 'http://example.com' }, |
| 147 // Invalid url. |
| 148 { src: 'http://example.com:demo' }, |
| 149 ]; |
| 150 }); |
| 151 assert_equals(metadata.artwork.length, 0); |
| 152 |
| 153 }, "Test that MediaMetadata throws when setting an invalid url"); |
| 154 |
| 155 test(function() { |
| 156 var metadata = new MediaMetadata({ artwork: [ { src: 'foo.jpg' } ] }); |
| 157 assert_equals(metadata.artwork[0].type, ''); |
| 158 assert_equals(metadata.artwork[0].sizes, ''); |
| 159 }, "Test MediaImage default values"); |
| 160 |
| 161 test(function() { |
| 162 assert_throws(new TypeError(), _ => { |
| 163 new MediaMetadata({ artwork: [ {} ] }); |
| 164 }); |
| 165 |
| 166 var metadata = new MediaMetadata(); |
| 167 assert_throws(new TypeError(), _ => { |
| 168 metadata.artwork = [ { type: 'image/png', sizes: '40x40' } ]; |
| 169 }); |
| 170 }, "Test that MediaImage.src is required") |
| 171 |
84 </script> | 172 </script> |
OLD | NEW |