# Copyright 2018 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.

assert(is_fuchsia)

import("//build/config/fuchsia/fidl_library.gni")
import("//build/config/fuchsia/rules.gni")
import("//build/util/process_version.gni")
import("//mojo/public/tools/bindings/mojom.gni")
import("//testing/test.gni")
import("//tools/grit/repack.gni")

config("webrunner_implementation") {
  defines = [ "WEBRUNNER_IMPLEMENTATION" ]
}

fuchsia_package("app_config_manager_pkg") {
  binary = ":app_config_manager_exe"
  package_name_override = "application_config_manager"
  sandbox_policy = "app/cast/application_config_manager/sandbox_policy"
}

fuchsia_package_runner("app_config_manager_runner") {
  package = ":app_config_manager_pkg"
  package_name_override = "application_config_manager"
  install_only = true
}

source_set("app_config_manager_common") {
  sources = [
    "app/cast/application_config_manager/application_config_manager.cc",
    "app/cast/application_config_manager/application_config_manager.h",
  ]
  public_deps = [
    ":cast_fidl",
    "//base",
  ]
}

source_set("app_config_manager_test_support") {
  testonly = true
  sources = [
    "app/cast/application_config_manager/test/fake_application_config_manager.cc",
    "app/cast/application_config_manager/test/fake_application_config_manager.h",
  ]
  public_deps = [
    ":cast_fidl",
    "//base",
    "//net:test_support",
  ]
}

executable("app_config_manager_exe") {
  sources = [
    "app/cast/application_config_manager/main.cc",
  ]
  deps = [
    ":app_config_manager_common",
  ]
}

test("app_config_manager_unittest") {
  sources = [
    "app/cast/application_config_manager/application_config_manager_unittest.cc",
  ]
  deps = [
    ":app_config_manager_common",
    "//base/test:run_all_unittests",
    "//base/test:test_support",
    "//testing/gtest",
  ]
}

fuchsia_package("castrunner_pkg") {
  binary = ":castrunner_exe"
  package_name_override = "cast_runner"
  sandbox_policy = "app/cast/sandbox_policy"
}

fuchsia_package_runner("castrunner") {
  package = ":castrunner_pkg"
  package_name_override = "cast_runner"
  install_only = true
  package_deps = [ [
        ":service_pkg",
        "chromium",
        ":app_config_manager_pkg",
        "application_config_manager",
      ] ]
}

source_set("castrunner_common") {
  sources = [
    "app/cast/cast_runner.cc",
    "app/cast/cast_runner.h",
  ]
  deps = [
    ":web_fidl",
    "//base",
    "//url",
  ]
  public_deps = [
    ":cast_fidl",
    ":webrunner_common",
  ]
}

executable("castrunner_exe") {
  sources = [
    "app/cast/main.cc",
  ]
  deps = [
    ":castrunner_common",
    ":webrunner_common",
    "//base",
  ]
}

# TODO(crbug.com/901955): This target is to be used for both unit tests and
# integration tests.
test("castrunner_tests") {
  sources = [
    "app/cast/cast_runner_unittest.cc",
  ]
  deps = [
    ":app_config_manager_test_support",
    ":castrunner_common",
    ":test_support",
    "//base/test:run_all_unittests",
    "//base/test:test_support",
    "//net:test_support",
    "//testing/gmock",
    "//testing/gtest",
  ]
  package_deps = [ [
        ":service_pkg",
        "chromium",
      ] ]
}

source_set("named_message_port_connector") {
  sources = [
    "common/named_message_port_connector.cc",
    "common/named_message_port_connector.h",
  ]
  data = [
    "common/named_message_port_connector.js",
  ]
  deps = [
    ":common",
    ":web_fidl",
    "//base",
    "//third_party/fuchsia-sdk/sdk:mem",
  ]
}

source_set("common") {
  sources = [
    "common/mem_buffer_util.cc",
    "common/mem_buffer_util.h",
    "common/webrunner_export.h",
  ]
  deps = [
    "//base",
    "//third_party/fuchsia-sdk/sdk:mem",
  ]
}

fuchsia_package("webrunner_pkg") {
  binary = ":webrunner_exe"
  package_name_override = "web_runner"
  sandbox_policy = "app/web/sandbox_policy"
}

fuchsia_package_runner("webrunner") {
  package = ":webrunner_pkg"
  package_name_override = "web_runner"
  install_only = true
  package_deps = [ [
        ":service_pkg",
        "chromium",
      ] ]
}

source_set("webrunner_common") {
  sources = [
    "app/common/web_component.cc",
    "app/common/web_component.h",
    "app/common/web_content_runner.cc",
    "app/common/web_content_runner.h",
  ]
  deps = [
    ":web_fidl",
    "//base",
    "//third_party/fuchsia-sdk/sdk:ui_app",
    "//third_party/fuchsia-sdk/sdk:ui_viewsv1",
    "//url",
  ]
  public_deps = [
    "//third_party/fuchsia-sdk/sdk:sys",
  ]
}

executable("webrunner_exe") {
  sources = [
    "app/web/main.cc",
  ]
  deps = [
    ":web_fidl",
    ":webrunner_common",
    "//base",
  ]
}

source_set("test_support") {
  testonly = true
  sources = [
    "test/fake_context.cc",
    "test/fake_context.h",
  ]
  deps = [
    "//base",
  ]
  public_deps = [
    ":web_fidl",
  ]
}

fuchsia_package("service_pkg") {
  binary = ":service_exe"
  package_name_override = "chromium"
  sandbox_policy = "service/sandbox_policy"
}

executable("service_exe") {
  deps = [
    ":service_lib",
    ":web_fidl",
    "//base",
    "//content/public/app:both",
    "//services/service_manager/embedder:embedder_switches",
  ]
  sources = [
    "service/web_content_service_main.cc",
  ]
}

fuchsia_package_runner("service_runner") {
  package = ":service_pkg"
  package_name_override = "chromium"
  install_only = true
}

mojom("mojom") {
  sources = [
    "common/on_load_script_injector.mojom",
  ]

  public_deps = [
    "//mojo/public/mojom/base",
  ]
}

component("service_lib") {
  deps = [
    ":common",
    ":mojom",
    ":service_pak",
    "//base",
    "//components/version_info",
    "//content/public/app:both",
    "//content/public/browser",
    "//content/public/child",
    "//content/public/common",
    "//content/public/renderer",
    "//mojo/public/cpp/bindings",
    "//services/network/public/cpp",
    "//services/service_manager/sandbox",
    "//skia/public/interfaces",
    "//third_party/blink/public/common",
    "//ui/aura",
    "//ui/display",
    "//ui/ozone",
    "//ui/platform_window",
    "//ui/wm",
    "//ui/wm/public",
  ]

  data_deps = [
    ":service_pak",
  ]
  data = [
    "$root_out_dir/webrunner.pak",
  ]
  public_deps = [
    ":web_fidl",
  ]
  configs += [ ":webrunner_implementation" ]

  sources = [
    "browser/context_impl.cc",
    "browser/context_impl.h",
    "browser/frame_impl.cc",
    "browser/frame_impl.h",
    "browser/message_port_impl.cc",
    "browser/message_port_impl.h",
    "browser/webrunner_browser_context.cc",
    "browser/webrunner_browser_context.h",
    "browser/webrunner_browser_main.cc",
    "browser/webrunner_browser_main.h",
    "browser/webrunner_browser_main_parts.cc",
    "browser/webrunner_browser_main_parts.h",
    "browser/webrunner_content_browser_client.cc",
    "browser/webrunner_content_browser_client.h",
    "browser/webrunner_net_log.cc",
    "browser/webrunner_net_log.h",
    "browser/webrunner_screen.cc",
    "browser/webrunner_screen.h",
    "browser/webrunner_url_request_context_getter.cc",
    "browser/webrunner_url_request_context_getter.h",
    "common/webrunner_content_client.cc",
    "common/webrunner_content_client.h",
    "renderer/on_load_script_injector.cc",
    "renderer/on_load_script_injector.h",
    "renderer/webrunner_content_renderer_client.cc",
    "renderer/webrunner_content_renderer_client.h",
    "service/common.cc",
    "service/common.h",
    "service/context_provider_impl.cc",
    "service/context_provider_impl.h",
    "service/context_provider_main.cc",
    "service/context_provider_main.h",
    "service/webrunner_main_delegate.cc",
    "service/webrunner_main_delegate.h",
  ]
}

repack("service_pak") {
  sources = [
    "$root_gen_dir/components/components_resources.pak",
    "$root_gen_dir/components/strings/components_strings_en-US.pak",
    "$root_gen_dir/content/app/resources/content_resources_100_percent.pak",
    "$root_gen_dir/content/app/strings/content_strings_en-US.pak",
    "$root_gen_dir/content/browser/devtools/devtools_resources.pak",
    "$root_gen_dir/content/browser/tracing/tracing_resources.pak",
    "$root_gen_dir/content/content_resources.pak",
    "$root_gen_dir/mojo/public/js/mojo_bindings_resources.pak",
    "$root_gen_dir/net/net_resources.pak",
    "$root_gen_dir/third_party/blink/public/resources/blink_resources.pak",
    "$root_gen_dir/third_party/blink/public/resources/blink_scaled_resources_100_percent.pak",
    "$root_gen_dir/ui/resources/ui_resources_100_percent.pak",
    "$root_gen_dir/ui/resources/webui_resources.pak",
    "$root_gen_dir/ui/strings/app_locale_settings_en-US.pak",
    "$root_gen_dir/ui/strings/ui_strings_en-US.pak",
  ]

  deps = [
    "//components/resources:components_resources",
    "//components/strings",
    "//content:resources",
    "//content/app/resources",
    "//content/app/strings",
    "//content/browser/devtools:resources",
    "//content/browser/tracing:resources",
    "//mojo/public/js:resources",
    "//net:net_resources",
    "//third_party/blink/public:resources",
    "//third_party/blink/public:scaled_resources_100_percent",
    "//ui/resources",
    "//ui/strings",
  ]

  output = "$root_out_dir/webrunner.pak"
}

source_set("test_common") {
  testonly = true
  sources = [
    "common/test/run_with_timeout.cc",
    "common/test/run_with_timeout.h",
    "common/test/test_common.cc",
    "common/test/test_common.h",
  ]
  deps = [
    ":common",
    ":web_fidl",
    "//base",
    "//base/test:test_config",
    "//content/test:test_support",
  ]
}

source_set("browsertest_common") {
  testonly = true
  sources = [
    "common/test/webrunner_browser_test.cc",
    "common/test/webrunner_browser_test.h",
    "common/test/webrunner_test_launcher.cc",
  ]
  deps = [
    ":service_lib",
    ":web_fidl",
    "//content/public/browser",
    "//content/test:test_support",
    "//net:test_support",
    "//testing/gtest",
    "//ui/ozone",
  ]
}

test("webrunner_browsertests") {
  sources = [
    "browser/context_impl_browsertest.cc",
    "browser/frame_impl_browsertest.cc",
    "common/named_message_port_connector_browsertest.cc",
  ]
  defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
  data = [
    "browser/test/data",
    "common/test/data",
  ]
  data_deps = [
    ":common",
  ]
  deps = [
    ":browsertest_common",
    ":common",
    ":named_message_port_connector",
    ":service_lib",
    ":test_common",
    ":web_fidl",
    "//base/test:test_support",
    "//content/public/browser",
    "//net:test_support",
    "//testing/gmock",
    "//testing/gtest",
    "//ui/ozone",
  ]
}

test("webrunner_unittests") {
  sources = [
    "service/context_provider_impl_unittest.cc",
  ]
  deps = [
    ":service_lib",
    ":test_support",
    ":web_fidl",
    "//base/test:run_all_unittests",
    "//base/test:test_support",
    "//testing/gmock",
    "//testing/gtest",
  ]
}

fidl_library("web_fidl") {
  library_name = "web"
  namespace = "chromium"

  sources = [
    "fidl/web/context.fidl",
    "fidl/web/context_provider.fidl",
    "fidl/web/frame.fidl",
    "fidl/web/navigation_controller.fidl",
    "fidl/web/navigation_event_observer.fidl",
  ]

  public_deps = [
    "//third_party/fuchsia-sdk/sdk:sys",
    "//third_party/fuchsia-sdk/sdk:ui_gfx",
    "//third_party/fuchsia-sdk/sdk:ui_viewsv1token",
  ]
}

fidl_library("cast_fidl") {
  library_name = "cast"
  namespace = "chromium"

  sources = [
    "fidl/cast/application_config.fidl",
  ]
}

# gn binary location.
if (host_os == "mac") {
  _gn_path = "//buildtools/mac/gn"
} else if (host_os == "linux") {
  _gn_path = "//buildtools/linux64/gn"
}

# Build location where all Fuchsia archive source files are placed.
_artifact_root = "$root_out_dir/fuchsia_artifacts"

# Produces a LICENSE file for webrunner and its transitive dependencies.
_license_path = "$_artifact_root/LICENSE"
action("license") {
  script = "//tools/licenses.py"
  inputs = [
    "$_gn_path",
  ]
  outputs = [
    _license_path,
  ]
  args = [
    "license_file",
    rebase_path(_license_path, root_build_dir),
    "--gn-target",
    "//webrunner:webrunner_pkg",
    "--gn-out-dir",
    ".",
  ]
}

# Extracts the numeric Chrome build ID and writes it to a file in the output
# directory.
#
# To check out the repository on the commit where the build ID was generated,
# simply call `git checkout <build-id>`, and Git will check out the commit
# associated with the <build-id> tag.
process_version("build_id") {
  template_file = "cipd/build_id.template"
  sources = [
    "//chrome/VERSION",
  ]
  output = "$_artifact_root/build_id.txt"
  process_only = true
}

# Puts copies of files at the top level of the CIPD archive's structure.
copy("restaged_packages") {
  sources = [
    "$root_gen_dir/webrunner/application_config_manager/application_config_manager.far",
    "$root_gen_dir/webrunner/cast_runner/cast_runner.far",
    "$root_gen_dir/webrunner/chromium/chromium.far",
    "$root_gen_dir/webrunner/net_http/http/http.far",
    "$root_gen_dir/webrunner/web_runner/web_runner.far",
  ]
  outputs = [
    "$_artifact_root/{{source_file_part}}",
  ]
  deps = [
    ":app_config_manager_pkg",
    ":castrunner_pkg",
    ":service_pkg",
    ":webrunner_pkg",
    "net_http:http_pkg",
  ]
}

# Specifies the build steps that must be performed before the creation of
# a CIPD archive.
group("archive_sources") {
  deps = [
    ":build_id",
    ":license",
    ":restaged_packages",
  ]
}
