Commit 8dbfbd7d authored by Raymes Khoury's avatar Raymes Khoury Committed by Commit Bot

Remove the kUseFeaturePolicyForPermissions feature flag

This flag has been enabled by default for several milestones.

Change-Id: I54ee103f18d6f377cdf45de58dcee812ddde303b
Reviewed-on: https://chromium-review.googlesource.com/1182905Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Reviewed-by: default avatarTimothy Loh <timloh@chromium.org>
Commit-Queue: Raymes Khoury <raymes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#584677}
parent 3da16d2a
......@@ -8,7 +8,6 @@
#include <utility>
#include "base/callback_helpers.h"
#include "base/feature_list.h"
#include "base/metrics/histogram_macros.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
......@@ -32,7 +31,6 @@
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/render_widget_host_view.h"
#include "content/public/common/content_features.h"
#include "content/public/common/media_stream_request.h"
#include "content/public/common/origin_util.h"
#include "extensions/common/constants.h"
......@@ -54,13 +52,6 @@ using content::BrowserThread;
namespace {
const char kPepperMediaFeaturePolicyDeprecationMessage[] =
"Microphone and camera usage in cross-origin iframes is deprecated and "
"will be disabled in M64 (around January 2018). To continue to use this "
"feature, it must be enabled by the embedding document using Feature "
"Policy, e.g. <iframe allow=\"microphone; camera;\" ...>. See "
"https://goo.gl/EuHzyv for more details.";
// Returns true if the given ContentSettingsType is being requested in
// |request|.
bool ContentTypeIsRequested(ContentSettingsType type,
......@@ -317,26 +308,6 @@ MediaStreamDevicesController::MediaStreamDevicesController(
request, &denial_reason_);
video_setting_ = GetContentSetting(CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA,
request, &denial_reason_);
// Log a deprecation warning for pepper requests made when a feature policy is
// in place. Other types of requests (namely getUserMedia requests) have a
// deprecation warning logged in blink. Only do this if
// kUseFeaturePolicyForPermissions isn't yet enabled. When it is enabled, we
// log an error in PermissionContextBase as a part of the request.
if (request_.request_type == content::MEDIA_OPEN_DEVICE_PEPPER_ONLY &&
!base::FeatureList::IsEnabled(
features::kUseFeaturePolicyForPermissions)) {
DCHECK_NE(CONTENT_SETTING_DEFAULT, audio_setting_);
DCHECK_NE(CONTENT_SETTING_DEFAULT, video_setting_);
content::RenderFrameHost* rfh = content::RenderFrameHost::FromID(
request.render_process_id, request.render_frame_id);
if (!rfh->IsFeatureEnabled(
blink::mojom::FeaturePolicyFeature::kMicrophone) ||
!rfh->IsFeatureEnabled(blink::mojom::FeaturePolicyFeature::kCamera)) {
rfh->AddMessageToConsole(content::CONSOLE_MESSAGE_LEVEL_WARNING,
kPepperMediaFeaturePolicyDeprecationMessage);
}
}
}
bool MediaStreamDevicesController::ShouldRequestAudio() const {
......
......@@ -391,12 +391,6 @@ void PermissionContextBase::UpdateContentSetting(
bool PermissionContextBase::PermissionAllowedByFeaturePolicy(
content::RenderFrameHost* rfh) const {
if (!base::FeatureList::IsEnabled(
features::kUseFeaturePolicyForPermissions)) {
// Default to ignoring the feature policy.
return true;
}
// Some features don't have an associated feature policy yet. Allow those.
if (feature_policy_feature_ == blink::mojom::FeaturePolicyFeature::kNotFound)
return true;
......
......@@ -2,7 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/test/scoped_feature_list.h"
#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
#include "chrome/browser/geolocation/geolocation_permission_context.h"
#include "chrome/browser/media/midi_permission_context.h"
......@@ -14,7 +13,6 @@
#include "components/content_settings/core/browser/host_content_settings_map.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/web_contents.h"
#include "content/public/common/content_features.h"
#include "content/public/test/navigation_simulator.h"
#include "content/public/test/test_renderer_host.h"
#include "third_party/blink/public/mojom/feature_policy/feature_policy.mojom.h"
......@@ -34,8 +32,6 @@ class PermissionContextBaseFeaturePolicyTest
void SetUp() override {
ChromeRenderViewHostTestHarness::SetUp();
feature_list_.InitAndEnableFeature(
features::kUseFeaturePolicyForPermissions);
}
protected:
......@@ -112,31 +108,8 @@ class PermissionContextBaseFeaturePolicyTest
ContentSetting last_request_result_;
int request_id_;
base::test::ScopedFeatureList feature_list_;
};
// Feature policy should be ignored when the kUseFeaturePolicyForPermissions
// feature is disabled.
TEST_F(PermissionContextBaseFeaturePolicyTest, FeatureDisabled) {
// Disable the feature.
base::test::ScopedFeatureList feature_list;
feature_list.InitAndDisableFeature(features::kUseFeaturePolicyForPermissions);
content::RenderFrameHost* parent = GetMainRFH(kOrigin1);
RefreshPageAndSetHeaderPolicy(
&parent, blink::mojom::FeaturePolicyFeature::kMidiFeature,
std::vector<std::string>());
MidiPermissionContext midi(profile());
EXPECT_EQ(CONTENT_SETTING_ALLOW, GetPermissionForFrame(&midi, parent));
RefreshPageAndSetHeaderPolicy(
&parent, blink::mojom::FeaturePolicyFeature::kGeolocation,
std::vector<std::string>());
GeolocationPermissionContext geolocation(profile());
EXPECT_EQ(CONTENT_SETTING_ASK, GetPermissionForFrame(&geolocation, parent));
}
TEST_F(PermissionContextBaseFeaturePolicyTest, DefaultPolicy) {
content::RenderFrameHost* parent = GetMainRFH(kOrigin1);
content::RenderFrameHost* child = AddChildRFH(parent, kOrigin2);
......
......@@ -7,7 +7,6 @@
#include "content/browser/permissions/permission_controller_impl.h"
#include "content/public/browser/permission_type.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/common/content_features.h"
#include "third_party/blink/public/mojom/feature_policy/feature_policy.mojom.h"
namespace content {
......@@ -72,8 +71,7 @@ void GeolocationServiceImpl::Bind(
void GeolocationServiceImpl::CreateGeolocation(
mojo::InterfaceRequest<device::mojom::Geolocation> request,
bool user_gesture) {
if (base::FeatureList::IsEnabled(features::kUseFeaturePolicyForPermissions) &&
!render_frame_host_->IsFeatureEnabled(
if (!render_frame_host_->IsFeatureEnabled(
blink::mojom::FeaturePolicyFeature::kGeolocation)) {
return;
}
......
......@@ -13,7 +13,6 @@
#include "content/public/browser/permission_controller.h"
#include "content/public/browser/permission_type.h"
#include "content/public/browser/site_isolation_policy.h"
#include "content/public/common/content_features.h"
#include "content/public/common/service_manager_connection.h"
#include "content/public/test/mock_permission_manager.h"
#include "content/public/test/navigation_simulator.h"
......@@ -166,9 +165,6 @@ TEST_F(GeolocationServiceTest, PermissionGrantedPolicyViolation) {
}
// The embedded frame is not whitelisted.
ScopedFeatureList feature_list;
feature_list.InitFromCommandLine(
features::kUseFeaturePolicyForPermissions.name, std::string());
CreateEmbeddedFrameAndGeolocationService(/*allow_via_feature_policy=*/false);
permission_manager()->SetRequestCallback(
......@@ -197,9 +193,6 @@ TEST_F(GeolocationServiceTest, PermissionGrantedNoPolicyViolation) {
}
// Whitelist the embedded frame.
ScopedFeatureList feature_list;
feature_list.InitFromCommandLine(
features::kUseFeaturePolicyForPermissions.name, std::string());
CreateEmbeddedFrameAndGeolocationService(/*allow_via_feature_policy=*/true);
permission_manager()->SetRequestCallback(
......
......@@ -9,14 +9,12 @@
#include "base/bind.h"
#include "base/command_line.h"
#include "base/feature_list.h"
#include "content/browser/frame_host/render_frame_host_delegate.h"
#include "content/browser/frame_host/render_frame_host_impl.h"
#include "content/common/media/media_devices.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/common/content_features.h"
#include "content/public/common/content_switches.h"
#include "url/gurl.h"
#include "url/origin.h"
......@@ -43,12 +41,10 @@ MediaDevicesManager::BoolDeviceTypes DoCheckPermissionsOnUIThread(
frame_host, origin, MEDIA_DEVICE_AUDIO_CAPTURE);
bool mic_feature_policy = true;
bool camera_feature_policy = true;
if (base::FeatureList::IsEnabled(features::kUseFeaturePolicyForPermissions)) {
mic_feature_policy = frame_host->IsFeatureEnabled(
blink::mojom::FeaturePolicyFeature::kMicrophone);
camera_feature_policy = frame_host->IsFeatureEnabled(
blink::mojom::FeaturePolicyFeature::kCamera);
}
mic_feature_policy = frame_host->IsFeatureEnabled(
blink::mojom::FeaturePolicyFeature::kMicrophone);
camera_feature_policy =
frame_host->IsFeatureEnabled(blink::mojom::FeaturePolicyFeature::kCamera);
MediaDevicesManager::BoolDeviceTypes result;
// Speakers.
......
......@@ -5,12 +5,10 @@
#include "content/browser/media/media_devices_permission_checker.h"
#include "base/run_loop.h"
#include "base/test/scoped_feature_list.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_delegate.h"
#include "content/public/common/content_features.h"
#include "content/public/common/media_stream_request.h"
#include "content/public/test/test_renderer_host.h"
#include "content/test/test_render_view_host.h"
......@@ -101,8 +99,6 @@ class MediaDevicesPermissionCheckerTest : public RenderViewHostImplTestHarness {
// feature_policy_unittest.cc and in
// render_frame_host_feature_policy_unittest.cc.
TEST_F(MediaDevicesPermissionCheckerTest, CheckPermissionWithFeaturePolicy) {
base::test::ScopedFeatureList feature_list;
feature_list.InitAndEnableFeature(features::kUseFeaturePolicyForPermissions);
// Mic and Camera should be enabled by default for a frame (if permission is
// granted).
EXPECT_TRUE(CheckPermission(MEDIA_DEVICE_TYPE_AUDIO_INPUT));
......@@ -117,14 +113,6 @@ TEST_F(MediaDevicesPermissionCheckerTest, CheckPermissionWithFeaturePolicy) {
/*enabled=*/false);
EXPECT_TRUE(CheckPermission(MEDIA_DEVICE_TYPE_AUDIO_INPUT));
EXPECT_FALSE(CheckPermission(MEDIA_DEVICE_TYPE_VIDEO_INPUT));
// Ensure that the policy is ignored if kUseFeaturePolicyForPermissions is
// disabled.
base::test::ScopedFeatureList empty_feature_list;
empty_feature_list.InitAndDisableFeature(
features::kUseFeaturePolicyForPermissions);
EXPECT_TRUE(CheckPermission(MEDIA_DEVICE_TYPE_AUDIO_INPUT));
EXPECT_TRUE(CheckPermission(MEDIA_DEVICE_TYPE_VIDEO_INPUT));
}
} // namespace
......@@ -7,13 +7,11 @@
#include <utility>
#include "base/command_line.h"
#include "base/feature_list.h"
#include "base/macros.h"
#include "content/browser/frame_host/frame_tree_node.h"
#include "content/browser/frame_host/render_frame_host_delegate.h"
#include "content/browser/frame_host/render_frame_host_impl.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/common/content_features.h"
#include "content/public/common/content_switches.h"
#include "media/capture/video/fake_video_capture_device.h"
#include "third_party/blink/public/mojom/feature_policy/feature_policy.mojom.h"
......@@ -25,9 +23,6 @@ namespace content {
bool IsFeatureEnabled(RenderFrameHost* rfh,
bool tests_use_fake_render_frame_hosts,
blink::mojom::FeaturePolicyFeature feature) {
if (!base::FeatureList::IsEnabled(features::kUseFeaturePolicyForPermissions))
return true;
// Some tests don't (or can't) set up the RenderFrameHost. In these cases we
// just ignore feature policy checks (there is no feature policy to test).
if (!rfh && tests_use_fake_render_frame_hosts)
......
......@@ -9,10 +9,8 @@
#include "base/message_loop/message_loop.h"
#include "base/run_loop.h"
#include "base/test/scoped_feature_list.h"
#include "build/build_config.h"
#include "content/browser/frame_host/render_frame_host_delegate.h"
#include "content/public/common/content_features.h"
#include "content/public/test/test_browser_thread.h"
#include "content/test/test_render_frame_host.h"
#include "testing/gmock/include/gmock/gmock.h"
......@@ -403,8 +401,6 @@ class MediaStreamUIProxyFeaturePolicyTest
};
TEST_F(MediaStreamUIProxyFeaturePolicyTest, FeaturePolicy) {
base::test::ScopedFeatureList feature_list;
feature_list.InitAndEnableFeature(features::kUseFeaturePolicyForPermissions);
MediaStreamDevices devices;
MediaStreamRequestResult result;
......@@ -448,19 +444,6 @@ TEST_F(MediaStreamUIProxyFeaturePolicyTest, FeaturePolicy) {
&devices, &result);
EXPECT_EQ(MEDIA_DEVICE_PERMISSION_DENIED, result);
ASSERT_EQ(0u, devices.size());
// Ensure that the policy is ignored if kUseFeaturePolicyForPermissions is
// disabled.
base::test::ScopedFeatureList empty_feature_list;
empty_feature_list.InitAndDisableFeature(
features::kUseFeaturePolicyForPermissions);
GetResultForRequest(CreateRequest(main_rfh(), MEDIA_DEVICE_AUDIO_CAPTURE,
MEDIA_DEVICE_VIDEO_CAPTURE),
&devices, &result);
EXPECT_EQ(MEDIA_DEVICE_OK, result);
ASSERT_EQ(2u, devices.size());
EXPECT_EQ(MEDIA_DEVICE_AUDIO_CAPTURE, devices[0].type);
EXPECT_EQ(MEDIA_DEVICE_VIDEO_CAPTURE, devices[1].type);
}
} // namespace content
......@@ -448,11 +448,6 @@ const base::Feature kTopDocumentIsolation{"top-document-isolation",
const base::Feature kTouchpadAsyncPinchEvents{
"TouchpadAsyncPinchEvents", base::FEATURE_DISABLED_BY_DEFAULT};
// Use Feature Policy to gate the use of permission features like midi,
// geolocation, camera, microphone, etc.
const base::Feature kUseFeaturePolicyForPermissions{
"UseFeaturePolicyForPermissions", base::FEATURE_ENABLED_BY_DEFAULT};
// An experimental simple user-activation model where the user gesture state is
// tracked through a frame-based state instead of the gesture tokens we use
// today.
......
......@@ -105,7 +105,6 @@ CONTENT_EXPORT extern const base::Feature kTimerThrottlingForHiddenFrames;
CONTENT_EXPORT extern const base::Feature kTopDocumentIsolation;
CONTENT_EXPORT extern const base::Feature kTouchpadAsyncPinchEvents;
CONTENT_EXPORT extern const base::Feature kTouchpadOverscrollHistoryNavigation;
CONTENT_EXPORT extern const base::Feature kUseFeaturePolicyForPermissions;
CONTENT_EXPORT extern const base::Feature kUserActivationV2;
CONTENT_EXPORT extern const base::Feature kV8ContextSnapshot;
CONTENT_EXPORT extern const base::Feature kV8LowMemoryModeForSubframes;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment