Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7363)

Unified Diff: chrome/browser/storage_monitor/test_storage_monitor.cc

Issue 16703025: [StorageMonitor] Move StorageMonitor ownership to BrowserProcessImpl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/storage_monitor/test_storage_monitor.cc
diff --git a/chrome/browser/storage_monitor/test_storage_monitor.cc b/chrome/browser/storage_monitor/test_storage_monitor.cc
index e28ce2c91529b84667f0ea699928d6c2c454ceb0..2f8b44f08dc68c6e80defce75dbd97f085f50d3c 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,49 @@ TestStorageMonitor::TestStorageMonitor()
TestStorageMonitor::~TestStorageMonitor() {}
-TestStorageMonitor*
-TestStorageMonitor::CreateForBrowserTests() {
- StorageMonitor::RemoveSingletonForTesting();
- return new TestStorageMonitor();
+TestStorageMonitor* TestStorageMonitor::Create() {
+ RemoveSingleton();
+ TestStorageMonitor* monitor = new TestStorageMonitor();
+ monitor->Init();
+ monitor->MarkInitialized();
+ TestingBrowserProcess* browser_process = TestingBrowserProcess::GetGlobal();
vandebo (ex-Chrome) 2013/07/10 16:57:45 This pattern looks like it is repeated in a lot of
Greg Billock 2013/07/10 21:11:16 I do where possible. Perhaps I should split out th
+ if (browser_process)
vandebo (ex-Chrome) 2013/07/10 16:57:45 leak
Greg Billock 2013/07/10 21:57:17 Done.
+ browser_process->SetStorageMonitor(monitor);
+
+ return monitor;
+}
+
+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);
+ 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(NULL);
+}
+
+// static
+void TestStorageMonitor::SyncInitialize() {
vandebo (ex-Chrome) 2013/07/10 16:57:45 It seems like this method is only used from one te
Greg Billock 2013/07/10 21:11:16 I thought about that, but it seems more a util fix
+ 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() {

Powered by Google App Engine
This is Rietveld 408576698