Index: chrome/browser/storage_monitor/storage_monitor_linux.cc |
=================================================================== |
--- chrome/browser/storage_monitor/storage_monitor_linux.cc (revision 194743) |
+++ chrome/browser/storage_monitor/storage_monitor_linux.cc (working copy) |
@@ -22,6 +22,7 @@ |
#include "chrome/browser/storage_monitor/media_storage_util.h" |
#include "chrome/browser/storage_monitor/media_transfer_protocol_device_observer_linux.h" |
#include "chrome/browser/storage_monitor/removable_device_constants.h" |
+#include "chrome/browser/storage_monitor/test_media_transfer_protocol_manager_linux.h" |
#include "chrome/browser/storage_monitor/udev_util_linux.h" |
#include "chrome/common/chrome_switches.h" |
#include "device/media_transfer_protocol/media_transfer_protocol_manager.h" |
@@ -232,12 +233,17 @@ |
get_device_info_callback_(base::Bind(&GetDeviceInfo)), |
ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ |
+ // TODO(thestig) Do not do this here. Do it in TestingBrowserProcess when |
+ // BrowserProcess owns StorageMonitor. |
+ if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kTestType)) { |
+ SetMediaTransferProtocolManagerForTest( |
+ new TestMediaTransferProtocolManagerLinux()); |
+ } |
} |
StorageMonitorLinux::~StorageMonitorLinux() { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kTestType)) |
- device::MediaTransferProtocolManager::Shutdown(); |
} |
void StorageMonitorLinux::Init() { |
@@ -251,15 +257,15 @@ |
base::Bind(&StorageMonitorLinux::OnMtabWatcherCreated, |
weak_ptr_factory_.GetWeakPtr())); |
- if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kTestType)) { |
- scoped_refptr<base::MessageLoopProxy> loop_proxy; |
- loop_proxy = content::BrowserThread::GetMessageLoopProxyForThread( |
- content::BrowserThread::FILE); |
- device::MediaTransferProtocolManager::Initialize(loop_proxy); |
- |
- media_transfer_protocol_device_observer_.reset( |
- new MediaTransferProtocolDeviceObserverLinux(receiver())); |
+ if (!media_transfer_protocol_manager_) { |
+ scoped_refptr<base::MessageLoopProxy> loop_proxy = |
+ BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE); |
+ media_transfer_protocol_manager_.reset( |
+ device::MediaTransferProtocolManager::Initialize(loop_proxy)); |
} |
+ |
+ media_transfer_protocol_device_observer_.reset( |
+ new MediaTransferProtocolDeviceObserverLinux(receiver())); |
} |
bool StorageMonitorLinux::GetStorageInfoForPath( |
@@ -290,11 +296,22 @@ |
return true; |
} |
+device::MediaTransferProtocolManager* |
+StorageMonitorLinux::media_transfer_protocol_manager() { |
+ return media_transfer_protocol_manager_.get(); |
+} |
+ |
void StorageMonitorLinux::SetGetDeviceInfoCallbackForTest( |
const GetDeviceInfoCallback& get_device_info_callback) { |
get_device_info_callback_ = get_device_info_callback; |
} |
+void StorageMonitorLinux::SetMediaTransferProtocolManagerForTest( |
+ device::MediaTransferProtocolManager* test_manager) { |
+ DCHECK(!media_transfer_protocol_manager_); |
+ media_transfer_protocol_manager_.reset(test_manager); |
+} |
+ |
void StorageMonitorLinux::OnMtabWatcherCreated(MtabWatcherLinux* watcher) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
mtab_watcher_.reset(watcher); |