Index: services/native_support/main.cc |
diff --git a/services/native_support/main.cc b/services/native_support/main.cc |
index 912ebc63030946580648a13dd45d4fd9063b14dc..e174a3126fa72b3a2b7dc39e5ffb06d9b63781b5 100644 |
--- a/services/native_support/main.cc |
+++ b/services/native_support/main.cc |
@@ -6,9 +6,10 @@ |
#include "base/memory/ref_counted.h" |
#include "base/message_loop/message_loop.h" |
#include "base/threading/sequenced_worker_pool.h" |
-#include "mojo/application/application_runner_chromium.h" |
+#include "mojo/application/run_application_options_chromium.h" |
#include "mojo/public/c/system/main.h" |
-#include "mojo/public/cpp/application/application_delegate.h" |
+#include "mojo/public/cpp/application/application_impl_base.h" |
+#include "mojo/public/cpp/application/run_application.h" |
#include "mojo/public/cpp/application/service_provider_impl.h" |
#include "mojo/services/native_support/interfaces/process.mojom.h" |
#include "services/native_support/process_impl.h" |
@@ -18,17 +19,18 @@ namespace native_support { |
// TODO(vtl): Having to manually choose an arbitrary number is dumb. |
const size_t kMaxWorkerThreads = 16; |
-class NativeSupportApp : public mojo::ApplicationDelegate { |
+class NativeSupportApp : public mojo::ApplicationImplBase { |
public: |
NativeSupportApp() {} |
~NativeSupportApp() override { |
- if (worker_pool_) |
- worker_pool_->Shutdown(); |
+ // TODO(vtl): Doing this here is a bit of a hack, but we may not |
+ // consistently call |OnQuit()|. |
+ OnQuit(); |
} |
private: |
- // |mojo::ApplicationDelegate| override: |
- bool ConfigureIncomingConnection( |
+ // |mojo::ApplicationImplBase| overrides: |
+ bool OnAcceptConnection( |
mojo::ServiceProviderImpl* service_provider_impl) override { |
service_provider_impl->AddService<Process>([this]( |
const mojo::ConnectionContext& connection_context, |
@@ -42,6 +44,13 @@ class NativeSupportApp : public mojo::ApplicationDelegate { |
return true; |
} |
+ void OnQuit() override { |
+ if (worker_pool_) { |
+ worker_pool_->Shutdown(); |
+ worker_pool_ = nullptr; |
+ } |
+ } |
+ |
scoped_refptr<base::SequencedWorkerPool> worker_pool_; |
DISALLOW_COPY_AND_ASSIGN(NativeSupportApp); |
@@ -50,9 +59,9 @@ class NativeSupportApp : public mojo::ApplicationDelegate { |
} // namespace native_support |
MojoResult MojoMain(MojoHandle application_request) { |
- mojo::ApplicationRunnerChromium runner( |
- new native_support::NativeSupportApp()); |
+ native_support::NativeSupportApp native_support_app; |
// We need an I/O message loop, since we'll want to watch FDs. |
- runner.set_message_loop_type(base::MessageLoop::TYPE_IO); |
- return runner.Run(application_request); |
+ mojo::RunApplicationOptionsChromium options(base::MessageLoop::TYPE_IO); |
+ return mojo::RunMainApplication(application_request, &native_support_app, |
+ &options); |
} |