| 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);
|
|
|