зеркало из https://github.com/mozilla/gecko-dev.git
61 строка
1.7 KiB
JavaScript
61 строка
1.7 KiB
JavaScript
/* vim: set ts=2 sw=2 sts=2 et tw=80: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
"use strict";
|
|
|
|
var EXPORTED_SYMBOLS = ["AudioPlaybackChild"];
|
|
|
|
class AudioPlaybackChild extends JSWindowActorChild {
|
|
receiveMessage({ name, data }) {
|
|
switch (name) {
|
|
case "AudioPlayback":
|
|
this.handleMediaControlMessage(data.type);
|
|
break;
|
|
}
|
|
}
|
|
|
|
handleMediaControlMessage(msg) {
|
|
let utils = this.contentWindow.windowUtils;
|
|
if (!utils) {
|
|
return;
|
|
}
|
|
|
|
let suspendTypes = Ci.nsISuspendedTypes;
|
|
switch (msg) {
|
|
case "lostAudioFocus":
|
|
utils.mediaSuspend = suspendTypes.SUSPENDED_PAUSE_DISPOSABLE;
|
|
break;
|
|
case "lostAudioFocusTransiently":
|
|
utils.mediaSuspend = suspendTypes.SUSPENDED_PAUSE;
|
|
break;
|
|
case "gainAudioFocus":
|
|
utils.mediaSuspend = suspendTypes.NONE_SUSPENDED;
|
|
break;
|
|
case "mediaControlPaused":
|
|
utils.mediaSuspend = suspendTypes.SUSPENDED_PAUSE_DISPOSABLE;
|
|
break;
|
|
case "mediaControlStopped":
|
|
utils.mediaSuspend = suspendTypes.SUSPENDED_STOP_DISPOSABLE;
|
|
break;
|
|
default:
|
|
dump("Error : wrong media control msg!\n");
|
|
break;
|
|
}
|
|
}
|
|
|
|
observe(subject, topic, data) {
|
|
if (topic === "audio-playback") {
|
|
let name = "AudioPlayback:";
|
|
if (data === "activeMediaBlockStart") {
|
|
name += "ActiveMediaBlockStart";
|
|
} else if (data === "activeMediaBlockStop") {
|
|
name += "ActiveMediaBlockStop";
|
|
} else {
|
|
name += data === "active" ? "Start" : "Stop";
|
|
}
|
|
this.sendAsyncMessage(name);
|
|
}
|
|
}
|
|
}
|