Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move fanart provider to plugin #350

Merged
merged 3 commits into from
Jun 5, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
82 changes: 14 additions & 68 deletions src/components/htmlvideoplayer/plugin.js
Original file line number Diff line number Diff line change
Expand Up @@ -714,12 +714,10 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
};

self.stop = function (destroyPlayer) {

var elem = self._mediaElement;
var src = self._currentSrc;

if (elem) {

if (src) {
elem.pause();
}
Expand All @@ -737,7 +735,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
};

self.destroy = function () {

htmlMediaHelper.destroyHlsPlayer(self);
htmlMediaHelper.destroyFlvPlayer(self);

Expand All @@ -746,11 +743,9 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
var videoElement = self._mediaElement;

if (videoElement) {

self._mediaElement = null;

destroyCustomTrack(videoElement);

videoElement.removeEventListener('timeupdate', onTimeUpdate);
videoElement.removeEventListener('ended', onEnded);
videoElement.removeEventListener('volumechange', onVolumeChange);
Expand All @@ -765,9 +760,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa

var dlg = videoDialog;
if (dlg) {

videoDialog = null;

dlg.parentNode.removeChild(dlg);
}

Expand All @@ -781,8 +774,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
}

function onTimeUpdate(e) {

// Get the player position + the transcoding offset
// get the player position and the transcoding offset
var time = this.currentTime;

if (time && !self._timeUpdated) {
Expand All @@ -804,13 +796,11 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
}

function onVolumeChange() {

htmlMediaHelper.saveVolume(this.volume);
events.trigger(self, 'volumechange');
}

function onNavigatedToOsd() {

var dlg = videoDialog;
if (dlg) {
dlg.classList.remove('videoPlayerContainer-withBackdrop');
Expand All @@ -819,8 +809,8 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
onStartedAndNavigatedToOsd();
}
}
function onStartedAndNavigatedToOsd() {

function onStartedAndNavigatedToOsd() {
// If this causes a failure during navigation we end up in an awkward UI state
setCurrentTrackElement(subtitleTrackIndexToSetOnPlaying);

Expand All @@ -830,7 +820,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
}

function onPlaying(e) {

if (!self._started) {
self._started = true;
this.removeAttribute('controls');
Expand All @@ -855,7 +844,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
}

function onPlay(e) {

events.trigger(self, 'unpause');
}

Expand All @@ -865,7 +853,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
}

if (elem.videoWidth === 0 && elem.videoHeight === 0) {

var mediaSource = (self._currentPlayOptions || {}).mediaSource;

// Only trigger this if there is media info
Expand All @@ -875,10 +862,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
return;
}
}

//if (elem.audioTracks && !elem.audioTracks.length) {
// htmlMediaHelper.onErrorInternal(self, 'mediadecodeerror');
//}
}

function onClick() {
Expand All @@ -894,7 +877,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
}

function onError() {

var errorCode = this.error ? (this.error.code || 0) : 0;
var errorMessage = this.error ? (this.error.message || '') : '';
console.log('Media element error: ' + errorCode.toString() + ' ' + errorMessage);
Expand Down Expand Up @@ -933,7 +915,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
}

function destroyCustomTrack(videoElement) {

if (self._resizeObserver) {
self._resizeObserver.disconnect();
self._resizeObserver = null;
Expand Down Expand Up @@ -975,18 +956,14 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
self.destroyCustomTrack = destroyCustomTrack;

function fetchSubtitlesUwp(track, item) {

return Windows.Storage.StorageFile.getFileFromPathAsync(track.Path).then(function (storageFile) {

return Windows.Storage.FileIO.readTextAsync(storageFile).then(function (text) {
return JSON.parse(text);
});
});

}

function fetchSubtitles(track, item) {

if (window.Windows && itemHelper.isLocalItem(item)) {
return fetchSubtitlesUwp(track, item);
}
Expand Down Expand Up @@ -1016,7 +993,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
return;
}

// if already playing thids track, skip
// skip if already playing this track
if (customTrackIndex === track.Index) {
return;
}
Expand Down Expand Up @@ -1077,10 +1054,8 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
}

function onVideoResize() {

if (browser.iOS) {

// with wkwebview, the new sizes will be delayed for about 500ms
// the new sizes will be delayed for about 500ms with wkwebview
setTimeout(resetVideoRendererSize, 500);
} else {
resetVideoRendererSize();
Expand Down Expand Up @@ -1127,7 +1102,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
}

function renderSubtitlesWithCustomElement(videoElement, track, item) {

fetchSubtitles(track, item).then(function (data) {
if (!videoSubtitlesElem) {
var subtitlesContainer = document.createElement('div');
Expand All @@ -1142,14 +1116,10 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
}

function setSubtitleAppearance(elem, innerElem) {

require(['userSettings', 'subtitleAppearanceHelper'], function (userSettings, subtitleAppearanceHelper) {

subtitleAppearanceHelper.applyStyles({

text: innerElem,
window: elem

}, userSettings.getSubtitleAppearanceSettings());
});
}
Expand Down Expand Up @@ -1206,7 +1176,8 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
var trackElement = null;
var expectedId = 'manualTrack' + track.Index;

var allTracks = videoElement.textTracks; // get list of tracks
// get list of tracks
var allTracks = videoElement.textTracks;
for (var i = 0; i < allTracks.length; i++) {

var currentTrack = allTracks[i];
Expand Down Expand Up @@ -1379,9 +1350,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa

var tracks = self._mediaElement.querySelectorAll('track');
for (i = 0; i < tracks.length; i++) {

track = tracks[i];

track.src = replaceQueryString(track.src, 'startPositionTicks', startPositionTicks);
}
}
Expand Down Expand Up @@ -1478,9 +1447,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
});

} else {

if (options.backdropUrl) {

dlg.classList.add('videoPlayerContainer-withBackdrop');
dlg.style.backgroundImage = "url('" + options.backdropUrl + "')";
}
Expand All @@ -1492,12 +1459,10 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
}

HtmlVideoPlayer.prototype.canPlayMediaType = function (mediaType) {

return (mediaType || '').toLowerCase() === 'video';
};

HtmlVideoPlayer.prototype.supportsPlayMethod = function (playMethod, item) {

if (appHost.supportsPlayMethod) {
return appHost.supportsPlayMethod(playMethod, item);
}
Expand All @@ -1506,7 +1471,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
};

HtmlVideoPlayer.prototype.getDeviceProfile = function (item, options) {

var instance = this;
return getDeviceProfileInternal(item, options).then(function (profile) {
instance._lastProfile = profile;
Expand All @@ -1523,24 +1487,22 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
}

var supportedFeatures;

function getSupportedFeatures() {

var list = [];

var video = document.createElement('video');
if (video.webkitSupportsPresentationMode && typeof video.webkitSetPresentationMode === "function" || document.pictureInPictureEnabled) {
list.push('PictureInPicture');
}
else if (browser.ipad) {

} else if (browser.ipad) {
// Unfortunately this creates a false positive on devices where its' not actually supported
if (navigator.userAgent.toLowerCase().indexOf('os 9') === -1) {
if (video.webkitSupportsPresentationMode && video.webkitSupportsPresentationMode && typeof video.webkitSetPresentationMode === "function") {
list.push('PictureInPicture');
}
}
} else if (window.Windows) {

if (Windows.UI.ViewManagement.ApplicationView.getForCurrentView().isViewModeSupported(Windows.UI.ViewManagement.ApplicationViewMode.compactOverlay)) {
list.push('PictureInPicture');
}
Expand All @@ -1552,7 +1514,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
}

HtmlVideoPlayer.prototype.supports = function (feature) {

if (!supportedFeatures) {
supportedFeatures = getSupportedFeatures();
}
Expand Down Expand Up @@ -1593,7 +1554,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
};

HtmlVideoPlayer.prototype.canSetAudioStreamIndex = function (index) {

if (browser.tizen || browser.orsay) {
return true;
}
Expand Down Expand Up @@ -1624,8 +1584,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
document.exitPictureInPicture().catch(onPictureInPictureError);
}
}
}
else if (window.Windows) {
} else if (window.Windows) {

this.isPip = isEnabled;
if (isEnabled) {
Expand All @@ -1634,12 +1593,9 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
else {
Windows.UI.ViewManagement.ApplicationView.getForCurrentView().tryEnterViewModeAsync(Windows.UI.ViewManagement.ApplicationViewMode.default);
}
}
else {
if (video) {
if (video.webkitSupportsPresentationMode && typeof video.webkitSetPresentationMode === "function") {
video.webkitSetPresentationMode(isEnabled ? "picture-in-picture" : "inline");
}
} else {
if (video && video.webkitSupportsPresentationMode && typeof video.webkitSetPresentationMode === "function") {
video.webkitSetPresentationMode(isEnabled ? "picture-in-picture" : "inline");
}
}
};
Expand All @@ -1648,11 +1604,9 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa

if (document.pictureInPictureEnabled) {
return document.pictureInPictureElement ? true : false;
}
else if (window.Windows) {
} else if (window.Windows) {
return this.isPip || false;
}
else {
} else {
var video = this._mediaElement;
if (video) {
return video.webkitPresentationMode === "picture-in-picture";
Expand All @@ -1667,7 +1621,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
var elem = this._mediaElement;

if (elem) {

val = Math.max(0, val);
val = Math.min(100, val);

Expand All @@ -1683,9 +1636,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
};

HtmlVideoPlayer.prototype.getBrightness = function () {

var elem = this._mediaElement;

if (elem) {
var val = elem.brightnessValue;
return val == null ? 100 : val;
Expand Down Expand Up @@ -1758,7 +1709,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
HtmlVideoPlayer.prototype.getVolume = function () {
var mediaElement = this._mediaElement;
if (mediaElement) {

return Math.min(Math.round(mediaElement.volume * 100), 100);
}
};
Expand All @@ -1772,7 +1722,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
};

HtmlVideoPlayer.prototype.setMute = function (mute) {

var mediaElement = this._mediaElement;
if (mediaElement) {
mediaElement.muted = mute;
Expand All @@ -1792,12 +1741,10 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
};

HtmlVideoPlayer.prototype.getAspectRatio = function () {

return this._currentAspectRatio;
};

HtmlVideoPlayer.prototype.getSupportedAspectRatios = function () {

return [];
};

Expand All @@ -1808,7 +1755,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
HtmlVideoPlayer.prototype.getBufferedRanges = function () {
var mediaElement = this._mediaElement;
if (mediaElement) {

return htmlMediaHelper.getBufferedRanges(this, mediaElement);
}

Expand Down