From 608690e15ee67bf4db672305594a941822d831d7 Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Wed, 16 Apr 2025 21:23:09 +0200 Subject: [PATCH] Add a flag to disable GamePad API: Returns an empty list of devices without generating javascript exceptions (#1948) --- build/patches/Add-a-flag-to-disable-GamePad-API.patch | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/build/patches/Add-a-flag-to-disable-GamePad-API.patch b/build/patches/Add-a-flag-to-disable-GamePad-API.patch index 37396a59..1e7793a9 100644 --- a/build/patches/Add-a-flag-to-disable-GamePad-API.patch +++ b/build/patches/Add-a-flag-to-disable-GamePad-API.patch @@ -10,8 +10,8 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../about_flags_cc/Add-a-flag-to-disable-GamePad-API.inc | 7 +++++++ device/gamepad/public/cpp/gamepad_features.cc | 8 ++++++++ device/gamepad/public/cpp/gamepad_features.h | 2 ++ - .../blink/renderer/modules/gamepad/navigator_gamepad.cc | 7 +++++++ - 6 files changed, 28 insertions(+), 2 deletions(-) + .../blink/renderer/modules/gamepad/navigator_gamepad.cc | 6 ++++++ + 6 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Add-a-flag-to-disable-GamePad-API.inc diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json @@ -94,18 +94,17 @@ diff --git a/third_party/blink/renderer/modules/gamepad/navigator_gamepad.cc b/t #include "third_party/blink/public/common/privacy_budget/identifiability_metric_builder.h" #include "third_party/blink/public/common/privacy_budget/identifiability_study_settings.h" #include "third_party/blink/public/mojom/frame/user_activation_notification_type.mojom-blink.h" -@@ -114,6 +115,10 @@ void RecordGamepadsForIdentifiabilityStudy( +@@ -114,6 +115,9 @@ void RecordGamepadsForIdentifiabilityStudy( HeapVector> NavigatorGamepad::getGamepads( Navigator& navigator, ExceptionState& exception_state) { + if (::features::IsRestrictGamepadAccessEnabled()) { -+ exception_state.ThrowSecurityError("Access to the feature \"gamepad\" is denied"); + return HeapVector>(); + } if (!navigator.DomWindow()) { // Using an existing NavigatorGamepad if one exists, but don't create one // for a detached window, as its subclasses depend on a non-null window. -@@ -420,6 +425,8 @@ void NavigatorGamepad::SampleAndCompareGamepadState() { +@@ -420,6 +424,8 @@ void NavigatorGamepad::SampleAndCompareGamepadState() { void NavigatorGamepad::DispatchGamepadEvent(const AtomicString& event_name, Gamepad* gamepad) {