summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/browser_process.h3
-rw-r--r--chrome/browser/browser_process_impl.cc33
-rw-r--r--chrome/browser/browser_process_impl.h6
-rw-r--r--chrome/browser/chrome_browser_main_linux.cc16
-rw-r--r--chrome/browser/chrome_browser_main_linux.h12
-rw-r--r--chrome/browser/chrome_browser_main_mac.h8
-rw-r--r--chrome/browser/chrome_browser_main_mac.mm7
-rw-r--r--chrome/browser/chrome_browser_main_win.cc7
-rw-r--r--chrome/browser/chrome_browser_main_win.h9
-rw-r--r--chrome/browser/chromeos/chrome_browser_main_chromeos.cc4
-rw-r--r--chrome/browser/chromeos/chrome_browser_main_chromeos.h2
-rw-r--r--chrome/browser/extensions/api/media_galleries_private/media_galleries_eject_apitest.cc25
-rw-r--r--chrome/browser/extensions/api/media_galleries_private/media_galleries_private_apitest.cc6
-rw-r--r--chrome/browser/extensions/api/system_info_storage/system_info_storage_apitest.cc5
-rw-r--r--chrome/browser/extensions/api/system_info_storage/system_info_storage_eject_apitest.cc24
-rw-r--r--chrome/browser/media_galleries/mac/mtp_device_delegate_impl_mac_unittest.mm5
-rw-r--r--chrome/browser/media_galleries/win/mtp_device_delegate_impl_win_unittest.cc22
-rw-r--r--chrome/browser/storage_monitor/image_capture_device_manager_unittest.mm20
-rw-r--r--chrome/browser/storage_monitor/media_storage_util_unittest.cc8
-rw-r--r--chrome/browser/storage_monitor/media_transfer_protocol_device_observer_linux_unittest.cc12
-rw-r--r--chrome/browser/storage_monitor/storage_monitor.cc17
-rw-r--r--chrome/browser/storage_monitor/storage_monitor.h21
-rw-r--r--chrome/browser/storage_monitor/storage_monitor_chromeos.cc8
-rw-r--r--chrome/browser/storage_monitor/storage_monitor_chromeos_unittest.cc14
-rw-r--r--chrome/browser/storage_monitor/storage_monitor_linux.cc5
-rw-r--r--chrome/browser/storage_monitor/storage_monitor_linux_unittest.cc19
-rw-r--r--chrome/browser/storage_monitor/storage_monitor_mac.mm4
-rw-r--r--chrome/browser/storage_monitor/storage_monitor_mac_unittest.mm13
-rw-r--r--chrome/browser/storage_monitor/storage_monitor_unittest.cc21
-rw-r--r--chrome/browser/storage_monitor/storage_monitor_win.cc11
-rw-r--r--chrome/browser/storage_monitor/storage_monitor_win.h7
-rw-r--r--chrome/browser/storage_monitor/storage_monitor_win_unittest.cc32
-rw-r--r--chrome/browser/storage_monitor/test_storage_monitor.cc55
-rw-r--r--chrome/browser/storage_monitor/test_storage_monitor.h15
-rw-r--r--chrome/browser/ui/cocoa/extensions/media_galleries_dialog_cocoa_unittest.mm3
-rw-r--r--chrome/browser/ui/gtk/extensions/media_galleries_dialog_gtk_unittest.cc3
-rw-r--r--chrome/chrome_tests_unit.gypi1
-rw-r--r--chrome/test/base/testing_browser_process.cc33
-rw-r--r--chrome/test/base/testing_browser_process.h8
39 files changed, 328 insertions, 196 deletions
diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h
index 0824b1c..ca828e9 100644
--- a/chrome/browser/browser_process.h
+++ b/chrome/browser/browser_process.h
@@ -47,6 +47,7 @@ class WebRtcLogUploader;
namespace chrome {
class MediaFileSystemRegistry;
+class StorageMonitor;
}
namespace chrome_variations {
@@ -217,6 +218,8 @@ class BrowserProcess {
virtual chrome::MediaFileSystemRegistry* media_file_system_registry() = 0;
+ virtual chrome::StorageMonitor* storage_monitor() = 0;
+
virtual bool created_local_state() const = 0;
#if defined(ENABLE_WEBRTC)
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
index 9dffeab..75897f2 100644
--- a/chrome/browser/browser_process_impl.cc
+++ b/chrome/browser/browser_process_impl.cc
@@ -62,6 +62,7 @@
#include "chrome/browser/safe_browsing/safe_browsing_service.h"
#include "chrome/browser/shell_integration.h"
#include "chrome/browser/status_icons/status_tray.h"
+#include "chrome/browser/storage_monitor/storage_monitor.h"
#include "chrome/browser/thumbnails/render_widget_snapshot_taker.h"
#include "chrome/browser/ui/bookmarks/bookmark_prompt_controller.h"
#include "chrome/browser/ui/browser_finder.h"
@@ -106,7 +107,7 @@
#include "ui/aura/env.h"
#endif
-#if !defined(OS_ANDROID)
+#if !defined(OS_ANDROID) && !defined(OS_IOS)
#include "chrome/browser/media_galleries/media_file_system_registry.h"
#endif
@@ -251,6 +252,15 @@ void BrowserProcessImpl::StartTearDown() {
ExtensionRendererState::GetInstance()->Shutdown();
+#if !defined(OS_ANDROID) && !defined(OS_IOS)
+ media_file_system_registry_.reset();
+ // Delete |storage_monitor_| now. Otherwise the FILE thread would be gone
+ // when we try to release it in the dtor and Valgrind would report a
+ // leak on almost every single browser_test.
+ // TODO(gbillock): Make this unnecessary.
+ storage_monitor_.reset();
+#endif
+
message_center::MessageCenter::Shutdown();
#if defined(ENABLE_CONFIGURATION_POLICY)
@@ -619,9 +629,24 @@ BookmarkPromptController* BrowserProcessImpl::bookmark_prompt_controller() {
#endif
}
+chrome::StorageMonitor* BrowserProcessImpl::storage_monitor() {
+#if defined(OS_ANDROID) || defined(OS_IOS)
+ return NULL;
+#else
+ return storage_monitor_.get();
+#endif
+}
+
+void BrowserProcessImpl::set_storage_monitor_for_test(
+ scoped_ptr<chrome::StorageMonitor> monitor) {
+#if !defined(OS_ANDROID) && !defined(OS_IOS)
+ storage_monitor_ = monitor.Pass();
+#endif
+}
+
chrome::MediaFileSystemRegistry*
BrowserProcessImpl::media_file_system_registry() {
-#if defined(OS_ANDROID)
+#if defined(OS_ANDROID) || defined(OS_IOS)
return NULL;
#else
if (!media_file_system_registry_)
@@ -910,6 +935,10 @@ void BrowserProcessImpl::PreMainMessageLoopRun() {
}
#endif
+#if !defined(OS_ANDROID) && !defined(OS_IOS)
+ storage_monitor_.reset(chrome::StorageMonitor::Create());
+#endif
+
#if defined(OS_MACOSX)
app_shim_host_manager_.reset(new AppShimHostManager);
AppListService::InitAll(NULL);
diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_process_impl.h
index 66191dc..50a76d1 100644
--- a/chrome/browser/browser_process_impl.h
+++ b/chrome/browser/browser_process_impl.h
@@ -127,6 +127,8 @@ class BrowserProcessImpl : public BrowserProcess,
virtual CRLSetFetcher* crl_set_fetcher() OVERRIDE;
virtual PnaclComponentInstaller* pnacl_component_installer() OVERRIDE;
virtual BookmarkPromptController* bookmark_prompt_controller() OVERRIDE;
+ virtual chrome::StorageMonitor* storage_monitor() OVERRIDE;
+ void set_storage_monitor_for_test(scoped_ptr<chrome::StorageMonitor> monitor);
virtual chrome::MediaFileSystemRegistry*
media_file_system_registry() OVERRIDE;
virtual bool created_local_state() const OVERRIDE;
@@ -196,6 +198,10 @@ class BrowserProcessImpl : public BrowserProcess,
// Bookmark prompt controller displays the prompt for frequently visited URL.
scoped_ptr<BookmarkPromptController> bookmark_prompt_controller_;
+#endif
+
+#if !defined(OS_ANDROID) && !defined(OS_IOS)
+ scoped_ptr<chrome::StorageMonitor> storage_monitor_;
scoped_ptr<chrome::MediaFileSystemRegistry> media_file_system_registry_;
#endif
diff --git a/chrome/browser/chrome_browser_main_linux.cc b/chrome/browser/chrome_browser_main_linux.cc
index dd83909..299154d 100644
--- a/chrome/browser/chrome_browser_main_linux.cc
+++ b/chrome/browser/chrome_browser_main_linux.cc
@@ -118,11 +118,6 @@ void ChromeBrowserMainPartsLinux::PreProfileInit() {
if (IsCrashReportingEnabled(local_state()))
InitCrashReporter();
-#if !defined(OS_CHROMEOS)
- const base::FilePath kDefaultMtabPath("/etc/mtab");
- storage_monitor_.reset(new chrome::StorageMonitorLinux(kDefaultMtabPath));
-#endif
-
ChromeBrowserMainPartsPosix::PreProfileInit();
}
@@ -132,14 +127,3 @@ void ChromeBrowserMainPartsLinux::PostProfileInit() {
g_browser_process->metrics_service()->RecordBreakpadRegistration(
IsCrashReporterEnabled());
}
-
-void ChromeBrowserMainPartsLinux::PostMainMessageLoopRun() {
- ChromeBrowserMainPartsPosix::PostMainMessageLoopRun();
-
-#if !defined(OS_CHROMEOS)
- // Delete it now. Otherwise the FILE thread would be gone when we try to
- // release it in the dtor and Valgrind would report a leak on almost every
- // single browser_test.
- storage_monitor_.reset();
-#endif
-}
diff --git a/chrome/browser/chrome_browser_main_linux.h b/chrome/browser/chrome_browser_main_linux.h
index 3cc5476..37f35ce 100644
--- a/chrome/browser/chrome_browser_main_linux.h
+++ b/chrome/browser/chrome_browser_main_linux.h
@@ -8,15 +8,8 @@
#define CHROME_BROWSER_CHROME_BROWSER_MAIN_LINUX_H_
#include "base/compiler_specific.h"
-#include "base/memory/scoped_ptr.h"
#include "chrome/browser/chrome_browser_main_posix.h"
-#if !defined(OS_CHROMEOS)
-namespace chrome {
-class StorageMonitorLinux;
-}
-#endif
-
class ChromeBrowserMainPartsLinux : public ChromeBrowserMainPartsPosix {
public:
explicit ChromeBrowserMainPartsLinux(
@@ -26,13 +19,8 @@ class ChromeBrowserMainPartsLinux : public ChromeBrowserMainPartsPosix {
// ChromeBrowserMainParts overrides.
virtual void PreProfileInit() OVERRIDE;
virtual void PostProfileInit() OVERRIDE;
- virtual void PostMainMessageLoopRun() OVERRIDE;
private:
-#if !defined(OS_CHROMEOS)
- scoped_ptr<chrome::StorageMonitorLinux> storage_monitor_;
-#endif
-
DISALLOW_COPY_AND_ASSIGN(ChromeBrowserMainPartsLinux);
};
diff --git a/chrome/browser/chrome_browser_main_mac.h b/chrome/browser/chrome_browser_main_mac.h
index 52f6cf1..efe1bc7 100644
--- a/chrome/browser/chrome_browser_main_mac.h
+++ b/chrome/browser/chrome_browser_main_mac.h
@@ -5,13 +5,8 @@
#ifndef CHROME_BROWSER_CHROME_BROWSER_MAIN_MAC_H_
#define CHROME_BROWSER_CHROME_BROWSER_MAIN_MAC_H_
-#include "base/memory/scoped_ptr.h"
#include "chrome/browser/chrome_browser_main_posix.h"
-namespace chrome {
-class StorageMonitorMac;
-}
-
class ChromeBrowserMainPartsMac : public ChromeBrowserMainPartsPosix {
public:
explicit ChromeBrowserMainPartsMac(
@@ -21,7 +16,6 @@ class ChromeBrowserMainPartsMac : public ChromeBrowserMainPartsPosix {
// BrowserParts overrides.
virtual void PreEarlyInitialization() OVERRIDE;
virtual void PreMainMessageLoopStart() OVERRIDE;
- virtual void PreProfileInit() OVERRIDE;
virtual void PostProfileInit() OVERRIDE;
// Perform platform-specific work that needs to be done after the main event
@@ -29,8 +23,6 @@ class ChromeBrowserMainPartsMac : public ChromeBrowserMainPartsPosix {
static void DidEndMainMessageLoop();
private:
- scoped_ptr<chrome::StorageMonitorMac> storage_monitor_;
-
DISALLOW_COPY_AND_ASSIGN(ChromeBrowserMainPartsMac);
};
diff --git a/chrome/browser/chrome_browser_main_mac.mm b/chrome/browser/chrome_browser_main_mac.mm
index af5ee81..3d41c65 100644
--- a/chrome/browser/chrome_browser_main_mac.mm
+++ b/chrome/browser/chrome_browser_main_mac.mm
@@ -22,7 +22,6 @@
#include "chrome/browser/mac/keychain_reauthorize.h"
#import "chrome/browser/mac/keystone_glue.h"
#include "chrome/browser/metrics/metrics_service.h"
-#include "chrome/browser/storage_monitor/storage_monitor_mac.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_switches.h"
#include "content/public/common/main_function_params.h"
@@ -265,12 +264,6 @@ void ChromeBrowserMainPartsMac::PreMainMessageLoopStart() {
setObject:@"NO" forKey:@"NSTreatUnknownArgumentsAsOpen"];
}
-void ChromeBrowserMainPartsMac::PreProfileInit() {
- storage_monitor_.reset(new chrome::StorageMonitorMac());
-
- ChromeBrowserMainPartsPosix::PreProfileInit();
-}
-
void ChromeBrowserMainPartsMac::PostProfileInit() {
ChromeBrowserMainPartsPosix::PostProfileInit();
g_browser_process->metrics_service()->RecordBreakpadRegistration(
diff --git a/chrome/browser/chrome_browser_main_win.cc b/chrome/browser/chrome_browser_main_win.cc
index 8165f82..a2e3008 100644
--- a/chrome/browser/chrome_browser_main_win.cc
+++ b/chrome/browser/chrome_browser_main_win.cc
@@ -27,7 +27,6 @@
#include "chrome/browser/profiles/profile_info_cache.h"
#include "chrome/browser/profiles/profile_shortcut_manager.h"
#include "chrome/browser/shell_integration.h"
-#include "chrome/browser/storage_monitor/storage_monitor_win.h"
#include "chrome/browser/search_engines/template_url.h"
#include "chrome/browser/search_engines/template_url_prepopulate_data.h"
#include "chrome/browser/search_engines/template_url_service.h"
@@ -230,12 +229,6 @@ void ChromeBrowserMainPartsWin::PostMainMessageLoopRun() {
ChromeBrowserMainParts::PostMainMessageLoopRun();
}
-void ChromeBrowserMainPartsWin::PreProfileInit() {
- storage_monitor_.reset(chrome::StorageMonitorWin::Create());
-
- ChromeBrowserMainParts::PreProfileInit();
-}
-
void ChromeBrowserMainPartsWin::ShowMissingLocaleMessageBox() {
ui::MessageBox(NULL, ASCIIToUTF16(chrome_browser::kMissingLocaleDataMessage),
ASCIIToUTF16(chrome_browser::kMissingLocaleDataTitle),
diff --git a/chrome/browser/chrome_browser_main_win.h b/chrome/browser/chrome_browser_main_win.h
index 6da509e..496d234 100644
--- a/chrome/browser/chrome_browser_main_win.h
+++ b/chrome/browser/chrome_browser_main_win.h
@@ -7,16 +7,10 @@
#ifndef CHROME_BROWSER_CHROME_BROWSER_MAIN_WIN_H_
#define CHROME_BROWSER_CHROME_BROWSER_MAIN_WIN_H_
-#include "base/memory/scoped_ptr.h"
#include "chrome/browser/chrome_browser_main.h"
class CommandLine;
-namespace chrome {
-class StorageMonitorWin;
-} // namespace chrome
-
-
// Handle uninstallation when given the appropriate the command-line switch.
// If |chrome_still_running| is true a modal dialog will be shown asking the
// user to close the other chrome instance.
@@ -34,7 +28,6 @@ class ChromeBrowserMainPartsWin : public ChromeBrowserMainParts {
virtual void PreMainMessageLoopStart() OVERRIDE;
virtual int PreCreateThreads() OVERRIDE;
virtual void PostMainMessageLoopRun() OVERRIDE;
- virtual void PreProfileInit() OVERRIDE;
// ChromeBrowserMainParts overrides.
virtual void ShowMissingLocaleMessageBox() OVERRIDE;
@@ -68,8 +61,6 @@ class ChromeBrowserMainPartsWin : public ChromeBrowserMainParts {
static void SetupInstallerUtilStrings();
private:
- scoped_ptr<chrome::StorageMonitorWin> storage_monitor_;
-
DISALLOW_COPY_AND_ASSIGN(ChromeBrowserMainPartsWin);
};
diff --git a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
index f31caa7..8b88552 100644
--- a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
+++ b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
@@ -84,7 +84,6 @@
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/rlz/rlz.h"
-#include "chrome/browser/storage_monitor/storage_monitor_chromeos.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/chrome_version_info.h"
@@ -555,8 +554,6 @@ void ChromeBrowserMainPartsChromeos::PreProfileInit() {
base::Bind(&ChromeOSVersionCallback),
&tracker_);
- storage_monitor_.reset(new StorageMonitorCros());
-
// Make sure that wallpaper boot transition and other delays in OOBE
// are disabled for tests and kiosk app launch by default.
// Individual tests may enable them if they want.
@@ -801,7 +798,6 @@ void ChromeBrowserMainPartsChromeos::PostMainMessageLoopRun() {
power_button_observer_.reset();
screensaver_controller_.reset();
idle_action_warning_observer_.reset();
- storage_monitor_.reset();
// Delete ContactManager while |g_browser_process| is still alive.
contact_manager_.reset();
diff --git a/chrome/browser/chromeos/chrome_browser_main_chromeos.h b/chrome/browser/chromeos/chrome_browser_main_chromeos.h
index f1073b0..df86349 100644
--- a/chrome/browser/chromeos/chrome_browser_main_chromeos.h
+++ b/chrome/browser/chromeos/chrome_browser_main_chromeos.h
@@ -31,7 +31,6 @@ class ResumeObserver;
class ScreenLockObserver;
class ScreensaverController;
class SessionManagerObserver;
-class StorageMonitorCros;
class SuspendObserver;
class SwapMetrics;
class UserActivityNotifier;
@@ -83,7 +82,6 @@ class ChromeBrowserMainPartsChromeos : public ChromeBrowserMainPartsLinux {
scoped_ptr<content::PowerSaveBlocker> retail_mode_power_save_blocker_;
scoped_ptr<UserActivityNotifier> user_activity_notifier_;
scoped_ptr<VideoActivityNotifier> video_activity_notifier_;
- scoped_ptr<StorageMonitorCros> storage_monitor_;
scoped_ptr<IdleActionWarningObserver> idle_action_warning_observer_;
scoped_ptr<SwapMetrics> swap_metrics_;
diff --git a/chrome/browser/extensions/api/media_galleries_private/media_galleries_eject_apitest.cc b/chrome/browser/extensions/api/media_galleries_private/media_galleries_eject_apitest.cc
index 32055eb..ba8407e 100644
--- a/chrome/browser/extensions/api/media_galleries_private/media_galleries_eject_apitest.cc
+++ b/chrome/browser/extensions/api/media_galleries_private/media_galleries_eject_apitest.cc
@@ -53,7 +53,9 @@ base::FilePath::CharType kDevicePath[] = FILE_PATH_LITERAL("/qux");
class MediaGalleriesPrivateEjectApiTest : public ExtensionApiTest {
public:
- MediaGalleriesPrivateEjectApiTest() : device_id_(GetDeviceId()) {}
+ MediaGalleriesPrivateEjectApiTest()
+ : device_id_(GetDeviceId()),
+ monitor_(NULL) {}
virtual ~MediaGalleriesPrivateEjectApiTest() {}
protected:
@@ -64,6 +66,11 @@ class MediaGalleriesPrivateEjectApiTest : public ExtensionApiTest {
kTestExtensionId);
}
+ virtual void SetUpOnMainThread() OVERRIDE {
+ monitor_ = chrome::test::TestStorageMonitor::CreateForBrowserTests();
+ ExtensionApiTest::SetUpOnMainThread();
+ }
+
content::RenderViewHost* GetHost() {
const extensions::Extension* extension =
LoadExtension(test_data_dir_.AppendASCII(kTestExtensionPath));
@@ -103,6 +110,8 @@ class MediaGalleriesPrivateEjectApiTest : public ExtensionApiTest {
protected:
const std::string device_id_;
+ chrome::test::TestStorageMonitor* monitor_;
+
private:
DISALLOW_COPY_AND_ASSIGN(MediaGalleriesPrivateEjectApiTest);
};
@@ -113,11 +122,6 @@ class MediaGalleriesPrivateEjectApiTest : public ExtensionApiTest {
///////////////////////////////////////////////////////////////////////////////
IN_PROC_BROWSER_TEST_F(MediaGalleriesPrivateEjectApiTest, EjectTest) {
- scoped_ptr<chrome::test::TestStorageMonitor> monitor(
- chrome::test::TestStorageMonitor::CreateForBrowserTests());
- monitor->Init();
- monitor->MarkInitialized();
-
content::RenderViewHost* host = GetHost();
ExecuteCmdAndCheckReply(host, kAddAttachListenerCmd, kAddAttachListenerOk);
@@ -130,18 +134,13 @@ IN_PROC_BROWSER_TEST_F(MediaGalleriesPrivateEjectApiTest, EjectTest) {
EXPECT_TRUE(attach_finished_listener.WaitUntilSatisfied());
ExecuteCmdAndCheckReply(host, kEjectTestCmd, kEjectListenerOk);
- EXPECT_EQ(device_id_, monitor->ejected_device());
+ EXPECT_EQ(device_id_, monitor_->ejected_device());
Detach();
}
IN_PROC_BROWSER_TEST_F(MediaGalleriesPrivateEjectApiTest, EjectBadDeviceTest) {
- scoped_ptr<chrome::test::TestStorageMonitor> monitor(
- chrome::test::TestStorageMonitor::CreateForBrowserTests());
- monitor->Init();
- monitor->MarkInitialized();
-
ExecuteCmdAndCheckReply(GetHost(), kEjectFailTestCmd, kEjectFailListenerOk);
- EXPECT_EQ("", monitor->ejected_device());
+ EXPECT_EQ("", monitor_->ejected_device());
}
diff --git a/chrome/browser/extensions/api/media_galleries_private/media_galleries_private_apitest.cc b/chrome/browser/extensions/api/media_galleries_private/media_galleries_private_apitest.cc
index 45737e5..df662f0 100644
--- a/chrome/browser/extensions/api/media_galleries_private/media_galleries_private_apitest.cc
+++ b/chrome/browser/extensions/api/media_galleries_private/media_galleries_private_apitest.cc
@@ -108,12 +108,8 @@ class MediaGalleriesPrivateApiTest : public ExtensionApiTest {
};
IN_PROC_BROWSER_TEST_F(MediaGalleriesPrivateApiTest, DeviceAttachDetachEvents) {
- scoped_ptr<chrome::test::TestStorageMonitor> monitor(
- chrome::test::TestStorageMonitor::CreateForBrowserTests());
- monitor->Init();
- monitor->MarkInitialized();
-
// Setup.
+ chrome::test::TestStorageMonitor::SyncInitialize();
const extensions::Extension* extension =
LoadExtension(test_data_dir_.AppendASCII(kTestExtensionPath));
ASSERT_TRUE(extension);
diff --git a/chrome/browser/extensions/api/system_info_storage/system_info_storage_apitest.cc b/chrome/browser/extensions/api/system_info_storage/system_info_storage_apitest.cc
index f05dc880..671f628 100644
--- a/chrome/browser/extensions/api/system_info_storage/system_info_storage_apitest.cc
+++ b/chrome/browser/extensions/api/system_info_storage/system_info_storage_apitest.cc
@@ -11,14 +11,12 @@
#include "chrome/browser/extensions/extension_test_message_listener.h"
#include "chrome/browser/storage_monitor/storage_info.h"
#include "chrome/browser/storage_monitor/storage_monitor.h"
-#include "chrome/browser/storage_monitor/test_storage_monitor.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/test/base/ui_test_utils.h"
namespace {
using chrome::StorageMonitor;
-using chrome::test::TestStorageMonitor;
using extensions::api::experimental_system_info_storage::ParseStorageUnitType;
using extensions::api::experimental_system_info_storage::StorageUnitInfo;
using extensions::StorageInfoProvider;
@@ -87,9 +85,6 @@ IN_PROC_BROWSER_TEST_F(SystemInfoStorageApiTest, Storage) {
}
IN_PROC_BROWSER_TEST_F(SystemInfoStorageApiTest, StorageAttachment) {
- scoped_ptr<TestStorageMonitor> monitor(
- TestStorageMonitor::CreateForBrowserTests());
-
TestStorageInfoProvider* provider =
new TestStorageInfoProvider(kRemovableStorageData,
arraysize(kRemovableStorageData));
diff --git a/chrome/browser/extensions/api/system_info_storage/system_info_storage_eject_apitest.cc b/chrome/browser/extensions/api/system_info_storage/system_info_storage_eject_apitest.cc
index ba51993..7f66a00 100644
--- a/chrome/browser/extensions/api/system_info_storage/system_info_storage_eject_apitest.cc
+++ b/chrome/browser/extensions/api/system_info_storage/system_info_storage_eject_apitest.cc
@@ -35,7 +35,7 @@ struct TestStorageUnitInfo kRemovableStorageData[] = {
class SystemInfoStorageEjectApiTest : public ExtensionApiTest {
public:
- SystemInfoStorageEjectApiTest() {}
+ SystemInfoStorageEjectApiTest() : monitor_(NULL) {}
virtual ~SystemInfoStorageEjectApiTest() {}
protected:
@@ -45,6 +45,11 @@ class SystemInfoStorageEjectApiTest : public ExtensionApiTest {
command_line->AppendSwitch(switches::kEnableExperimentalExtensionApis);
}
+ virtual void SetUpOnMainThread() OVERRIDE {
+ monitor_ = chrome::test::TestStorageMonitor::CreateForBrowserTests();
+ ExtensionApiTest::SetUpOnMainThread();
+ }
+
content::RenderViewHost* GetHost() {
const extensions::Extension* extension =
LoadExtension(test_data_dir_.AppendASCII("systeminfo/storage_eject"));
@@ -75,17 +80,15 @@ class SystemInfoStorageEjectApiTest : public ExtensionApiTest {
content::RunAllPendingInMessageLoop();
}
+ protected:
+ chrome::test::TestStorageMonitor* monitor_;
+
private:
DISALLOW_COPY_AND_ASSIGN(SystemInfoStorageEjectApiTest);
};
IN_PROC_BROWSER_TEST_F(SystemInfoStorageEjectApiTest, EjectTest) {
- scoped_ptr<chrome::test::TestStorageMonitor> monitor(
- chrome::test::TestStorageMonitor::CreateForBrowserTests());
- monitor->Init();
- monitor->MarkInitialized();
-
TestStorageInfoProvider* provider =
new TestStorageInfoProvider(kRemovableStorageData,
arraysize(kRemovableStorageData));
@@ -104,17 +107,12 @@ IN_PROC_BROWSER_TEST_F(SystemInfoStorageEjectApiTest, EjectTest) {
EXPECT_TRUE(attach_finished_listener.WaitUntilSatisfied());
ExecuteCmdAndCheckReply(host, "ejectTest()", "eject_ok");
- EXPECT_EQ(kRemovableStorageData[0].device_id, monitor->ejected_device());
+ EXPECT_EQ(kRemovableStorageData[0].device_id, monitor_->ejected_device());
Detach();
}
IN_PROC_BROWSER_TEST_F(SystemInfoStorageEjectApiTest, EjectBadDeviceTest) {
- scoped_ptr<chrome::test::TestStorageMonitor> monitor(
- chrome::test::TestStorageMonitor::CreateForBrowserTests());
- monitor->Init();
- monitor->MarkInitialized();
-
TestStorageInfoProvider* provider =
new TestStorageInfoProvider(kRemovableStorageData,
arraysize(kRemovableStorageData));
@@ -122,5 +120,5 @@ IN_PROC_BROWSER_TEST_F(SystemInfoStorageEjectApiTest, EjectBadDeviceTest) {
ExecuteCmdAndCheckReply(GetHost(), "ejectFailTest()", "eject_no_such_device");
- EXPECT_EQ("", monitor->ejected_device());
+ EXPECT_EQ("", monitor_->ejected_device());
}
diff --git a/chrome/browser/media_galleries/mac/mtp_device_delegate_impl_mac_unittest.mm b/chrome/browser/media_galleries/mac/mtp_device_delegate_impl_mac_unittest.mm
index ec0f4fed..3543759 100644
--- a/chrome/browser/media_galleries/mac/mtp_device_delegate_impl_mac_unittest.mm
+++ b/chrome/browser/media_galleries/mac/mtp_device_delegate_impl_mac_unittest.mm
@@ -184,7 +184,9 @@ class MTPDeviceDelegateImplMacTest : public testing::Test {
content::BrowserThread::IO));
ASSERT_TRUE(io_thread_->Start());
- manager_.SetNotifications(monitor_.receiver());
+ chrome::test::TestStorageMonitor* monitor =
+ chrome::test::TestStorageMonitor::CreateAndInstall();
+ manager_.SetNotifications(monitor->receiver());
camera_ = [MockMTPICCameraDevice alloc];
id<ICDeviceBrowserDelegate> delegate = manager_.device_browser();
@@ -304,7 +306,6 @@ class MTPDeviceDelegateImplMacTest : public testing::Test {
scoped_ptr<content::TestBrowserThread> file_thread_;
scoped_ptr<content::TestBrowserThread> io_thread_;
base::ScopedTempDir temp_dir_;
- chrome::test::TestStorageMonitor monitor_;
chrome::ImageCaptureDeviceManager manager_;
MockMTPICCameraDevice* camera_;
diff --git a/chrome/browser/media_galleries/win/mtp_device_delegate_impl_win_unittest.cc b/chrome/browser/media_galleries/win/mtp_device_delegate_impl_win_unittest.cc
index 8416947..93fd983 100644
--- a/chrome/browser/media_galleries/win/mtp_device_delegate_impl_win_unittest.cc
+++ b/chrome/browser/media_galleries/win/mtp_device_delegate_impl_win_unittest.cc
@@ -18,9 +18,11 @@
#include "chrome/browser/storage_monitor/storage_info.h"
#include "chrome/browser/storage_monitor/storage_monitor.h"
#include "chrome/browser/storage_monitor/test_portable_device_watcher_win.h"
+#include "chrome/browser/storage_monitor/test_storage_monitor.h"
#include "chrome/browser/storage_monitor/test_storage_monitor_win.h"
#include "chrome/browser/storage_monitor/test_volume_mount_watcher_win.h"
#include "chrome/test/base/chrome_render_view_host_test_harness.h"
+#include "chrome/test/base/testing_browser_process.h"
#include "chrome/test/base/testing_profile.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/web_contents.h"
@@ -60,8 +62,8 @@ class MTPDeviceDelegateImplWinTest : public ChromeRenderViewHostTestHarness {
bool removable,
bool media_device);
- // Note: need to make this weak ptr once ownership moves to g_browser_process
- scoped_ptr<test::TestStorageMonitorWin> monitor_;
+ // Pointer to the storage monitor. Owned by TestingBrowserProcess.
+ test::TestStorageMonitorWin* monitor_;
scoped_refptr<extensions::Extension> extension_;
EnsureMediaDirectoriesExists media_directories_;
@@ -69,13 +71,21 @@ class MTPDeviceDelegateImplWinTest : public ChromeRenderViewHostTestHarness {
void MTPDeviceDelegateImplWinTest::SetUp() {
ChromeRenderViewHostTestHarness::SetUp();
+
+ test::TestStorageMonitor::RemoveSingleton();
test::TestPortableDeviceWatcherWin* portable_device_watcher =
new test::TestPortableDeviceWatcherWin;
test::TestVolumeMountWatcherWin* mount_watcher =
new test::TestVolumeMountWatcherWin;
portable_device_watcher->set_use_dummy_mtp_storage_info(true);
- monitor_.reset(new test::TestStorageMonitorWin(
- mount_watcher, portable_device_watcher));
+ scoped_ptr<test::TestStorageMonitorWin> monitor(
+ new test::TestStorageMonitorWin(
+ mount_watcher, portable_device_watcher));
+ TestingBrowserProcess* browser_process = TestingBrowserProcess::GetGlobal();
+ DCHECK(browser_process);
+ monitor_ = monitor.get();
+ browser_process->SetStorageMonitor(monitor.Pass());
+
base::RunLoop runloop;
monitor_->EnsureInitialized(runloop.QuitClosure());
runloop.Run();
@@ -93,7 +103,9 @@ void MTPDeviceDelegateImplWinTest::SetUp() {
}
void MTPDeviceDelegateImplWinTest::TearDown() {
- monitor_.reset();
+ // Windows storage monitor must be destroyed on the same thread
+ // as construction.
+ test::TestStorageMonitor::RemoveSingleton();
ChromeRenderViewHostTestHarness::TearDown();
}
diff --git a/chrome/browser/storage_monitor/image_capture_device_manager_unittest.mm b/chrome/browser/storage_monitor/image_capture_device_manager_unittest.mm
index d6be33d..a259ef17 100644
--- a/chrome/browser/storage_monitor/image_capture_device_manager_unittest.mm
+++ b/chrome/browser/storage_monitor/image_capture_device_manager_unittest.mm
@@ -15,6 +15,7 @@
#include "chrome/browser/storage_monitor/image_capture_device.h"
#include "chrome/browser/storage_monitor/image_capture_device_manager.h"
#include "chrome/browser/storage_monitor/test_storage_monitor.h"
+#include "chrome/test/base/testing_browser_process.h"
#include "content/public/test/test_browser_thread.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -257,6 +258,8 @@ class ImageCaptureDeviceManagerTest : public testing::Test {
virtual void SetUp() OVERRIDE {
ui_thread_.reset(new content::TestBrowserThread(
content::BrowserThread::UI, &message_loop_));
+
+ monitor_ = chrome::test::TestStorageMonitor::CreateAndInstall();
}
MockICCameraDevice* AttachDevice(
@@ -278,28 +281,29 @@ class ImageCaptureDeviceManagerTest : public testing::Test {
protected:
base::MessageLoopForUI message_loop_;
scoped_ptr<content::TestBrowserThread> ui_thread_;
- chrome::test::TestStorageMonitor monitor_;
+
+ chrome::test::TestStorageMonitor* monitor_;
TestCameraListener listener_;
};
TEST_F(ImageCaptureDeviceManagerTest, TestAttachDetach) {
chrome::ImageCaptureDeviceManager manager;
- manager.SetNotifications(monitor_.receiver());
+ manager.SetNotifications(monitor_->receiver());
ICCameraDevice* device = AttachDevice(&manager);
std::vector<chrome::StorageInfo> devices =
- monitor_.GetAllAvailableStorages();
+ monitor_->GetAllAvailableStorages();
ASSERT_EQ(1U, devices.size());
EXPECT_EQ(std::string("ic:") + kDeviceId, devices[0].device_id());
DetachDevice(&manager, device);
- devices = monitor_.GetAllAvailableStorages();
+ devices = monitor_->GetAllAvailableStorages();
ASSERT_EQ(0U, devices.size());
};
TEST_F(ImageCaptureDeviceManagerTest, OpenCamera) {
chrome::ImageCaptureDeviceManager manager;
- manager.SetNotifications(monitor_.receiver());
+ manager.SetNotifications(monitor_->receiver());
ICCameraDevice* device = AttachDevice(&manager);
EXPECT_FALSE(chrome::ImageCaptureDeviceManager::deviceForUUID(
@@ -335,7 +339,7 @@ TEST_F(ImageCaptureDeviceManagerTest, OpenCamera) {
TEST_F(ImageCaptureDeviceManagerTest, RemoveCamera) {
chrome::ImageCaptureDeviceManager manager;
- manager.SetNotifications(monitor_.receiver());
+ manager.SetNotifications(monitor_->receiver());
ICCameraDevice* device = AttachDevice(&manager);
base::scoped_nsobject<ImageCaptureDevice> camera(
@@ -354,7 +358,7 @@ TEST_F(ImageCaptureDeviceManagerTest, DownloadFile) {
content::BrowserThread::FILE, &message_loop_));
chrome::ImageCaptureDeviceManager manager;
- manager.SetNotifications(monitor_.receiver());
+ manager.SetNotifications(monitor_->receiver());
MockICCameraDevice* device = AttachDevice(&manager);
base::scoped_nsobject<ImageCaptureDevice> camera(
@@ -410,7 +414,7 @@ TEST_F(ImageCaptureDeviceManagerTest, TestSubdirectories) {
content::BrowserThread::FILE, &message_loop_));
chrome::ImageCaptureDeviceManager manager;
- manager.SetNotifications(monitor_.receiver());
+ manager.SetNotifications(monitor_->receiver());
MockICCameraDevice* device = AttachDevice(&manager);
base::scoped_nsobject<ImageCaptureDevice> camera(
diff --git a/chrome/browser/storage_monitor/media_storage_util_unittest.cc b/chrome/browser/storage_monitor/media_storage_util_unittest.cc
index 12fd336..4ed217e 100644
--- a/chrome/browser/storage_monitor/media_storage_util_unittest.cc
+++ b/chrome/browser/storage_monitor/media_storage_util_unittest.cc
@@ -13,6 +13,7 @@
#include "chrome/browser/storage_monitor/removable_device_constants.h"
#include "chrome/browser/storage_monitor/storage_monitor.h"
#include "chrome/browser/storage_monitor/test_storage_monitor.h"
+#include "chrome/test/base/testing_browser_process.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/test/test_browser_thread.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -47,7 +48,7 @@ class MediaStorageUtilTest : public testing::Test {
const string16& name,
const base::FilePath::StringType& location) {
StorageInfo info(id, name, location, string16(), string16(), string16(), 0);
- monitor_.receiver()->ProcessAttach(info);
+ monitor_->receiver()->ProcessAttach(info);
}
protected:
@@ -62,11 +63,12 @@ class MediaStorageUtilTest : public testing::Test {
}
virtual void SetUp() OVERRIDE {
+ monitor_ = chrome::test::TestStorageMonitor::CreateAndInstall();
ASSERT_TRUE(scoped_temp_dir_.CreateUniqueTempDir());
file_thread_.Start();
}
- virtual void TearDown() {
+ virtual void TearDown() OVERRIDE {
WaitForFileThread();
}
@@ -86,7 +88,7 @@ class MediaStorageUtilTest : public testing::Test {
base::MessageLoop message_loop_;
private:
- chrome::test::TestStorageMonitor monitor_;
+ chrome::test::TestStorageMonitor* monitor_;
content::TestBrowserThread ui_thread_;
content::TestBrowserThread file_thread_;
base::ScopedTempDir scoped_temp_dir_;
diff --git a/chrome/browser/storage_monitor/media_transfer_protocol_device_observer_linux_unittest.cc b/chrome/browser/storage_monitor/media_transfer_protocol_device_observer_linux_unittest.cc
index 4a1827b..c895cee 100644
--- a/chrome/browser/storage_monitor/media_transfer_protocol_device_observer_linux_unittest.cc
+++ b/chrome/browser/storage_monitor/media_transfer_protocol_device_observer_linux_unittest.cc
@@ -12,10 +12,12 @@
#include "base/message_loop/message_loop.h"
#include "base/run_loop.h"
#include "base/strings/utf_string_conversions.h"
+#include "chrome/browser/browser_process.h"
#include "chrome/browser/storage_monitor/mock_removable_storage_observer.h"
#include "chrome/browser/storage_monitor/storage_info.h"
#include "chrome/browser/storage_monitor/storage_monitor.h"
#include "chrome/browser/storage_monitor/test_storage_monitor.h"
+#include "chrome/test/base/testing_browser_process.h"
#include "content/public/test/test_browser_thread.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -92,13 +94,16 @@ class MediaTransferProtocolDeviceObserverLinuxTest : public testing::Test {
protected:
virtual void SetUp() OVERRIDE {
mock_storage_observer_.reset(new MockRemovableStorageObserver);
+ chrome::test::TestStorageMonitor* monitor =
+ chrome::test::TestStorageMonitor::CreateAndInstall();
mtp_device_observer_.reset(
- new TestMediaTransferProtocolDeviceObserverLinux(monitor_.receiver()));
- monitor_.AddObserver(mock_storage_observer_.get());
+ new TestMediaTransferProtocolDeviceObserverLinux(monitor->receiver()));
+ monitor->AddObserver(mock_storage_observer_.get());
}
virtual void TearDown() OVERRIDE {
- monitor_.RemoveObserver(mock_storage_observer_.get());
+ StorageMonitor* monitor = g_browser_process->storage_monitor();
+ monitor->RemoveObserver(mock_storage_observer_.get());
mtp_device_observer_.reset();
}
@@ -115,7 +120,6 @@ class MediaTransferProtocolDeviceObserverLinuxTest : public testing::Test {
base::MessageLoop message_loop_;
content::TestBrowserThread file_thread_;
- chrome::test::TestStorageMonitor monitor_;
scoped_ptr<TestMediaTransferProtocolDeviceObserverLinux> mtp_device_observer_;
scoped_ptr<MockRemovableStorageObserver> mock_storage_observer_;
diff --git a/chrome/browser/storage_monitor/storage_monitor.cc b/chrome/browser/storage_monitor/storage_monitor.cc
index a771fd5..10d043e6 100644
--- a/chrome/browser/storage_monitor/storage_monitor.cc
+++ b/chrome/browser/storage_monitor/storage_monitor.cc
@@ -6,13 +6,12 @@
#include "base/stl_util.h"
#include "base/strings/utf_string_conversions.h"
+#include "chrome/browser/browser_process.h"
#include "chrome/browser/storage_monitor/removable_storage_observer.h"
#include "chrome/browser/storage_monitor/transient_device_ids.h"
namespace chrome {
-static StorageMonitor* g_storage_monitor = NULL;
-
StorageMonitor::Receiver::~Receiver() {
}
@@ -46,7 +45,10 @@ void StorageMonitor::ReceiverImpl::MarkInitialized() {
}
StorageMonitor* StorageMonitor::GetInstance() {
- return g_storage_monitor;
+ if (g_browser_process)
+ return g_browser_process->storage_monitor();
+
+ return NULL;
}
std::vector<StorageInfo> StorageMonitor::GetAllAvailableStorages() const {
@@ -117,18 +119,9 @@ StorageMonitor::StorageMonitor()
initialized_(false),
transient_device_ids_(new TransientDeviceIds) {
receiver_.reset(new ReceiverImpl(this));
-
- DCHECK(!g_storage_monitor);
- g_storage_monitor = this;
}
StorageMonitor::~StorageMonitor() {
- g_storage_monitor = NULL;
-}
-
-// static
-void StorageMonitor::RemoveSingletonForTesting() {
- g_storage_monitor = NULL;
}
StorageMonitor::Receiver* StorageMonitor::receiver() const {
diff --git a/chrome/browser/storage_monitor/storage_monitor.h b/chrome/browser/storage_monitor/storage_monitor.h
index 9258dd4..5c0cd96 100644
--- a/chrome/browser/storage_monitor/storage_monitor.h
+++ b/chrome/browser/storage_monitor/storage_monitor.h
@@ -37,8 +37,8 @@ class TransientDeviceIds;
// Base class for platform-specific instances watching for removable storage
// attachments/detachments.
-// Lifecycle contracts: This class is created by ChromeBrowserMain
-// implementations before the profile is initialized, so listeners can be
+// Lifecycle contracts: This class is created in the browser process
+// before the profile is initialized, so listeners can be
// created during profile construction. The platform-specific initialization,
// which can lead to calling registered listeners with notifications of
// attached volumes, are done lazily at first use through the async
@@ -70,10 +70,18 @@ class StorageMonitor {
EJECT_FAILURE
};
- // Returns a pointer to an object owned by the BrowserMainParts, with lifetime
- // somewhat shorter than a process Singleton.
+ // Returns a pointer to a newly created per-platform object with the
+ // StorageMonitor interface.
+ static StorageMonitor* Create();
+
+ // Returns a pointer to an object owned by BrowserProcess, with lifetime
+ // starting before main message loop start, and ending after main message loop
+ // shutdown. Called outside it's lifetime (or with no browser process),
+ // returns NULL.
static StorageMonitor* GetInstance();
+ virtual ~StorageMonitor();
+
// Ensures that the storage monitor is initialized. The provided callback, If
// non-null, will be called when initialization is complete. If initialization
// has already completed, this callback will be invoked within the calling
@@ -135,11 +143,6 @@ class StorageMonitor {
friend class ::SystemInfoStorageEjectApiTest;
StorageMonitor();
- virtual ~StorageMonitor();
-
- // Removes the existing singleton for testing.
- // (So that a new one can be created.)
- static void RemoveSingletonForTesting();
virtual Receiver* receiver() const;
diff --git a/chrome/browser/storage_monitor/storage_monitor_chromeos.cc b/chrome/browser/storage_monitor/storage_monitor_chromeos.cc
index c61f530..a871fa8 100644
--- a/chrome/browser/storage_monitor/storage_monitor_chromeos.cc
+++ b/chrome/browser/storage_monitor/storage_monitor_chromeos.cc
@@ -307,3 +307,11 @@ void StorageMonitorCros::AddMountedPath(
}
} // namespace chromeos
+
+namespace chrome {
+
+StorageMonitor* StorageMonitor::Create() {
+ return new chromeos::StorageMonitorCros();
+}
+
+} // namespace chrome
diff --git a/chrome/browser/storage_monitor/storage_monitor_chromeos_unittest.cc b/chrome/browser/storage_monitor/storage_monitor_chromeos_unittest.cc
index 67302fd..f972c87 100644
--- a/chrome/browser/storage_monitor/storage_monitor_chromeos_unittest.cc
+++ b/chrome/browser/storage_monitor/storage_monitor_chromeos_unittest.cc
@@ -16,6 +16,8 @@
#include "chrome/browser/storage_monitor/removable_device_constants.h"
#include "chrome/browser/storage_monitor/storage_info.h"
#include "chrome/browser/storage_monitor/test_media_transfer_protocol_manager_linux.h"
+#include "chrome/browser/storage_monitor/test_storage_monitor.h"
+#include "chrome/test/base/testing_browser_process.h"
#include "chromeos/disks/mock_disk_mount_manager.h"
#include "content/public/test/test_browser_thread.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -135,7 +137,7 @@ class StorageMonitorCrosTest : public testing::Test {
base::MessageLoop ui_loop_;
- scoped_ptr<TestStorageMonitorCros> monitor_;
+ TestStorageMonitorCros* monitor_;
// Owned by DiskMountManager.
disks::MockDiskMountManager* disk_mount_manager_mock_;
@@ -176,14 +178,20 @@ void StorageMonitorCrosTest::SetUp() {
mock_storage_observer_.reset(new chrome::MockRemovableStorageObserver);
// Initialize the test subject.
- monitor_.reset(new TestStorageMonitorCros());
+ chrome::test::TestStorageMonitor::RemoveSingleton();
+ monitor_ = new TestStorageMonitorCros();
+ scoped_ptr<chrome::StorageMonitor> pass_monitor(monitor_);
+ TestingBrowserProcess* browser_process = TestingBrowserProcess::GetGlobal();
+ DCHECK(browser_process);
+ browser_process->SetStorageMonitor(pass_monitor.Pass());
+
monitor_->Init();
monitor_->AddObserver(mock_storage_observer_.get());
}
void StorageMonitorCrosTest::TearDown() {
monitor_->RemoveObserver(mock_storage_observer_.get());
- monitor_.reset();
+ monitor_ = NULL;
disk_mount_manager_mock_ = NULL;
DiskMountManager::Shutdown();
diff --git a/chrome/browser/storage_monitor/storage_monitor_linux.cc b/chrome/browser/storage_monitor/storage_monitor_linux.cc
index 6435529..f2154edf 100644
--- a/chrome/browser/storage_monitor/storage_monitor_linux.cc
+++ b/chrome/browser/storage_monitor/storage_monitor_linux.cc
@@ -513,4 +513,9 @@ void StorageMonitorLinux::AddNewMount(const base::FilePath& mount_device,
receiver()->ProcessAttach(*storage_info);
}
+StorageMonitor* StorageMonitor::Create() {
+ const base::FilePath kDefaultMtabPath("/etc/mtab");
+ return new StorageMonitorLinux(kDefaultMtabPath);
+}
+
} // namespace chrome
diff --git a/chrome/browser/storage_monitor/storage_monitor_linux_unittest.cc b/chrome/browser/storage_monitor/storage_monitor_linux_unittest.cc
index 4c87e3d..1a19918 100644
--- a/chrome/browser/storage_monitor/storage_monitor_linux_unittest.cc
+++ b/chrome/browser/storage_monitor/storage_monitor_linux_unittest.cc
@@ -23,6 +23,8 @@
#include "chrome/browser/storage_monitor/storage_info.h"
#include "chrome/browser/storage_monitor/storage_monitor.h"
#include "chrome/browser/storage_monitor/test_media_transfer_protocol_manager_linux.h"
+#include "chrome/browser/storage_monitor/test_storage_monitor.h"
+#include "chrome/test/base/testing_browser_process.h"
#include "content/public/test/test_browser_thread.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -181,8 +183,13 @@ class StorageMonitorLinuxTest : public testing::Test {
arraysize(initial_test_data),
true /* overwrite */);
- // Initialize the test subject.
- monitor_.reset(new TestStorageMonitorLinux(mtab_file_, &message_loop_));
+ test::TestStorageMonitor::RemoveSingleton();
+ monitor_ = new TestStorageMonitorLinux(mtab_file_, &message_loop_);
+ scoped_ptr<StorageMonitor> pass_monitor(monitor_);
+ TestingBrowserProcess* browser_process = TestingBrowserProcess::GetGlobal();
+ DCHECK(browser_process);
+ browser_process->SetStorageMonitor(pass_monitor.Pass());
+
mock_storage_observer_.reset(new MockRemovableStorageObserver);
monitor_->AddObserver(mock_storage_observer_.get());
@@ -193,8 +200,10 @@ class StorageMonitorLinuxTest : public testing::Test {
virtual void TearDown() OVERRIDE {
base::RunLoop().RunUntilIdle();
monitor_->RemoveObserver(mock_storage_observer_.get());
- monitor_.reset();
base::RunLoop().RunUntilIdle();
+
+ // Linux storage monitor must be destroyed on the UI thread, so do it here.
+ test::TestStorageMonitor::RemoveSingleton();
}
// Append mtab entries from the |data| array of size |data_size| to the mtab
@@ -243,7 +252,7 @@ class StorageMonitorLinuxTest : public testing::Test {
}
StorageMonitor* notifier() {
- return monitor_.get();
+ return monitor_;
}
uint64 GetStorageSize(const base::FilePath& path) {
@@ -316,7 +325,7 @@ class StorageMonitorLinuxTest : public testing::Test {
// Path to the test mtab file.
base::FilePath mtab_file_;
- scoped_ptr<TestStorageMonitorLinux> monitor_;
+ TestStorageMonitorLinux* monitor_;
DISALLOW_COPY_AND_ASSIGN(StorageMonitorLinuxTest);
};
diff --git a/chrome/browser/storage_monitor/storage_monitor_mac.mm b/chrome/browser/storage_monitor/storage_monitor_mac.mm
index 346f958..f642864 100644
--- a/chrome/browser/storage_monitor/storage_monitor_mac.mm
+++ b/chrome/browser/storage_monitor/storage_monitor_mac.mm
@@ -369,4 +369,8 @@ bool StorageMonitorMac::FindDiskWithMountPoint(
return false;
}
+StorageMonitor* StorageMonitor::Create() {
+ return new StorageMonitorMac();
+}
+
} // namespace chrome
diff --git a/chrome/browser/storage_monitor/storage_monitor_mac_unittest.mm b/chrome/browser/storage_monitor/storage_monitor_mac_unittest.mm
index b8c584f..ec3f7ff 100644
--- a/chrome/browser/storage_monitor/storage_monitor_mac_unittest.mm
+++ b/chrome/browser/storage_monitor/storage_monitor_mac_unittest.mm
@@ -14,6 +14,8 @@
#include "chrome/browser/storage_monitor/mock_removable_storage_observer.h"
#include "chrome/browser/storage_monitor/removable_device_constants.h"
#include "chrome/browser/storage_monitor/storage_info.h"
+#include "chrome/browser/storage_monitor/test_storage_monitor.h"
+#include "chrome/test/base/testing_browser_process.h"
#include "content/public/test/test_browser_thread.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -44,7 +46,12 @@ class StorageMonitorMacTest : public testing::Test {
}
virtual void SetUp() OVERRIDE {
- monitor_.reset(new StorageMonitorMac);
+ test::TestStorageMonitor::RemoveSingleton();
+ monitor_ = new StorageMonitorMac;
+ scoped_ptr<StorageMonitor> pass_monitor(monitor_);
+ TestingBrowserProcess* browser_process = TestingBrowserProcess::GetGlobal();
+ DCHECK(browser_process);
+ browser_process->SetStorageMonitor(pass_monitor.Pass());
mock_storage_observer_.reset(new MockRemovableStorageObserver);
monitor_->AddObserver(mock_storage_observer_.get());
@@ -60,7 +67,7 @@ class StorageMonitorMacTest : public testing::Test {
void UpdateDisk(StorageInfo info, StorageMonitorMac::UpdateType update_type) {
content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE,
base::Bind(&StorageMonitorMac::UpdateDisk,
- base::Unretained(monitor_.get()),
+ base::Unretained(monitor_),
"dummy_bsd_name", info, update_type));
base::RunLoop().RunUntilIdle();
}
@@ -79,7 +86,7 @@ class StorageMonitorMacTest : public testing::Test {
std::string device_id_;
StorageInfo disk_info_;
- scoped_ptr<StorageMonitorMac> monitor_;
+ StorageMonitorMac* monitor_;
};
TEST_F(StorageMonitorMacTest, AddRemove) {
diff --git a/chrome/browser/storage_monitor/storage_monitor_unittest.cc b/chrome/browser/storage_monitor/storage_monitor_unittest.cc
index 50a3a4a..a98ec54 100644
--- a/chrome/browser/storage_monitor/storage_monitor_unittest.cc
+++ b/chrome/browser/storage_monitor/storage_monitor_unittest.cc
@@ -10,22 +10,31 @@
#include "chrome/browser/storage_monitor/test_storage_monitor.h"
#include "testing/gtest/include/gtest/gtest.h"
+namespace {
+
+void SetLatch(bool* called) {
+ *called = true;
+}
+
+} // namespace
+
namespace chrome {
TEST(StorageMonitorTest, TestInitialize) {
+ test::TestStorageMonitor::RemoveSingleton();
test::TestStorageMonitor monitor;
EXPECT_FALSE(monitor.init_called_);
- base::WaitableEvent event(false, false);
- monitor.EnsureInitialized(base::Bind(&base::WaitableEvent::Signal,
- base::Unretained(&event)));
+ bool initialized = false;
+ monitor.EnsureInitialized(base::Bind(&SetLatch, &initialized));
EXPECT_TRUE(monitor.init_called_);
- EXPECT_FALSE(event.IsSignaled());
+ EXPECT_FALSE(initialized);
monitor.MarkInitialized();
- EXPECT_TRUE(event.IsSignaled());
+ EXPECT_TRUE(initialized);
}
TEST(StorageMonitorTest, DeviceAttachDetachNotifications) {
+ test::TestStorageMonitor::RemoveSingleton();
base::MessageLoop message_loop;
const string16 kDeviceName = ASCIIToUTF16("media device");
const std::string kDeviceId1 = "dcim:UUID:FFF0-0001";
@@ -73,6 +82,7 @@ TEST(StorageMonitorTest, DeviceAttachDetachNotifications) {
}
TEST(StorageMonitorTest, GetAllAvailableStoragesEmpty) {
+ test::TestStorageMonitor::RemoveSingleton();
base::MessageLoop message_loop;
test::TestStorageMonitor monitor;
std::vector<StorageInfo> devices = monitor.GetAllAvailableStorages();
@@ -80,6 +90,7 @@ TEST(StorageMonitorTest, GetAllAvailableStoragesEmpty) {
}
TEST(StorageMonitorTest, GetAllAvailableStorageAttachDetach) {
+ test::TestStorageMonitor::RemoveSingleton();
base::MessageLoop message_loop;
test::TestStorageMonitor monitor;
const std::string kDeviceId1 = "dcim:UUID:FFF0-0042";
diff --git a/chrome/browser/storage_monitor/storage_monitor_win.cc b/chrome/browser/storage_monitor/storage_monitor_win.cc
index 4fcc8f6..beec36d 100644
--- a/chrome/browser/storage_monitor/storage_monitor_win.cc
+++ b/chrome/browser/storage_monitor/storage_monitor_win.cc
@@ -18,12 +18,6 @@ namespace chrome {
// StorageMonitorWin -------------------------------------------------------
-// static
-StorageMonitorWin* StorageMonitorWin::Create() {
- return new StorageMonitorWin(new VolumeMountWatcherWin(),
- new PortableDeviceWatcherWin());
-}
-
StorageMonitorWin::StorageMonitorWin(
VolumeMountWatcherWin* volume_mount_watcher,
PortableDeviceWatcherWin* portable_device_watcher)
@@ -167,4 +161,9 @@ void StorageMonitorWin::OnDeviceChange(UINT event_type, LPARAM data) {
portable_device_watcher_->OnWindowMessage(event_type, data);
}
+StorageMonitor* StorageMonitor::Create() {
+ return new StorageMonitorWin(new VolumeMountWatcherWin(),
+ new PortableDeviceWatcherWin());
+}
+
} // namespace chrome
diff --git a/chrome/browser/storage_monitor/storage_monitor_win.h b/chrome/browser/storage_monitor/storage_monitor_win.h
index 6472c0d..c036fbb 100644
--- a/chrome/browser/storage_monitor/storage_monitor_win.h
+++ b/chrome/browser/storage_monitor/storage_monitor_win.h
@@ -25,10 +25,6 @@ class VolumeMountWatcherWin;
class StorageMonitorWin : public StorageMonitor {
public:
- // Creates an instance of StorageMonitorWin. Should only be called by browser
- // start up code. Use GetInstance() instead.
- static StorageMonitorWin* Create();
-
virtual ~StorageMonitorWin();
// Must be called after the file thread is created.
@@ -49,10 +45,11 @@ class StorageMonitorWin : public StorageMonitor {
private:
class PortableDeviceNotifications;
friend class test::TestStorageMonitorWin;
+ friend StorageMonitor* StorageMonitor::Create();
// To support unit tests, this constructor takes |volume_mount_watcher| and
// |portable_device_watcher| objects. These params are either constructed in
- // unit tests or in StorageMonitorWin::Create() function.
+ // unit tests or in StorageMonitorWin Create() function.
StorageMonitorWin(VolumeMountWatcherWin* volume_mount_watcher,
PortableDeviceWatcherWin* portable_device_watcher);
diff --git a/chrome/browser/storage_monitor/storage_monitor_win_unittest.cc b/chrome/browser/storage_monitor/storage_monitor_win_unittest.cc
index 12a742b..c23cb34 100644
--- a/chrome/browser/storage_monitor/storage_monitor_win_unittest.cc
+++ b/chrome/browser/storage_monitor/storage_monitor_win_unittest.cc
@@ -19,9 +19,11 @@
#include "chrome/browser/storage_monitor/storage_info.h"
#include "chrome/browser/storage_monitor/storage_monitor_win.h"
#include "chrome/browser/storage_monitor/test_portable_device_watcher_win.h"
+#include "chrome/browser/storage_monitor/test_storage_monitor.h"
#include "chrome/browser/storage_monitor/test_storage_monitor_win.h"
#include "chrome/browser/storage_monitor/test_volume_mount_watcher_win.h"
#include "chrome/browser/storage_monitor/volume_mount_watcher_win.h"
+#include "chrome/test/base/testing_browser_process.h"
#include "content/public/test/test_browser_thread.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -63,7 +65,7 @@ class StorageMonitorWinTest : public testing::Test {
base::string16* pnp_device_id,
base::string16* storage_object_id);
- scoped_ptr<TestStorageMonitorWin> monitor_;
+ TestStorageMonitorWin* monitor_;
// Weak pointer; owned by the device notifications class.
TestVolumeMountWatcherWin* volume_mount_watcher_;
@@ -86,9 +88,15 @@ StorageMonitorWinTest::~StorageMonitorWinTest() {
void StorageMonitorWinTest::SetUp() {
ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ test::TestStorageMonitor::RemoveSingleton();
volume_mount_watcher_ = new TestVolumeMountWatcherWin;
- monitor_.reset(new TestStorageMonitorWin(volume_mount_watcher_,
- new TestPortableDeviceWatcherWin));
+ monitor_ = new TestStorageMonitorWin(volume_mount_watcher_,
+ new TestPortableDeviceWatcherWin);
+ scoped_ptr<StorageMonitor> pass_monitor(monitor_);
+ TestingBrowserProcess* browser_process = TestingBrowserProcess::GetGlobal();
+ DCHECK(browser_process);
+ browser_process->SetStorageMonitor(pass_monitor.Pass());
+
monitor_->Init();
RunUntilIdle();
monitor_->AddObserver(&observer_);
@@ -98,11 +106,16 @@ void StorageMonitorWinTest::TearDown() {
RunUntilIdle();
monitor_->RemoveObserver(&observer_);
volume_mount_watcher_->ShutdownWorkerPool();
- monitor_.reset();
+ monitor_ = NULL;
+
+ // Windows storage monitor must be destroyed on the same thread
+ // as construction.
+ test::TestStorageMonitor::RemoveSingleton();
}
void StorageMonitorWinTest::PreAttachDevices() {
- monitor_.reset();
+ test::TestStorageMonitor::RemoveSingleton();
+ monitor_ = NULL;
volume_mount_watcher_ = new TestVolumeMountWatcherWin;
volume_mount_watcher_->SetAttachedDevicesFake();
@@ -117,8 +130,13 @@ void StorageMonitorWinTest::PreAttachDevices() {
expect_attach_calls++;
}
- monitor_.reset(new TestStorageMonitorWin(volume_mount_watcher_,
- new TestPortableDeviceWatcherWin));
+ monitor_ = new TestStorageMonitorWin(volume_mount_watcher_,
+ new TestPortableDeviceWatcherWin);
+ scoped_ptr<StorageMonitor> pass_monitor(monitor_);
+ TestingBrowserProcess* browser_process = TestingBrowserProcess::GetGlobal();
+ DCHECK(browser_process);
+ browser_process->SetStorageMonitor(pass_monitor.Pass());
+
monitor_->AddObserver(&observer_);
monitor_->Init();
diff --git a/chrome/browser/storage_monitor/test_storage_monitor.cc b/chrome/browser/storage_monitor/test_storage_monitor.cc
index e28ce2c..22c3f7d 100644
--- a/chrome/browser/storage_monitor/test_storage_monitor.cc
+++ b/chrome/browser/storage_monitor/test_storage_monitor.cc
@@ -4,7 +4,12 @@
#include "chrome/browser/storage_monitor/test_storage_monitor.h"
+#include "base/run_loop.h"
+#include "base/synchronization/waitable_event.h"
+#include "chrome/browser/browser_process.h"
+#include "chrome/browser/browser_process_impl.h"
#include "chrome/browser/storage_monitor/storage_info.h"
+#include "chrome/test/base/testing_browser_process.h"
#if defined(OS_LINUX)
#include "chrome/browser/storage_monitor/test_media_transfer_protocol_manager_linux.h"
@@ -25,10 +30,52 @@ TestStorageMonitor::TestStorageMonitor()
TestStorageMonitor::~TestStorageMonitor() {}
-TestStorageMonitor*
-TestStorageMonitor::CreateForBrowserTests() {
- StorageMonitor::RemoveSingletonForTesting();
- return new TestStorageMonitor();
+TestStorageMonitor* TestStorageMonitor::CreateAndInstall() {
+ RemoveSingleton();
+ TestStorageMonitor* monitor = new TestStorageMonitor();
+ scoped_ptr<StorageMonitor> pass_monitor(monitor);
+ monitor->Init();
+ monitor->MarkInitialized();
+ TestingBrowserProcess* browser_process = TestingBrowserProcess::GetGlobal();
+ if (browser_process) {
+ browser_process->SetStorageMonitor(pass_monitor.Pass());
+ return monitor;
+ }
+ return NULL;
+}
+
+TestStorageMonitor* TestStorageMonitor::CreateForBrowserTests() {
+ TestStorageMonitor* return_monitor = new TestStorageMonitor();
+ return_monitor->Init();
+ return_monitor->MarkInitialized();
+
+ scoped_ptr<StorageMonitor> monitor(return_monitor);
+ BrowserProcessImpl* browser_process =
+ static_cast<BrowserProcessImpl*>(g_browser_process);
+ DCHECK(browser_process);
+ browser_process->set_storage_monitor_for_test(monitor.Pass());
+ return return_monitor;
+}
+
+void TestStorageMonitor::RemoveSingleton() {
+ TestingBrowserProcess* browser_process = TestingBrowserProcess::GetGlobal();
+ if (browser_process)
+ browser_process->SetStorageMonitor(scoped_ptr<StorageMonitor>());
+}
+
+// static
+void TestStorageMonitor::SyncInitialize() {
+ StorageMonitor* monitor = g_browser_process->storage_monitor();
+ if (monitor->IsInitialized())
+ return;
+
+ base::WaitableEvent event(true, false);
+ monitor->EnsureInitialized(base::Bind(&base::WaitableEvent::Signal,
+ base::Unretained(&event)));
+ while (!event.IsSignaled()) {
+ base::RunLoop().RunUntilIdle();
+ }
+ DCHECK(monitor->IsInitialized());
}
void TestStorageMonitor::Init() {
diff --git a/chrome/browser/storage_monitor/test_storage_monitor.h b/chrome/browser/storage_monitor/test_storage_monitor.h
index 6408e66..26ff133 100644
--- a/chrome/browser/storage_monitor/test_storage_monitor.h
+++ b/chrome/browser/storage_monitor/test_storage_monitor.h
@@ -21,10 +21,21 @@ class TestStorageMonitor : public chrome::StorageMonitor {
void MarkInitialized();
- // Will create a new testing implementation for browser tests,
- // taking care to deal with the existing singleton correctly.
+ // Create and initialize a new TestStorageMonitor and install it
+ // in the TestingBrowserProcess.
+ static TestStorageMonitor* CreateAndInstall();
+
+ // Create and initialize a new TestStorageMonitor, and install it
+ // in the BrowserProcessImpl. (Browser tests use the production browser
+ // process implementation.)
static TestStorageMonitor* CreateForBrowserTests();
+ // Remove the singleton StorageMonitor from the TestingBrowserProcess.
+ static void RemoveSingleton();
+
+ // Synchronously initialize the current storage monitor.
+ static void SyncInitialize();
+
virtual bool GetStorageInfoForPath(
const base::FilePath& path,
StorageInfo* device_info) const OVERRIDE;
diff --git a/chrome/browser/ui/cocoa/extensions/media_galleries_dialog_cocoa_unittest.mm b/chrome/browser/ui/cocoa/extensions/media_galleries_dialog_cocoa_unittest.mm
index 7217e04..1eb8fb2 100644
--- a/chrome/browser/ui/cocoa/extensions/media_galleries_dialog_cocoa_unittest.mm
+++ b/chrome/browser/ui/cocoa/extensions/media_galleries_dialog_cocoa_unittest.mm
@@ -6,7 +6,6 @@
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/media_galleries/media_galleries_dialog_controller_mock.h"
#include "chrome/browser/storage_monitor/storage_info.h"
-#include "chrome/browser/storage_monitor/test_storage_monitor.h"
#include "chrome/browser/ui/cocoa/extensions/media_galleries_dialog_cocoa.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -29,8 +28,6 @@ MediaGalleryPrefInfo MakePrefInfoForTesting(MediaGalleryPrefId pref_id) {
}
class MediaGalleriesDialogTest : public testing::Test {
- private:
- test::TestStorageMonitor test_storage_monitor_;
};
// Tests that checkboxes are initialized according to the contents of
diff --git a/chrome/browser/ui/gtk/extensions/media_galleries_dialog_gtk_unittest.cc b/chrome/browser/ui/gtk/extensions/media_galleries_dialog_gtk_unittest.cc
index 5490cecd..089cf89 100644
--- a/chrome/browser/ui/gtk/extensions/media_galleries_dialog_gtk_unittest.cc
+++ b/chrome/browser/ui/gtk/extensions/media_galleries_dialog_gtk_unittest.cc
@@ -6,7 +6,6 @@
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/media_galleries/media_galleries_dialog_controller_mock.h"
#include "chrome/browser/storage_monitor/storage_info.h"
-#include "chrome/browser/storage_monitor/test_storage_monitor.h"
#include "chrome/browser/ui/gtk/extensions/media_galleries_dialog_gtk.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -33,8 +32,6 @@ MediaGalleryPrefInfo MakePrefInfoForTesting(MediaGalleryPrefId id) {
} // namespace
class MediaGalleriesDialogTest : public testing::Test {
- private:
- test::TestStorageMonitor test_storage_monitor_;
};
// Tests that checkboxes are initialized according to the contents of
diff --git a/chrome/chrome_tests_unit.gypi b/chrome/chrome_tests_unit.gypi
index 126b736..f622d4e 100644
--- a/chrome/chrome_tests_unit.gypi
+++ b/chrome/chrome_tests_unit.gypi
@@ -2387,6 +2387,7 @@
'browser/browser_commands_unittest.cc',
'browser/download/download_shelf_unittest.cc',
+ 'browser/storage_monitor/media_storage_util_unittest.cc',
'browser/net/gaia/gaia_oauth_fetcher_unittest.cc',
'browser/page_cycler/page_cycler_unittest.cc',
'browser/policy/async_policy_provider_unittest.cc',
diff --git a/chrome/test/base/testing_browser_process.cc b/chrome/test/base/testing_browser_process.cc
index 224e623..5e12543 100644
--- a/chrome/test/base/testing_browser_process.cc
+++ b/chrome/test/base/testing_browser_process.cc
@@ -9,6 +9,7 @@
#include "build/build_config.h"
#include "chrome/browser/background/background_mode_manager.h"
#include "chrome/browser/browser_process.h"
+#include "chrome/browser/browser_process_impl.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/ui/bookmarks/bookmark_prompt_controller.h"
#include "chrome/test/base/testing_browser_process_platform_part.h"
@@ -18,7 +19,6 @@
#include "ui/message_center/message_center.h"
#if !defined(OS_IOS)
-#include "chrome/browser/media_galleries/media_file_system_registry.h"
#include "chrome/browser/notifications/notification_ui_manager.h"
#include "chrome/browser/prerender/prerender_tracker.h"
#include "chrome/browser/printing/background_printing_manager.h"
@@ -27,6 +27,12 @@
#include "chrome/browser/thumbnails/render_widget_snapshot_taker.h"
#endif
+#if !defined(OS_IOS) && !defined(OS_ANDROID)
+#include "chrome/browser/media_galleries/media_file_system_registry.h"
+#include "chrome/browser/storage_monitor/storage_monitor.h"
+#include "chrome/browser/storage_monitor/test_storage_monitor.h"
+#endif
+
#if defined(ENABLE_CONFIGURATION_POLICY)
#include "chrome/browser/policy/browser_policy_connector.h"
#else
@@ -318,9 +324,25 @@ BookmarkPromptController* TestingBrowserProcess::bookmark_prompt_controller() {
#endif
}
+chrome::StorageMonitor* TestingBrowserProcess::storage_monitor() {
+#if defined(OS_IOS) || defined(OS_ANDROID)
+ NOTIMPLEMENTED();
+ return NULL;
+#else
+ if (!storage_monitor_.get()) {
+ chrome::test::TestStorageMonitor* monitor =
+ new chrome::test::TestStorageMonitor();
+ monitor->Init();
+ monitor->MarkInitialized();
+ storage_monitor_.reset(monitor);
+ }
+ return storage_monitor_.get();
+#endif
+}
+
chrome::MediaFileSystemRegistry*
TestingBrowserProcess::media_file_system_registry() {
-#if defined(OS_IOS) || defined (OS_ANDROID)
+#if defined(OS_IOS) || defined(OS_ANDROID)
NOTIMPLEMENTED();
return NULL;
#else
@@ -396,3 +418,10 @@ void TestingBrowserProcess::SetSafeBrowsingService(
sb_service_ = sb_service;
#endif
}
+
+void TestingBrowserProcess::SetStorageMonitor(
+ scoped_ptr<chrome::StorageMonitor> storage_monitor) {
+#if !defined(OS_IOS) && !defined(OS_ANDROID)
+ storage_monitor_.reset(storage_monitor.release());
+#endif
+}
diff --git a/chrome/test/base/testing_browser_process.h b/chrome/test/base/testing_browser_process.h
index 983d766..619ceb0 100644
--- a/chrome/test/base/testing_browser_process.h
+++ b/chrome/test/base/testing_browser_process.h
@@ -105,6 +105,7 @@ class TestingBrowserProcess : public BrowserProcess {
virtual CRLSetFetcher* crl_set_fetcher() OVERRIDE;
virtual PnaclComponentInstaller* pnacl_component_installer() OVERRIDE;
virtual BookmarkPromptController* bookmark_prompt_controller() OVERRIDE;
+ virtual chrome::StorageMonitor* storage_monitor() OVERRIDE;
virtual chrome::MediaFileSystemRegistry*
media_file_system_registry() OVERRIDE;
virtual bool created_local_state() const OVERRIDE;
@@ -122,6 +123,7 @@ class TestingBrowserProcess : public BrowserProcess {
void SetSafeBrowsingService(SafeBrowsingService* sb_service);
void SetBookmarkPromptController(BookmarkPromptController* controller);
void SetSystemRequestContext(net::URLRequestContextGetter* context_getter);
+ void SetStorageMonitor(scoped_ptr<chrome::StorageMonitor> storage_monitor);
private:
scoped_ptr<content::NotificationService> notification_service_;
@@ -144,10 +146,12 @@ class TestingBrowserProcess : public BrowserProcess {
scoped_ptr<RenderWidgetSnapshotTaker> render_widget_snapshot_taker_;
scoped_refptr<SafeBrowsingService> sb_service_;
scoped_ptr<BookmarkPromptController> bookmark_prompt_controller_;
-#if !defined(OS_ANDROID)
+#endif // !defined(OS_IOS)
+
+#if !defined(OS_IOS) && !defined(OS_ANDROID)
+ scoped_ptr<chrome::StorageMonitor> storage_monitor_;
scoped_ptr<chrome::MediaFileSystemRegistry> media_file_system_registry_;
#endif
-#endif // !defined(OS_IOS)
// The following objects are not owned by TestingBrowserProcess:
PrefService* local_state_;