Index: services/service_manager/public/cpp/standalone_service/standalone_service.cc |
diff --git a/services/service_manager/public/cpp/standalone_service/standalone_service.cc b/services/service_manager/public/cpp/standalone_service/standalone_service.cc |
index 2e49b73bb4058ee65501cefc042373f46269aec3..bd26da071156c7b37eea5e52a3587d6c663f71dc 100644 |
--- a/services/service_manager/public/cpp/standalone_service/standalone_service.cc |
+++ b/services/service_manager/public/cpp/standalone_service/standalone_service.cc |
@@ -11,7 +11,7 @@ |
#include "base/synchronization/waitable_event.h" |
#include "base/threading/thread.h" |
#include "mojo/edk/embedder/embedder.h" |
-#include "mojo/edk/embedder/process_delegate.h" |
+#include "mojo/edk/embedder/scoped_ipc_support.h" |
#include "mojo/public/cpp/system/message_pipe.h" |
#include "services/service_manager/public/cpp/service_context.h" |
#include "services/service_manager/runner/common/client_util.h" |
@@ -54,41 +54,6 @@ std::unique_ptr<LinuxSandbox> InitializeSandbox() { |
} |
#endif |
-// Should be created and initialized on the main thread and kept alive as long |
-// a Service is running in the current process. |
-class ScopedAppContext : public mojo::edk::ProcessDelegate { |
- public: |
- ScopedAppContext() |
- : io_thread_("io_thread"), |
- wait_for_shutdown_event_( |
- base::WaitableEvent::ResetPolicy::MANUAL, |
- base::WaitableEvent::InitialState::NOT_SIGNALED) { |
- mojo::edk::Init(); |
- io_thread_.StartWithOptions( |
- base::Thread::Options(base::MessageLoop::TYPE_IO, 0)); |
- mojo::edk::InitIPCSupport(this, io_thread_.task_runner()); |
- mojo::edk::SetParentPipeHandleFromCommandLine(); |
- } |
- |
- ~ScopedAppContext() override { |
- mojo::edk::ShutdownIPCSupport(); |
- wait_for_shutdown_event_.Wait(); |
- } |
- |
- private: |
- // ProcessDelegate implementation. |
- void OnShutdownComplete() override { |
- wait_for_shutdown_event_.Signal(); |
- } |
- |
- base::Thread io_thread_; |
- |
- // Used to unblock the main thread on shutdown. |
- base::WaitableEvent wait_for_shutdown_event_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ScopedAppContext); |
-}; |
- |
} // namespace |
void RunStandaloneService(const StandaloneServiceCallback& callback) { |
@@ -112,7 +77,17 @@ void RunStandaloneService(const StandaloneServiceCallback& callback) { |
sandbox = InitializeSandbox(); |
#endif |
- ScopedAppContext app_context; |
+ mojo::edk::Init(); |
+ |
+ base::Thread io_thread("io_thread"); |
+ io_thread.StartWithOptions( |
+ base::Thread::Options(base::MessageLoop::TYPE_IO, 0)); |
+ |
+ mojo::edk::ScopedIPCSupport ipc_support( |
+ io_thread.task_runner(), |
+ mojo::edk::ScopedIPCSupport::ShutdownPolicy::CLEAN); |
+ mojo::edk::SetParentPipeHandleFromCommandLine(); |
+ |
callback.Run(GetServiceRequestFromCommandLine()); |
} |