Commit fb5fd69e authored by Devlin Cronin's avatar Devlin Cronin Committed by Commit Bot

[Extensions] Remove permission warning for externally connectable sites

Remove the permission warning for externally connectable sites. This
warning previously indicated that an extension could "Communicate with
cooperating websites", and was shown when an extension specified
"externally_connectable" in the manifest with any "matches" (i.e.,
websites). This allowed websites to message extensions via
runtime.sendMessage() and runtime.connect().

This wasn't very useful. Any extension can communicate with cooperating
websites without this capability, e.g. by being specified in the
cooperating sites' ACAO, and just making an ordinary CORS request. This
requires no permissions, because it is a normal web capability. (There
are also other ways extensions can communicate, e.g. through
web_accessible_resources).

Remove the warning.

Bug: 469602
Change-Id: I8663125f268b4e031a0a83c4dd0fd886cc2a6457
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2148249Reviewed-by: default avatarMartin Šrámek <msramek@chromium.org>
Reviewed-by: default avatarMustafa Emre Acer <meacer@chromium.org>
Commit-Queue: Devlin <rdevlin.cronin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#759893}
parent 8d9c0217
...@@ -4018,9 +4018,6 @@ are declared in tools/grit/grit_rule.gni. ...@@ -4018,9 +4018,6 @@ are declared in tools/grit/grit_rule.gni.
<message name="IDS_EXTENSION_PROMPT_WARNING_VPN" desc="Permission string for access to VPN API."> <message name="IDS_EXTENSION_PROMPT_WARNING_VPN" desc="Permission string for access to VPN API.">
Access your network traffic Access your network traffic
</message> </message>
<message name="IDS_EXTENSION_PROMPT_WARNING_WEB_CONNECTABLE" desc="Permission string for allowing websites to connect to extensions.">
Communicate with cooperating websites
</message>
<message name="IDS_EXTENSION_PROMPT_WARNING_CONTENT_SETTINGS" desc="Permission string for access to content settings."> <message name="IDS_EXTENSION_PROMPT_WARNING_CONTENT_SETTINGS" desc="Permission string for access to content settings.">
Change your settings that control websites' access to features such as cookies, JavaScript, plugins, geolocation, microphone, camera, etc. Change your settings that control websites' access to features such as cookies, JavaScript, plugins, geolocation, microphone, camera, etc.
......
...@@ -573,9 +573,6 @@ ChromePermissionMessageRule::GetAllRules() { ...@@ -573,9 +573,6 @@ ChromePermissionMessageRule::GetAllRules() {
{APIPermission::kNetworkState}, {APIPermission::kNetworkState},
{}}, {}},
{IDS_EXTENSION_PROMPT_WARNING_VPN, {APIPermission::kVpnProvider}, {}}, {IDS_EXTENSION_PROMPT_WARNING_VPN, {APIPermission::kVpnProvider}, {}},
{IDS_EXTENSION_PROMPT_WARNING_WEB_CONNECTABLE,
{APIPermission::kWebConnectable},
{}},
{std::make_unique<SingleParameterFormatter>( {std::make_unique<SingleParameterFormatter>(
IDS_EXTENSION_PROMPT_WARNING_HOME_PAGE_SETTING_OVERRIDE), IDS_EXTENSION_PROMPT_WARNING_HOME_PAGE_SETTING_OVERRIDE),
{APIPermission::kHomepage}, {APIPermission::kHomepage},
......
...@@ -75,10 +75,7 @@ bool ExternallyConnectableHandler::Parse(Extension* extension, ...@@ -75,10 +75,7 @@ bool ExternallyConnectableHandler::Parse(Extension* extension,
*externally_connectable, allow_all_urls, &install_warnings, error); *externally_connectable, allow_all_urls, &install_warnings, error);
if (!info) if (!info)
return false; return false;
if (!info->matches.is_empty()) {
PermissionsParser::AddAPIPermission(extension,
APIPermission::kWebConnectable);
}
extension->AddInstallWarnings(std::move(install_warnings)); extension->AddInstallWarnings(std::move(install_warnings));
extension->SetManifestData(keys::kExternallyConnectable, std::move(info)); extension->SetManifestData(keys::kExternallyConnectable, std::move(info));
return true; return true;
......
...@@ -39,9 +39,6 @@ TEST_F(ExternallyConnectableTest, IDsAndMatches) { ...@@ -39,9 +39,6 @@ TEST_F(ExternallyConnectableTest, IDsAndMatches) {
LoadAndExpectSuccess("externally_connectable_ids_and_matches.json"); LoadAndExpectSuccess("externally_connectable_ids_and_matches.json");
ASSERT_TRUE(extension.get()); ASSERT_TRUE(extension.get());
EXPECT_TRUE(extension->permissions_data()->HasAPIPermission(
APIPermission::kWebConnectable));
ExternallyConnectableInfo* info = ExternallyConnectableInfo* info =
ExternallyConnectableInfo::Get(extension.get()); ExternallyConnectableInfo::Get(extension.get());
ASSERT_TRUE(info); ASSERT_TRUE(info);
...@@ -101,9 +98,6 @@ TEST_F(ExternallyConnectableTest, IDs) { ...@@ -101,9 +98,6 @@ TEST_F(ExternallyConnectableTest, IDs) {
LoadAndExpectSuccess("externally_connectable_ids.json"); LoadAndExpectSuccess("externally_connectable_ids.json");
ASSERT_TRUE(extension.get()); ASSERT_TRUE(extension.get());
EXPECT_FALSE(extension->permissions_data()->HasAPIPermission(
APIPermission::kWebConnectable));
ExternallyConnectableInfo* info = ExternallyConnectableInfo* info =
ExternallyConnectableInfo::Get(extension.get()); ExternallyConnectableInfo::Get(extension.get());
ASSERT_TRUE(info); ASSERT_TRUE(info);
...@@ -122,9 +116,6 @@ TEST_F(ExternallyConnectableTest, Matches) { ...@@ -122,9 +116,6 @@ TEST_F(ExternallyConnectableTest, Matches) {
LoadAndExpectSuccess("externally_connectable_matches.json"); LoadAndExpectSuccess("externally_connectable_matches.json");
ASSERT_TRUE(extension.get()); ASSERT_TRUE(extension.get());
EXPECT_TRUE(extension->permissions_data()->HasAPIPermission(
APIPermission::kWebConnectable));
ExternallyConnectableInfo* info = ExternallyConnectableInfo* info =
ExternallyConnectableInfo::Get(extension.get()); ExternallyConnectableInfo::Get(extension.get());
ASSERT_TRUE(info); ASSERT_TRUE(info);
...@@ -165,9 +156,6 @@ TEST_F(ExternallyConnectableTest, MatchesWithTlsChannelId) { ...@@ -165,9 +156,6 @@ TEST_F(ExternallyConnectableTest, MatchesWithTlsChannelId) {
"externally_connectable_matches_tls_channel_id.json"); "externally_connectable_matches_tls_channel_id.json");
ASSERT_TRUE(extension.get()); ASSERT_TRUE(extension.get());
EXPECT_TRUE(extension->permissions_data()->HasAPIPermission(
APIPermission::kWebConnectable));
ExternallyConnectableInfo* info = ExternallyConnectableInfo* info =
ExternallyConnectableInfo::Get(extension.get()); ExternallyConnectableInfo::Get(extension.get());
ASSERT_TRUE(info); ASSERT_TRUE(info);
...@@ -190,9 +178,6 @@ TEST_F(ExternallyConnectableTest, AllIDs) { ...@@ -190,9 +178,6 @@ TEST_F(ExternallyConnectableTest, AllIDs) {
LoadAndExpectSuccess("externally_connectable_all_ids.json"); LoadAndExpectSuccess("externally_connectable_all_ids.json");
ASSERT_TRUE(extension.get()); ASSERT_TRUE(extension.get());
EXPECT_FALSE(extension->permissions_data()->HasAPIPermission(
APIPermission::kWebConnectable));
ExternallyConnectableInfo* info = ExternallyConnectableInfo* info =
ExternallyConnectableInfo::Get(extension.get()); ExternallyConnectableInfo::Get(extension.get());
ASSERT_TRUE(info); ASSERT_TRUE(info);
......
...@@ -197,7 +197,7 @@ class APIPermission { ...@@ -197,7 +197,7 @@ class APIPermission {
kWallpaper = 153, kWallpaper = 153,
kWallpaperPrivate = 154, kWallpaperPrivate = 154,
kWebcamPrivate = 155, kWebcamPrivate = 155,
kWebConnectable = 156, // for externally_connectable manifest key kDeleted_kWebConnectable = 156, // for externally_connectable manifest key
kWebNavigation = 157, kWebNavigation = 157,
kWebRequest = 158, kWebRequest = 158,
kWebRequestBlocking = 159, kWebRequestBlocking = 159,
......
...@@ -149,12 +149,6 @@ constexpr APIPermissionInfo::InitInfo permissions_to_register[] = { ...@@ -149,12 +149,6 @@ constexpr APIPermissionInfo::InitInfo permissions_to_register[] = {
{APIPermission::kVpnProvider, "vpnProvider", {APIPermission::kVpnProvider, "vpnProvider",
APIPermissionInfo::kFlagCannotBeOptional | APIPermissionInfo::kFlagCannotBeOptional |
APIPermissionInfo::kFlagDoesNotRequireManagedSessionFullLoginWarning}, APIPermissionInfo::kFlagDoesNotRequireManagedSessionFullLoginWarning},
// NOTE(kalman): This is provided by a manifest property but needs to
// appear in the install permission dialogue, so we need a fake
// permission for it. See http://crbug.com/247857.
{APIPermission::kWebConnectable, "webConnectable",
APIPermissionInfo::kFlagCannotBeOptional |
APIPermissionInfo::kFlagInternal},
{APIPermission::kWebRequest, "webRequest"}, {APIPermission::kWebRequest, "webRequest"},
{APIPermission::kWebRequestBlocking, "webRequestBlocking"}, {APIPermission::kWebRequestBlocking, "webRequestBlocking"},
{APIPermission::kDeclarativeNetRequest, {APIPermission::kDeclarativeNetRequest,
......
...@@ -22944,7 +22944,7 @@ Called by update_extension_histograms.py.--> ...@@ -22944,7 +22944,7 @@ Called by update_extension_histograms.py.-->
<int value="39" label="kAudio"/> <int value="39" label="kAudio"/>
<int value="40" label="kFavicon"/> <int value="40" label="kFavicon"/>
<int value="41" label="kMusicManagerPrivate"/> <int value="41" label="kMusicManagerPrivate"/>
<int value="42" label="kWebConnectable"/> <int value="42" label="kDeleted_WebConnectable"/>
<int value="43" label="kActivityLogPrivate"/> <int value="43" label="kActivityLogPrivate"/>
<int value="44" label="kBluetoothDevices"/> <int value="44" label="kBluetoothDevices"/>
<int value="45" label="kDownloadsOpen"/> <int value="45" label="kDownloadsOpen"/>
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