| 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();
|
| + if (browser_process)
|
| + 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() {
|
| + 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() {
|
|
|