Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1538)

Unified Diff: chrome/browser/extensions/api/device_permissions_manager_unittest.cc

Issue 809743006: Add an Observer interface to UsbService for device add/remove. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Clarify comment. Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | device/usb/usb_device.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 23a94ca8ebb169c796d36d922bb1568397092c86..f29e3bb98f090aecc7b9007e2ea6870b6ef98dce 100644
--- a/chrome/browser/extensions/api/device_permissions_manager_unittest.cc
+++ b/chrome/browser/extensions/api/device_permissions_manager_unittest.cc
@@ -7,6 +7,7 @@
#include "base/test/values_test_util.h"
#include "chrome/browser/extensions/test_extension_environment.h"
#include "chrome/test/base/testing_profile.h"
+#include "device/core/device_client.h"
#include "device/usb/usb_device.h"
#include "device/usb/usb_device_handle.h"
#include "extensions/browser/api/device_permissions_manager.h"
@@ -21,8 +22,36 @@ namespace {
using device::UsbDevice;
using device::UsbDeviceHandle;
+using device::UsbService;
using testing::Return;
+class MockUsbService : public UsbService {
+ public:
+ MockUsbService() : mock_device_client(this) {}
+
+ MOCK_METHOD1(GetDeviceById, scoped_refptr<UsbDevice>(uint32));
+ MOCK_METHOD1(GetDevices, void(std::vector<scoped_refptr<UsbDevice>>*));
+
+ // Public wrapper for the protected NotifyDeviceRemove function.
+ void NotifyDeviceRemoved(scoped_refptr<UsbDevice> device) {
+ UsbService::NotifyDeviceRemoved(device);
+ }
+
+ private:
+ class MockDeviceClient : device::DeviceClient {
+ public:
+ explicit MockDeviceClient(UsbService* usb_service)
+ : usb_service_(usb_service) {}
+
+ UsbService* GetUsbService() override { return usb_service_; }
+
+ private:
+ UsbService* usb_service_;
+ };
+
+ MockDeviceClient mock_device_client;
+};
+
class MockUsbDevice : public UsbDevice {
public:
MockUsbDevice(const std::string& serial_number, uint32 unique_id)
@@ -56,8 +85,6 @@ class MockUsbDevice : public UsbDevice {
return true;
}
- void NotifyDisconnect() { UsbDevice::NotifyDisconnect(); }
-
private:
virtual ~MockUsbDevice() {}
@@ -86,26 +113,36 @@ class DevicePermissionsManagerTest : public testing::Test {
protected:
void SetUp() override {
testing::Test::SetUp();
- env_.GetExtensionPrefs(); // Force creation before adding extensions.
- extension_ = env_.MakeExtension(*base::test::ParseJson(
- "{"
- " \"app\": {"
- " \"background\": {"
- " \"scripts\": [\"background.js\"]"
- " }"
- " },"
- " \"permissions\": ["
- " \"usb\""
- " ]"
- "}"));
+ env_.reset(new TestExtensionEnvironment());
+ env_->GetExtensionPrefs(); // Force creation before adding extensions.
+ extension_ =
+ env_->MakeExtension(*base::test::ParseJson(
+ "{"
+ " \"app\": {"
+ " \"background\": {"
+ " \"scripts\": [\"background.js\"]"
+ " }"
+ " },"
+ " \"permissions\": ["
+ " \"usb\""
+ " ]"
+ "}"));
device0 = new MockUsbDevice("ABCDE", 0);
device1 = new MockUsbDevice("", 1);
device2 = new MockUsbDevice("12345", 2);
device3 = new MockUsbDevice("", 3);
+ usb_service_ = new MockUsbService();
+ UsbService::SetInstanceForTest(usb_service_);
+ }
+
+ void TearDown() override {
+ env_.reset(nullptr);
+ UsbService::SetInstanceForTest(nullptr);
}
- extensions::TestExtensionEnvironment env_;
+ scoped_ptr<extensions::TestExtensionEnvironment> env_;
const extensions::Extension* extension_;
+ MockUsbService* usb_service_;
scoped_refptr<MockUsbDevice> device0;
scoped_refptr<MockUsbDevice> device1;
scoped_refptr<MockUsbDevice> device2;
@@ -114,7 +151,7 @@ class DevicePermissionsManagerTest : public testing::Test {
TEST_F(DevicePermissionsManagerTest, AllowAndClearDevices) {
DevicePermissionsManager* manager =
- DevicePermissionsManager::Get(env_.profile());
+ DevicePermissionsManager::Get(env_->profile());
AllowUsbDevice(manager, extension_, device0);
AllowUsbDevice(manager, extension_, device1);
@@ -158,7 +195,7 @@ TEST_F(DevicePermissionsManagerTest, AllowAndClearDevices) {
TEST_F(DevicePermissionsManagerTest, SuspendExtension) {
DevicePermissionsManager* manager =
- DevicePermissionsManager::Get(env_.profile());
+ DevicePermissionsManager::Get(env_->profile());
AllowUsbDevice(manager, extension_, device0);
AllowUsbDevice(manager, extension_, device1);
@@ -185,7 +222,7 @@ TEST_F(DevicePermissionsManagerTest, SuspendExtension) {
TEST_F(DevicePermissionsManagerTest, DisconnectDevice) {
DevicePermissionsManager* manager =
- DevicePermissionsManager::Get(env_.profile());
+ DevicePermissionsManager::Get(env_->profile());
AllowUsbDevice(manager, extension_, device0);
AllowUsbDevice(manager, extension_, device1);
@@ -196,8 +233,8 @@ TEST_F(DevicePermissionsManagerTest, DisconnectDevice) {
ASSERT_FALSE(device_permissions->FindEntry(device2).get());
ASSERT_FALSE(device_permissions->FindEntry(device3).get());
- device0->NotifyDisconnect();
- device1->NotifyDisconnect();
+ 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
@@ -213,7 +250,7 @@ TEST_F(DevicePermissionsManagerTest, DisconnectDevice) {
TEST_F(DevicePermissionsManagerTest, RevokeAndRegrantAccess) {
DevicePermissionsManager* manager =
- DevicePermissionsManager::Get(env_.profile());
+ DevicePermissionsManager::Get(env_->profile());
AllowUsbDevice(manager, extension_, device0);
AllowUsbDevice(manager, extension_, device1);
@@ -249,7 +286,7 @@ TEST_F(DevicePermissionsManagerTest, RevokeAndRegrantAccess) {
TEST_F(DevicePermissionsManagerTest, UpdateLastUsed) {
DevicePermissionsManager* manager =
- DevicePermissionsManager::Get(env_.profile());
+ DevicePermissionsManager::Get(env_->profile());
AllowUsbDevice(manager, extension_, device0);
scoped_ptr<DevicePermissions> device_permissions =
@@ -274,11 +311,11 @@ TEST_F(DevicePermissionsManagerTest, LoadPrefs) {
" \"vendor_id\": 0"
" }"
"]");
- env_.GetExtensionPrefs()->UpdateExtensionPref(
- extension_->id(), "devices", prefs_value.release());
+ env_->GetExtensionPrefs()->UpdateExtensionPref(extension_->id(), "devices",
+ prefs_value.release());
DevicePermissionsManager* manager =
- DevicePermissionsManager::Get(env_.profile());
+ DevicePermissionsManager::Get(env_->profile());
scoped_ptr<DevicePermissions> device_permissions =
manager->GetForExtension(extension_->id());
ASSERT_TRUE(device_permissions->FindEntry(device0).get());
« no previous file with comments | « no previous file | device/usb/usb_device.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698