Add-flag-to-disable-vibration.patch 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. From: csagan5 <32685696+csagan5@users.noreply.github.com>
  2. Date: Sun, 27 Jun 2021 17:35:39 +0200
  3. Subject: Add flag to disable vibration
  4. ---
  5. chrome/browser/about_flags.cc | 4 ++++
  6. chrome/browser/flag_descriptions.cc | 3 +++
  7. chrome/browser/flag_descriptions.h | 2 ++
  8. content/child/runtime_features.cc | 1 +
  9. content/public/common/content_features.cc | 4 ++++
  10. content/public/common/content_features.h | 2 ++
  11. third_party/blink/public/platform/web_runtime_features.h | 1 +
  12. .../blink/renderer/modules/vibration/vibration_controller.cc | 3 +++
  13. .../blink/renderer/platform/exported/web_runtime_features.cc | 4 ++++
  14. .../blink/renderer/platform/runtime_enabled_features.json5 | 4 ++++
  15. 10 files changed, 28 insertions(+)
  16. diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
  17. --- a/chrome/browser/about_flags.cc
  18. +++ b/chrome/browser/about_flags.cc
  19. @@ -6670,6 +6670,10 @@ const FeatureEntry kFeatureEntries[] = {
  20. FEATURE_VALUE_TYPE(features::kNewMacNotificationAPI)},
  21. #endif
  22. + {"enable-vibration", flag_descriptions::kEnableVibrationName,
  23. + flag_descriptions::kEnableVibrationDescription, kOsAll,
  24. + FEATURE_VALUE_TYPE(features::kVibration)},
  25. +
  26. #if BUILDFLAG(IS_CHROMEOS_ASH)
  27. {"exo-gamepad-vibration", flag_descriptions::kExoGamepadVibrationName,
  28. flag_descriptions::kExoGamepadVibrationDescription, kOsCrOS,
  29. diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
  30. --- a/chrome/browser/flag_descriptions.cc
  31. +++ b/chrome/browser/flag_descriptions.cc
  32. @@ -5608,6 +5608,9 @@ const char kDefaultCalculatorWebAppDescription[] =
  33. "chrome app.";
  34. #endif // BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
  35. +const char kEnableVibrationName[] = "Vibration";
  36. +const char kEnableVibrationDescription[] = "Enable vibration API; an user gesture will still be needed.";
  37. +
  38. #if BUILDFLAG(IS_CHROMEOS)
  39. const char kDeprecateLowUsageCodecsName[] = "Deprecates low usage media codecs";
  40. const char kDeprecateLowUsageCodecsDescription[] =
  41. diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
  42. --- a/chrome/browser/flag_descriptions.h
  43. +++ b/chrome/browser/flag_descriptions.h
  44. @@ -3406,6 +3406,8 @@ extern const char kWebUITabStripTabDragIntegrationName[];
  45. extern const char kWebUITabStripTabDragIntegrationDescription[];
  46. #endif // BUILDFLAG(ENABLE_WEBUI_TAB_STRIP) && BUILDFLAG(IS_CHROMEOS_ASH)
  47. +extern const char kEnableVibrationName[];
  48. +extern const char kEnableVibrationDescription[];
  49. #if defined(TOOLKIT_VIEWS) || BUILDFLAG(IS_ANDROID)
  50. extern const char kAutofillCreditCardUploadName[];
  51. diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
  52. --- a/content/child/runtime_features.cc
  53. +++ b/content/child/runtime_features.cc
  54. @@ -100,6 +100,7 @@ void SetRuntimeFeatureDefaultsForPlatform(
  55. #if BUILDFLAG(IS_ANDROID)
  56. if (command_line.HasSwitch(switches::kDisableMediaSessionAPI))
  57. WebRuntimeFeatures::EnableMediaSession(false);
  58. + WebRuntimeFeatures::EnableVibration(base::FeatureList::IsEnabled(features::kVibration));
  59. #endif
  60. #if BUILDFLAG(IS_ANDROID)
  61. diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
  62. --- a/content/public/common/content_features.cc
  63. +++ b/content/public/common/content_features.cc
  64. @@ -121,6 +121,10 @@ const base::Feature kBackForwardCacheMemoryControls {
  65. #endif
  66. };
  67. +// Enables vibration; an user gesture will still be required if enabled.
  68. +const base::Feature kVibration{"Vibration",
  69. + base::FEATURE_DISABLED_BY_DEFAULT};
  70. +
  71. // When this feature is enabled, private network requests initiated from
  72. // non-secure contexts in the `public` address space are blocked.
  73. //
  74. diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h
  75. --- a/content/public/common/content_features.h
  76. +++ b/content/public/common/content_features.h
  77. @@ -318,6 +318,8 @@ CONTENT_EXPORT extern const base::FeatureParam<base::TimeDelta>
  78. kCompositorLockTimeout;
  79. #endif // BUILDFLAG(IS_ANDROID)
  80. +CONTENT_EXPORT extern const base::Feature kVibration;
  81. +
  82. #if BUILDFLAG(IS_MAC)
  83. CONTENT_EXPORT extern const base::Feature kDeviceMonitorMac;
  84. diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h
  85. --- a/third_party/blink/public/platform/web_runtime_features.h
  86. +++ b/third_party/blink/public/platform/web_runtime_features.h
  87. @@ -87,6 +87,7 @@ class WebRuntimeFeatures {
  88. BLINK_PLATFORM_EXPORT static void EnableBlockingFocusWithoutUserActivation(
  89. bool);
  90. BLINK_PLATFORM_EXPORT static void EnableCacheInlineScriptCode(bool);
  91. + BLINK_PLATFORM_EXPORT static void EnableVibration(bool);
  92. BLINK_PLATFORM_EXPORT static void EnableCapabilityDelegationPaymentRequest(
  93. bool enable);
  94. BLINK_PLATFORM_EXPORT static void EnableClickPointerEvent(bool enable);
  95. diff --git a/third_party/blink/renderer/modules/vibration/vibration_controller.cc b/third_party/blink/renderer/modules/vibration/vibration_controller.cc
  96. --- a/third_party/blink/renderer/modules/vibration/vibration_controller.cc
  97. +++ b/third_party/blink/renderer/modules/vibration/vibration_controller.cc
  98. @@ -30,6 +30,7 @@
  99. #include "third_party/blink/renderer/core/frame/navigator.h"
  100. #include "third_party/blink/renderer/core/page/page.h"
  101. #include "third_party/blink/renderer/platform/mojo/mojo_helper.h"
  102. +#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
  103. // Maximum number of entries in a vibration pattern.
  104. const unsigned kVibrationPatternLengthMax = 99;
  105. @@ -149,6 +150,8 @@ bool VibrationController::vibrate(Navigator& navigator,
  106. // reference to |window| or |navigator| was retained in another window.
  107. if (!navigator.DomWindow())
  108. return false;
  109. + if (!RuntimeEnabledFeatures::VibrationEnabled())
  110. + return false;
  111. return From(navigator).Vibrate(pattern);
  112. }
  113. diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.cc b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
  114. --- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc
  115. +++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
  116. @@ -164,6 +164,10 @@ void WebRuntimeFeatures::EnableScrollTopLeftInterop(bool enable) {
  117. RuntimeEnabledFeatures::SetScrollTopLeftInteropEnabled(enable);
  118. }
  119. +void WebRuntimeFeatures::EnableVibration(bool enable) {
  120. + RuntimeEnabledFeatures::SetVibrationEnabled(enable);
  121. +}
  122. +
  123. void WebRuntimeFeatures::EnableKeyboardAccessibleTooltip(bool enable) {
  124. RuntimeEnabledFeatures::SetKeyboardAccessibleTooltipEnabled(enable);
  125. }
  126. diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
  127. --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
  128. +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
  129. @@ -1668,6 +1668,10 @@
  130. name: "OrientationEvent",
  131. status: {"Android": "stable"},
  132. },
  133. + {
  134. + name: "Vibration",
  135. + status: "stable",
  136. + },
  137. {
  138. name: "OriginIsolationHeader",
  139. status: "stable",
  140. --
  141. 2.25.1