Commit 17b6ae06 authored by Ehsan Karamad's avatar Ehsan Karamad Committed by Commit Bot

Introduce Feature Policy: vertical-scroll (bare feature)

This CL introduces the bare feature. 'vertical-scroll' intends to block
specific sandboxed frames (which do not have the feature enabled) from
interfering with user's vertical scrolling in the page. The details are
explained in the document:

https://docs.google.com/document/d/1qiWelnMlsOHuT_CQ0Zm_qEAf54HS5DhoIvEDHBlfqps/edit?usp=sharing

The actual logic for blocking such frames will land in follow-up CLs.

Bug: 611982
Change-Id: I17bfc3e421cda06c4cba40efb6de046bed66bd14
Reviewed-on: https://chromium-review.googlesource.com/1007843Reviewed-by: default avatarIan Clelland <iclelland@chromium.org>
Reviewed-by: default avatarKen Buchanan <kenrb@chromium.org>
Reviewed-by: default avatarRick Byers <rbyers@chromium.org>
Commit-Queue: Ehsan Karamad <ekaramad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#550254}
parent 1ec4b271
...@@ -285,6 +285,8 @@ const FeaturePolicy::FeatureList& FeaturePolicy::GetDefaultFeatureList() { ...@@ -285,6 +285,8 @@ const FeaturePolicy::FeatureList& FeaturePolicy::GetDefaultFeatureList() {
{mojom::FeaturePolicyFeature::kUnsizedMedia, {mojom::FeaturePolicyFeature::kUnsizedMedia,
FeaturePolicy::FeatureDefault::EnableForAll}, FeaturePolicy::FeatureDefault::EnableForAll},
{mojom::FeaturePolicyFeature::kPictureInPicture, {mojom::FeaturePolicyFeature::kPictureInPicture,
FeaturePolicy::FeatureDefault::EnableForAll},
{mojom::FeaturePolicyFeature::kVerticalScroll,
FeaturePolicy::FeatureDefault::EnableForAll}})); FeaturePolicy::FeatureDefault::EnableForAll}}));
return default_feature_list; return default_feature_list;
} }
......
...@@ -83,6 +83,8 @@ enum FeaturePolicyFeature { ...@@ -83,6 +83,8 @@ enum FeaturePolicyFeature {
kUnsizedMedia, kUnsizedMedia,
// Controls access to Picture-in-Picture. // Controls access to Picture-in-Picture.
kPictureInPicture, kPictureInPicture,
// Controls the ability to block and interfere with vertical scrolling.
kVerticalScroll,
}; };
// This struct holds feature policy whitelist data that needs to be replicated // This struct holds feature policy whitelist data that needs to be replicated
......
...@@ -216,6 +216,8 @@ bool IsSupportedInFeaturePolicy(mojom::FeaturePolicyFeature feature) { ...@@ -216,6 +216,8 @@ bool IsSupportedInFeaturePolicy(mojom::FeaturePolicyFeature feature) {
return true; return true;
case mojom::FeaturePolicyFeature::kUnsizedMedia: case mojom::FeaturePolicyFeature::kUnsizedMedia:
return RuntimeEnabledFeatures::FeaturePolicyExperimentalFeaturesEnabled(); return RuntimeEnabledFeatures::FeaturePolicyExperimentalFeaturesEnabled();
case mojom::FeaturePolicyFeature::kVerticalScroll:
return RuntimeEnabledFeatures::FeaturePolicyExperimentalFeaturesEnabled();
default: default:
return false; return false;
} }
...@@ -268,6 +270,8 @@ const FeatureNameMap& GetDefaultFeatureNameMap() { ...@@ -268,6 +270,8 @@ const FeatureNameMap& GetDefaultFeatureNameMap() {
mojom::FeaturePolicyFeature::kSyncScript); mojom::FeaturePolicyFeature::kSyncScript);
default_feature_name_map.Set("unsized-media", default_feature_name_map.Set("unsized-media",
mojom::FeaturePolicyFeature::kUnsizedMedia); mojom::FeaturePolicyFeature::kUnsizedMedia);
default_feature_name_map.Set(
"vertical-scroll", mojom::FeaturePolicyFeature::kVerticalScroll);
} }
if (RuntimeEnabledFeatures::FeaturePolicyAutoplayFeatureEnabled()) { if (RuntimeEnabledFeatures::FeaturePolicyAutoplayFeatureEnabled()) {
default_feature_name_map.Set("autoplay", default_feature_name_map.Set("autoplay",
......
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