1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/media_galleries/linux/mtp_device_task_helper_map_service.h" 6 7 #include "base/logging.h" 8 #include "base/stl_util.h" 9 #include "chrome/browser/media_galleries/linux/mtp_device_task_helper.h" 10 #include "content/public/browser/browser_thread.h" 11 12 namespace chrome { 13 14 namespace { 15 16 base::LazyInstance<MTPDeviceTaskHelperMapService> 17 g_mtp_device_task_helper_map_service = LAZY_INSTANCE_INITIALIZER; 18 19 } // namespace 20 21 // static 22 MTPDeviceTaskHelperMapService* MTPDeviceTaskHelperMapService::GetInstance() { 23 return g_mtp_device_task_helper_map_service.Pointer(); 24 } 25 26 MTPDeviceTaskHelper* MTPDeviceTaskHelperMapService::CreateDeviceTaskHelper( 27 const std::string& storage_name) { 28 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); 29 DCHECK(!storage_name.empty()); 30 DCHECK(!ContainsKey(task_helper_map_, storage_name)); 31 MTPDeviceTaskHelper* task_helper = new MTPDeviceTaskHelper(); 32 task_helper_map_[storage_name] = task_helper; 33 return task_helper; 34 } 35 36 void MTPDeviceTaskHelperMapService::DestroyDeviceTaskHelper( 37 const std::string& storage_name) { 38 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); 39 TaskHelperMap::iterator it = task_helper_map_.find(storage_name); 40 if (it == task_helper_map_.end()) 41 return; 42 delete it->second; 43 task_helper_map_.erase(it); 44 } 45 46 MTPDeviceTaskHelper* MTPDeviceTaskHelperMapService::GetDeviceTaskHelper( 47 const std::string& storage_name) { 48 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); 49 DCHECK(!storage_name.empty()); 50 TaskHelperMap::const_iterator it = task_helper_map_.find(storage_name); 51 return (it != task_helper_map_.end()) ? it->second : NULL; 52 } 53 54 MTPDeviceTaskHelperMapService::MTPDeviceTaskHelperMapService() { 55 } 56 57 MTPDeviceTaskHelperMapService::~MTPDeviceTaskHelperMapService() { 58 } 59 60 } // namespace chrome 61