This source file includes following definitions.
- GetInstance
- AddPortableDevice
- MarkPortableDeviceForDeletion
- RemovePortableDevice
- GetPortableDevice
- scheduled_to_delete
#include "chrome/browser/media_galleries/win/portable_device_map_service.h"
#include "base/logging.h"
#include "base/stl_util.h"
#include "base/threading/thread_restrictions.h"
#include "content/public/browser/browser_thread.h"
namespace {
base::LazyInstance<PortableDeviceMapService> g_portable_device_map_service =
LAZY_INSTANCE_INITIALIZER;
}
PortableDeviceMapService* PortableDeviceMapService::GetInstance() {
return g_portable_device_map_service.Pointer();
}
void PortableDeviceMapService::AddPortableDevice(
const base::string16& device_location,
IPortableDevice* device) {
base::ThreadRestrictions::AssertIOAllowed();
DCHECK(!device_location.empty());
DCHECK(device);
base::AutoLock lock(lock_);
device_map_[device_location] = PortableDeviceInfo(device);
}
void PortableDeviceMapService::MarkPortableDeviceForDeletion(
const base::string16& device_location) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
DCHECK(!device_location.empty());
base::AutoLock lock(lock_);
PortableDeviceMap::iterator it = device_map_.find(device_location);
if (it != device_map_.end())
it->second.scheduled_to_delete = true;
}
void PortableDeviceMapService::RemovePortableDevice(
const base::string16& device_location) {
base::ThreadRestrictions::AssertIOAllowed();
DCHECK(!device_location.empty());
base::AutoLock lock(lock_);
PortableDeviceMap::const_iterator it = device_map_.find(device_location);
if ((it != device_map_.end()) && it->second.scheduled_to_delete)
device_map_.erase(it);
}
IPortableDevice* PortableDeviceMapService::GetPortableDevice(
const base::string16& device_location) {
base::ThreadRestrictions::AssertIOAllowed();
DCHECK(!device_location.empty());
base::AutoLock lock(lock_);
PortableDeviceMap::const_iterator it = device_map_.find(device_location);
return (it == device_map_.end() || it->second.scheduled_to_delete) ?
NULL : it->second.portable_device.get();
}
PortableDeviceMapService::PortableDeviceInfo::PortableDeviceInfo()
: scheduled_to_delete(false) {
}
PortableDeviceMapService::PortableDeviceInfo::PortableDeviceInfo(
IPortableDevice* device)
: portable_device(device),
scheduled_to_delete(false) {
}
PortableDeviceMapService::PortableDeviceMapService() {
}
PortableDeviceMapService::~PortableDeviceMapService() {
}