Files
cromite/build/patches/Allow-DocumentPiP-if-PopupsAndRedirects-are-active.patch
2026-02-01 15:18:16 +01:00

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();
--