51 lines
2.9 KiB
Diff
51 lines
2.9 KiB
Diff
From: uazo <uazo@users.noreply.github.com>
|
|
Date: Mon, 7 Aug 2023 11:02:18 +0000
|
|
Subject: Allow DocumentPiP if PopupsAndRedirects are active
|
|
|
|
Allow documentPiP api use only with content setting popup allowed
|
|
and disables the possibility of verifying the activation of PIP
|
|
in the device with document.pictureInPictureEnabled
|
|
|
|
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
|
---
|
|
.../chromium/chrome/browser/media/PictureInPicture.java | 1 +
|
|
.../picture_in_picture_controller_impl.cc | 7 +++++++
|
|
2 files changed, 8 insertions(+)
|
|
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/media/PictureInPicture.java b/chrome/android/java/src/org/chromium/chrome/browser/media/PictureInPicture.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/media/PictureInPicture.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/media/PictureInPicture.java
|
|
@@ -29,6 +29,7 @@ public abstract class PictureInPicture {
|
|
* @return boolean true if Picture-In-Picture is enabled, otherwise false.
|
|
*/
|
|
public static boolean isEnabled(Context context) {
|
|
+ if ((true)) return true;
|
|
// Some versions of Android crash when the activity enters Picture-in-Picture
|
|
// immediately after it exits Picture-in-Picture. See b/143784148
|
|
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
|
|
diff --git a/third_party/blink/renderer/modules/document_picture_in_picture/picture_in_picture_controller_impl.cc b/third_party/blink/renderer/modules/document_picture_in_picture/picture_in_picture_controller_impl.cc
|
|
--- a/third_party/blink/renderer/modules/document_picture_in_picture/picture_in_picture_controller_impl.cc
|
|
+++ b/third_party/blink/renderer/modules/document_picture_in_picture/picture_in_picture_controller_impl.cc
|
|
@@ -31,6 +31,7 @@
|
|
#include "third_party/blink/renderer/core/layout/layout_video.h"
|
|
#include "third_party/blink/renderer/modules/document_picture_in_picture/document_picture_in_picture.h"
|
|
#include "third_party/blink/renderer/modules/document_picture_in_picture/document_picture_in_picture_event.h"
|
|
+#include "third_party/blink/renderer/core/loader/document_loader.h"
|
|
#include "third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_event.h"
|
|
#include "third_party/blink/renderer/platform/heap/garbage_collected.h"
|
|
#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
|
|
@@ -386,6 +387,12 @@ void PictureInPictureControllerImpl::CreateDocumentPictureInPictureWindow(
|
|
return;
|
|
}
|
|
|
|
+ if (!opener.GetFrame()->Loader().GetDocumentLoader()->GetContentSettings()->allow_popup) {
|
|
+ resolver->RejectWithDOMException(DOMExceptionCode::kNotAllowedError,
|
|
+ "Document PiP requires user popup permission");
|
|
+ return;
|
|
+ }
|
|
+
|
|
WebPictureInPictureWindowOptions web_options;
|
|
web_options.width = options->width();
|
|
web_options.height = options->height();
|
|
--
|