| # Copyright 2014 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import("//mojo/generate_mojo_shell_assets_list.gni") |
| import("//mojo/public/mojo_application.gni") |
| import("//testing/test.gni") |
| import("//third_party/mojo/src/mojo/public/tools/bindings/mojom.gni") |
| |
| # We don't support building in the component build since mojo apps are |
| # inherently components. |
| assert(!is_component_build) |
| |
| group("runner") { |
| testonly = true |
| |
| deps = [ |
| ":mojo_runner", |
| ] |
| } |
| |
| if (is_android) { |
| import("//build/config/android/config.gni") |
| import("//build/config/android/rules.gni") |
| } |
| |
| source_set("mojo_runner_lib") { |
| sources = [] |
| |
| deps = [ |
| ":lib", |
| "//base", |
| "//build/config/sanitizers:deps", |
| "//mojo/common", |
| "//mojo/environment:chromium", |
| "//mojo/message_pump", |
| ] |
| |
| if (!is_android) { |
| sources += [ |
| "desktop/launcher_process.cc", |
| "desktop/launcher_process.h", |
| "desktop/main.cc", |
| ] |
| deps += [ "//components/tracing:startup_tracing" ] |
| } else { |
| sources += [ |
| "android/context_init.h", |
| "android/library_loader.cc", |
| "android/main.cc", |
| "android/main.h", |
| ] |
| |
| deps += [ |
| ":jni_headers", |
| "//components/mus", |
| "//components/mus/vm:lib", |
| "//mojo/shell", |
| "//ui/gl", |
| "//ui/platform_window/android", |
| ] |
| } |
| } |
| |
| executable("mojo_runner") { |
| deps = [ |
| ":mojo_runner_lib", |
| "//build/config/sanitizers:deps", |
| ] |
| |
| if (is_android) { |
| sources = [ |
| "android/context_init.cc", |
| ] |
| |
| # On android, the executable is also the native library used by the apk. |
| # It means dynamic symbols must be preserved and exported. |
| ldflags = [ "-Wl,--export-dynamic" ] |
| } |
| } |
| |
| source_set("in_process_native_runner") { |
| sources = [ |
| "in_process_native_runner.cc", |
| "in_process_native_runner.h", |
| ] |
| |
| public_deps = [ |
| ":native_application_support", |
| "//mojo/shell", |
| ] |
| |
| deps = [ |
| "//base", |
| ] |
| } |
| |
| source_set("lib") { |
| sources = [ |
| "child_process.cc", |
| "child_process.h", |
| "child_process_host.cc", |
| "child_process_host.h", |
| "context.cc", |
| "context.h", |
| "init.cc", |
| "init.h", |
| "out_of_process_native_runner.cc", |
| "out_of_process_native_runner.h", |
| "scoped_user_data_dir.cc", |
| "scoped_user_data_dir.h", |
| "task_runners.cc", |
| "task_runners.h", |
| ] |
| |
| deps = [ |
| ":child_process_bindings", |
| ":in_process_native_runner", |
| ":native_application_support", |
| "//base", |
| "//base/third_party/dynamic_annotations", |
| "//base:base_static", |
| "//components/devtools_service/public/cpp", |
| "//components/devtools_service/public/interfaces", |
| "//mojo/application/public/cpp", |
| "//mojo/common:tracing_impl", |
| "//mojo/message_pump", |
| "//mojo/package_manager", |
| "//mojo/services/network/public/interfaces", |
| "//mojo/services/tracing/public/cpp", |
| "//mojo/services/tracing/public/interfaces", |
| "//mojo/shell", |
| "//mojo/util:filename_util", |
| "//third_party/mojo/src/mojo/edk/system", |
| "//ui/gl", |
| "//url", |
| ] |
| |
| if (is_linux && !is_android) { |
| sources += [ |
| "linux_sandbox.cc", |
| "linux_sandbox.h", |
| ] |
| |
| deps += [ |
| "//sandbox/linux:sandbox", |
| "//sandbox/linux:sandbox_services", |
| ] |
| } |
| |
| public_deps = [ |
| ":switches", |
| ] |
| |
| data_deps = [ |
| "//components/devtools_service", |
| "//mojo/services/tracing", |
| ] |
| |
| if (is_android) { |
| sources += [ |
| "android/android_handler.cc", |
| "android/android_handler.h", |
| "android/android_handler_loader.cc", |
| "android/android_handler_loader.h", |
| "android/background_application_loader.cc", |
| "android/background_application_loader.h", |
| "android/ui_application_loader_android.cc", |
| "android/ui_application_loader_android.h", |
| ] |
| |
| deps += [ |
| ":jni_headers", |
| ":run_android_application_function", |
| "//components/mus/gles2", |
| "//mojo/application/public/cpp:content_handler", |
| ] |
| } |
| |
| # This target includes some files behind #ifdef OS... guards. Since gn is not |
| # smart enough to understand preprocess includes, it does complains about |
| # these includes when not using the build files for that OS. Suppress checking |
| # so we can enable checking for the rest of the targets in this file. |
| # TODO: Might be better to split the files with OS-specific includes out to a |
| # separate source_set so we can leave checking on for the rest of the target. |
| check_includes = false |
| } |
| |
| source_set("native_application_support") { |
| sources = [ |
| "native_application_support.cc", |
| "native_application_support.h", |
| "platform_handle_impl.cc", |
| ] |
| |
| public_deps = [ |
| "//third_party/mojo/src/mojo/public/cpp/bindings", |
| ] |
| |
| deps = [ |
| "//base", |
| "//mojo/gles2", |
| "//mojo/platform_handle:defs", |
| "//mojo/shell", |
| ] |
| |
| # This target has to include the public thunk headers, which generally |
| # shouldn't be included without picking an implementation. We are providing |
| # the implementation but the thunk header target cannot declare that we are |
| # permitted to include it since it's in the public SDK and we are not. |
| # Suppress include checking so we can still check the rest of the targets in |
| # this file. |
| check_includes = false |
| } |
| |
| source_set("switches") { |
| sources = [ |
| "switches.cc", |
| "switches.h", |
| ] |
| |
| deps = [ |
| "//base", |
| ] |
| } |
| |
| if (is_android) { |
| generate_jni("jni_headers") { |
| sources = [ |
| "android/apk/src/org/chromium/mojo/shell/AndroidHandler.java", |
| "android/apk/src/org/chromium/mojo/shell/Bootstrap.java", |
| "android/apk/src/org/chromium/mojo/shell/ShellMain.java", |
| "android/tests/src/org/chromium/mojo/shell/ShellTestBase.java", |
| ] |
| jni_package = "mojo/shell" |
| } |
| |
| android_library("bootstrap_java") { |
| java_files = [ "android/apk/src/org/chromium/mojo/shell/Bootstrap.java" ] |
| |
| deps = [ |
| "//base:base_java", |
| ] |
| |
| dex_path = "$target_out_dir/bootstrap_java.dex.jar" |
| } |
| |
| shared_library("bootstrap") { |
| sources = [ |
| "android/bootstrap.cc", |
| ] |
| deps = [ |
| ":jni_headers", |
| ":lib", |
| ":run_android_application_function", |
| "//base", |
| "//build/config/sanitizers:deps", |
| ] |
| } |
| |
| # Shared header between the bootstrap and the main shell .so. |
| source_set("run_android_application_function") { |
| sources = [ |
| "android/run_android_application_function.h", |
| ] |
| |
| deps = [ |
| "//base", |
| ] |
| } |
| |
| android_library("java") { |
| java_files = [ |
| "android/apk/src/org/chromium/mojo/shell/AndroidHandler.java", |
| "android/apk/src/org/chromium/mojo/shell/FileHelper.java", |
| "android/apk/src/org/chromium/mojo/shell/MojoShellActivity.java", |
| "android/apk/src/org/chromium/mojo/shell/MojoShellApplication.java", |
| "android/apk/src/org/chromium/mojo/shell/ShellMain.java", |
| ] |
| |
| deps = [ |
| ":resources", |
| "//base:base_java", |
| ] |
| } |
| |
| android_resources("resources") { |
| resource_dirs = [ "android/apk/res" ] |
| custom_package = "org.chromium.mojo.shell" |
| } |
| |
| mojo_runner_test_assets_dir = "$root_build_dir/mojo_runner_test_assets" |
| mojo_runner_apptests_assets_dir = |
| "$root_build_dir/mojo_runner_apptests_assets" |
| |
| copy_ex("copy_mojo_runner_apptests_assets") { |
| testonly = true |
| clear_dir = true |
| dest = mojo_runner_apptests_assets_dir |
| |
| deps = [ |
| ":bootstrap", |
| ":bootstrap_java", |
| "//components/clipboard:apptests", |
| "//components/mus/vm:apptests", |
| "//components/resource_provider:apptests", |
| "//mojo/services/network:apptests", |
| ] |
| |
| sources = [ |
| "$root_out_dir/obj/mojo/runner/bootstrap_java.dex.jar", |
| "$root_shlib_dir/${shlib_prefix}bootstrap$shlib_extension", |
| ] |
| |
| apptest_outputs = [ |
| "clipboard", |
| "clipboard_apptests", |
| "mus_apptests", |
| "resource_provider", |
| "resource_provider_apptests", |
| "network_service", |
| "network_service_apptests", |
| ] |
| |
| args = [] |
| foreach(path, apptest_outputs) { |
| args += |
| [ "--files=" + rebase_path("$root_out_dir/$path", root_build_dir) ] |
| } |
| } |
| |
| generate_mojo_shell_assets_list("build_mojo_runner_apptests_assets") { |
| testonly = true |
| deps = [ |
| ":copy_mojo_runner_apptests_assets", |
| ] |
| dir = mojo_runner_apptests_assets_dir |
| } |
| |
| copy("copy_mojo_runner") { |
| sources = [ |
| "$root_out_dir/mojo_runner", |
| ] |
| outputs = [ |
| "$root_shlib_dir/${shlib_prefix}mojo_runner$shlib_extension", |
| ] |
| deps = [ |
| ":mojo_runner", |
| ] |
| } |
| |
| copy_ex("copy_mojo_runner_test_assets") { |
| testonly = true |
| clear_dir = true |
| dest = mojo_runner_test_assets_dir |
| deps = [ |
| "//mojo/services/test_service:test_app", |
| "//mojo/services/test_service:test_request_tracker_app", |
| ] |
| |
| # Directories can't be specified as sources so pass manually to the script. |
| args = [ |
| "--files=" + rebase_path("$root_out_dir/test_app", root_build_dir), |
| "--files=" + |
| rebase_path("$root_out_dir/test_request_tracker_app", root_build_dir), |
| ] |
| } |
| |
| android_apk("mojo_runner_apptests_apk") { |
| testonly = true |
| apk_name = "MojoRunnerApptests" |
| android_manifest = "android/apk/AndroidManifest.xml" |
| native_libs = [ "${shlib_prefix}mojo_runner$shlib_extension" ] |
| asset_location = mojo_runner_apptests_assets_dir |
| |
| deps = [ |
| ":build_mojo_runner_apptests_assets", |
| ":copy_mojo_runner", |
| ":java", |
| ":resources", |
| "//base:base_java", |
| "//ui/platform_window/android:platform_window_java", |
| google_play_services_resources, |
| ] |
| } |
| |
| generate_mojo_shell_assets_list("build_mojo_runner_test_assets") { |
| testonly = true |
| deps = [ |
| ":copy_mojo_runner_test_assets", |
| ] |
| dir = mojo_runner_test_assets_dir |
| } |
| |
| android_library("mojo_runner_tests_java") { |
| java_files = |
| [ "android/tests/src/org/chromium/mojo/shell/ShellTestBase.java" ] |
| |
| deps = [ |
| ":java", |
| "//base:base_java", |
| ] |
| } |
| } |
| |
| mojom("child_process_bindings") { |
| sources = [ |
| "child_process.mojom", |
| ] |
| |
| deps = [ |
| "//mojo/application/public/interfaces", |
| ] |
| |
| import_dirs = [ "//mojo/services" ] |
| } |
| |
| test("mojo_runner_unittests") { |
| sources = [ |
| "../fetcher/about_fetcher_unittest.cc", |
| "../fetcher/data_fetcher_unittest.cc", |
| "../fetcher/network_fetcher_unittest.cc", |
| "../fetcher/url_resolver_unittest.cc", |
| "child_process_host_unittest.cc", |
| "data_pipe_peek_unittest.cc", |
| "in_process_native_runner_unittest.cc", |
| "native_runner_unittest.cc", |
| "shell_test_base.cc", |
| "shell_test_base.h", |
| "shell_test_base_android.cc", |
| "shell_test_base_unittest.cc", |
| "shell_test_main.cc", |
| ] |
| |
| deps = [ |
| ":in_process_native_runner", |
| ":lib", |
| "//base", |
| "//base:i18n", |
| "//base/test:test_support", |
| "//mojo/application/public/cpp", |
| "//mojo/common", |
| "//mojo/environment:chromium", |
| "//mojo/fetcher", |
| "//mojo/message_pump", |
| "//mojo/package_manager", |
| "//mojo/services/test_service:bindings", |
| "//mojo/shell", |
| "//mojo/util:filename_util", |
| "//testing/gtest", |
| "//third_party/mojo/src/mojo/edk/system", |
| "//third_party/mojo/src/mojo/public/cpp/bindings", |
| "//url", |
| ] |
| |
| data_deps = [ |
| "//mojo/services/test_service:test_app", |
| "//mojo/services/test_service:test_request_tracker_app", |
| ] |
| |
| if (is_android) { |
| sources += [ "android/background_application_loader_unittest.cc" ] |
| |
| deps += [ ":jni_headers" ] |
| |
| apk_deps = [ |
| ":build_mojo_runner_test_assets", |
| ":mojo_runner_tests_java", |
| ] |
| |
| apk_asset_location = mojo_runner_test_assets_dir |
| } |
| } |
| |
| mojo_native_application("apptests") { |
| output_name = "runner_apptests" |
| |
| testonly = true |
| |
| sources = [ |
| # TODO(jam): needs http_server service. http://crbug.com/479316 |
| #"shell_apptest.cc", |
| ] |
| |
| deps = [ |
| "//base", |
| "//mojo/application/public/cpp:test_support", |
| "//mojo/runner/test:bindings", |
| "//mojo/services/network/public/interfaces", |
| "//third_party/mojo/src/mojo/public/cpp/bindings:callback", |
| ] |
| } |