Index: trunk/src/mojo/shell/context.cc |
=================================================================== |
--- trunk/src/mojo/shell/context.cc (revision 287751) |
+++ trunk/src/mojo/shell/context.cc (working copy) |
@@ -122,6 +122,8 @@ |
scoped_ptr<ServiceLoader>(new NativeViewportServiceLoader()), |
"native_viewport", |
base::MessageLoop::TYPE_UI)); |
+ // TODO(tim): NativeViewportService doesn't quit itself yet. |
+ loader->set_quit_on_shutdown(); |
service_manager_.SetLoaderForURL( |
loader.PassAs<ServiceLoader>(), |
GURL("mojo:mojo_native_viewport_service")); |
@@ -154,14 +156,30 @@ |
scoped_ptr<ServiceLoader>(new NetworkServiceLoader()), |
"network_service", |
base::MessageLoop::TYPE_IO)); |
+ // TODO(tim): NetworkService doesn't quit itself yet. |
+ loader->set_quit_on_shutdown(); |
service_manager_.SetLoaderForURL(loader.PassAs<ServiceLoader>(), |
GURL("mojo:mojo_network_service")); |
} |
#endif |
} |
+void Context::Shutdown() { |
+ // mojo_view_manager uses native_viewport. Destroy mojo_view_manager first so |
+ // that there aren't shutdown ordering issues. Once native viewport service is |
+ // moved into its own process this can likely be nuked. |
+#if defined(USE_AURA) |
+ service_manager_.SetLoaderForURL( |
+ scoped_ptr<ServiceLoader>(), |
+ GURL("mojo:mojo_view_manager")); |
+#endif |
+ service_manager_.set_default_loader(scoped_ptr<ServiceLoader>()); |
+ service_manager_.TerminateShellConnections(); |
+} |
+ |
Context::~Context() { |
DCHECK(!base::MessageLoop::current()); |
+ Shutdown(); |
} |
} // namespace shell |