diff options
author | treib <treib@chromium.org> | 2015-08-20 04:23:31 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-08-20 11:24:15 +0000 |
commit | a27148197ec0834b2bd74f1467d00ced0f1e1860 (patch) | |
tree | a12cc832d2744d063fbcfbb25ba906f0e26e048b | |
parent | 3bcb0ad7800e5a00f12c8aca1a71c91ea45df915 (diff) | |
download | chromium_src-a27148197ec0834b2bd74f1467d00ced0f1e1860.zip chromium_src-a27148197ec0834b2bd74f1467d00ced0f1e1860.tar.gz chromium_src-a27148197ec0834b2bd74f1467d00ced0f1e1860.tar.bz2 |
Extensions: Remove the legacy GetMessages/HasMessages
from APIPermission and ManifestPermission
[This is part 4 of operation "remove the old permission message system".]
BUG=398257
Review URL: https://codereview.chromium.org/1213603004
Cr-Commit-Position: refs/heads/master@{#344475}
29 files changed, 189 insertions, 559 deletions
diff --git a/chrome/browser/extensions/permission_messages_unittest.cc b/chrome/browser/extensions/permission_messages_unittest.cc index 0ddbec5..4a0aeec 100644 --- a/chrome/browser/extensions/permission_messages_unittest.cc +++ b/chrome/browser/extensions/permission_messages_unittest.cc @@ -3,6 +3,7 @@ // found in the LICENSE file. #include "base/memory/scoped_ptr.h" +#include "base/strings/utf_string_conversions.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/permissions_updater.h" #include "chrome/browser/extensions/test_extension_environment.h" @@ -17,6 +18,9 @@ #include "extensions/common/manifest_handlers/permissions_parser.h" #include "extensions/common/permissions/permission_set.h" #include "extensions/common/permissions/permissions_data.h" +#include "extensions/common/permissions/permissions_info.h" +#include "extensions/common/permissions/usb_device_permission.h" +#include "extensions/common/permissions/usb_device_permission_data.h" #include "extensions/common/test_util.h" #include "extensions/common/value_builder.h" #include "testing/gtest/include/gtest/gtest.h" @@ -43,11 +47,6 @@ class PermissionMessagesUnittest : public testing::Test { : message_provider_(new ChromePermissionMessageProvider()) {} ~PermissionMessagesUnittest() override {} - // Overridden from testing::Test: - void SetUp() override { - testing::Test::SetUp(); - } - protected: void CreateAndInstallAppWithPermissions(ListBuilder& required_permissions, ListBuilder& optional_permissions) { @@ -254,4 +253,113 @@ TEST_F(PermissionMessagesUnittest, active_permissions()[0]); } +class USBDevicePermissionMessagesTest : public testing::Test { + public: + USBDevicePermissionMessagesTest() + : message_provider_(new ChromePermissionMessageProvider()) {} + ~USBDevicePermissionMessagesTest() override {} + + CoalescedPermissionMessages GetMessages(const PermissionIDSet& permissions) { + return message_provider_->GetPermissionMessages(permissions); + } + + private: + scoped_ptr<ChromePermissionMessageProvider> message_provider_; +}; + +TEST_F(USBDevicePermissionMessagesTest, SingleDevice) { + { + const char kMessage[] = + "Access any PVR Mass Storage from HUMAX Co., Ltd. via USB"; + + scoped_ptr<base::ListValue> permission_list(new base::ListValue()); + permission_list->Append( + UsbDevicePermissionData(0x02ad, 0x138c, -1).ToValue().release()); + + UsbDevicePermission permission( + PermissionsInfo::GetInstance()->GetByID(APIPermission::kUsbDevice)); + ASSERT_TRUE(permission.FromValue(permission_list.get(), NULL, NULL)); + + CoalescedPermissionMessages messages = + GetMessages(permission.GetPermissions()); + ASSERT_EQ(1U, messages.size()); + EXPECT_EQ(base::ASCIIToUTF16(kMessage), messages.front().message()); + } + { + const char kMessage[] = "Access USB devices from HUMAX Co., Ltd."; + + scoped_ptr<base::ListValue> permission_list(new base::ListValue()); + permission_list->Append( + UsbDevicePermissionData(0x02ad, 0x138d, -1).ToValue().release()); + + UsbDevicePermission permission( + PermissionsInfo::GetInstance()->GetByID(APIPermission::kUsbDevice)); + ASSERT_TRUE(permission.FromValue(permission_list.get(), NULL, NULL)); + + CoalescedPermissionMessages messages = + GetMessages(permission.GetPermissions()); + ASSERT_EQ(1U, messages.size()); + EXPECT_EQ(base::ASCIIToUTF16(kMessage), messages.front().message()); + } + { + const char kMessage[] = "Access USB devices from an unknown vendor"; + + scoped_ptr<base::ListValue> permission_list(new base::ListValue()); + permission_list->Append( + UsbDevicePermissionData(0x02ae, 0x138d, -1).ToValue().release()); + + UsbDevicePermission permission( + PermissionsInfo::GetInstance()->GetByID(APIPermission::kUsbDevice)); + ASSERT_TRUE(permission.FromValue(permission_list.get(), NULL, NULL)); + + CoalescedPermissionMessages messages = + GetMessages(permission.GetPermissions()); + ASSERT_EQ(1U, messages.size()); + EXPECT_EQ(base::ASCIIToUTF16(kMessage), messages.front().message()); + } +} + +TEST_F(USBDevicePermissionMessagesTest, MultipleDevice) { + const char kMessage[] = "Access any of these USB devices"; + const char* kDetails[] = { + "PVR Mass Storage from HUMAX Co., Ltd.", + // TODO(treib): The following two should be the other way around - + // "unknown devices from Vendor" first, then the catch-all "devices from + // unknown vendor". crbug.com/522842 + "devices from an unknown vendor", + "unknown devices from HUMAX Co., Ltd." + }; + + // Prepare data set + scoped_ptr<base::ListValue> permission_list(new base::ListValue()); + permission_list->Append( + UsbDevicePermissionData(0x02ad, 0x138c, -1).ToValue().release()); + // This device's product ID is not in Chrome's database. + permission_list->Append( + UsbDevicePermissionData(0x02ad, 0x138d, -1).ToValue().release()); + // This additional unknown product will be collapsed into the entry above. + permission_list->Append( + UsbDevicePermissionData(0x02ad, 0x138e, -1).ToValue().release()); + // This device's vendor ID is not in Chrome's database. + permission_list->Append( + UsbDevicePermissionData(0x02ae, 0x138d, -1).ToValue().release()); + // This additional unknown vendor will be collapsed into the entry above. + permission_list->Append( + UsbDevicePermissionData(0x02af, 0x138d, -1).ToValue().release()); + + UsbDevicePermission permission( + PermissionsInfo::GetInstance()->GetByID(APIPermission::kUsbDevice)); + ASSERT_TRUE(permission.FromValue(permission_list.get(), NULL, NULL)); + + CoalescedPermissionMessages messages = + GetMessages(permission.GetPermissions()); + ASSERT_EQ(1U, messages.size()); + EXPECT_EQ(base::ASCIIToUTF16(kMessage), messages.front().message()); + const std::vector<base::string16>& submessages = + messages.front().submessages(); + ASSERT_EQ(arraysize(kDetails), submessages.size()); + for (size_t i = 0; i < submessages.size(); i++) + EXPECT_EQ(base::ASCIIToUTF16(kDetails[i]), submessages[i]); +} + } // namespace extensions diff --git a/chrome/common/extensions/manifest_handlers/automation.cc b/chrome/common/extensions/manifest_handlers/automation.cc index 03d83c4..8ae13e1 100644 --- a/chrome/common/extensions/manifest_handlers/automation.cc +++ b/chrome/common/extensions/manifest_handlers/automation.cc @@ -50,10 +50,6 @@ class AutomationManifestPermission : public ManifestPermission { PermissionIDSet GetPermissions() const override; - bool HasMessages() const override; - - PermissionMessages GetMessages() const override; - bool FromValue(const base::Value* value) override; scoped_ptr<base::Value> ToValue() const override; @@ -76,10 +72,6 @@ std::string AutomationManifestPermission::id() const { return keys::kAutomation; } -bool AutomationManifestPermission::HasMessages() const { - return GetMessages().size() > 0; -} - PermissionIDSet AutomationManifestPermission::GetPermissions() const { // Meant to mimic the behavior of GetMessages(). PermissionIDSet permissions; @@ -108,45 +100,6 @@ PermissionIDSet AutomationManifestPermission::GetPermissions() const { return permissions; } -PermissionMessages AutomationManifestPermission::GetMessages() const { - // When modifying this function, be careful to modify the functionality in - // GetPermissions() above as well. - PermissionMessages messages; - if (automation_info_->desktop) { - messages.push_back(PermissionMessage( - PermissionMessage::kFullAccess, - l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS))); - } else if (automation_info_->matches.MatchesAllURLs()) { - if (automation_info_->interact) { - messages.push_back(PermissionMessage( - PermissionMessage::kHostsAll, - l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS))); - } else { - messages.push_back(PermissionMessage( - PermissionMessage::kHostsAllReadOnly, - l10n_util::GetStringUTF16( - IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS_READ_ONLY))); - } - } else { - URLPatternSet regular_hosts; - std::set<PermissionMessage> message_set; - ExtensionsClient::Get()->FilterHostPermissions( - automation_info_->matches, ®ular_hosts, &message_set); - messages.insert(messages.end(), message_set.begin(), message_set.end()); - - std::set<std::string> hosts = - permission_message_util::GetDistinctHosts(regular_hosts, true, true); - if (!hosts.empty()) { - messages.push_back(permission_message_util::CreateFromHostList( - hosts, - automation_info_->interact ? permission_message_util::kReadWrite - : permission_message_util::kReadOnly)); - } - } - - return messages; -} - bool AutomationManifestPermission::FromValue(const base::Value* value) { base::string16 error; automation_info_.reset(AutomationInfo::FromValue(*value, diff --git a/chrome/common/extensions/manifest_handlers/ui_overrides_handler.cc b/chrome/common/extensions/manifest_handlers/ui_overrides_handler.cc index 84120a2..e5da7fa 100644 --- a/chrome/common/extensions/manifest_handlers/ui_overrides_handler.cc +++ b/chrome/common/extensions/manifest_handlers/ui_overrides_handler.cc @@ -45,23 +45,6 @@ class UIOverridesHandler::ManifestPermissionImpl : public ManifestPermission { return permissions; } - bool HasMessages() const override { - return override_bookmarks_ui_permission_; - } - - PermissionMessages GetMessages() const override { - // When making changes to this function, be careful to modify - // GetPermissions() above to have the same behaviour. - PermissionMessages result; - if (override_bookmarks_ui_permission_) { - result.push_back(PermissionMessage( - PermissionMessage::kOverrideBookmarksUI, - l10n_util::GetStringUTF16( - IDS_EXTENSION_PROMPT_WARNING_OVERRIDE_BOOKMARKS_UI))); - } - return result; - } - bool FromValue(const base::Value* value) override { return value && value->GetAsBoolean(&override_bookmarks_ui_permission_); } diff --git a/chrome/common/extensions/permissions/chrome_api_permissions.cc b/chrome/common/extensions/permissions/chrome_api_permissions.cc index b172bf6..901d6fd 100644 --- a/chrome/common/extensions/permissions/chrome_api_permissions.cc +++ b/chrome/common/extensions/permissions/chrome_api_permissions.cc @@ -30,39 +30,24 @@ std::vector<APIPermissionInfo*> ChromeAPIPermissions::GetAllPermissions() // WARNING: If you are modifying a permission message in this list, be sure to // add the corresponding permission message rule to // ChromePermissionMessageProvider::GetCoalescedPermissionMessages as well. - // TODO(sashab): Remove all permission messages from this list, once - // GetCoalescedPermissionMessages() is the only way of generating permission - // messages. APIPermissionInfo::InitInfo permissions_to_register[] = { // Register permissions for all extension types. {APIPermission::kBackground, "background"}, {APIPermission::kDeclarativeContent, "declarativeContent"}, - {APIPermission::kDesktopCapture, "desktopCapture", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_DESKTOP_CAPTURE, - PermissionMessage::kDesktopCapture}, + {APIPermission::kDesktopCapture, "desktopCapture"}, {APIPermission::kDesktopCapturePrivate, "desktopCapturePrivate"}, - {APIPermission::kDownloads, "downloads", APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_DOWNLOADS, PermissionMessage::kDownloads}, - {APIPermission::kDownloadsOpen, "downloads.open", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_DOWNLOADS_OPEN, - PermissionMessage::kDownloadsOpen}, + {APIPermission::kDownloads, "downloads"}, + {APIPermission::kDownloadsOpen, "downloads.open"}, {APIPermission::kDownloadsShelf, "downloads.shelf"}, {APIPermission::kEasyUnlockPrivate, "easyUnlockPrivate"}, {APIPermission::kIdentity, "identity"}, - {APIPermission::kIdentityEmail, "identity.email", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_IDENTITY_EMAIL, - PermissionMessage::kIdentityEmail}, + {APIPermission::kIdentityEmail, "identity.email"}, {APIPermission::kExperimental, "experimental", APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kEmbeddedExtensionOptions, "embeddedExtensionOptions", APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kGeolocation, "geolocation", - APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_GEOLOCATION, - PermissionMessage::kGeolocation}, + APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kNotifications, "notifications"}, {APIPermission::kGcdPrivate, "gcdPrivate"}, {APIPermission::kGcm, "gcm"}, @@ -70,30 +55,20 @@ std::vector<APIPermissionInfo*> ChromeAPIPermissions::GetAllPermissions() // Register extension permissions. {APIPermission::kAccessibilityFeaturesModify, - "accessibilityFeatures.modify", APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_ACCESSIBILITY_FEATURES_MODIFY, - PermissionMessage::kAccessibilityFeaturesModify}, - {APIPermission::kAccessibilityFeaturesRead, "accessibilityFeatures.read", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_ACCESSIBILITY_FEATURES_READ, - PermissionMessage::kAccessibilityFeaturesRead}, + "accessibilityFeatures.modify"}, + {APIPermission::kAccessibilityFeaturesRead, "accessibilityFeatures.read"}, {APIPermission::kAccessibilityPrivate, "accessibilityPrivate", APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kActiveTab, "activeTab"}, {APIPermission::kAudioModem, "audioModem"}, - {APIPermission::kBookmark, "bookmarks", APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_BOOKMARKS, PermissionMessage::kBookmarks}, + {APIPermission::kBookmark, "bookmarks"}, {APIPermission::kBrailleDisplayPrivate, "brailleDisplayPrivate", APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kBrowsingData, "browsingData"}, - {APIPermission::kContentSettings, "contentSettings", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_CONTENT_SETTINGS, - PermissionMessage::kContentSettings}, + {APIPermission::kContentSettings, "contentSettings"}, {APIPermission::kContextMenus, "contextMenus"}, {APIPermission::kCookie, "cookies"}, - {APIPermission::kCopresence, "copresence", APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_COPRESENCE, PermissionMessage::kCopresence}, + {APIPermission::kCopresence, "copresence"}, {APIPermission::kCopresencePrivate, "copresencePrivate"}, {APIPermission::kCryptotokenPrivate, "cryptotokenPrivate"}, {APIPermission::kDataReductionProxy, "dataReductionProxy", @@ -106,64 +81,34 @@ std::vector<APIPermissionInfo*> ChromeAPIPermissions::GetAllPermissions() APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kFontSettings, "fontSettings", APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kHistory, "history", APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_HISTORY_WRITE, - PermissionMessage::kBrowsingHistory}, + {APIPermission::kHistory, "history"}, {APIPermission::kIdltest, "idltest"}, - {APIPermission::kInput, "input", APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_INPUT, PermissionMessage::kInput}, + {APIPermission::kInput, "input"}, {APIPermission::kLocation, "location", - APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_GEOLOCATION, - PermissionMessage::kGeolocation}, - {APIPermission::kManagement, "management", APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_MANAGEMENT, PermissionMessage::kManagement}, - {APIPermission::kMDns, "mdns", APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_MDNS, PermissionMessage::kMDns}, - {APIPermission::kNativeMessaging, "nativeMessaging", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_NATIVE_MESSAGING, - PermissionMessage::kNativeMessaging}, - {APIPermission::kPlatformKeys, "platformKeys", - APIPermissionInfo::kFlagNone, IDS_EXTENSION_PROMPT_WARNING_PLATFORMKEYS, - PermissionMessage::kPlatformKeys}, - {APIPermission::kPrivacy, "privacy", APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_PRIVACY, PermissionMessage::kPrivacy}, - {APIPermission::kProcesses, "processes", APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ, PermissionMessage::kTabs}, + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kManagement, "management"}, + {APIPermission::kMDns, "mdns", APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kNativeMessaging, "nativeMessaging"}, + {APIPermission::kPlatformKeys, "platformKeys"}, + {APIPermission::kPrivacy, "privacy"}, + {APIPermission::kProcesses, "processes"}, {APIPermission::kSessions, "sessions"}, - {APIPermission::kSignedInDevices, "signedInDevices", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_SIGNED_IN_DEVICES, - PermissionMessage::kSignedInDevices}, - {APIPermission::kSyncFileSystem, "syncFileSystem", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_SYNCFILESYSTEM, - PermissionMessage::kSyncFileSystem}, - {APIPermission::kTab, "tabs", APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ, PermissionMessage::kTabs}, - {APIPermission::kTopSites, "topSites", APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_TOPSITES, PermissionMessage::kTopSites}, - {APIPermission::kTts, "tts", 0, APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kSignedInDevices, "signedInDevices"}, + {APIPermission::kSyncFileSystem, "syncFileSystem"}, + {APIPermission::kTab, "tabs"}, + {APIPermission::kTopSites, "topSites"}, + {APIPermission::kTts, "tts", APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kTtsEngine, "ttsEngine", - APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_TTS_ENGINE, PermissionMessage::kTtsEngine}, + APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kWallpaper, "wallpaper", - APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_WALLPAPER, PermissionMessage::kWallpaper}, - {APIPermission::kWebNavigation, "webNavigation", - APIPermissionInfo::kFlagNone, IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ, - PermissionMessage::kTabs}, + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kWebNavigation, "webNavigation"}, // Register private permissions. {APIPermission::kScreenlockPrivate, "screenlockPrivate", - APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_SCREENLOCK_PRIVATE, - PermissionMessage::kScreenlockPrivate}, + APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kActivityLogPrivate, "activityLogPrivate", - APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_ACTIVITY_LOG_PRIVATE, - PermissionMessage::kActivityLogPrivate}, + APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kAutoTestPrivate, "autotestPrivate", APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kBookmarkManagerPrivate, "bookmarkManagerPrivate", @@ -180,9 +125,7 @@ std::vector<APIPermissionInfo*> ChromeAPIPermissions::GetAllPermissions() {APIPermission::kDial, "dial", APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kDownloadsInternal, "downloadsInternal"}, {APIPermission::kExperienceSamplingPrivate, "experienceSamplingPrivate", - APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_EXPERIENCE_SAMPLING_PRIVATE, - PermissionMessage::kExperienceSamplingPrivate}, + APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kFileBrowserHandlerInternal, "fileBrowserHandlerInternal", APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kFileManagerPrivate, "fileManagerPrivate", @@ -201,9 +144,7 @@ std::vector<APIPermissionInfo*> ChromeAPIPermissions::GetAllPermissions() {APIPermission::kMetricsPrivate, "metricsPrivate", APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kMusicManagerPrivate, "musicManagerPrivate", - APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_MUSIC_MANAGER_PRIVATE, - PermissionMessage::kMusicManagerPrivate}, + APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kPreferencesPrivate, "preferencesPrivate", APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kSystemPrivate, "systemPrivate", @@ -247,35 +188,24 @@ std::vector<APIPermissionInfo*> ChromeAPIPermissions::GetAllPermissions() APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kInlineInstallPrivate, "inlineInstallPrivate"}, {APIPermission::kSettingsPrivate, "settingsPrivate", - APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_SETTINGS_PRIVATE, - PermissionMessage::kSettingsPrivate}, + APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kSearchEnginesPrivate, "searchEnginesPrivate", - APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_SEARCH_ENGINES_PRIVATE, - PermissionMessage::kSearchEnginesPrivate}, + APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kAutofillPrivate, "autofillPrivate", - APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_AUTOFILL_PRIVATE, - PermissionMessage::kAutofillPrivate}, + APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kWebstoreWidgetPrivate, "webstoreWidgetPrivate", APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kPasswordsPrivate, "passwordsPrivate", - APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_PASSWORDS_PRIVATE, - PermissionMessage::kPasswordsPrivate}, + APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kUsersPrivate, "usersPrivate", - APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_USERS_PRIVATE, - PermissionMessage::kUsersPrivate}, + APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kLanguageSettingsPrivate, "languageSettingsPrivate", APIPermissionInfo::kFlagCannotBeOptional}, // Full url access permissions. {APIPermission::kDebugger, "debugger", APIPermissionInfo::kFlagImpliesFullURLAccess | - APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_DEBUGGER, PermissionMessage::kDebugger}, + APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kDevtools, "devtools", APIPermissionInfo::kFlagImpliesFullURLAccess | APIPermissionInfo::kFlagCannotBeOptional | @@ -290,9 +220,7 @@ std::vector<APIPermissionInfo*> ChromeAPIPermissions::GetAllPermissions() APIPermissionInfo::kFlagImpliesFullURLAccess | APIPermissionInfo::kFlagImpliesFullAccess | APIPermissionInfo::kFlagCannotBeOptional | - APIPermissionInfo::kFlagInternal, - IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS, - PermissionMessage::kFullAccess}, + APIPermissionInfo::kFlagInternal}, {APIPermission::kProxy, "proxy", APIPermissionInfo::kFlagImpliesFullURLAccess | APIPermissionInfo::kFlagCannotBeOptional}, @@ -305,52 +233,32 @@ std::vector<APIPermissionInfo*> ChromeAPIPermissions::GetAllPermissions() // chooser dialog and selected a file or directory. Selecting // the file or directory is considered consent to read it. {APIPermission::kFileSystem, "fileSystem"}, - {APIPermission::kFileSystemDirectory, "fileSystem.directory", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_FILE_SYSTEM_DIRECTORY, - PermissionMessage::kFileSystemDirectory}, + {APIPermission::kFileSystemDirectory, "fileSystem.directory"}, {APIPermission::kFileSystemProvider, "fileSystemProvider"}, {APIPermission::kFileSystemRequestFileSystem, "fileSystem.requestFileSystem"}, {APIPermission::kFileSystemRetainEntries, "fileSystem.retainEntries"}, {APIPermission::kFileSystemWrite, "fileSystem.write"}, - {APIPermission::kFileSystemWriteDirectory, "fileSystem.writeDirectory", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_FILE_SYSTEM_WRITE_DIRECTORY, - PermissionMessage::kFileSystemWriteDirectory}, - // Because warning messages for the "mediaGalleries" permission - // vary based on the permissions parameters, no message ID or - // message text is specified here. The message ID and text used - // will be determined at run-time in the - // |MediaGalleriesPermission| class. + {APIPermission::kFileSystemWriteDirectory, "fileSystem.writeDirectory"}, {APIPermission::kMediaGalleries, "mediaGalleries", - APIPermissionInfo::kFlagNone, 0, PermissionMessage::kNone, + APIPermissionInfo::kFlagNone, &CreateAPIPermission<MediaGalleriesPermission>}, {APIPermission::kPointerLock, "pointerLock"}, {APIPermission::kCastStreaming, "cast.streaming"}, {APIPermission::kBrowser, "browser"}, - {APIPermission::kInterceptAllKeys, "app.window.interceptAllKeys", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_INTERCEPT_ALL_KEYS, - PermissionMessage::kInterceptAllKeys}, + {APIPermission::kInterceptAllKeys, "app.window.interceptAllKeys"}, {APIPermission::kLauncherSearchProvider, "launcherSearchProvider"}, // Settings override permissions. {APIPermission::kHomepage, "homepage", APIPermissionInfo::kFlagCannotBeOptional | - APIPermissionInfo::kFlagInternal, - IDS_EXTENSION_PROMPT_WARNING_HOME_PAGE_SETTING_OVERRIDE, - PermissionMessage::kHomepage}, + APIPermissionInfo::kFlagInternal}, {APIPermission::kSearchProvider, "searchProvider", APIPermissionInfo::kFlagCannotBeOptional | - APIPermissionInfo::kFlagInternal, - IDS_EXTENSION_PROMPT_WARNING_SEARCH_SETTINGS_OVERRIDE, - PermissionMessage::kSearchProvider}, + APIPermissionInfo::kFlagInternal}, {APIPermission::kStartupPages, "startupPages", APIPermissionInfo::kFlagCannotBeOptional | - APIPermissionInfo::kFlagInternal, - IDS_EXTENSION_PROMPT_WARNING_START_PAGE_SETTING_OVERRIDE, - PermissionMessage::kStartupPages}, + APIPermissionInfo::kFlagInternal}, }; std::vector<APIPermissionInfo*> permissions; diff --git a/chrome/common/extensions/permissions/chrome_permission_message_rules.cc b/chrome/common/extensions/permissions/chrome_permission_message_rules.cc index e172efc..7576d83 100644 --- a/chrome/common/extensions/permissions/chrome_permission_message_rules.cc +++ b/chrome/common/extensions/permissions/chrome_permission_message_rules.cc @@ -304,7 +304,7 @@ ChromePermissionMessageRule::GetAllRules() { // TODO(sashab, reillyg): Rework the permission message logic for USB // devices to generate more meaningful messages and better fit the current // rules system. Maybe model it similarly to host or socket permissions - // above. + // above. crbug.com/522842 {new SingleParameterFormatter(IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE), {APIPermission::kUsbDevice}, {}}, @@ -566,6 +566,9 @@ ChromePermissionMessageRule::GetAllRules() { {APIPermission::kDeclarativeWebRequest}, {}}, {IDS_EXTENSION_PROMPT_WARNING_SERIAL, {APIPermission::kSerial}, {}}, + {IDS_EXTENSION_PROMPT_WARNING_NETWORKING_CONFIG, + {APIPermission::kNetworkingConfig}, + {}}, // Because warning messages for the "socket" permission vary based // on the permissions parameters, no message ID or message text is diff --git a/chrome/common/extensions/permissions/permission_set_unittest.cc b/chrome/common/extensions/permissions/permission_set_unittest.cc index c77cc6b..e62a510 100644 --- a/chrome/common/extensions/permissions/permission_set_unittest.cc +++ b/chrome/common/extensions/permissions/permission_set_unittest.cc @@ -840,12 +840,12 @@ TEST(PermissionsTest, PermissionMessages) { skip.insert(APIPermission::kFileSystemWrite); skip.insert(APIPermission::kSocket); skip.insert(APIPermission::kUsb); - skip.insert(APIPermission::kUsbDevice); skip.insert(APIPermission::kLauncherSearchProvider); // We already have a generic message for declaring externally_connectable. skip.insert(APIPermission::kExternallyConnectableAllUrls); + const PermissionMessageProvider* provider = PermissionMessageProvider::Get(); PermissionsInfo* info = PermissionsInfo::GetInstance(); APIPermissionSet permissions = info->GetAll(); for (APIPermissionSet::const_iterator i = permissions.begin(); @@ -853,13 +853,11 @@ TEST(PermissionsTest, PermissionMessages) { const APIPermissionInfo* permission_info = i->info(); EXPECT_TRUE(permission_info != NULL); - if (skip.count(i->id())) { - EXPECT_EQ(PermissionMessage::kNone, permission_info->message_id()) - << "unexpected message_id for " << permission_info->name(); - } else { - EXPECT_NE(PermissionMessage::kNone, permission_info->message_id()) - << "missing message_id for " << permission_info->name(); - } + PermissionIDSet id; + id.insert(permission_info->id()); + bool has_message = !provider->GetPermissionMessages(id).empty(); + bool should_have_message = !skip.count(i->id()); + EXPECT_EQ(should_have_message, has_message) << permission_info->name(); } } diff --git a/extensions/common/api/bluetooth/bluetooth_manifest_permission.cc b/extensions/common/api/bluetooth/bluetooth_manifest_permission.cc index 9b2e7a3..ceab6e7 100644 --- a/extensions/common/api/bluetooth/bluetooth_manifest_permission.cc +++ b/extensions/common/api/bluetooth/bluetooth_manifest_permission.cc @@ -141,28 +141,6 @@ PermissionIDSet BluetoothManifestPermission::GetPermissions() const { return permissions; } -bool BluetoothManifestPermission::HasMessages() const { return true; } - -PermissionMessages BluetoothManifestPermission::GetMessages() const { - // When modifying this function, be careful to also modify GetPermissions() - // above to have the same functionality. - DCHECK(HasMessages()); - PermissionMessages result; - - result.push_back(PermissionMessage( - PermissionMessage::kBluetooth, - l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_BLUETOOTH))); - - if (!uuids_.empty()) { - result.push_back( - PermissionMessage(PermissionMessage::kBluetoothDevices, - l10n_util::GetStringUTF16( - IDS_EXTENSION_PROMPT_WARNING_BLUETOOTH_DEVICES))); - } - - return result; -} - bool BluetoothManifestPermission::FromValue(const base::Value* value) { if (!value) return false; diff --git a/extensions/common/api/bluetooth/bluetooth_manifest_permission.h b/extensions/common/api/bluetooth/bluetooth_manifest_permission.h index bbf5d3a..d72b226 100644 --- a/extensions/common/api/bluetooth/bluetooth_manifest_permission.h +++ b/extensions/common/api/bluetooth/bluetooth_manifest_permission.h @@ -45,8 +45,6 @@ class BluetoothManifestPermission : public ManifestPermission { std::string name() const override; std::string id() const override; PermissionIDSet GetPermissions() const override; - bool HasMessages() const override; - PermissionMessages GetMessages() const override; bool FromValue(const base::Value* value) override; scoped_ptr<base::Value> ToValue() const override; ManifestPermission* Diff(const ManifestPermission* rhs) const override; diff --git a/extensions/common/api/sockets/sockets_manifest_permission.cc b/extensions/common/api/sockets/sockets_manifest_permission.cc index dccb793..a37267a 100644 --- a/extensions/common/api/sockets/sockets_manifest_permission.cc +++ b/extensions/common/api/sockets/sockets_manifest_permission.cc @@ -272,17 +272,6 @@ PermissionIDSet SocketsManifestPermission::GetPermissions() const { return ids; } -bool SocketsManifestPermission::HasMessages() const { - bool is_empty = permissions_.empty(); - return !is_empty; -} - -PermissionMessages SocketsManifestPermission::GetMessages() const { - PermissionMessages messages; - AddSocketHostPermissions(permissions_, NULL, &messages); - return messages; -} - bool SocketsManifestPermission::FromValue(const base::Value* value) { if (!value) return false; diff --git a/extensions/common/api/sockets/sockets_manifest_permission.h b/extensions/common/api/sockets/sockets_manifest_permission.h index b6636d2..324acd6 100644 --- a/extensions/common/api/sockets/sockets_manifest_permission.h +++ b/extensions/common/api/sockets/sockets_manifest_permission.h @@ -44,8 +44,6 @@ class SocketsManifestPermission : public ManifestPermission { std::string name() const override; std::string id() const override; PermissionIDSet GetPermissions() const override; - bool HasMessages() const override; - PermissionMessages GetMessages() const override; bool FromValue(const base::Value* value) override; scoped_ptr<base::Value> ToValue() const override; ManifestPermission* Diff(const ManifestPermission* rhs) const override; diff --git a/extensions/common/api/sockets/sockets_manifest_permission_unittest.cc b/extensions/common/api/sockets/sockets_manifest_permission_unittest.cc index 4b2dbcf..ad5ba16 100644 --- a/extensions/common/api/sockets/sockets_manifest_permission_unittest.cc +++ b/extensions/common/api/sockets/sockets_manifest_permission_unittest.cc @@ -34,7 +34,7 @@ static void AssertEmptyPermission(const SocketsManifestPermission* permission) { EXPECT_TRUE(permission); EXPECT_EQ(std::string(extensions::manifest_keys::kSockets), permission->id()); EXPECT_EQ(permission->id(), permission->name()); - EXPECT_FALSE(permission->HasMessages()); + EXPECT_TRUE(permission->GetPermissions().empty()); EXPECT_EQ(0u, permission->entries().size()); } diff --git a/extensions/common/permissions/api_permission.cc b/extensions/common/permissions/api_permission.cc index 7d8f04e..70b71ce 100644 --- a/extensions/common/permissions/api_permission.cc +++ b/extensions/common/permissions/api_permission.cc @@ -27,17 +27,6 @@ class SimpleAPIPermission : public APIPermission { return permissions; } - bool HasMessages() const override { - return info()->message_id() > PermissionMessage::kNone; - } - - PermissionMessages GetMessages() const override { - DCHECK(HasMessages()); - PermissionMessages result; - result.push_back(GetMessage_()); - return result; - } - bool Check(const APIPermission::CheckParam* param) const override { return !param; } @@ -110,10 +99,6 @@ const char* APIPermission::name() const { return info()->name(); } -PermissionMessage APIPermission::GetMessage_() const { - return info()->GetMessage_(); -} - // // APIPermissionInfo // @@ -122,8 +107,6 @@ APIPermissionInfo::APIPermissionInfo(const APIPermissionInfo::InitInfo& info) : id_(info.id), name_(info.name), flags_(info.flags), - l10n_message_id_(info.l10n_message_id), - message_id_(info.message_id ? info.message_id : PermissionMessage::kNone), api_permission_constructor_(info.constructor) { } @@ -134,9 +117,4 @@ APIPermission* APIPermissionInfo::CreateAPIPermission() const { api_permission_constructor_(this) : new SimpleAPIPermission(this); } -PermissionMessage APIPermissionInfo::GetMessage_() const { - return PermissionMessage( - message_id_, l10n_util::GetStringUTF16(l10n_message_id_)); -} - } // namespace extensions diff --git a/extensions/common/permissions/api_permission.h b/extensions/common/permissions/api_permission.h index bf25a1b..8600454 100644 --- a/extensions/common/permissions/api_permission.h +++ b/extensions/common/permissions/api_permission.h @@ -5,7 +5,6 @@ #ifndef EXTENSIONS_COMMON_PERMISSIONS_API_PERMISSION_H_ #define EXTENSIONS_COMMON_PERMISSIONS_API_PERMISSION_H_ -#include <map> #include <set> #include <string> #include <vector> @@ -288,14 +287,6 @@ class APIPermission { // ChromePermissionMessageProvider. virtual PermissionIDSet GetPermissions() const = 0; - // Returns true if this permission has any PermissionMessages. - // TODO(sashab): Deprecate this in favor of GetPermissions() above. - virtual bool HasMessages() const = 0; - - // Returns the localized permission messages of this permission. - // TODO(sashab): Deprecate this in favor of GetPermissions() above. - virtual PermissionMessages GetMessages() const = 0; - // Returns true if the given permission is allowed. virtual bool Check(const CheckParam* param) const = 0; @@ -339,11 +330,6 @@ class APIPermission { // Logs this permission. virtual void Log(std::string* log) const = 0; - protected: - // Returns the localized permission message associated with this api. - // Use GetMessage_ to avoid name conflict with macro GetMessage on Windows. - PermissionMessage GetMessage_() const; - private: const APIPermissionInfo* const info_; }; @@ -388,11 +374,6 @@ class APIPermissionInfo { APIPermission::ID id() const { return id_; } - // Returns the message id associated with this permission. - PermissionMessage::ID message_id() const { - return message_id_; - } - // Returns the name of this permission. const char* name() const { return name_; } @@ -440,22 +421,14 @@ class APIPermissionInfo { APIPermission::ID id; const char* name; int flags; - int l10n_message_id; - PermissionMessage::ID message_id; APIPermissionInfo::APIPermissionConstructor constructor; }; explicit APIPermissionInfo(const InitInfo& info); - // Returns the localized permission message associated with this api. - // Use GetMessage_ to avoid name conflict with macro GetMessage on Windows. - PermissionMessage GetMessage_() const; - const APIPermission::ID id_; const char* const name_; const int flags_; - const int l10n_message_id_; - const PermissionMessage::ID message_id_; const APIPermissionConstructor api_permission_constructor_; }; diff --git a/extensions/common/permissions/api_permission_set.cc b/extensions/common/permissions/api_permission_set.cc index 562c730..82d2faa 100644 --- a/extensions/common/permissions/api_permission_set.cc +++ b/extensions/common/permissions/api_permission_set.cc @@ -212,7 +212,7 @@ PermissionIDSet::~PermissionIDSet() { } void PermissionIDSet::insert(APIPermission::ID permission_id) { - permissions_.insert(PermissionID(permission_id, base::string16())); + insert(permission_id, base::string16()); } void PermissionIDSet::insert(APIPermission::ID permission_id, @@ -280,20 +280,6 @@ PermissionIDSet PermissionIDSet::Difference(const PermissionIDSet& set_1, set_1.permissions_, set_2.permissions_)); } -// static -PermissionIDSet PermissionIDSet::Intersection(const PermissionIDSet& set_1, - const PermissionIDSet& set_2) { - return PermissionIDSet(base::STLSetIntersection<std::set<PermissionID>>( - set_1.permissions_, set_2.permissions_)); -} - -// static -PermissionIDSet PermissionIDSet::Union(const PermissionIDSet& set_1, - const PermissionIDSet& set_2) { - return PermissionIDSet(base::STLSetUnion<std::set<PermissionID>>( - set_1.permissions_, set_2.permissions_)); -} - size_t PermissionIDSet::size() const { return permissions_.size(); } diff --git a/extensions/common/permissions/api_permission_set.h b/extensions/common/permissions/api_permission_set.h index f96c50e..476ad13 100644 --- a/extensions/common/permissions/api_permission_set.h +++ b/extensions/common/permissions/api_permission_set.h @@ -5,7 +5,11 @@ #ifndef EXTENSIONS_COMMON_PERMISSIONS_API_PERMISSION_SET_H_ #define EXTENSIONS_COMMON_PERMISSIONS_API_PERMISSION_SET_H_ +#include <set> +#include <string> +#include <vector> +#include "base/strings/string16.h" #include "extensions/common/permissions/api_permission.h" #include "extensions/common/permissions/base_set_operators.h" @@ -136,15 +140,11 @@ class PermissionIDSet { PermissionIDSet GetAllPermissionsWithIDs( const std::set<APIPermission::ID>& permission_ids) const; - // Convenience functions that call their stl_util counterparts. + // Convenience functions for common set operations. bool Includes(const PermissionIDSet& subset) const; bool Equals(const PermissionIDSet& set) const; static PermissionIDSet Difference(const PermissionIDSet& set_1, const PermissionIDSet& set_2); - static PermissionIDSet Intersection(const PermissionIDSet& set_1, - const PermissionIDSet& set_2); - static PermissionIDSet Union(const PermissionIDSet& set_1, - const PermissionIDSet& set_2); size_t size() const; bool empty() const; diff --git a/extensions/common/permissions/extensions_api_permissions.cc b/extensions/common/permissions/extensions_api_permissions.cc index 3b21c61..6977f8f 100644 --- a/extensions/common/permissions/extensions_api_permissions.cc +++ b/extensions/common/permissions/extensions_api_permissions.cc @@ -33,9 +33,6 @@ std::vector<APIPermissionInfo*> ExtensionsAPIPermissions::GetAllPermissions() // WARNING: If you are modifying a permission message in this list, be sure to // add the corresponding permission message rule to // ChromePermissionMessageProvider::GetCoalescedPermissionMessages as well. - // TODO(sashab): Remove all permission messages from this list, once - // GetCoalescedPermissionMessages() is the only way of generating permission - // messages. APIPermissionInfo::InitInfo permissions_to_register[] = { {APIPermission::kAlarms, "alarms"}, {APIPermission::kAlphaEnabled, "app.window.alpha"}, @@ -44,75 +41,43 @@ std::vector<APIPermissionInfo*> ExtensionsAPIPermissions::GetAllPermissions() "appview", APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kAudio, "audio"}, - {APIPermission::kAudioCapture, - "audioCapture", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_AUDIO_CAPTURE, - PermissionMessage::kAudioCapture}, + {APIPermission::kAudioCapture, "audioCapture"}, {APIPermission::kBluetoothPrivate, "bluetoothPrivate", - APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_BLUETOOTH_PRIVATE, - PermissionMessage::kBluetoothPrivate}, + APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kClipboardRead, "clipboardRead", - APIPermissionInfo::kFlagSupportsContentCapabilities, - IDS_EXTENSION_PROMPT_WARNING_CLIPBOARD, - PermissionMessage::kClipboard}, + APIPermissionInfo::kFlagSupportsContentCapabilities}, {APIPermission::kClipboardWrite, "clipboardWrite", APIPermissionInfo::kFlagSupportsContentCapabilities}, - {APIPermission::kDeclarativeWebRequest, - "declarativeWebRequest", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_DECLARATIVE_WEB_REQUEST, - PermissionMessage::kDeclarativeWebRequest}, + {APIPermission::kDeclarativeWebRequest, "declarativeWebRequest"}, {APIPermission::kDiagnostics, "diagnostics", APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kDns, "dns"}, - {APIPermission::kDocumentScan, - "documentScan", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_DOCUMENT_SCAN, - PermissionMessage::kDocumentScan}, + {APIPermission::kDocumentScan, "documentScan"}, {APIPermission::kExtensionView, "extensionview", APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kExternallyConnectableAllUrls, "externally_connectable.all_urls"}, {APIPermission::kFullscreen, "app.window.fullscreen"}, - {APIPermission::kHid, "hid", APIPermissionInfo::kFlagNone}, + {APIPermission::kHid, "hid"}, {APIPermission::kImeWindowEnabled, "app.window.ime"}, {APIPermission::kOverrideEscFullscreen, "app.window.fullscreen.overrideEsc"}, {APIPermission::kIdle, "idle"}, - {APIPermission::kNetworkingConfig, - "networking.config", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_NETWORKING_CONFIG, - PermissionMessage::kNetworkingConfig}, + {APIPermission::kNetworkingConfig, "networking.config"}, {APIPermission::kNetworkingPrivate, "networkingPrivate", - APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_NETWORKING_PRIVATE, - PermissionMessage::kNetworkingPrivate}, + APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kPower, "power"}, {APIPermission::kPrinterProvider, "printerProvider"}, - {APIPermission::kSerial, - "serial", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_SERIAL, - PermissionMessage::kSerial}, - // Because warning messages for the "socket" permission vary based - // on the permissions parameters, no message ID or message text is - // specified here. The message ID and text used will be - // determined at run-time in the |SocketPermission| class. + {APIPermission::kSerial, "serial"}, {APIPermission::kSocket, "socket", APIPermissionInfo::kFlagCannotBeOptional, - 0, - PermissionMessage::kNone, &CreateAPIPermission<SocketPermission>}, {APIPermission::kStorage, "storage"}, {APIPermission::kSystemCpu, "system.cpu"}, @@ -120,11 +85,7 @@ std::vector<APIPermissionInfo*> ExtensionsAPIPermissions::GetAllPermissions() {APIPermission::kSystemNetwork, "system.network"}, {APIPermission::kSystemDisplay, "system.display"}, {APIPermission::kSystemStorage, "system.storage"}, - {APIPermission::kU2fDevices, - "u2fDevices", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_U2F_DEVICES, - PermissionMessage::kU2fDevices}, + {APIPermission::kU2fDevices, "u2fDevices"}, {APIPermission::kUnlimitedStorage, "unlimitedStorage", APIPermissionInfo::kFlagCannotBeOptional | @@ -133,28 +94,18 @@ std::vector<APIPermissionInfo*> ExtensionsAPIPermissions::GetAllPermissions() {APIPermission::kUsbDevice, "usbDevices", APIPermissionInfo::kFlagNone, - 0, - PermissionMessage::kNone, &CreateAPIPermission<UsbDevicePermission>}, - {APIPermission::kVideoCapture, - "videoCapture", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_VIDEO_CAPTURE, - PermissionMessage::kVideoCapture}, + {APIPermission::kVideoCapture, "videoCapture"}, {APIPermission::kVpnProvider, "vpnProvider", - APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_VPN, - PermissionMessage::kVpnProvider}, + APIPermissionInfo::kFlagCannotBeOptional}, // 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, - IDS_EXTENSION_PROMPT_WARNING_WEB_CONNECTABLE, - PermissionMessage::kWebConnectable}, + APIPermissionInfo::kFlagInternal}, {APIPermission::kWebRequest, "webRequest"}, {APIPermission::kWebRequestBlocking, "webRequestBlocking"}, {APIPermission::kWebView, diff --git a/extensions/common/permissions/manifest_permission.h b/extensions/common/permissions/manifest_permission.h index fded281..31e6ffc 100644 --- a/extensions/common/permissions/manifest_permission.h +++ b/extensions/common/permissions/manifest_permission.h @@ -15,7 +15,6 @@ namespace base { class PickleIterator; -class ListValue; class Value; } @@ -43,16 +42,6 @@ class ManifestPermission { // for the app. virtual PermissionIDSet GetPermissions() const = 0; - // Returns true if this permission has any PermissionMessages. - // TODO(sashab): Deprecate this, using GetPermissions() above and adding - // message rules to ChromePermissionMessageProvider. - virtual bool HasMessages() const = 0; - - // Returns the localized permission messages of this permission. - // TODO(sashab): Deprecate this, using GetPermissions() above and adding - // message rules to ChromePermissionMessageProvider. - virtual PermissionMessages GetMessages() const = 0; - // Parses the ManifestPermission from |value|. Returns false if error happens. virtual bool FromValue(const base::Value* value) = 0; diff --git a/extensions/common/permissions/manifest_permission_set_unittest.cc b/extensions/common/permissions/manifest_permission_set_unittest.cc index 5018ab2..f366036 100644 --- a/extensions/common/permissions/manifest_permission_set_unittest.cc +++ b/extensions/common/permissions/manifest_permission_set_unittest.cc @@ -23,12 +23,6 @@ class MockManifestPermission : public ManifestPermission { PermissionIDSet GetPermissions() const override { return PermissionIDSet(); } - bool HasMessages() const override { return false; } - - PermissionMessages GetMessages() const override { - return PermissionMessages(); - } - bool FromValue(const base::Value* value) override { return true; } scoped_ptr<base::Value> ToValue() const override { diff --git a/extensions/common/permissions/media_galleries_permission.cc b/extensions/common/permissions/media_galleries_permission.cc index 7f01332..864d13e 100644 --- a/extensions/common/permissions/media_galleries_permission.cc +++ b/extensions/common/permissions/media_galleries_permission.cc @@ -187,17 +187,9 @@ bool MediaGalleriesPermission::FromValue( } PermissionIDSet MediaGalleriesPermission::GetPermissions() const { - DCHECK(HasMessages()); PermissionIDSet result; AddPermissionsToLists(data_set_, &result, NULL); return result; } -PermissionMessages MediaGalleriesPermission::GetMessages() const { - DCHECK(HasMessages()); - PermissionMessages result; - AddPermissionsToLists(data_set_, NULL, &result); - return result; -} - } // namespace extensions diff --git a/extensions/common/permissions/media_galleries_permission.h b/extensions/common/permissions/media_galleries_permission.h index e7764ab..0276454 100644 --- a/extensions/common/permissions/media_galleries_permission.h +++ b/extensions/common/permissions/media_galleries_permission.h @@ -44,7 +44,6 @@ class MediaGalleriesPermission // APIPermission overrides. PermissionIDSet GetPermissions() const override; - PermissionMessages GetMessages() const override; // Permission strings. static const char kAllAutoDetectedPermission[]; diff --git a/extensions/common/permissions/permission_message_test_util.cc b/extensions/common/permissions/permission_message_test_util.cc index 77ee5d6a..fb8a5bb 100644 --- a/extensions/common/permissions/permission_message_test_util.cc +++ b/extensions/common/permissions/permission_message_test_util.cc @@ -91,7 +91,7 @@ bool CheckThatSubmessagesMatch( std::vector<base::string16> actual_sorted(actual_submessages); std::sort(actual_sorted.begin(), actual_sorted.end()); - if (actual_sorted != actual_submessages) { + if (expected_sorted != actual_sorted) { // This is always a failure, even within an EXPECT_FALSE. // Message: Expected submessages for "Message" to be { "Foo" }, but got // { "Bar", "Baz" } diff --git a/extensions/common/permissions/set_disjunction_permission.h b/extensions/common/permissions/set_disjunction_permission.h index 15625a1..00ffad7 100644 --- a/extensions/common/permissions/set_disjunction_permission.h +++ b/extensions/common/permissions/set_disjunction_permission.h @@ -34,8 +34,6 @@ class SetDisjunctionPermission : public APIPermission { ~SetDisjunctionPermission() override {} // APIPermission overrides - bool HasMessages() const override { return !data_set_.empty(); } - bool Check(const APIPermission::CheckParam* param) const override { for (typename std::set<PermissionDataType>::const_iterator i = data_set_.begin(); diff --git a/extensions/common/permissions/settings_override_permission.cc b/extensions/common/permissions/settings_override_permission.cc index c45678c..b4cec3c 100644 --- a/extensions/common/permissions/settings_override_permission.cc +++ b/extensions/common/permissions/settings_override_permission.cc @@ -24,39 +24,6 @@ PermissionIDSet SettingsOverrideAPIPermission::GetPermissions() const { return permissions; } -bool SettingsOverrideAPIPermission::HasMessages() const { - return info()->message_id() > PermissionMessage::kNone; -} - -PermissionMessages SettingsOverrideAPIPermission::GetMessages() const { - DCHECK(HasMessages()); - int string_id = -1; - // Warning: when modifying this function, be sure to modify the correct rule - // in ChromePermissionMessageProvider. - switch (id()) { - case kHomepage: { - string_id = IDS_EXTENSION_PROMPT_WARNING_HOME_PAGE_SETTING_OVERRIDE; - break; - } - case kStartupPages: { - string_id = IDS_EXTENSION_PROMPT_WARNING_START_PAGE_SETTING_OVERRIDE; - break; - } - case kSearchProvider: { - string_id = IDS_EXTENSION_PROMPT_WARNING_SEARCH_SETTINGS_OVERRIDE; - break; - } - default: - NOTREACHED(); - } - PermissionMessages result; - result.push_back( - PermissionMessage(info()->message_id(), - l10n_util::GetStringFUTF16( - string_id, base::UTF8ToUTF16(setting_value_)))); - return result; -} - bool SettingsOverrideAPIPermission::Check( const APIPermission::CheckParam* param) const { return (param == NULL); diff --git a/extensions/common/permissions/settings_override_permission.h b/extensions/common/permissions/settings_override_permission.h index 20910e3..8c0bb00 100644 --- a/extensions/common/permissions/settings_override_permission.h +++ b/extensions/common/permissions/settings_override_permission.h @@ -21,8 +21,6 @@ class SettingsOverrideAPIPermission : public APIPermission { // APIPermission overrides. PermissionIDSet GetPermissions() const override; - bool HasMessages() const override; - PermissionMessages GetMessages() const override; bool Check(const APIPermission::CheckParam* param) const override; bool Contains(const APIPermission* rhs) const override; bool Equal(const APIPermission* rhs) const override; diff --git a/extensions/common/permissions/socket_permission.cc b/extensions/common/permissions/socket_permission.cc index e5fac9d..1826282 100644 --- a/extensions/common/permissions/socket_permission.cc +++ b/extensions/common/permissions/socket_permission.cc @@ -45,12 +45,4 @@ PermissionIDSet SocketPermission::GetPermissions() const { return ids; } -PermissionMessages SocketPermission::GetMessages() const { - DCHECK(HasMessages()); - PermissionMessages messages; - SocketPermissionEntrySet entries = ExtractSocketEntries(data_set_); - SocketsManifestPermission::AddSocketHostPermissions(entries, NULL, &messages); - return messages; -} - } // namespace extensions diff --git a/extensions/common/permissions/socket_permission.h b/extensions/common/permissions/socket_permission.h index c2c1156..d554293 100644 --- a/extensions/common/permissions/socket_permission.h +++ b/extensions/common/permissions/socket_permission.h @@ -29,8 +29,6 @@ class SocketPermission ~SocketPermission() override; PermissionIDSet GetPermissions() const override; - // Returns the localized permission messages of this permission. - PermissionMessages GetMessages() const override; private: // Add all host messages for this manifest permission into the given lists. diff --git a/extensions/common/permissions/usb_device_permission.cc b/extensions/common/permissions/usb_device_permission.cc index 59b28d5..287cf24 100644 --- a/extensions/common/permissions/usb_device_permission.cc +++ b/extensions/common/permissions/usb_device_permission.cc @@ -146,11 +146,4 @@ PermissionIDSet UsbDevicePermission::GetPermissions() const { return ids; } -PermissionMessages UsbDevicePermission::GetMessages() const { - DCHECK(HasMessages()); - PermissionMessages messages; - AddPermissionsToLists(data_set_, NULL, &messages); - return messages; -} - } // namespace extensions diff --git a/extensions/common/permissions/usb_device_permission.h b/extensions/common/permissions/usb_device_permission.h index 50ea79d..881d6dd 100644 --- a/extensions/common/permissions/usb_device_permission.h +++ b/extensions/common/permissions/usb_device_permission.h @@ -31,7 +31,6 @@ class UsbDevicePermission // APIPermission overrides PermissionIDSet GetPermissions() const override; - PermissionMessages GetMessages() const override; }; } // namespace extensions diff --git a/extensions/common/permissions/usb_device_permission_unittest.cc b/extensions/common/permissions/usb_device_permission_unittest.cc index 345a000..7397196 100644 --- a/extensions/common/permissions/usb_device_permission_unittest.cc +++ b/extensions/common/permissions/usb_device_permission_unittest.cc @@ -2,18 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include <set> -#include <string> - -#include "base/memory/scoped_ptr.h" -#include "base/pickle.h" -#include "base/strings/utf_string_conversions.h" -#include "base/values.h" -#include "extensions/common/permissions/api_permission.h" -#include "extensions/common/permissions/permissions_info.h" -#include "extensions/common/permissions/usb_device_permission.h" #include "extensions/common/permissions/usb_device_permission_data.h" -#include "ipc/ipc_message.h" #include "testing/gtest/include/gtest/gtest.h" namespace extensions { @@ -27,86 +16,4 @@ TEST(USBDevicePermissionTest, PermissionDataOrder) { UsbDevicePermissionData(0x02ad, 0x138c, 0)); } -TEST(USBDevicePermissionTest, SingleDevicePermissionMessages) { - const char* const kMessages[] = { - "Access any PVR Mass Storage from HUMAX Co., Ltd. via USB", - "Access USB devices from HUMAX Co., Ltd.", - "Access USB devices from an unknown vendor", - }; - - { - scoped_ptr<base::ListValue> permission_list(new base::ListValue()); - permission_list->Append( - UsbDevicePermissionData(0x02ad, 0x138c, -1).ToValue().release()); - - UsbDevicePermission permission( - PermissionsInfo::GetInstance()->GetByID(APIPermission::kUsbDevice)); - ASSERT_TRUE(permission.FromValue(permission_list.get(), NULL, NULL)); - - PermissionMessages messages = permission.GetMessages(); - ASSERT_EQ(1U, messages.size()); - EXPECT_EQ(base::ASCIIToUTF16(kMessages[0]), messages.at(0).message()); - } - { - scoped_ptr<base::ListValue> permission_list(new base::ListValue()); - permission_list->Append( - UsbDevicePermissionData(0x02ad, 0x138d, -1).ToValue().release()); - - UsbDevicePermission permission( - PermissionsInfo::GetInstance()->GetByID(APIPermission::kUsbDevice)); - ASSERT_TRUE(permission.FromValue(permission_list.get(), NULL, NULL)); - - PermissionMessages messages = permission.GetMessages(); - ASSERT_EQ(1U, messages.size()); - EXPECT_EQ(base::ASCIIToUTF16(kMessages[1]), messages.at(0).message()); - } - { - scoped_ptr<base::ListValue> permission_list(new base::ListValue()); - permission_list->Append( - UsbDevicePermissionData(0x02ae, 0x138d, -1).ToValue().release()); - - UsbDevicePermission permission( - PermissionsInfo::GetInstance()->GetByID(APIPermission::kUsbDevice)); - ASSERT_TRUE(permission.FromValue(permission_list.get(), NULL, NULL)); - - PermissionMessages messages = permission.GetMessages(); - ASSERT_EQ(1U, messages.size()); - EXPECT_EQ(base::ASCIIToUTF16(kMessages[2]), messages.at(0).message()); - } -} - -TEST(USBDevicePermissionTest, MultipleDevicePermissionMessage) { - const char* const kMessage = "Access any of these USB devices"; - const char* const kDetails = - "PVR Mass Storage from HUMAX Co., Ltd.\n" - "unknown devices from HUMAX Co., Ltd.\n" - "devices from an unknown vendor"; - - // Prepare data set - scoped_ptr<base::ListValue> permission_list(new base::ListValue()); - permission_list->Append( - UsbDevicePermissionData(0x02ad, 0x138c, -1).ToValue().release()); - // This device's product ID is not in Chrome's database. - permission_list->Append( - UsbDevicePermissionData(0x02ad, 0x138d, -1).ToValue().release()); - // This additional unknown product will be collapsed into the entry above. - permission_list->Append( - UsbDevicePermissionData(0x02ad, 0x138e, -1).ToValue().release()); - // This device's vendor ID is not in Chrome's database. - permission_list->Append( - UsbDevicePermissionData(0x02ae, 0x138d, -1).ToValue().release()); - // This additional unknown vendor will be collapsed into the entry above. - permission_list->Append( - UsbDevicePermissionData(0x02af, 0x138d, -1).ToValue().release()); - - UsbDevicePermission permission( - PermissionsInfo::GetInstance()->GetByID(APIPermission::kUsbDevice)); - ASSERT_TRUE(permission.FromValue(permission_list.get(), NULL, NULL)); - - PermissionMessages messages = permission.GetMessages(); - ASSERT_EQ(1U, messages.size()); - EXPECT_EQ(base::ASCIIToUTF16(kMessage), messages.at(0).message()); - EXPECT_EQ(base::ASCIIToUTF16(kDetails), messages.at(0).details()); -} - } // namespace extensions |