| Index: chrome/browser/extensions/api/device_permissions_manager_unittest.cc
|
| diff --git a/chrome/browser/extensions/api/device_permissions_manager_unittest.cc b/chrome/browser/extensions/api/device_permissions_manager_unittest.cc
|
| index f5e1025bcf4957ca5f54b38617c7d98f63845b06..6ce5345017b01eb70e0bab8181d312569a36937b 100644
|
| --- a/chrome/browser/extensions/api/device_permissions_manager_unittest.cc
|
| +++ b/chrome/browser/extensions/api/device_permissions_manager_unittest.cc
|
| @@ -23,7 +23,12 @@ namespace {
|
| using device::UsbDevice;
|
| using device::UsbDeviceHandle;
|
| using device::UsbService;
|
| +using testing::_;
|
| +using testing::DoAll;
|
| using testing::Return;
|
| +using testing::SetArgPointee;
|
| +
|
| +int next_id;
|
|
|
| class MockUsbService : public UsbService {
|
| public:
|
| @@ -54,41 +59,37 @@ class MockUsbService : public UsbService {
|
|
|
| class MockUsbDevice : public UsbDevice {
|
| public:
|
| - MockUsbDevice(const std::string& serial_number, uint32 unique_id)
|
| - : UsbDevice(0, 0, unique_id), serial_number_(serial_number) {}
|
| -
|
| - MOCK_METHOD0(Open, scoped_refptr<UsbDeviceHandle>());
|
| - MOCK_METHOD1(Close, bool(scoped_refptr<UsbDeviceHandle>));
|
| -#if defined(OS_CHROMEOS)
|
| - MOCK_METHOD2(RequestUsbAccess, void(int, const base::Callback<void(bool)>&));
|
| -#endif
|
| - MOCK_METHOD0(GetConfiguration, const device::UsbConfigDescriptor&());
|
| -
|
| - virtual bool GetManufacturer(base::string16* manufacturer) {
|
| - *manufacturer = base::ASCIIToUTF16("Test Manufacturer");
|
| - return true;
|
| - }
|
| -
|
| - virtual bool GetProduct(base::string16* product) {
|
| - *product = base::ASCIIToUTF16("Test Product");
|
| - return true;
|
| - }
|
| -
|
| - virtual bool GetSerialNumber(base::string16* serial_number) override {
|
| - if (serial_number_.empty()) {
|
| - // Return false as if the device does not have or failed to return its
|
| - // serial number.
|
| - return false;
|
| + explicit MockUsbDevice(const std::string& serial_number)
|
| + : UsbDevice(0, 0, next_id++) {
|
| + if (serial_number.empty()) {
|
| + EXPECT_CALL(*this, GetSerialNumber(_)).WillRepeatedly(Return(false));
|
| + } else {
|
| + EXPECT_CALL(*this, GetSerialNumber(_))
|
| + .WillRepeatedly(
|
| + DoAll(SetArgPointee<0>(base::ASCIIToUTF16(serial_number)),
|
| + Return(true)));
|
| }
|
|
|
| - *serial_number = base::UTF8ToUTF16(serial_number_);
|
| - return true;
|
| + EXPECT_CALL(*this, GetProduct(_))
|
| + .WillRepeatedly(
|
| + DoAll(SetArgPointee<0>(base::ASCIIToUTF16("Test Product")),
|
| + Return(true)));
|
| + EXPECT_CALL(*this, GetManufacturer(_))
|
| + .WillRepeatedly(
|
| + DoAll(SetArgPointee<0>(base::ASCIIToUTF16("Test Manufacturer")),
|
| + Return(true)));
|
| }
|
|
|
| + MOCK_METHOD2(RequestUsbAccess, void(int, const base::Callback<void(bool)>&));
|
| + MOCK_METHOD0(Open, scoped_refptr<UsbDeviceHandle>());
|
| + MOCK_METHOD1(Close, bool(scoped_refptr<UsbDeviceHandle>));
|
| + MOCK_METHOD0(GetConfiguration, const device::UsbConfigDescriptor*());
|
| + MOCK_METHOD1(GetManufacturer, bool(base::string16*));
|
| + MOCK_METHOD1(GetProduct, bool(base::string16*));
|
| + MOCK_METHOD1(GetSerialNumber, bool(base::string16*));
|
| +
|
| private:
|
| virtual ~MockUsbDevice() {}
|
| -
|
| - const std::string serial_number_;
|
| };
|
|
|
| void AllowUsbDevice(DevicePermissionsManager* manager,
|
| @@ -136,10 +137,10 @@ class DevicePermissionsManagerTest : public testing::Test {
|
| " \"usb\""
|
| " ]"
|
| "}"));
|
| - device0 = new MockUsbDevice("ABCDE", 0);
|
| - device1 = new MockUsbDevice("", 1);
|
| - device2 = new MockUsbDevice("12345", 2);
|
| - device3 = new MockUsbDevice("", 3);
|
| + device0_ = new MockUsbDevice("ABCDE");
|
| + device1_ = new MockUsbDevice("");
|
| + device2_ = new MockUsbDevice("12345");
|
| + device3_ = new MockUsbDevice("");
|
| usb_service_ = new MockUsbService();
|
| UsbService::SetInstanceForTest(usb_service_);
|
| }
|
| @@ -152,28 +153,28 @@ class DevicePermissionsManagerTest : public testing::Test {
|
| scoped_ptr<extensions::TestExtensionEnvironment> env_;
|
| const extensions::Extension* extension_;
|
| MockUsbService* usb_service_;
|
| - scoped_refptr<MockUsbDevice> device0;
|
| - scoped_refptr<MockUsbDevice> device1;
|
| - scoped_refptr<MockUsbDevice> device2;
|
| - scoped_refptr<MockUsbDevice> device3;
|
| + scoped_refptr<MockUsbDevice> device0_;
|
| + scoped_refptr<MockUsbDevice> device1_;
|
| + scoped_refptr<MockUsbDevice> device2_;
|
| + scoped_refptr<MockUsbDevice> device3_;
|
| };
|
|
|
| TEST_F(DevicePermissionsManagerTest, AllowAndClearDevices) {
|
| DevicePermissionsManager* manager =
|
| DevicePermissionsManager::Get(env_->profile());
|
| - AllowUsbDevice(manager, extension_, device0);
|
| - AllowUsbDevice(manager, extension_, device1);
|
| + AllowUsbDevice(manager, extension_, device0_);
|
| + AllowUsbDevice(manager, extension_, device1_);
|
|
|
| scoped_ptr<DevicePermissions> device_permissions =
|
| manager->GetForExtension(extension_->id());
|
| scoped_refptr<DevicePermissionEntry> device0_entry =
|
| - FindEntry(device_permissions.get(), device0);
|
| + FindEntry(device_permissions.get(), device0_);
|
| ASSERT_TRUE(device0_entry.get());
|
| scoped_refptr<DevicePermissionEntry> device1_entry =
|
| - FindEntry(device_permissions.get(), device1);
|
| + FindEntry(device_permissions.get(), device1_);
|
| ASSERT_TRUE(device1_entry.get());
|
| - ASSERT_FALSE(FindEntry(device_permissions.get(), device2).get());
|
| - ASSERT_FALSE(FindEntry(device_permissions.get(), device3).get());
|
| + ASSERT_FALSE(FindEntry(device_permissions.get(), device2_).get());
|
| + ASSERT_FALSE(FindEntry(device_permissions.get(), device3_).get());
|
| ASSERT_EQ(2U, device_permissions->entries().size());
|
|
|
| ASSERT_EQ(base::ASCIIToUTF16(
|
| @@ -185,128 +186,128 @@ TEST_F(DevicePermissionsManagerTest, AllowAndClearDevices) {
|
| manager->Clear(extension_->id());
|
|
|
| device_permissions = manager->GetForExtension(extension_->id());
|
| - ASSERT_FALSE(FindEntry(device_permissions.get(), device0).get());
|
| - ASSERT_FALSE(FindEntry(device_permissions.get(), device1).get());
|
| - ASSERT_FALSE(FindEntry(device_permissions.get(), device2).get());
|
| - ASSERT_FALSE(FindEntry(device_permissions.get(), device3).get());
|
| + ASSERT_FALSE(FindEntry(device_permissions.get(), device0_).get());
|
| + ASSERT_FALSE(FindEntry(device_permissions.get(), device1_).get());
|
| + ASSERT_FALSE(FindEntry(device_permissions.get(), device2_).get());
|
| + ASSERT_FALSE(FindEntry(device_permissions.get(), device3_).get());
|
| ASSERT_EQ(0U, device_permissions->entries().size());
|
|
|
| // After clearing device it should be possible to grant permission again.
|
| - AllowUsbDevice(manager, extension_, device0);
|
| - AllowUsbDevice(manager, extension_, device1);
|
| + AllowUsbDevice(manager, extension_, device0_);
|
| + AllowUsbDevice(manager, extension_, device1_);
|
|
|
| device_permissions = manager->GetForExtension(extension_->id());
|
| - ASSERT_TRUE(FindEntry(device_permissions.get(), device0).get());
|
| - ASSERT_TRUE(FindEntry(device_permissions.get(), device1).get());
|
| - ASSERT_FALSE(FindEntry(device_permissions.get(), device2).get());
|
| - ASSERT_FALSE(FindEntry(device_permissions.get(), device3).get());
|
| + ASSERT_TRUE(FindEntry(device_permissions.get(), device0_).get());
|
| + ASSERT_TRUE(FindEntry(device_permissions.get(), device1_).get());
|
| + ASSERT_FALSE(FindEntry(device_permissions.get(), device2_).get());
|
| + ASSERT_FALSE(FindEntry(device_permissions.get(), device3_).get());
|
| }
|
|
|
| TEST_F(DevicePermissionsManagerTest, SuspendExtension) {
|
| DevicePermissionsManager* manager =
|
| DevicePermissionsManager::Get(env_->profile());
|
| - AllowUsbDevice(manager, extension_, device0);
|
| - AllowUsbDevice(manager, extension_, device1);
|
| + AllowUsbDevice(manager, extension_, device0_);
|
| + AllowUsbDevice(manager, extension_, device1_);
|
|
|
| scoped_ptr<DevicePermissions> device_permissions =
|
| manager->GetForExtension(extension_->id());
|
| - ASSERT_TRUE(FindEntry(device_permissions.get(), device0).get());
|
| - ASSERT_TRUE(FindEntry(device_permissions.get(), device1).get());
|
| - ASSERT_FALSE(FindEntry(device_permissions.get(), device2).get());
|
| - ASSERT_FALSE(FindEntry(device_permissions.get(), device3).get());
|
| + ASSERT_TRUE(FindEntry(device_permissions.get(), device0_).get());
|
| + ASSERT_TRUE(FindEntry(device_permissions.get(), device1_).get());
|
| + ASSERT_FALSE(FindEntry(device_permissions.get(), device2_).get());
|
| + ASSERT_FALSE(FindEntry(device_permissions.get(), device3_).get());
|
|
|
| manager->OnBackgroundHostClose(extension_->id());
|
|
|
| device_permissions = manager->GetForExtension(extension_->id());
|
| // Device 0 is still registered because its serial number has been stored in
|
| // ExtensionPrefs, it is "persistent".
|
| - ASSERT_TRUE(FindEntry(device_permissions.get(), device0).get());
|
| + ASSERT_TRUE(FindEntry(device_permissions.get(), device0_).get());
|
| // Device 1 does not have uniquely identifying traits and so permission to
|
| // open it has been dropped when the app's windows have closed and the
|
| // background page has been suspended.
|
| - ASSERT_FALSE(FindEntry(device_permissions.get(), device1).get());
|
| - ASSERT_FALSE(FindEntry(device_permissions.get(), device2).get());
|
| - ASSERT_FALSE(FindEntry(device_permissions.get(), device3).get());
|
| + ASSERT_FALSE(FindEntry(device_permissions.get(), device1_).get());
|
| + ASSERT_FALSE(FindEntry(device_permissions.get(), device2_).get());
|
| + ASSERT_FALSE(FindEntry(device_permissions.get(), device3_).get());
|
| }
|
|
|
| TEST_F(DevicePermissionsManagerTest, DisconnectDevice) {
|
| DevicePermissionsManager* manager =
|
| DevicePermissionsManager::Get(env_->profile());
|
| - AllowUsbDevice(manager, extension_, device0);
|
| - AllowUsbDevice(manager, extension_, device1);
|
| + AllowUsbDevice(manager, extension_, device0_);
|
| + AllowUsbDevice(manager, extension_, device1_);
|
|
|
| scoped_ptr<DevicePermissions> device_permissions =
|
| manager->GetForExtension(extension_->id());
|
| - ASSERT_TRUE(FindEntry(device_permissions.get(), device0).get());
|
| - ASSERT_TRUE(FindEntry(device_permissions.get(), device1).get());
|
| - ASSERT_FALSE(FindEntry(device_permissions.get(), device2).get());
|
| - ASSERT_FALSE(FindEntry(device_permissions.get(), device3).get());
|
| + ASSERT_TRUE(FindEntry(device_permissions.get(), device0_).get());
|
| + ASSERT_TRUE(FindEntry(device_permissions.get(), device1_).get());
|
| + ASSERT_FALSE(FindEntry(device_permissions.get(), device2_).get());
|
| + ASSERT_FALSE(FindEntry(device_permissions.get(), device3_).get());
|
|
|
| - usb_service_->NotifyDeviceRemoved(device0);
|
| - usb_service_->NotifyDeviceRemoved(device1);
|
| + usb_service_->NotifyDeviceRemoved(device0_);
|
| + usb_service_->NotifyDeviceRemoved(device1_);
|
|
|
| device_permissions = manager->GetForExtension(extension_->id());
|
| // Device 0 will be accessible when it is reconnected because it can be
|
| // recognized by its serial number.
|
| - ASSERT_TRUE(FindEntry(device_permissions.get(), device0).get());
|
| + ASSERT_TRUE(FindEntry(device_permissions.get(), device0_).get());
|
| // Device 1 does not have a serial number and cannot be distinguished from
|
| // any other device of the same model so the app must request permission again
|
| // when it is reconnected.
|
| - ASSERT_FALSE(FindEntry(device_permissions.get(), device1).get());
|
| - ASSERT_FALSE(FindEntry(device_permissions.get(), device2).get());
|
| - ASSERT_FALSE(FindEntry(device_permissions.get(), device3).get());
|
| + ASSERT_FALSE(FindEntry(device_permissions.get(), device1_).get());
|
| + ASSERT_FALSE(FindEntry(device_permissions.get(), device2_).get());
|
| + ASSERT_FALSE(FindEntry(device_permissions.get(), device3_).get());
|
| }
|
|
|
| TEST_F(DevicePermissionsManagerTest, RevokeAndRegrantAccess) {
|
| DevicePermissionsManager* manager =
|
| DevicePermissionsManager::Get(env_->profile());
|
| - AllowUsbDevice(manager, extension_, device0);
|
| - AllowUsbDevice(manager, extension_, device1);
|
| + AllowUsbDevice(manager, extension_, device0_);
|
| + AllowUsbDevice(manager, extension_, device1_);
|
|
|
| scoped_ptr<DevicePermissions> device_permissions =
|
| manager->GetForExtension(extension_->id());
|
| scoped_refptr<DevicePermissionEntry> device0_entry =
|
| - FindEntry(device_permissions.get(), device0);
|
| + FindEntry(device_permissions.get(), device0_);
|
| ASSERT_TRUE(device0_entry.get());
|
| scoped_refptr<DevicePermissionEntry> device1_entry =
|
| - FindEntry(device_permissions.get(), device1);
|
| + FindEntry(device_permissions.get(), device1_);
|
| ASSERT_TRUE(device1_entry.get());
|
|
|
| manager->RemoveEntry(extension_->id(), device0_entry);
|
| device_permissions = manager->GetForExtension(extension_->id());
|
| - ASSERT_FALSE(FindEntry(device_permissions.get(), device0).get());
|
| - ASSERT_TRUE(FindEntry(device_permissions.get(), device1).get());
|
| + ASSERT_FALSE(FindEntry(device_permissions.get(), device0_).get());
|
| + ASSERT_TRUE(FindEntry(device_permissions.get(), device1_).get());
|
|
|
| - AllowUsbDevice(manager, extension_, device0);
|
| + AllowUsbDevice(manager, extension_, device0_);
|
| device_permissions = manager->GetForExtension(extension_->id());
|
| - ASSERT_TRUE(FindEntry(device_permissions.get(), device0).get());
|
| - ASSERT_TRUE(FindEntry(device_permissions.get(), device1).get());
|
| + ASSERT_TRUE(FindEntry(device_permissions.get(), device0_).get());
|
| + ASSERT_TRUE(FindEntry(device_permissions.get(), device1_).get());
|
|
|
| manager->RemoveEntry(extension_->id(), device1_entry);
|
| device_permissions = manager->GetForExtension(extension_->id());
|
| - ASSERT_TRUE(FindEntry(device_permissions.get(), device0).get());
|
| - ASSERT_FALSE(FindEntry(device_permissions.get(), device1).get());
|
| + ASSERT_TRUE(FindEntry(device_permissions.get(), device0_).get());
|
| + ASSERT_FALSE(FindEntry(device_permissions.get(), device1_).get());
|
|
|
| - AllowUsbDevice(manager, extension_, device1);
|
| + AllowUsbDevice(manager, extension_, device1_);
|
| device_permissions = manager->GetForExtension(extension_->id());
|
| - ASSERT_TRUE(FindEntry(device_permissions.get(), device0).get());
|
| - ASSERT_TRUE(FindEntry(device_permissions.get(), device1).get());
|
| + ASSERT_TRUE(FindEntry(device_permissions.get(), device0_).get());
|
| + ASSERT_TRUE(FindEntry(device_permissions.get(), device1_).get());
|
| }
|
|
|
| TEST_F(DevicePermissionsManagerTest, UpdateLastUsed) {
|
| DevicePermissionsManager* manager =
|
| DevicePermissionsManager::Get(env_->profile());
|
| - AllowUsbDevice(manager, extension_, device0);
|
| + AllowUsbDevice(manager, extension_, device0_);
|
|
|
| scoped_ptr<DevicePermissions> device_permissions =
|
| manager->GetForExtension(extension_->id());
|
| scoped_refptr<DevicePermissionEntry> device0_entry =
|
| - FindEntry(device_permissions.get(), device0);
|
| + FindEntry(device_permissions.get(), device0_);
|
| ASSERT_TRUE(device0_entry->last_used().is_null());
|
|
|
| manager->UpdateLastUsed(extension_->id(), device0_entry);
|
| device_permissions = manager->GetForExtension(extension_->id());
|
| - device0_entry = FindEntry(device_permissions.get(), device0);
|
| + device0_entry = FindEntry(device_permissions.get(), device0_);
|
| ASSERT_FALSE(device0_entry->last_used().is_null());
|
| }
|
|
|
| @@ -327,10 +328,10 @@ TEST_F(DevicePermissionsManagerTest, LoadPrefs) {
|
| DevicePermissionsManager::Get(env_->profile());
|
| scoped_ptr<DevicePermissions> device_permissions =
|
| manager->GetForExtension(extension_->id());
|
| - ASSERT_TRUE(FindEntry(device_permissions.get(), device0).get());
|
| - ASSERT_FALSE(FindEntry(device_permissions.get(), device1).get());
|
| - ASSERT_FALSE(FindEntry(device_permissions.get(), device2).get());
|
| - ASSERT_FALSE(FindEntry(device_permissions.get(), device3).get());
|
| + ASSERT_TRUE(FindEntry(device_permissions.get(), device0_).get());
|
| + ASSERT_FALSE(FindEntry(device_permissions.get(), device1_).get());
|
| + ASSERT_FALSE(FindEntry(device_permissions.get(), device2_).get());
|
| + ASSERT_FALSE(FindEntry(device_permissions.get(), device3_).get());
|
| }
|
|
|
| } // namespace extensions
|
|
|