Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Side by Side Diff: third_party/WebKit/LayoutTests/media/mediasession/mojo/resources/mediasessionservice-mock.js

Issue 2401013002: Make MediaSession per frame as an attribute of Navigator (Closed)
Patch Set: split mojo tests Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 /*
2 * mediasessionservice-mock contains a mock implementation of MediaSessionServic e.
3 */
4
5 "use strict";
6
7 function mojoString16ToJS(mojoString16) {
8 return String.fromCharCode.apply(null, mojoString16.data);
9 }
10
11 function mojoImageToJS(mojoImage) {
12 var src = mojoImage.src.url;
13 var type = mojoString16ToJS(mojoImage.type);
14 var sizes = "";
15 for (var i = 0; i < mojoImage.sizes.length; i++) {
16 if (i > 0)
17 sizes += " ";
18
19 var mojoSize = mojoImage.sizes[i];
20 sizes += mojoSize.width.toString() + "x" + mojoSize.height.toString();
21 }
22 return { src: src, type: type, sizes: sizes };
23 }
24
25 function mojoMetadataToJS(mojoMetadata) {
26 if (mojoMetadata == null)
27 return null;
28
29 var title = mojoString16ToJS(mojoMetadata.title);
30 var artist = mojoString16ToJS(mojoMetadata.artist);
31 var album = mojoString16ToJS(mojoMetadata.album);
32 var artwork = [];
33 for (var i = 0; i < mojoMetadata.artwork.length; i++)
34 artwork.push(mojoImageToJS(mojoMetadata.artwork[i]));
35
36 return new MediaMetadata({title: title, artist: artist, album: album, artwork: artwork});
37 }
38
39 let mediaSessionServiceMock = loadMojoModules(
40 'mediaSessionServiceMock',
41 ['third_party/WebKit/public/platform/modules/mediasession/media_session.mojo m',
42 'mojo/public/js/router',
43 ]).then(mojo => {
44 let [mediaSessionService, router] = mojo.modules;
45
46 class MediaSessionServiceMock {
47 constructor(interfaceProvider) {
48 interfaceProvider.addInterfaceOverrideForTesting(
49 mediaSessionService.MediaSessionService.name,
50 handle => this.connectMediaSessionService_(handle));
51 this.interfaceProvider_ = interfaceProvider;
52 this.pendingResponse_ = null;
53 }
54
55 connectMediaSessionService_(handle) {
56 this.mediaSessionServiceStub_ = new mediaSessionService.MediaSessionSe rvice.stubClass(this);
57 this.mediaSessionServiceRouter_ = new router.Router(handle);
58 this.mediaSessionServiceRouter_.setIncomingReceiver(this.mediaSessionS erviceStub_);
59 }
60
61 setMetadata(metadata) {
62 if (!!this.metadataCallback_)
63 this.metadataCallback_(mojoMetadataToJS(metadata));
64 }
65
66 setMetadataCallback(callback) {
67 this.metadataCallback_ = callback;
68 }
69 }
70
71 return new MediaSessionServiceMock(mojo.frameInterfaces);
72 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698