Index: ui/events/devices/device_data_manager.cc |
diff --git a/ui/events/devices/device_data_manager.cc b/ui/events/devices/device_data_manager.cc |
index 44ca1fa7beccc0cef3c4beb8c83f7e5b9802aeb4..e725736df3923ad538e69795a0d10fd586c5e87b 100644 |
--- a/ui/events/devices/device_data_manager.cc |
+++ b/ui/events/devices/device_data_manager.cc |
@@ -25,29 +25,35 @@ bool InputDeviceEquals(const ui::InputDevice& a, const ui::InputDevice& b) { |
DeviceDataManager* DeviceDataManager::instance_ = NULL; |
DeviceDataManager::DeviceDataManager() { |
- CHECK(!instance_) << "Can not create multiple instances of DeviceDataManager"; |
- instance_ = this; |
- |
- base::AtExitManager::RegisterTask( |
- base::Bind(&base::DeletePointer<DeviceDataManager>, this)); |
- |
ClearTouchDeviceAssociations(); |
} |
DeviceDataManager::~DeviceDataManager() { |
- CHECK_EQ(this, instance_); |
- instance_ = NULL; |
} |
// static |
DeviceDataManager* DeviceDataManager::instance() { return instance_; } |
+void DeviceDataManager::set_instance(DeviceDataManager* instance) { |
+ CHECK(!instance_) << "Can not set multiple instances of DeviceDataManager"; |
+ instance_ = instance; |
+} |
+ |
// static |
void DeviceDataManager::CreateInstance() { |
if (instance()) |
return; |
- new DeviceDataManager(); |
+ set_instance(new DeviceDataManager()); |
+ |
+ base::AtExitManager::RegisterTask(base::Bind(DeleteInstance)); |
+} |
+ |
+void DeviceDataManager::DeleteInstance() { |
+ if (instance_) { |
+ delete instance_; |
+ instance_ = NULL; |
+ } |
} |
// static |