157 lines
7.1 KiB
Diff
157 lines
7.1 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
|
||
|
|
||
|
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||
|
---
|
||
|
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 | 5 +++++
|
||
|
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, 29 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
|
||
|
@@ -8430,6 +8430,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-consumed-by-ime-by-flag",
|
||
|
flag_descriptions::kExoConsumedByImeByFlagName,
|
||
|
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
|
||
|
@@ -7343,6 +7343,9 @@ const char kLacrosMergeIcuDataFileDescription[] =
|
||
|
"Enables sharing common areas of icudtl.dat between Ash and Lacros.";
|
||
|
#endif // #if 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) || BUILDFLAG(IS_LINUX)
|
||
|
const char kGetAllScreensMediaName[] = "GetAllScreensMedia API";
|
||
|
const char kGetAllScreensMediaDescription[] =
|
||
|
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
|
||
|
@@ -4466,6 +4466,8 @@ extern const char kWebUITabStripContextMenuAfterTapName[];
|
||
|
extern const char kWebUITabStripContextMenuAfterTapDescription[];
|
||
|
#endif // BUILDFLAG(ENABLE_WEBUI_TAB_STRIP)
|
||
|
|
||
|
+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
|
||
|
@@ -103,6 +103,7 @@ void SetRuntimeFeatureDefaultsForPlatform(
|
||
|
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
|
||
|
@@ -106,6 +106,11 @@ BASE_FEATURE(kBackForwardCacheMemoryControls,
|
||
|
#endif
|
||
|
);
|
||
|
|
||
|
+// Enables vibration; an user gesture will still be required if enabled.
|
||
|
+BASE_FEATURE(kVibration,
|
||
|
+ "VibrationEnabled",
|
||
|
+ 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
|
||
|
@@ -311,6 +311,8 @@ CONTENT_EXPORT BASE_DECLARE_FEATURE(kForceOffTextAutosizing);
|
||
|
CONTENT_EXPORT BASE_DECLARE_FEATURE(kUserMediaScreenCapturing);
|
||
|
CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebNfc);
|
||
|
#endif // BUILDFLAG(IS_ANDROID)
|
||
|
+CONTENT_EXPORT BASE_DECLARE_FEATURE(kVibration);
|
||
|
+
|
||
|
|
||
|
#if BUILDFLAG(IS_MAC)
|
||
|
CONTENT_EXPORT BASE_DECLARE_FEATURE(kMacAllowBackgroundingRenderProcesses);
|
||
|
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
|
||
|
@@ -70,6 +70,7 @@ class BLINK_PLATFORM_EXPORT WebRuntimeFeatures : public WebRuntimeFeaturesBase {
|
||
|
static void EnableFingerprintingCanvasMeasureTextNoise(bool);
|
||
|
static void EnableFingerprintingCanvasImageDataNoise(bool);
|
||
|
static void EnableFluentScrollbars(bool);
|
||
|
+ static void EnableVibration(bool);
|
||
|
|
||
|
WebRuntimeFeatures() = delete;
|
||
|
};
|
||
|
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
|
||
|
@@ -29,6 +29,7 @@
|
||
|
#include "third_party/blink/renderer/core/frame/local_frame.h"
|
||
|
#include "third_party/blink/renderer/core/frame/navigator.h"
|
||
|
#include "third_party/blink/renderer/core/page/page.h"
|
||
|
+#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
|
||
|
|
||
|
// Maximum number of entries in a vibration pattern.
|
||
|
const unsigned kVibrationPatternLengthMax = 99;
|
||
|
@@ -152,6 +153,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
|
||
|
@@ -52,6 +52,10 @@ void WebRuntimeFeatures::EnableTestOnlyFeatures(bool enable) {
|
||
|
RuntimeEnabledFeatures::SetTestFeaturesEnabled(enable);
|
||
|
}
|
||
|
|
||
|
+void WebRuntimeFeatures::EnableVibration(bool enable) {
|
||
|
+ RuntimeEnabledFeatures::SetVibrationEnabled(enable);
|
||
|
+}
|
||
|
+
|
||
|
void WebRuntimeFeatures::EnableOriginTrialControlledFeatures(bool enable) {
|
||
|
RuntimeEnabledFeatures::SetOriginTrialControlledFeaturesEnabled(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
|
||
|
@@ -2638,6 +2638,10 @@
|
||
|
status: {"Android": "stable"},
|
||
|
base_feature: "none",
|
||
|
},
|
||
|
+ {
|
||
|
+ name: "Vibration",
|
||
|
+ status: "stable",
|
||
|
+ },
|
||
|
{
|
||
|
name: "OriginIsolationHeader",
|
||
|
status: "stable",
|
||
|
--
|
||
|
2.25.1
|