blob: f257db6a0cfd1e95c61dcb2e5f318e0f246ff276 [file] [log] [blame]
/*
* mediasessionservice-mock contains a mock implementation of MediaSessionService.
*/
"use strict";
function mojoString16ToJS(mojoString16) {
return String.fromCharCode.apply(null, mojoString16.data);
}
function mojoImageToJS(mojoImage) {
var src = mojoImage.src.url;
var type = mojoString16ToJS(mojoImage.type);
var sizes = "";
for (var i = 0; i < mojoImage.sizes.length; i++) {
if (i > 0)
sizes += " ";
var mojoSize = mojoImage.sizes[i];
sizes += mojoSize.width.toString() + "x" + mojoSize.height.toString();
}
return { src: src, type: type, sizes: sizes };
}
function mojoMetadataToJS(mojoMetadata) {
if (mojoMetadata == null)
return null;
var title = mojoString16ToJS(mojoMetadata.title);
var artist = mojoString16ToJS(mojoMetadata.artist);
var album = mojoString16ToJS(mojoMetadata.album);
var artwork = [];
for (var i = 0; i < mojoMetadata.artwork.length; i++)
artwork.push(mojoImageToJS(mojoMetadata.artwork[i]));
return new MediaMetadata({title: title, artist: artist, album: album, artwork: artwork});
}
var MediaSessionAction = blink.mojom.MediaSessionAction;
var MediaSessionPlaybackState = blink.mojom.MediaSessionPlaybackState;
class MediaSessionServiceMock {
constructor() {
this.pendingResponse_ = null;
this.bindingSet_ = new mojo.BindingSet(
blink.mojom.MediaSessionService);
this.interceptor_ =
new MojoInterfaceInterceptor(blink.mojom.MediaSessionService.name);
this.interceptor_.oninterfacerequest =
e => this.bindingSet_.addBinding(this, e.handle);
this.interceptor_.start();
}
setMetadata(metadata) {
if (!!this.metadataCallback_)
this.metadataCallback_(mojoMetadataToJS(metadata));
}
setMetadataCallback(callback) {
this.metadataCallback_ = callback;
}
setPlaybackState(state) {
if (!!this.setPlaybackStateCallback_)
this.setPlaybackStateCallback_(state);
}
setPlaybackStateCallback(callback) {
this.setPlaybackStateCallback_ = callback;
}
enableAction(action) {
if (!!this.enableDisableActionCallback_)
this.enableDisableActionCallback_(action, true);
}
disableAction(action) {
if (!!this.enableDisableActionCallback_)
this.enableDisableActionCallback_(action, false);
}
setEnableDisableActionCallback(callback) {
this.enableDisableActionCallback_ = callback;
}
setClient(client) {
this.client_ = client;
if (!!this.clientCallback_)
this.clientCallback_();
}
setClientCallback(callback) {
this.clientCallback_ = callback;
}
getClient() {
return this.client_;
}
}
let mediaSessionServiceMock = new MediaSessionServiceMock();