154 lines
7.2 KiB
Diff
154 lines
7.2 KiB
Diff
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
|
Date: Sun, 27 Jun 2021 17:35:39 +0200
|
|
Subject: Add flag to disable vibration
|
|
|
|
---
|
|
chrome/browser/about_flags.cc | 4 ++++
|
|
chrome/browser/flag_descriptions.cc | 3 +++
|
|
chrome/browser/flag_descriptions.h | 2 ++
|
|
content/child/runtime_features.cc | 1 +
|
|
content/public/common/content_features.cc | 4 ++++
|
|
content/public/common/content_features.h | 2 ++
|
|
third_party/blink/public/platform/web_runtime_features.h | 1 +
|
|
.../blink/renderer/modules/vibration/vibration_controller.cc | 3 +++
|
|
.../blink/renderer/platform/exported/web_runtime_features.cc | 4 ++++
|
|
.../blink/renderer/platform/runtime_enabled_features.json5 | 4 ++++
|
|
10 files changed, 28 insertions(+)
|
|
|
|
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
|
|
--- a/chrome/browser/about_flags.cc
|
|
+++ b/chrome/browser/about_flags.cc
|
|
@@ -6639,6 +6639,10 @@ const FeatureEntry kFeatureEntries[] = {
|
|
FEATURE_VALUE_TYPE(features::kNewMacNotificationAPI)},
|
|
#endif
|
|
|
|
+ {"enable-vibration", flag_descriptions::kEnableVibrationName,
|
|
+ flag_descriptions::kEnableVibrationDescription, kOsAll,
|
|
+ FEATURE_VALUE_TYPE(features::kVibration)},
|
|
+
|
|
#if BUILDFLAG(IS_CHROMEOS_ASH)
|
|
{"exo-gamepad-vibration", flag_descriptions::kExoGamepadVibrationName,
|
|
flag_descriptions::kExoGamepadVibrationDescription, kOsCrOS,
|
|
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
|
|
--- a/chrome/browser/flag_descriptions.cc
|
|
+++ b/chrome/browser/flag_descriptions.cc
|
|
@@ -5674,6 +5674,9 @@ const char kDefaultCalculatorWebAppDescription[] =
|
|
"chrome app.";
|
|
#endif // BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
|
|
|
|
+const char kEnableVibrationName[] = "Vibration";
|
|
+const char kEnableVibrationDescription[] = "Enable vibration API; an user gesture will still be needed.";
|
|
+
|
|
#if BUILDFLAG(IS_CHROMEOS)
|
|
const char kDeprecateLowUsageCodecsName[] = "Deprecates low usage media codecs";
|
|
const char kDeprecateLowUsageCodecsDescription[] =
|
|
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
|
|
--- a/chrome/browser/flag_descriptions.h
|
|
+++ b/chrome/browser/flag_descriptions.h
|
|
@@ -3431,6 +3431,8 @@ extern const char kWebUITabStripTabDragIntegrationName[];
|
|
extern const char kWebUITabStripTabDragIntegrationDescription[];
|
|
#endif // BUILDFLAG(ENABLE_WEBUI_TAB_STRIP) && BUILDFLAG(IS_CHROMEOS_ASH)
|
|
|
|
+extern const char kEnableVibrationName[];
|
|
+extern const char kEnableVibrationDescription[];
|
|
#if defined(TOOLKIT_VIEWS) || BUILDFLAG(IS_ANDROID)
|
|
|
|
extern const char kAutofillCreditCardUploadName[];
|
|
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
|
|
--- a/content/child/runtime_features.cc
|
|
+++ b/content/child/runtime_features.cc
|
|
@@ -99,6 +99,7 @@ void SetRuntimeFeatureDefaultsForPlatform(
|
|
#if BUILDFLAG(IS_ANDROID)
|
|
if (command_line.HasSwitch(switches::kDisableMediaSessionAPI))
|
|
WebRuntimeFeatures::EnableMediaSession(false);
|
|
+ WebRuntimeFeatures::EnableVibration(base::FeatureList::IsEnabled(features::kVibration));
|
|
#endif
|
|
|
|
#if BUILDFLAG(IS_ANDROID)
|
|
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
|
|
--- a/content/public/common/content_features.cc
|
|
+++ b/content/public/common/content_features.cc
|
|
@@ -121,6 +121,10 @@ const base::Feature kBackForwardCacheMemoryControls {
|
|
#endif
|
|
};
|
|
|
|
+// Enables vibration; an user gesture will still be required if enabled.
|
|
+const base::Feature kVibration{"Vibration",
|
|
+ base::FEATURE_DISABLED_BY_DEFAULT};
|
|
+
|
|
// When this feature is enabled, private network requests initiated from
|
|
// non-secure contexts in the `public` address space are blocked.
|
|
//
|
|
diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h
|
|
--- a/content/public/common/content_features.h
|
|
+++ b/content/public/common/content_features.h
|
|
@@ -315,6 +315,8 @@ CONTENT_EXPORT extern const base::FeatureParam<base::TimeDelta>
|
|
kCompositorLockTimeout;
|
|
|
|
#endif // BUILDFLAG(IS_ANDROID)
|
|
+CONTENT_EXPORT extern const base::Feature kVibration;
|
|
+
|
|
|
|
#if BUILDFLAG(IS_MAC)
|
|
CONTENT_EXPORT extern const base::Feature kDeviceMonitorMac;
|
|
diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h
|
|
--- a/third_party/blink/public/platform/web_runtime_features.h
|
|
+++ b/third_party/blink/public/platform/web_runtime_features.h
|
|
@@ -87,6 +87,7 @@ class WebRuntimeFeatures {
|
|
BLINK_PLATFORM_EXPORT static void EnableBlockingFocusWithoutUserActivation(
|
|
bool);
|
|
BLINK_PLATFORM_EXPORT static void EnableCacheInlineScriptCode(bool);
|
|
+ BLINK_PLATFORM_EXPORT static void EnableVibration(bool);
|
|
BLINK_PLATFORM_EXPORT static void EnableCapabilityDelegationPaymentRequest(
|
|
bool enable);
|
|
BLINK_PLATFORM_EXPORT static void EnableClickPointerEvent(bool enable);
|
|
diff --git a/third_party/blink/renderer/modules/vibration/vibration_controller.cc b/third_party/blink/renderer/modules/vibration/vibration_controller.cc
|
|
--- a/third_party/blink/renderer/modules/vibration/vibration_controller.cc
|
|
+++ b/third_party/blink/renderer/modules/vibration/vibration_controller.cc
|
|
@@ -30,6 +30,7 @@
|
|
#include "third_party/blink/renderer/core/frame/navigator.h"
|
|
#include "third_party/blink/renderer/core/page/page.h"
|
|
#include "third_party/blink/renderer/platform/mojo/mojo_helper.h"
|
|
+#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
|
|
|
|
// Maximum number of entries in a vibration pattern.
|
|
const unsigned kVibrationPatternLengthMax = 99;
|
|
@@ -149,6 +150,8 @@ bool VibrationController::vibrate(Navigator& navigator,
|
|
// reference to |window| or |navigator| was retained in another window.
|
|
if (!navigator.DomWindow())
|
|
return false;
|
|
+ if (!RuntimeEnabledFeatures::VibrationEnabled())
|
|
+ return false;
|
|
return From(navigator).Vibrate(pattern);
|
|
}
|
|
|
|
diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.cc b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
|
|
--- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc
|
|
+++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
|
|
@@ -164,6 +164,10 @@ void WebRuntimeFeatures::EnableScrollTopLeftInterop(bool enable) {
|
|
RuntimeEnabledFeatures::SetScrollTopLeftInteropEnabled(enable);
|
|
}
|
|
|
|
+void WebRuntimeFeatures::EnableVibration(bool enable) {
|
|
+ RuntimeEnabledFeatures::SetVibrationEnabled(enable);
|
|
+}
|
|
+
|
|
void WebRuntimeFeatures::EnableKeyboardAccessibleTooltip(bool enable) {
|
|
RuntimeEnabledFeatures::SetKeyboardAccessibleTooltipEnabled(enable);
|
|
}
|
|
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
|
|
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
|
|
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
|
|
@@ -1673,6 +1673,10 @@
|
|
name: "OrientationEvent",
|
|
status: {"Android": "stable"},
|
|
},
|
|
+ {
|
|
+ name: "Vibration",
|
|
+ status: "stable",
|
|
+ },
|
|
{
|
|
name: "OriginIsolationHeader",
|
|
status: "stable",
|
|
--
|
|
2.25.1
|