diff --git a/out/PiPer-safari-legacy.safariextz b/out/PiPer-safari-legacy.safariextz index 109d0c6..8531431 100644 Binary files a/out/PiPer-safari-legacy.safariextz and b/out/PiPer-safari-legacy.safariextz differ diff --git a/src/common/scripts/main.js b/src/common/scripts/main.js index fadab3a..e9e63f2 100644 --- a/src/common/scripts/main.js +++ b/src/common/scripts/main.js @@ -1,4 +1,5 @@ import { info, error } from './logger.js' +import { videoPlayingPictureInPicture, togglePictureInPicture } from './video.js' import { localizedButtonTitle } from './localization.js' /** @@ -73,8 +74,7 @@ const addButton = function(parent) { return; } - const mode = video.webkitPresentationMode == 'picture-in-picture' ? 'inline' : 'picture-in-picture'; - video.webkitSetPresentationMode(mode); + togglePictureInPicture(video); }); info('Picture in Picture button created'); @@ -123,7 +123,7 @@ const videoPresentationModeChanged = function(event) { if (video != expectedVideo) return; // Toggle display of the captions and prepare video if needed - showingCaptions = video.webkitPresentationMode == 'picture-in-picture'; + showingCaptions = videoPlayingPictureInPicture(video); if (showingCaptions) prepareCaptions(video); lastUnprocessedCaption = ''; processCaptions(); @@ -993,7 +993,7 @@ const resources = { removeCaptions(video); }; const navigateFinish = function() { - showingCaptions = video.webkitPresentationMode == 'picture-in-picture'; + showingCaptions = videoPlayingPictureInPicture(video); }; window.addEventListener('spfrequest', navigateStart); window.addEventListener('spfdone', navigateFinish); diff --git a/src/common/scripts/video.js b/src/common/scripts/video.js new file mode 100644 index 0000000..45440e9 --- /dev/null +++ b/src/common/scripts/video.js @@ -0,0 +1,25 @@ +import { info } from './logger.js' + +/** + * Toggles video Picture in Picture + * + * @param {HTMLVideoElement} video - video element to toggle Picture in Picture mode + */ +export const togglePictureInPicture = function(video) { + const playingPictureInPicture = videoPlayingPictureInPicture(video); + if (playingPictureInPicture) { + video.webkitSetPresentationMode('inline'); + } else { + video.webkitSetPresentationMode('picture-in-picture'); + } +}; + +/** + * Returns true if video is playing Picture in Picture + * + * @param {HTMLVideoElement} video - video element to test + * @return {boolean} + */ +export const videoPlayingPictureInPicture = function(video) { + return video.webkitPresentationMode == 'picture-in-picture'; +}; diff --git a/src/safari-legacy/update.plist b/src/safari-legacy/update.plist index b0e53e4..c5e4d02 100644 --- a/src/safari-legacy/update.plist +++ b/src/safari-legacy/update.plist @@ -10,7 +10,7 @@ CFBundleShortVersionString CFBundleVersion - 163 + 164 Developer Identifier BQ6Q24MF9X URL