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