summaryrefslogtreecommitdiffstats
path: root/device/hid
diff options
context:
space:
mode:
authorreillyg <reillyg@chromium.org>2014-09-06 11:38:31 -0700
committerCommit bot <commit-bot@chromium.org>2014-09-06 18:42:54 +0000
commitce69e2adaf3ec91056ec87e1a59848b9781709c1 (patch)
treecfc4d684d64bb18691639ba01d13d4da9cdd94ac /device/hid
parent4e279527936c87f440663b15dd29a71771ac36a9 (diff)
downloadchromium_src-ce69e2adaf3ec91056ec87e1a59848b9781709c1.zip
chromium_src-ce69e2adaf3ec91056ec87e1a59848b9781709c1.tar.gz
chromium_src-ce69e2adaf3ec91056ec87e1a59848b9781709c1.tar.bz2
Make the device::HidService destructor protected.
This prevents anything other than device::HidService::Destroyer from calling the destructor. For example, scoped_ptr, as was the case in HidConnectionTest. BUG= Review URL: https://codereview.chromium.org/542153004 Cr-Commit-Position: refs/heads/master@{#293623}
Diffstat (limited to 'device/hid')
-rw-r--r--device/hid/hid_connection_unittest.cc5
-rw-r--r--device/hid/hid_service.cc12
-rw-r--r--device/hid/hid_service.h5
3 files changed, 11 insertions, 11 deletions
diff --git a/device/hid/hid_connection_unittest.cc b/device/hid/hid_connection_unittest.cc
index 064720f..5c67edf 100644
--- a/device/hid/hid_connection_unittest.cc
+++ b/device/hid/hid_connection_unittest.cc
@@ -73,8 +73,7 @@ class HidConnectionTest : public testing::Test {
if (!UsbTestGadget::IsTestEnabled()) return;
message_loop_.reset(new base::MessageLoopForIO());
- service_.reset(HidService::GetInstance(
- message_loop_->message_loop_proxy()));
+ service_ = HidService::GetInstance(message_loop_->message_loop_proxy());
ASSERT_TRUE(service_);
test_gadget_ = UsbTestGadget::Claim();
@@ -119,7 +118,7 @@ class HidConnectionTest : public testing::Test {
}
scoped_ptr<base::MessageLoopForIO> message_loop_;
- scoped_ptr<HidService> service_;
+ HidService* service_;
scoped_ptr<UsbTestGadget> test_gadget_;
HidDeviceId device_id_;
};
diff --git a/device/hid/hid_service.cc b/device/hid/hid_service.cc
index c9ab2fc..2dfdb89 100644
--- a/device/hid/hid_service.cc
+++ b/device/hid/hid_service.cc
@@ -25,11 +25,13 @@ namespace {
HidService* g_service = NULL;
-class HidServiceDestroyer : public base::MessageLoop::DestructionObserver {
+} // namespace
+
+class HidService::Destroyer : public base::MessageLoop::DestructionObserver {
public:
- explicit HidServiceDestroyer(HidService* hid_service)
+ explicit Destroyer(HidService* hid_service)
: hid_service_(hid_service) {}
- virtual ~HidServiceDestroyer() {}
+ virtual ~Destroyer() {}
private:
// base::MessageLoop::DestructionObserver implementation.
@@ -43,8 +45,6 @@ class HidServiceDestroyer : public base::MessageLoop::DestructionObserver {
HidService* hid_service_;
};
-} // namespace
-
HidService* HidService::GetInstance(
scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) {
if (g_service == NULL) {
@@ -56,7 +56,7 @@ HidService* HidService::GetInstance(
g_service = new HidServiceWin();
#endif
if (g_service != NULL) {
- HidServiceDestroyer* destroyer = new HidServiceDestroyer(g_service);
+ Destroyer* destroyer = new Destroyer(g_service);
base::MessageLoop::current()->AddDestructionObserver(destroyer);
}
}
diff --git a/device/hid/hid_service.h b/device/hid/hid_service.h
index cc7813b..c370203 100644
--- a/device/hid/hid_service.h
+++ b/device/hid/hid_service.h
@@ -23,8 +23,6 @@ class HidService {
static HidService* GetInstance(
scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner);
- virtual ~HidService();
-
// Enumerates and returns a list of device identifiers.
virtual void GetDevices(std::vector<HidDeviceInfo>* devices);
@@ -41,6 +39,7 @@ class HidService {
typedef std::map<HidDeviceId, HidDeviceInfo> DeviceMap;
HidService();
+ virtual ~HidService();
void AddDevice(const HidDeviceInfo& info);
void RemoveDevice(const HidDeviceId& device_id);
@@ -49,6 +48,8 @@ class HidService {
base::ThreadChecker thread_checker_;
private:
+ class Destroyer;
+
DeviceMap devices_;
DISALLOW_COPY_AND_ASSIGN(HidService);