summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chrome_browser_main_linux.cc
diff options
context:
space:
mode:
authorgbillock@chromium.org <gbillock@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-12 16:31:36 +0000
committergbillock@chromium.org <gbillock@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-12 16:31:36 +0000
commit88e8162a8d1e86e690c21a037da2908ab92f5bfb (patch)
tree0e036590c3ecfdb993ca8272ee8938052bcbb22d /chrome/browser/chrome_browser_main_linux.cc
parentcf65f8df1749d5ae542681f8ebf4307cab222654 (diff)
downloadchromium_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.cc34
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();
}