Index: third_party/WebKit/LayoutTests/media/mediasession/mediasession-integration-test.html |
diff --git a/third_party/WebKit/LayoutTests/media/mediasession/mediasession-integration-test.html b/third_party/WebKit/LayoutTests/media/mediasession/mediasession-integration-test.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..db1409b09506bb94de14727d212170c9b47aba55 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/media/mediasession/mediasession-integration-test.html |
@@ -0,0 +1,120 @@ |
+<!DOCTYPE html> |
+<title>MediaSession Integration Test</title> |
+<script src="../../resources/testharness.js"></script> |
+<script src="../../resources/testharnessreport.js"></script> |
+<script src="../../resources/mojo-helpers.js"></script> |
+<script src="resources/mediasessionservice-mock.js"></script> |
+<script src="resources/utils.js"></script> |
+<script> |
+ |
+var mock; |
+// Each entry contains a test object and a test function. |
+var pendingTests = []; |
+ |
+// All the tests steps are wrapped into a function, and each test should invoke |
+// runPendingTests() on finish. |
+ |
+function runPendingTests() { |
+ if (pendingTests.length < 1) { |
+ return; |
+ } |
+ var tmp = pendingTests.pop(); |
+ var testObj = tmp[0]; |
+ var testFunc = tmp[1]; |
+ testFunc(testObj); |
+} |
+ |
+promise_test(t => { |
+ return mediaSessionServiceMock.then(m => { |
whywhat
2016/10/10 20:45:09
can't we just setup the mock up for each test like
Zhiqiang Zhang (Slow)
2016/10/10 21:21:18
Our test here is slightly different. It's because
whywhat
2016/10/11 14:58:33
the budget service tests seem to just create a new
Zhiqiang Zhang (Slow)
2016/10/11 16:59:05
I think in our case, all these tests are used for
whywhat
2016/10/11 18:59:45
First, I don't think there's that much boilerplate
Zhiqiang Zhang (Slow)
2016/10/11 19:39:05
OK. I didn't found any other tests running async_t
|
+ mock = m; |
+ runPendingTests(); |
+ }); |
+}, "setting up mock MediaSession service"); |
+ |
+function testMetadataPropagated(t) { |
+ var metadata = new MediaMetadata({ |
+ title: "title1", |
+ artist: "artist1", |
+ album: "album1", |
+ artwork: [ |
+ { src: "http://foo.com/bar.png", type: "image/png", sizes: "128x128" } |
+ ]}); |
+ |
+ mock.setMetadataStub = function(mojoMetadata) { |
whywhat
2016/10/11 18:59:45
I believe you can replace it with step_func(functi
Zhiqiang Zhang (Slow)
2016/10/11 19:39:05
Done.
|
+ t.step(() => { |
+ assert_metadata_equals(metadata, mojoMetadataToJS(mojoMetadata)); |
mlamouri (slow - plz ping)
2016/10/10 20:30:34
I don't think you should call `mojoMetadataToJS` i
Zhiqiang Zhang (Slow)
2016/10/11 10:56:03
Done.
|
+ }); |
+ t.done(); |
+ runPendingTests(); |
+ }; |
+ window.navigator.mediaSession.metadata = metadata; |
+} |
+ |
+async_test(t => { |
+ pendingTests.push([t, testMetadataPropagated]); |
+}, "test that MediaMetadata is correctly propagated"); |
+ |
+function testMetadataPropagatedTwice(t) { |
+ var dontCareMetadata = new MediaMetadata({}); |
+ |
+ mock.setMetadataStub = function() { |
+ var metadata = new MediaMetadata({ |
+ title: "title2", |
+ artist: "artist2", |
+ album: "album2", |
+ artwork: [ |
+ { src: "http://foo.com/bar.jpg", type: "image/jpeg", sizes: "256x256"} |
+ ]}); |
+ |
+ mock.setMetadataStub = function(mojoMetadata) { |
+ t.step(() => { |
+ assert_metadata_equals(metadata, mojoMetadataToJS(mojoMetadata)); |
+ }); |
+ t.done(); |
+ runPendingTests(); |
+ } |
+ window.navigator.mediaSession.metadata = metadata; |
+ } |
+ window.navigator.mediaSession.metadata = dontCareMetadata; |
+} |
+ |
+async_test(t => { |
+ pendingTests.push([t, testMetadataPropagatedTwice]); |
+}, "test that MediaMetadata is correctly propagated twice"); |
+ |
+function testSetNullMetadata(t) { |
+ mock.setMetadataStub = function(mojoMetadata) { |
+ t.step(() => { |
+ assert_false(!!mojoMetadata); |
+ }); |
+ t.done(); |
+ runPendingTests(); |
+ }; |
+ window.navigator.mediaSession.metadata = null; |
+} |
+ |
+async_test(t => { |
+ pendingTests.push([t, testSetNullMetadata]); |
+}, "test that setting null MediaMetadata"); |
+ |
+function testFileImageRemoved(t) { |
+ var metadata = new MediaMetadata({ |
+ artwork: [ |
+ { src: "file:///foo/bar.jpg", type: "image/jpeg"} |
+ ]}); |
+ var expectedMetadata = new MediaMetadata({}); |
+ mock.setMetadataStub = function(mojoMetadata) { |
+ t.step(() => { |
+ assert_metadata_equals(expectedMetadata, mojoMetadataToJS(mojoMetadata)); |
+ }); |
+ t.done(); |
+ runPendingTests(); |
+ } |
+ window.navigator.mediaSession.metadata = metadata; |
+} |
+ |
+async_test(t => { |
+ pendingTests.push([t, testFileImageRemoved]); |
+}, "test that file MediaImage is removed"); |
+ |
+</script> |