diff options
author | gbillock@chromium.org <gbillock@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-12 16:31:36 +0000 |
---|---|---|
committer | gbillock@chromium.org <gbillock@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-12 16:31:36 +0000 |
commit | 88e8162a8d1e86e690c21a037da2908ab92f5bfb (patch) | |
tree | 0e036590c3ecfdb993ca8272ee8938052bcbb22d /chrome/browser/chrome_browser_main_linux.cc | |
parent | cf65f8df1749d5ae542681f8ebf4307cab222654 (diff) | |
download | chromium_src-88e8162a8d1e86e690c21a037da2908ab92f5bfb.zip chromium_src-88e8162a8d1e86e690c21a037da2908ab92f5bfb.tar.gz chromium_src-88e8162a8d1e86e690c21a037da2908ab92f5bfb.tar.bz2 |
Revert 187332
> Regularize ownerships and lifecycle for storage monitor platform classes.
>
> This change regularizes the construction lifecycle of the StorageMonitor implementations so that they always exist for the construction of the Profile, but don't issue any notifications until after that construction is complete. This allows profile-based listeners to be sure they're synchronized with the monitor.
>
> It also regularizes ownership of all storage-monitor-related objects. The base platform-specific object is owned by the ChromeBrowserMain object, and owns all subsidiary platform-specific objects needed to monitor and/or deal with volumes of various types (i.e. MTP).
>
> R=vandebo@chromium.org
> BUG=None
>
>
> Review URL: https://chromiumcodereview.appspot.com/12334096
TBR=gbillock@chromium.org
Review URL: https://codereview.chromium.org/12789002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@187597 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chrome_browser_main_linux.cc')
-rw-r--r-- | chrome/browser/chrome_browser_main_linux.cc | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/chrome/browser/chrome_browser_main_linux.cc b/chrome/browser/chrome_browser_main_linux.cc index c15d05d..4f5c48a 100644 --- a/chrome/browser/chrome_browser_main_linux.cc +++ b/chrome/browser/chrome_browser_main_linux.cc @@ -4,6 +4,11 @@ #include "chrome/browser/chrome_browser_main_linux.h" +#include "base/message_loop_proxy.h" +#include "chrome/browser/storage_monitor/media_transfer_protocol_device_observer_linux.h" +#include "chrome/common/chrome_switches.h" +#include "device/media_transfer_protocol/media_transfer_protocol_manager.h" + #if !defined(OS_CHROMEOS) #include "chrome/browser/storage_monitor/storage_monitor_linux.h" #include "content/public/browser/browser_thread.h" @@ -16,7 +21,6 @@ #include "base/linux_util.h" #include "base/prefs/pref_service.h" #include "chrome/app/breakpad_linux.h" -#include "chrome/common/chrome_switches.h" #include "chrome/common/env_vars.h" #include "chrome/common/pref_names.h" @@ -104,10 +108,13 @@ bool IsCrashReportingEnabled(const PrefService* local_state) { ChromeBrowserMainPartsLinux::ChromeBrowserMainPartsLinux( const content::MainFunctionParams& parameters) - : ChromeBrowserMainPartsPosix(parameters) { + : ChromeBrowserMainPartsPosix(parameters), + initialized_media_transfer_protocol_manager_(false) { } ChromeBrowserMainPartsLinux::~ChromeBrowserMainPartsLinux() { + if (initialized_media_transfer_protocol_manager_) + device::MediaTransferProtocolManager::Shutdown(); } void ChromeBrowserMainPartsLinux::PreProfileInit() { @@ -127,15 +134,30 @@ void ChromeBrowserMainPartsLinux::PreProfileInit() { #if !defined(OS_CHROMEOS) const base::FilePath kDefaultMtabPath("/etc/mtab"); storage_monitor_ = new chrome::StorageMonitorLinux(kDefaultMtabPath); + storage_monitor_->Init(); #endif + if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kTestType)) { + scoped_refptr<base::MessageLoopProxy> loop_proxy; +#if !defined(OS_CHROMEOS) + loop_proxy = content::BrowserThread::GetMessageLoopProxyForThread( + content::BrowserThread::FILE); +#endif + device::MediaTransferProtocolManager::Initialize(loop_proxy); + initialized_media_transfer_protocol_manager_ = true; + } + ChromeBrowserMainPartsPosix::PreProfileInit(); } void ChromeBrowserMainPartsLinux::PostProfileInit() { -#if !defined(OS_CHROMEOS) - storage_monitor_->Init(); -#endif + // TODO(gbillock): Make this owned by StorageMonitorLinux. + if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kTestType)) { + media_transfer_protocol_device_observer_.reset( + new chrome::MediaTransferProtocolDeviceObserverLinux()); + media_transfer_protocol_device_observer_->SetNotifications( + chrome::StorageMonitor::GetInstance()->receiver()); + } ChromeBrowserMainPartsPosix::PostProfileInit(); } @@ -148,5 +170,7 @@ void ChromeBrowserMainPartsLinux::PostMainMessageLoopRun() { storage_monitor_ = NULL; #endif + media_transfer_protocol_device_observer_.reset(); + ChromeBrowserMainPartsPosix::PostMainMessageLoopRun(); } |