Index: mojo/shell/shell_test_helper.cc |
diff --git a/mojo/shell/shell_test_helper.cc b/mojo/shell/shell_test_helper.cc |
index 1fc3ae498d71b70f77eae11ead76c17939523529..33cd1624cc2db32b15f02009a20f8c315bd2e4ce 100644 |
--- a/mojo/shell/shell_test_helper.cc |
+++ b/mojo/shell/shell_test_helper.cc |
@@ -6,40 +6,11 @@ |
#include "base/command_line.h" |
#include "base/logging.h" |
-#include "base/message_loop/message_loop.h" |
-#include "mojo/service_manager/service_loader.h" |
-#include "mojo/shell/context.h" |
#include "mojo/shell/init.h" |
namespace mojo { |
namespace shell { |
-// State used on the background thread. Be careful, this is created on the main |
-// thread than passed to the shell thread. Destruction happens on the shell |
-// thread. |
-struct ShellTestHelper::State { |
- scoped_ptr<Context> context; |
- scoped_ptr<ServiceManager::TestAPI> test_api; |
- ScopedMessagePipeHandle service_provider_handle; |
-}; |
- |
-namespace { |
- |
-void StartShellOnShellThread(ShellTestHelper::State* state) { |
- state->context.reset(new Context); |
- state->test_api.reset( |
- new ServiceManager::TestAPI(state->context->service_manager())); |
- state->service_provider_handle = state->test_api->GetServiceProviderHandle(); |
-} |
- |
-void SetLoaderForURLOnShellThread(ShellTestHelper::State* state, |
- scoped_ptr<ServiceLoader> loader, |
- const GURL& url) { |
- state->context->service_manager()->SetLoaderForURL(loader.Pass(), url); |
-} |
- |
-} // namespace |
- |
class ShellTestHelper::TestServiceProvider : public ServiceProvider { |
public: |
TestServiceProvider() {} |
@@ -55,51 +26,25 @@ class ShellTestHelper::TestServiceProvider : public ServiceProvider { |
DISALLOW_COPY_AND_ASSIGN(TestServiceProvider); |
}; |
-ShellTestHelper::ShellTestHelper() |
- : service_provider_thread_("shell_test_helper"), |
- state_(NULL) { |
+ShellTestHelper::ShellTestHelper() { |
base::CommandLine::Init(0, NULL); |
mojo::shell::InitializeLogging(); |
} |
ShellTestHelper::~ShellTestHelper() { |
- if (state_) { |
- // |state_| contains data created on the background thread. Destroy it |
- // there so that there aren't any race conditions. |
- service_provider_thread_.message_loop()->DeleteSoon(FROM_HERE, state_); |
- state_ = NULL; |
- } |
} |
void ShellTestHelper::Init() { |
- DCHECK(!state_); |
- state_ = new State; |
- service_provider_thread_.Start(); |
- base::MessageLoopProxy* message_loop_proxy = |
- service_provider_thread_.message_loop()->message_loop_proxy(); |
- message_loop_proxy->PostTaskAndReply( |
- FROM_HERE, |
- base::Bind(&StartShellOnShellThread, state_), |
- base::Bind(&ShellTestHelper::OnServiceProviderStarted, |
- base::Unretained(this))); |
- run_loop_.reset(new base::RunLoop); |
- run_loop_->Run(); |
+ context_.reset(new Context); |
+ test_api_.reset(new ServiceManager::TestAPI(context_->service_manager())); |
+ local_service_provider_.reset(new TestServiceProvider); |
+ service_provider_.Bind(test_api_->GetServiceProviderHandle().Pass()); |
+ service_provider_.set_client(local_service_provider_.get()); |
} |
void ShellTestHelper::SetLoaderForURL(scoped_ptr<ServiceLoader> loader, |
const GURL& url) { |
- service_provider_thread_.message_loop()->message_loop_proxy()->PostTask( |
- FROM_HERE, |
- base::Bind(&SetLoaderForURLOnShellThread, state_, base::Passed(&loader), |
- url)); |
-} |
- |
-void ShellTestHelper::OnServiceProviderStarted() { |
- DCHECK(state_); |
- local_service_provider_.reset(new TestServiceProvider); |
- service_provider_.Bind(state_->service_provider_handle.Pass()); |
- service_provider_.set_client(local_service_provider_.get()); |
- run_loop_->Quit(); |
+ context_->service_manager()->SetLoaderForURL(loader.Pass(), url); |
} |
} // namespace shell |