Skip to content

Commit

Permalink
mojo: terminate apps if the shell goes away
Browse files Browse the repository at this point in the history
Each application <> shell connection is represented by a ShellImpl instance
on the shell side. This CL makes the Application watch its ShellPtr for pipe
errors so it can Quit() itself if the shell goes away (shell loop destroyed).

mojo_shell_tests starts using a new method to terminate all shell connections
in this CL, and waits afterward until KeepAlive quits the loop signifying that
all apps are gone. This is done prior to destroying the shell MessageLoop so
that the test ensures apps have all died before the next test. In the future
it would be a test failure if this wasn't a no-op, but we have things in the
shell that don't quit themselves right now.

The shell itself won't wait around for apps to die (as of this CL), but
~MessageLoop will still send the message to Application sides that will quit.

** NOTE ** This does not require an app build target to explicitly add magic
*.cc files to their sources.  It requires selecting an appropriate
mojo_application_{chromium, standalone} library akin to mojo_environment_*.
We can possibly combine these two in the future.

BUG=394477

Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=287680

Review URL: https://codereview.chromium.org/394903005

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@287894 0039d316-1c4b-4281-b951-d872f2087c98
  • Loading branch information
tim@chromium.org committed Aug 6, 2014
1 parent f3d8ca5 commit 8d64cb6
Show file tree
Hide file tree
Showing 25 changed files with 177 additions and 117 deletions.
6 changes: 3 additions & 3 deletions mojo/mojo.gyp
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@
'mojo_base.gyp:mojo_application_bindings',
'mojo_base.gyp:mojo_common_lib',
'mojo_base.gyp:mojo_system_impl',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_external_service_bindings',
'mojo_gles2_impl',
'mojo_native_viewport_service',
Expand Down Expand Up @@ -367,7 +367,7 @@
'mojo_base.gyp:mojo_cpp_bindings',
'mojo_base.gyp:mojo_environment_chromium',
'mojo_base.gyp:mojo_run_all_unittests',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_service_manager',
],
'includes': [ 'public/tools/bindings/mojom_bindings_generator.gypi' ],
Expand Down Expand Up @@ -457,7 +457,7 @@
'../base/base.gyp:base',
'../build/linux/system.gyp:dbus',
'../dbus/dbus.gyp:dbus',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_base.gyp:mojo_common_lib',
'mojo_base.gyp:mojo_system_impl',
'mojo_external_service_bindings',
Expand Down
13 changes: 13 additions & 0 deletions mojo/mojo_base.gyp
Original file line number Diff line number Diff line change
Expand Up @@ -341,6 +341,19 @@
'..',
],
},
{
'target_name': 'mojo_application_chromium',
'type': 'static_library',
'sources': [
'public/cpp/application/lib/application_impl_chromium.cc',
],
'dependencies': [
'mojo_application_base',
],
'export_dependent_settings': [
'mojo_application_base',
],
},
{
# GN version: //mojo/bindings/js
'target_name': 'mojo_js_bindings_lib',
Expand Down
44 changes: 22 additions & 22 deletions mojo/mojo_examples.gypi
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
'target_name': 'mojo_echo_client',
'type': 'loadable_module',
'dependencies': [
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_standalone',
'mojo_base.gyp:mojo_cpp_bindings',
'mojo_base.gyp:mojo_environment_standalone',
'mojo_base.gyp:mojo_utility',
Expand Down Expand Up @@ -45,7 +45,7 @@
'target_name': 'mojo_echo_service',
'type': 'loadable_module',
'dependencies': [
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_standalone',
'mojo_base.gyp:mojo_cpp_bindings',
'mojo_base.gyp:mojo_environment_standalone',
'mojo_base.gyp:mojo_utility',
Expand All @@ -71,7 +71,7 @@
# TODO(darin): we should not be linking against these libraries!
'../ui/events/events.gyp:events',
'../ui/gfx/gfx.gyp:gfx_geometry',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_standalone',
'mojo_base.gyp:mojo_cpp_bindings',
'mojo_base.gyp:mojo_environment_standalone',
'mojo_base.gyp:mojo_utility',
Expand Down Expand Up @@ -104,7 +104,7 @@
'../cc/cc.gyp:cc',
'../ui/gfx/gfx.gyp:gfx',
'../ui/gfx/gfx.gyp:gfx_geometry',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_base.gyp:mojo_common_lib',
'mojo_base.gyp:mojo_environment_chromium',
'mojo_cc_support',
Expand Down Expand Up @@ -132,7 +132,7 @@
'target_name': 'mojo_wget',
'type': 'loadable_module',
'dependencies': [
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_standalone',
'mojo_base.gyp:mojo_cpp_bindings',
'mojo_base.gyp:mojo_environment_standalone',
'mojo_base.gyp:mojo_utility',
Expand Down Expand Up @@ -171,7 +171,7 @@
'dependencies': [
'../skia/skia.gyp:skia',
'../ui/gfx/gfx.gyp:gfx',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_base.gyp:mojo_cpp_bindings',
'mojo_base.gyp:mojo_environment_chromium',
'mojo_base.gyp:mojo_utility',
Expand All @@ -197,7 +197,7 @@
'../ppapi/ppapi.gyp:ppapi_c',
'../ppapi/ppapi_internal.gyp:ppapi_example_gles2_spinning_cube',
'../ui/events/events.gyp:events_base',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_base.gyp:mojo_common_lib',
'mojo_base.gyp:mojo_environment_chromium',
'mojo_geometry_bindings',
Expand Down Expand Up @@ -293,7 +293,7 @@
'../skia/skia.gyp:skia',
'../ui/gfx/gfx.gyp:gfx',
'../ui/gfx/gfx.gyp:gfx_geometry',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_base.gyp:mojo_common_lib',
'mojo_base.gyp:mojo_environment_chromium',
'mojo_base.gyp:mojo_system_impl',
Expand Down Expand Up @@ -348,7 +348,7 @@
'../skia/skia.gyp:skia',
'../ui/gfx/gfx.gyp:gfx',
'../ui/gfx/gfx.gyp:gfx_geometry',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_base.gyp:mojo_common_lib',
'mojo_base.gyp:mojo_environment_chromium',
'mojo_base.gyp:mojo_system_impl',
Expand Down Expand Up @@ -383,7 +383,7 @@
'../ui/compositor/compositor.gyp:compositor',
'../ui/gfx/gfx.gyp:gfx',
'../ui/gfx/gfx.gyp:gfx_geometry',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_base.gyp:mojo_common_lib',
'mojo_base.gyp:mojo_environment_chromium',
'mojo_aura_support',
Expand All @@ -402,7 +402,7 @@
'type': 'loadable_module',
'dependencies': [
'../base/base.gyp:base',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_base.gyp:mojo_environment_chromium',
'mojo_view_manager_bindings',
'<(mojo_system_for_loadable_module)',
Expand All @@ -429,7 +429,7 @@
'../ui/resources/ui_resources.gyp:ui_test_pak',
'../ui/views/views.gyp:views',
'../url/url.gyp:url_lib',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_base.gyp:mojo_common_lib',
'mojo_base.gyp:mojo_environment_chromium',
'mojo_aura_support',
Expand Down Expand Up @@ -464,7 +464,7 @@
'../ui/gfx/gfx.gyp:gfx',
'../ui/gfx/gfx.gyp:gfx_geometry',
'../ui/gl/gl.gyp:gl',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_base.gyp:mojo_cpp_bindings',
'mojo_base.gyp:mojo_environment_chromium',
'mojo_base.gyp:mojo_utility',
Expand Down Expand Up @@ -495,7 +495,7 @@
'../ui/resources/ui_resources.gyp:ui_test_pak',
'../ui/views/views.gyp:views',
'../url/url.gyp:url_lib',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_base.gyp:mojo_common_lib',
'mojo_base.gyp:mojo_environment_chromium',
'mojo_aura_support',
Expand Down Expand Up @@ -561,7 +561,7 @@
'../ui/resources/ui_resources.gyp:ui_resources',
'../ui/resources/ui_resources.gyp:ui_test_pak',
'../ui/views/views.gyp:views',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_base.gyp:mojo_cpp_bindings',
'mojo_base.gyp:mojo_utility',
'mojo_base.gyp:mojo_environment_chromium',
Expand Down Expand Up @@ -593,7 +593,7 @@
'../ui/gfx/gfx.gyp:gfx_geometry',
'../ui/gl/gl.gyp:gl',
'../url/url.gyp:url_lib',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_base.gyp:mojo_cpp_bindings',
'mojo_base.gyp:mojo_environment_chromium',
'mojo_base.gyp:mojo_utility',
Expand All @@ -617,7 +617,7 @@
'../ui/gfx/gfx.gyp:gfx_geometry',
'../ui/gl/gl.gyp:gl',
'../url/url.gyp:url_lib',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_base.gyp:mojo_cpp_bindings',
'mojo_base.gyp:mojo_environment_chromium',
'mojo_base.gyp:mojo_utility',
Expand All @@ -641,7 +641,7 @@
'../skia/skia.gyp:skia',
'../ui/gfx/gfx.gyp:gfx_geometry',
'../ui/views/views.gyp:views',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_base.gyp:mojo_environment_chromium',
'mojo_input_events_lib',
'mojo_media_viewer_bindings',
Expand All @@ -661,7 +661,7 @@
'type': 'loadable_module',
'dependencies': [
'../base/base.gyp:base',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_base.gyp:mojo_environment_chromium',
'mojo_core_window_manager_lib',
'mojo_view_manager_lib',
Expand All @@ -677,7 +677,7 @@
'type': 'loadable_module',
'dependencies': [
'../base/base.gyp:base',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_base.gyp:mojo_environment_chromium',
'mojo_view_manager_bindings',
'<(mojo_system_for_loadable_module)',
Expand All @@ -692,7 +692,7 @@
'type': 'loadable_module',
'dependencies': [
'../base/base.gyp:base',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_base.gyp:mojo_environment_chromium',
'mojo_core_window_manager_bindings',
'mojo_view_manager_lib',
Expand All @@ -712,7 +712,7 @@
'type': 'loadable_module',
'dependencies': [
'../base/base.gyp:base',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_standalone',
'mojo_base.gyp:mojo_cpp_bindings',
'mojo_base.gyp:mojo_environment_standalone',
'mojo_base.gyp:mojo_utility',
Expand Down
15 changes: 14 additions & 1 deletion mojo/mojo_public.gypi
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@
},
{
# GN version: //mojo/public/cpp/application
'target_name': 'mojo_application',
'target_name': 'mojo_application_base',
'type': 'static_library',
'sources': [
'public/cpp/application/application_connection.h',
Expand All @@ -206,6 +206,19 @@
'mojo_application_bindings',
],
},
{
'target_name': 'mojo_application_standalone',
'type': 'static_library',
'sources': [
'public/cpp/application/lib/application_impl_standalone.cc',
],
'dependencies': [
'mojo_application_base',
],
'export_dependent_settings': [
'mojo_application_base',
],
},
],
'conditions': [
['OS == "android"', {
Expand Down
2 changes: 1 addition & 1 deletion mojo/mojo_public_tests.gypi
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@
'dependencies': [
'../base/base.gyp:base',
'../testing/gtest.gyp:gtest',
'mojo_application',
'mojo_application_standalone',
'mojo_utility',
'mojo_environment_standalone',
'mojo_run_all_unittests',
Expand Down
24 changes: 12 additions & 12 deletions mojo/mojo_services.gypi
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
'mojo_base.gyp:mojo_cpp_bindings',
'mojo_base.gyp:mojo_environment_chromium',
'mojo_base.gyp:mojo_utility',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_navigation_bindings',
'mojo_network_bindings',
'mojo_launcher_bindings',
Expand Down Expand Up @@ -303,7 +303,7 @@
'../ui/gfx/gfx.gyp:gfx_geometry',
'mojo_base.gyp:mojo_common_lib',
'mojo_base.gyp:mojo_environment_chromium',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_geometry_bindings',
'mojo_geometry_lib',
'mojo_gles2_service',
Expand Down Expand Up @@ -392,7 +392,7 @@
'../url/url.gyp:url_lib',
'mojo_base.gyp:mojo_common_lib',
'mojo_base.gyp:mojo_environment_chromium',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_network_bindings',
],
'export_dependent_settings': [
Expand Down Expand Up @@ -434,7 +434,7 @@
'../ui/gfx/gfx.gyp:gfx_geometry',
'mojo_base.gyp:mojo_environment_chromium',
'mojo_base.gyp:mojo_system_impl',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_cc_support',
'mojo_geometry_bindings',
'mojo_geometry_lib',
Expand Down Expand Up @@ -483,7 +483,7 @@
'../url/url.gyp:url_lib',
'mojo_base.gyp:mojo_cpp_bindings',
'mojo_base.gyp:mojo_environment_chromium',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_launcher_bindings',
'mojo_network_bindings',
'<(mojo_system_for_loadable_module)',
Expand Down Expand Up @@ -521,7 +521,7 @@
'../ui/events/events.gyp:events',
'../ui/gfx/gfx.gyp:gfx',
'../ui/gfx/gfx.gyp:gfx_geometry',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_base.gyp:mojo_application_bindings',
'mojo_geometry_bindings',
'mojo_geometry_lib',
Expand Down Expand Up @@ -629,7 +629,7 @@
'../base/base.gyp:base',
'mojo_base.gyp:mojo_environment_standalone',
'mojo_base.gyp:mojo_utility',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_standalone',
'mojo_test_service_bindings',
'<(mojo_system_for_loadable_module)',
],
Expand All @@ -653,7 +653,7 @@
'../base/base.gyp:base',
'mojo_base.gyp:mojo_environment_standalone',
'mojo_base.gyp:mojo_utility',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_standalone',
'mojo_test_service_bindings',
'<(mojo_system_for_loadable_module)',
],
Expand Down Expand Up @@ -707,7 +707,7 @@
'../webkit/common/gpu/webkit_gpu.gyp:webkit_gpu',
'mojo_base.gyp:mojo_common_lib',
'mojo_base.gyp:mojo_environment_chromium',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_cc_support',
'mojo_geometry_bindings',
'mojo_geometry_lib',
Expand Down Expand Up @@ -797,7 +797,7 @@
'../ui/gl/gl.gyp:gl',
'mojo_base.gyp:mojo_system_impl',
'mojo_base.gyp:mojo_environment_chromium',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_geometry_bindings',
'mojo_geometry_lib',
'mojo_input_events_bindings',
Expand Down Expand Up @@ -832,7 +832,7 @@
'../ui/wm/wm.gyp:wm',
'mojo_base.gyp:mojo_common_lib',
'mojo_base.gyp:mojo_environment_chromium',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_aura_support',
'mojo_core_window_manager_bindings',
'mojo_view_manager_lib',
Expand Down Expand Up @@ -903,7 +903,7 @@
'mojo_base.gyp:mojo_common_lib',
'mojo_base.gyp:mojo_environment_chromium',
'mojo_base.gyp:mojo_system_impl',
'mojo_base.gyp:mojo_application',
'mojo_base.gyp:mojo_application_chromium',
'mojo_dbus_service',
'mojo_echo_bindings',
],
Expand Down
2 changes: 1 addition & 1 deletion mojo/public/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
group("public") {
deps = [
"//mojo/public/c/system",
"//mojo/public/cpp/application",
"//mojo/public/cpp/application:standalone",
"//mojo/public/cpp/bindings",
"//mojo/public/cpp/environment:standalone",
"//mojo/public/cpp/utility",
Expand Down
Loading

0 comments on commit 8d64cb6

Please sign in to comment.