155 lines
7.1 KiB
Diff
155 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 | 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
|
|
@@ -7467,6 +7467,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
|
|
@@ -6463,6 +6463,9 @@ extern const char kLacrosScreenCoordinatesDescription[];
|
|
|
|
#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)
|
|
const char kAllowDefaultWebAppMigrationForChromeOsManagedUsersName[] =
|
|
"Allow default web app migration for ChromeOS managed users";
|
|
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
|
|
@@ -3938,6 +3938,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
|
|
@@ -101,6 +101,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
|
|
@@ -130,6 +130,10 @@ 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
|
|
@@ -322,6 +322,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 BASE_DECLARE_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
|
|
@@ -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
|
|
@@ -1827,6 +1827,10 @@
|
|
name: "OrientationEvent",
|
|
status: {"Android": "stable"},
|
|
},
|
|
+ {
|
|
+ name: "Vibration",
|
|
+ status: "stable",
|
|
+ },
|
|
{
|
|
name: "OriginIsolationHeader",
|
|
status: "stable",
|
|
--
|
|
2.25.1
|