Skip to content

Commit

Permalink
Add WindowManagement policies to supersede WindowPlacement policies.
Browse files Browse the repository at this point in the history
Adds WindowManagementAllowedForUrls, WindowManagementBlockedForUrls and
DefaultWindowManagementSetting policies to act as aliases for the
WindowPlacement variants as part of the renaming effort.

Bug: 1328581
Change-Id: I2a45c30cf07f8ad20f110d0f39c179ebac661fb3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4150203
Commit-Queue: Brad Triebwasser <btriebw@chromium.org>
Reviewed-by: Julian Pastarmov <pastarmovj@chromium.org>
Reviewed-by: Balazs Engedy <engedy@chromium.org>
Reviewed-by: Mike Wasserman <msw@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1096475}
  • Loading branch information
bradtriebwasser authored and Chromium LUCI CQ committed Jan 24, 2023
1 parent c00bd79 commit e62a6bc
Show file tree
Hide file tree
Showing 15 changed files with 260 additions and 45 deletions.
43 changes: 32 additions & 11 deletions chrome/browser/policy/configuration_policy_handler_list_factory.cc
Expand Up @@ -425,9 +425,6 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = {
{ key::kDefaultWebHidGuardSetting,
prefs::kManagedDefaultWebHidGuardSetting,
base::Value::Type::INTEGER },
{ key::kDefaultWindowPlacementSetting,
prefs::kManagedDefaultWindowPlacementSetting,
base::Value::Type::INTEGER },
{ key::kDisable3DAPIs,
prefs::kDisable3DAPIs,
base::Value::Type::BOOLEAN },
Expand Down Expand Up @@ -692,12 +689,6 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = {
{ key::kWindowCaptureAllowedByOrigins,
prefs::kWindowCaptureAllowedByOrigins,
base::Value::Type::LIST },
{ key::kWindowPlacementAllowedForUrls,
prefs::kManagedWindowPlacementAllowedForUrls,
base::Value::Type::LIST },
{ key::kWindowPlacementBlockedForUrls,
prefs::kManagedWindowPlacementBlockedForUrls,
base::Value::Type::LIST },
#endif // BUILDFLAG(IS_ANDROID)
{ key::kAlternateErrorPagesEnabled,
embedder_support::kAlternateErrorPagesEnabled,
Expand Down Expand Up @@ -1918,7 +1909,7 @@ std::unique_ptr<ConfigurationPolicyHandlerList> BuildHandlerList(
#if BUILDFLAG(IS_ANDROID)
handlers->AddHandler(
std::make_unique<ContextualSearchPolicyHandlerAndroid>());
#else
#else // !BUILDFLAG(IS_ANDROID)
handlers->AddHandler(std::make_unique<BrowsingHistoryPolicyHandler>());
handlers->AddHandler(std::make_unique<BrowsingDataLifetimePolicyHandler>(
key::kClearBrowsingDataOnExitList,
Expand Down Expand Up @@ -2063,7 +2054,37 @@ std::unique_ptr<ConfigurationPolicyHandlerList> BuildHandlerList(
handlers->AddHandler(std::make_unique<WebHidDevicePolicyHandler>(
key::kWebHidAllowDevicesWithHidUsagesForUrls,
prefs::kManagedWebHidAllowDevicesWithHidUsagesForUrls, chrome_schema));
#endif

// WindowPlacement policies to be deprecated and replaced by WindowManagement.
// crbug.com/1328581
handlers->AddHandler(std::make_unique<SimpleDeprecatingPolicyHandler>(
std::make_unique<SimplePolicyHandler>(
key::kDefaultWindowPlacementSetting,
prefs::kManagedDefaultWindowManagementSetting,
base::Value::Type::INTEGER),
std::make_unique<SimplePolicyHandler>(
key::kDefaultWindowManagementSetting,
prefs::kManagedDefaultWindowManagementSetting,
base::Value::Type::INTEGER)));
handlers->AddHandler(std::make_unique<SimpleDeprecatingPolicyHandler>(
std::make_unique<SimplePolicyHandler>(
key::kWindowPlacementAllowedForUrls,
prefs::kManagedWindowManagementAllowedForUrls,
base::Value::Type::LIST),
std::make_unique<SimplePolicyHandler>(
key::kWindowManagementAllowedForUrls,
prefs::kManagedWindowManagementAllowedForUrls,
base::Value::Type::LIST)));
handlers->AddHandler(std::make_unique<SimpleDeprecatingPolicyHandler>(
std::make_unique<SimplePolicyHandler>(
key::kWindowPlacementBlockedForUrls,
prefs::kManagedWindowManagementBlockedForUrls,
base::Value::Type::LIST),
std::make_unique<SimplePolicyHandler>(
key::kWindowManagementBlockedForUrls,
prefs::kManagedWindowManagementBlockedForUrls,
base::Value::Type::LIST)));
#endif // BUILDFLAG(IS_ANDROID)

#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
BUILDFLAG(IS_ANDROID)
Expand Down
34 changes: 24 additions & 10 deletions chrome/browser/policy/test/window_management_policy_browsertest.cc
Expand Up @@ -54,7 +54,13 @@ constexpr char kCheckPermissionTemplate[] = R"(
})();
)";

typedef std::tuple<bool, bool> PolicyTestParams;
struct PolicySet {
const char* default_setting;
const char* allowed_for_urls_setting;
const char* blocked_for_urls_setting;
};

typedef std::tuple<bool, bool, PolicySet> PolicyTestParams;

class PolicyTestWindowManagement
: public PolicyTest,
Expand All @@ -69,6 +75,7 @@ class PolicyTestWindowManagement
protected:
bool AliasEnabled() const { return std::get<0>(GetParam()); }
bool UseAlias() const { return std::get<1>(GetParam()); }
const PolicySet& PolicySet() const { return std::get<2>(GetParam()); }
bool ShouldError() const { return UseAlias() && !AliasEnabled(); }
std::string GetScreensScript() const {
return base::ReplaceStringPlaceholders(
Expand Down Expand Up @@ -105,7 +112,7 @@ IN_PROC_BROWSER_TEST_P(PolicyTestWindowManagement, DefaultSetting) {
EvalJs(tab, GetCheckPermissionScript()));

PolicyMap policies;
SetPolicy(&policies, key::kDefaultWindowPlacementSetting, base::Value(2));
SetPolicy(&policies, PolicySet().default_setting, base::Value(2));
UpdateProviderPolicy(policies);

EXPECT_EQ(CONTENT_SETTING_BLOCK,
Expand All @@ -119,7 +126,7 @@ IN_PROC_BROWSER_TEST_P(PolicyTestWindowManagement, DefaultSetting) {
EvalJs(tab, GetCheckPermissionScript()));
EXPECT_EQ("error", EvalJs(tab, GetScreensScript()));

SetPolicy(&policies, key::kDefaultWindowPlacementSetting, base::Value(3));
SetPolicy(&policies, PolicySet().default_setting, base::Value(3));
UpdateProviderPolicy(policies);

EXPECT_EQ(CONTENT_SETTING_ASK,
Expand All @@ -143,7 +150,7 @@ IN_PROC_BROWSER_TEST_P(PolicyTestWindowManagement, AllowedForUrlsSettings) {
PolicyMap policies;
base::Value::List list;
list.Append(url.spec());
SetPolicy(&policies, key::kWindowPlacementAllowedForUrls,
SetPolicy(&policies, PolicySet().allowed_for_urls_setting,
base::Value(std::move(list)));
UpdateProviderPolicy(policies);

Expand All @@ -170,7 +177,7 @@ IN_PROC_BROWSER_TEST_P(PolicyTestWindowManagement, BlockedForUrlsSettings) {
PolicyMap policies;
base::Value::List list;
list.Append(url.spec());
SetPolicy(&policies, key::kWindowPlacementBlockedForUrls,
SetPolicy(&policies, PolicySet().blocked_for_urls_setting,
base::Value(std::move(list)));
UpdateProviderPolicy(policies);

Expand All @@ -188,11 +195,18 @@ IN_PROC_BROWSER_TEST_P(PolicyTestWindowManagement, BlockedForUrlsSettings) {
EXPECT_EQ("error", EvalJs(tab, GetScreensScript()));
}

INSTANTIATE_TEST_SUITE_P(,
PolicyTestWindowManagement,
::testing::Combine(::testing::Bool(),
::testing::Bool()));

INSTANTIATE_TEST_SUITE_P(
All,
PolicyTestWindowManagement,
::testing::Combine(
::testing::Bool(),
::testing::Bool(),
::testing::Values(PolicySet{key::kDefaultWindowPlacementSetting,
key::kWindowPlacementAllowedForUrls,
key::kWindowPlacementBlockedForUrls},
PolicySet{key::kDefaultWindowManagementSetting,
key::kWindowManagementAllowedForUrls,
key::kWindowManagementBlockedForUrls})));
} // namespace

} // namespace policy
85 changes: 81 additions & 4 deletions chrome/test/data/policy/policy_test_cases.json
Expand Up @@ -20075,6 +20075,83 @@
}
]
},
"DefaultWindowManagementSetting": {
"os": ["win", "linux", "mac", "chromeos_ash", "chromeos_lacros", "fuchsia"],
"note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
"policy_pref_mapping_tests": [
{
"policies": {
"DefaultWindowManagementSetting": 2
},
"prefs": {
"profile.managed_default_content_settings.window_management": {
"value": 2
}
}
},
{
"policies": {
"DefaultWindowManagementSetting": 3
},
"prefs": {
"profile.managed_default_content_settings.window_management": {
"value": 3
}
}
}
]
},
"WindowManagementAllowedForUrls": {
"os": ["win", "linux", "mac", "chromeos_ash", "chromeos_lacros", "fuchsia"],
"note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
"policy_pref_mapping_tests": [
{
"policies": {
"WindowManagementAllowedForUrls": [
"[*.]google.com",
"http://example.com:1234"
]
},
"prefs": {
"profile.managed_window_management_allowed_for_urls": {
"value": [
"[*.]google.com",
"http://example.com:1234"
]
}
}
}
]
},
"WindowManagementBlockedForUrls": {
"os": [
"win",
"linux",
"mac",
"chromeos_ash",
"chromeos_lacros",
"fuchsia"
],
"note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
"policy_pref_mapping_tests": [
{
"policies": {
"WindowManagementBlockedForUrls": [
"[*.]google.com",
"http://example.com:1234"
]
},
"prefs": {
"profile.managed_window_management_blocked_for_urls": {
"value": [
"[*.]google.com",
"http://example.com:1234"
]
}
}
}
]
},
"DefaultWindowPlacementSetting": {
"os": ["win", "linux", "mac", "chromeos_ash", "chromeos_lacros", "fuchsia"],
"note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
Expand All @@ -20084,7 +20161,7 @@
"DefaultWindowPlacementSetting": 2
},
"prefs": {
"profile.managed_default_content_settings.window_placement": {
"profile.managed_default_content_settings.window_management": {
"value": 2
}
}
Expand All @@ -20094,7 +20171,7 @@
"DefaultWindowPlacementSetting": 3
},
"prefs": {
"profile.managed_default_content_settings.window_placement": {
"profile.managed_default_content_settings.window_management": {
"value": 3
}
}
Expand All @@ -20113,7 +20190,7 @@
]
},
"prefs": {
"profile.managed_window_placement_allowed_for_urls": {
"profile.managed_window_management_allowed_for_urls": {
"value": [
"[*.]google.com",
"http://example.com:1234"
Expand All @@ -20135,7 +20212,7 @@
]
},
"prefs": {
"profile.managed_window_placement_blocked_for_urls": {
"profile.managed_window_management_blocked_for_urls": {
"value": [
"[*.]google.com",
"http://example.com:1234"
Expand Down
Expand Up @@ -99,9 +99,9 @@ constexpr PrefsForManagedContentSettingsMapEntry
CONTENT_SETTING_ASK},
{prefs::kManagedWebHidBlockedForUrls, ContentSettingsType::HID_GUARD,
CONTENT_SETTING_BLOCK},
{prefs::kManagedWindowPlacementAllowedForUrls,
{prefs::kManagedWindowManagementAllowedForUrls,
ContentSettingsType::WINDOW_MANAGEMENT, CONTENT_SETTING_ALLOW},
{prefs::kManagedWindowPlacementBlockedForUrls,
{prefs::kManagedWindowManagementBlockedForUrls,
ContentSettingsType::WINDOW_MANAGEMENT, CONTENT_SETTING_BLOCK},
{prefs::kManagedLocalFontsAllowedForUrls,
ContentSettingsType::LOCAL_FONTS, CONTENT_SETTING_ALLOW},
Expand Down Expand Up @@ -144,8 +144,8 @@ constexpr const char* kManagedPrefs[] = {
prefs::kManagedWebUsbAllowDevicesForUrls,
prefs::kManagedWebUsbAskForUrls,
prefs::kManagedWebUsbBlockedForUrls,
prefs::kManagedWindowPlacementAllowedForUrls,
prefs::kManagedWindowPlacementBlockedForUrls,
prefs::kManagedWindowManagementAllowedForUrls,
prefs::kManagedWindowManagementBlockedForUrls,
prefs::kManagedLocalFontsAllowedForUrls,
prefs::kManagedLocalFontsBlockedForUrls,
};
Expand Down Expand Up @@ -176,7 +176,7 @@ constexpr const char* kManagedDefaultPrefs[] = {
prefs::kManagedDefaultWebUsbGuardSetting,
prefs::kManagedDefaultJavaScriptJitSetting,
prefs::kManagedDefaultWebHidGuardSetting,
prefs::kManagedDefaultWindowPlacementSetting,
prefs::kManagedDefaultWindowManagementSetting,
prefs::kManagedDefaultLocalFontsSetting,
};

Expand Down Expand Up @@ -230,7 +230,7 @@ const PolicyProvider::PrefsForManagedDefaultMapEntry
{ContentSettingsType::HID_GUARD,
prefs::kManagedDefaultWebHidGuardSetting},
{ContentSettingsType::WINDOW_MANAGEMENT,
prefs::kManagedDefaultWindowPlacementSetting},
prefs::kManagedDefaultWindowManagementSetting},
{ContentSettingsType::LOCAL_FONTS,
prefs::kManagedDefaultLocalFontsSetting},
};
Expand Down
12 changes: 6 additions & 6 deletions components/content_settings/core/common/pref_names.cc
Expand Up @@ -61,8 +61,8 @@ const char kManagedDefaultJavaScriptJitSetting[] =
"profile.managed_default_content_settings.javascript_jit";
const char kManagedDefaultWebHidGuardSetting[] =
"profile.managed_default_content_settings.web_hid_guard";
const char kManagedDefaultWindowPlacementSetting[] =
"profile.managed_default_content_settings.window_placement";
const char kManagedDefaultWindowManagementSetting[] =
"profile.managed_default_content_settings.window_management";
const char kManagedDefaultLocalFontsSetting[] =
"profile.managed_default_content_settings.local_fonts";

Expand Down Expand Up @@ -133,10 +133,10 @@ const char kManagedJavaScriptJitBlockedForSites[] =
const char kManagedWebHidAskForUrls[] = "profile.managed_web_hid_ask_for_urls";
const char kManagedWebHidBlockedForUrls[] =
"profile.managed_web_hid_blocked_for_urls";
const char kManagedWindowPlacementAllowedForUrls[] =
"profile.managed_window_placement_allowed_for_urls";
const char kManagedWindowPlacementBlockedForUrls[] =
"profile.managed_window_placement_blocked_for_urls";
const char kManagedWindowManagementAllowedForUrls[] =
"profile.managed_window_management_allowed_for_urls";
const char kManagedWindowManagementBlockedForUrls[] =
"profile.managed_window_management_blocked_for_urls";
const char kManagedLocalFontsAllowedForUrls[] =
"profile.managed_local_fonts_allowed_for_urls";
const char kManagedLocalFontsBlockedForUrls[] =
Expand Down
6 changes: 3 additions & 3 deletions components/content_settings/core/common/pref_names.h
Expand Up @@ -37,7 +37,7 @@ extern const char kManagedDefaultSerialGuardSetting[];
extern const char kManagedDefaultInsecurePrivateNetworkSetting[];
extern const char kManagedDefaultJavaScriptJitSetting[];
extern const char kManagedDefaultWebHidGuardSetting[];
extern const char kManagedDefaultWindowPlacementSetting[];
extern const char kManagedDefaultWindowManagementSetting[];
extern const char kManagedDefaultLocalFontsSetting[];

extern const char kManagedClipboardAllowedForUrls[];
Expand Down Expand Up @@ -74,8 +74,8 @@ extern const char kManagedJavaScriptJitAllowedForSites[];
extern const char kManagedJavaScriptJitBlockedForSites[];
extern const char kManagedWebHidAskForUrls[];
extern const char kManagedWebHidBlockedForUrls[];
extern const char kManagedWindowPlacementAllowedForUrls[];
extern const char kManagedWindowPlacementBlockedForUrls[];
extern const char kManagedWindowManagementAllowedForUrls[];
extern const char kManagedWindowManagementBlockedForUrls[];
extern const char kManagedLocalFontsAllowedForUrls[];
extern const char kManagedLocalFontsBlockedForUrls[];

Expand Down
5 changes: 4 additions & 1 deletion components/policy/resources/templates/policies.yaml
Expand Up @@ -1065,6 +1065,9 @@ policies:
1064: DeviceScreensaverIdleTimeoutSeconds
1065: DeviceScreensaverImageDisplayIntervalSeconds
1066: DeviceScreensaverImages
1067: DefaultWindowManagementSetting
1068: WindowManagementAllowedForUrls
1069: WindowManagementBlockedForUrls
atomic_groups:
1: Homepage
2: RemoteAccess
Expand Down Expand Up @@ -1107,7 +1110,7 @@ atomic_groups:
39: SensorsSettings
40: PrivateNetworkRequestSettings
41: ScreenCaptureSettings
42: WindowPlacementSettings
42: WindowManagementSettings
43: LocalFontsSettings
44: BrowserIdle
45: PrivacySandbox
Expand Down

0 comments on commit e62a6bc

Please sign in to comment.