placard-support.js [plain text]
class PlacardSupport extends MediaControllerSupport
{
constructor(mediaController)
{
super(mediaController);
this._updatePlacard();
}
get mediaEvents()
{
return ["loadstart", "error", "webkitpresentationmodechanged", "webkitcurrentplaybacktargetiswirelesschanged"];
}
handleEvent(event)
{
this._updatePlacard();
}
disable()
{
if (this.mediaController.isFullscreen)
super.disable();
}
_updatePlacard()
{
const controls = this.mediaController.controls;
const media = this.mediaController.media;
let placard = null;
if (media.webkitPresentationMode === "picture-in-picture")
placard = controls.pipPlacard;
else if (media.webkitCurrentPlaybackTargetIsWireless) {
this._updateAirPlayPlacard();
placard = controls.airplayPlacard;
} else if (media instanceof HTMLVideoElement && media.error !== null && media.played.length === 0)
placard = controls.invalidPlacard;
controls.placard = placard;
}
_updateAirPlayPlacard()
{
var deviceName = "";
if (!this.mediaController.host)
return;
switch(this.mediaController.host.externalDeviceType) {
case 'airplay':
deviceName = UIString("This video is playing on ā%sā.", escapeHTML(this.mediaController.host.externalDeviceDisplayName) || UIString("Apple TV"));
break;
case 'tvout':
deviceName = UIString("This video is playing on the TV.");
break;
}
this.mediaController.controls.airplayPlacard.description = deviceName;
}
}
function escapeHTML(unsafeString)
{
var div = document.createElement("div");
div.textContent = unsafeString;
return div.innerHTML;
}