summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/permission_messages_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/extensions/permission_messages_unittest.cc')
-rw-r--r--chrome/browser/extensions/permission_messages_unittest.cc118
1 files changed, 113 insertions, 5 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