123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- From: csagan5 <32685696+csagan5@users.noreply.github.com>
- Date: Mon, 22 Oct 2018 21:29:53 +0200
- Subject: Add flags to disable device motion and orientation APIs
- Both flags will be disabled by default and prevent usage of gyroscope and
- legacy acceleration events.
- ---
- chrome/browser/about_flags.cc | 6 ++++++
- chrome/browser/flag_descriptions.cc | 8 ++++++++
- chrome/browser/flag_descriptions.h | 6 ++++++
- content/child/runtime_features.cc | 3 +++
- content/public/common/content_features.cc | 10 ++++++++++
- content/public/common/content_features.h | 2 ++
- .../blink/public/platform/web_runtime_features.h | 2 ++
- .../blink/renderer/modules/modules_initializer.cc | 9 ++++++---
- .../renderer/platform/exported/web_runtime_features.cc | 8 ++++++++
- .../renderer/platform/runtime_enabled_features.json5 | 8 ++++++++
- 10 files changed, 59 insertions(+), 3 deletions(-)
- 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
- @@ -1992,6 +1992,12 @@ const FeatureEntry kFeatureEntries[] = {
- {"enable-gpu-rasterization", flag_descriptions::kGpuRasterizationName,
- flag_descriptions::kGpuRasterizationDescription, kOsAll,
- MULTI_VALUE_TYPE(kEnableGpuRasterizationChoices)},
- + {"enable-device-motion", flag_descriptions::kEnableDeviceMotionName,
- + flag_descriptions::kEnableDeviceMotionDescription, kOsAll,
- + FEATURE_VALUE_TYPE(features::kDeviceMotion)},
- + {"enable-device-orientation", flag_descriptions::kEnableDeviceOrientationName,
- + flag_descriptions::kEnableDeviceOrientationDescription, kOsAll,
- + FEATURE_VALUE_TYPE(features::kDeviceOrientation)},
- {"enable-oop-rasterization", flag_descriptions::kOopRasterizationName,
- flag_descriptions::kOopRasterizationDescription, kOsAll,
- MULTI_VALUE_TYPE(kEnableOopRasterizationChoices)},
- 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
- @@ -596,6 +596,14 @@ const char kWinrtSensorsImplementationDescription[] =
- "Enables usage of the Windows.Devices.Sensors WinRT APIs on Windows for "
- "sensors";
-
- +const char kEnableDeviceMotionName[] = "Enable device motion";
- +const char kEnableDeviceMotionDescription[] =
- + "Enable device motion API which is used to detect changes in acceleration";
- +
- +const char kEnableDeviceOrientationName[] = "Enable device orientation";
- +const char kEnableDeviceOrientationDescription[] =
- + "Enable device orientation API which is used to detect changes in orientation";
- +
- const char kEnableGenericSensorExtraClassesName[] =
- "Generic Sensor Extra Classes";
- const char kEnableGenericSensorExtraClassesDescription[] =
- 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
- @@ -362,6 +362,12 @@ extern const char kWinrtGeolocationImplementationDescription[];
- extern const char kWinrtSensorsImplementationName[];
- extern const char kWinrtSensorsImplementationDescription[];
-
- +extern const char kEnableDeviceMotionName[];
- +extern const char kEnableDeviceMotionDescription[];
- +
- +extern const char kEnableDeviceOrientationName[];
- +extern const char kEnableDeviceOrientationDescription[];
- +
- extern const char kEnableGenericSensorExtraClassesName[];
- extern const char kEnableGenericSensorExtraClassesDescription[];
-
- 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
- @@ -87,6 +87,9 @@ void SetRuntimeFeatureDefaultsForPlatform(
- command_line.HasSwitch(
- switches::kEnableGpuMemoryBufferCompositorResources) &&
- !command_line.HasSwitch(switches::kDisableWebGLImageChromium) &&
- + WebRuntimeFeatures::EnableDeviceMotion(base::FeatureList::IsEnabled(features::kDeviceMotion));
- + WebRuntimeFeatures::EnableDeviceOrientation(base::FeatureList::IsEnabled(features::kDeviceOrientation));
- +
- !command_line.HasSwitch(switches::kDisableGpu) &&
- base::FeatureList::IsEnabled(features::kWebGLImageChromium);
- #else
- 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
- @@ -781,6 +781,16 @@ const base::Feature kWebOtpBackend{"kWebOtpBackend",
- // TODO(rouslan): Remove this.
- const base::Feature kWebPayments{"WebPayments",
- base::FEATURE_ENABLED_BY_DEFAULT};
- +// Enables the device motion API used to track device acceleration;
- +// no user authorization or notifications happens when in use.
- +const base::Feature kDeviceMotion{"DeviceMotion",
- + base::FEATURE_DISABLED_BY_DEFAULT};
- +
- +// Enables the device orientation API used to track device orientation;
- +// no user authorization or notifications happens when in use.
- +const base::Feature kDeviceOrientation{"DeviceOrientation",
- + base::FEATURE_DISABLED_BY_DEFAULT};
- +
-
- // Minimal user interface experience for payments on the web.
- const base::Feature kWebPaymentsMinimalUI{"WebPaymentsMinimalUI",
- 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
- @@ -171,6 +171,8 @@ CONTENT_EXPORT extern const base::Feature kWebXrHitTest;
- CONTENT_EXPORT extern const base::Feature kWebXrIncubations;
- CONTENT_EXPORT extern const base::Feature kWebXrPermissionsApi;
-
- +CONTENT_EXPORT extern const base::Feature kDeviceMotion, kDeviceOrientation;
- +
- #if defined(OS_ANDROID)
- CONTENT_EXPORT extern const base::Feature kAndroidAutofillAccessibility;
- CONTENT_EXPORT extern const base::Feature
- 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
- @@ -100,6 +100,8 @@ class WebRuntimeFeatures {
- BLINK_PLATFORM_EXPORT static void EnableCSSHexAlphaColor(bool);
- BLINK_PLATFORM_EXPORT static void EnableSameSiteByDefaultCookies(bool);
- BLINK_PLATFORM_EXPORT static void EnableScrollTopLeftInterop(bool);
- + BLINK_PLATFORM_EXPORT static void EnableDeviceMotion(bool);
- + BLINK_PLATFORM_EXPORT static void EnableDeviceOrientation(bool);
- BLINK_PLATFORM_EXPORT static void EnableKeyboardFocusableScrollers(bool);
- BLINK_PLATFORM_EXPORT static void EnableDatabase(bool);
- BLINK_PLATFORM_EXPORT static void EnableDecodeJpeg420ImagesToYUV(bool);
- diff --git a/third_party/blink/renderer/modules/modules_initializer.cc b/third_party/blink/renderer/modules/modules_initializer.cc
- --- a/third_party/blink/renderer/modules/modules_initializer.cc
- +++ b/third_party/blink/renderer/modules/modules_initializer.cc
- @@ -244,9 +244,12 @@ void ModulesInitializer::InitInspectorAgentSession(
- void ModulesInitializer::OnClearWindowObjectInMainWorld(
- Document& document,
- const Settings& settings) const {
- - DeviceMotionController::From(document);
- - DeviceOrientationController::From(document);
- - DeviceOrientationAbsoluteController::From(document);
- + if (RuntimeEnabledFeatures::DeviceMotionEnabled())
- + DeviceMotionController::From(document);
- + if (RuntimeEnabledFeatures::DeviceOrientationEnabled()) {
- + DeviceOrientationController::From(document);
- + DeviceOrientationAbsoluteController::From(document);
- + }
- NavigatorGamepad::From(document);
- NavigatorServiceWorker::From(document);
- DOMWindowStorageController::From(document);
- 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
- @@ -183,6 +183,14 @@ void WebRuntimeFeatures::EnableScrollTopLeftInterop(bool enable) {
- RuntimeEnabledFeatures::SetScrollTopLeftInteropEnabled(enable);
- }
-
- +void WebRuntimeFeatures::EnableDeviceMotion(bool enable) {
- + RuntimeEnabledFeatures::SetDeviceMotionEnabled(enable);
- +}
- +
- +void WebRuntimeFeatures::EnableDeviceOrientation(bool enable) {
- + RuntimeEnabledFeatures::SetDeviceOrientationEnabled(enable);
- +}
- +
- void WebRuntimeFeatures::EnableKeyboardFocusableScrollers(bool enable) {
- RuntimeEnabledFeatures::SetKeyboardFocusableScrollersEnabled(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
- @@ -1202,6 +1202,14 @@
- name: "OffscreenCanvasCommit",
- status: "experimental",
- },
- + {
- + name: "DeviceMotion",
- + status: "stable",
- + },
- + {
- + name: "DeviceOrientation",
- + status: "stable",
- + },
- {
- name: "OnDeviceChange",
- // Android does not yet support SystemMonitor.
- --
- 2.17.1
|