# 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("//build/config/features.gni")
import("//build/config/sanitizers/sanitizers.gni")
import("//build/config/ui.gni")
import("//build/config/win/console_app.gni")
import("//build/config/win/manifest.gni")
import("//media/media_options.gni")
import("//mojo/public/tools/bindings/mojom.gni")
import("//ppapi/features/features.gni")
import("//services/service_manager/public/service_manifest.gni")
import("//tools/grit/repack.gni")
import("//tools/grit/grit_rule.gni")
if (is_android) {
  import("//build/config/android/config.gni")
} else if (is_mac) {
  import("//build/config/mac/rules.gni")
  import("//build/mac/tweak_info_plist.gni")
  import("//third_party/icu/config.gni")
  import("//v8/gni/v8.gni")
} else if (is_win) {
  import("//build/win/syzygy/syzygy.gni")
}

declare_args() {
  content_shell_product_name = "Content Shell"
  content_shell_version = "99.77.34.5"
}

config("content_shell_lib_warnings") {
  if (is_clang) {
    # TODO(thakis): Remove this once http://crbug.com/383820 is figured out
    cflags = [ "-Wno-nonnull" ]
  }
}

static_library("content_shell_lib") {
  testonly = true
  sources = [
    "android/shell_descriptors.h",
    "android/shell_manager.cc",
    "android/shell_manager.h",
    "app/blink_test_platform_support.h",
    "app/blink_test_platform_support_android.cc",
    "app/blink_test_platform_support_linux.cc",
    "app/blink_test_platform_support_mac.mm",
    "app/blink_test_platform_support_win.cc",
    "app/paths_mac.h",
    "app/paths_mac.mm",
    "app/shell_crash_reporter_client.cc",
    "app/shell_crash_reporter_client.h",
    "app/shell_main_delegate.cc",
    "app/shell_main_delegate.h",
    "app/shell_main_delegate_mac.h",
    "app/shell_main_delegate_mac.mm",
    "browser/layout_test/blink_test_controller.cc",
    "browser/layout_test/blink_test_controller.h",
    "browser/layout_test/devtools_protocol_test_bindings.cc",
    "browser/layout_test/devtools_protocol_test_bindings.h",
    "browser/layout_test/layout_test_bluetooth_adapter_provider.cc",
    "browser/layout_test/layout_test_bluetooth_adapter_provider.h",
    "browser/layout_test/layout_test_bluetooth_chooser_factory.cc",
    "browser/layout_test/layout_test_bluetooth_chooser_factory.h",
    "browser/layout_test/layout_test_bluetooth_fake_adapter_setter_impl.cc",
    "browser/layout_test/layout_test_bluetooth_fake_adapter_setter_impl.h",
    "browser/layout_test/layout_test_browser_context.cc",
    "browser/layout_test/layout_test_browser_context.h",
    "browser/layout_test/layout_test_browser_main.cc",
    "browser/layout_test/layout_test_browser_main.h",
    "browser/layout_test/layout_test_browser_main_parts.cc",
    "browser/layout_test/layout_test_browser_main_parts.h",
    "browser/layout_test/layout_test_content_browser_client.cc",
    "browser/layout_test/layout_test_content_browser_client.h",
    "browser/layout_test/layout_test_devtools_bindings.cc",
    "browser/layout_test/layout_test_devtools_bindings.h",
    "browser/layout_test/layout_test_download_manager_delegate.cc",
    "browser/layout_test/layout_test_download_manager_delegate.h",
    "browser/layout_test/layout_test_first_device_bluetooth_chooser.cc",
    "browser/layout_test/layout_test_first_device_bluetooth_chooser.h",
    "browser/layout_test/layout_test_javascript_dialog_manager.cc",
    "browser/layout_test/layout_test_javascript_dialog_manager.h",
    "browser/layout_test/layout_test_message_filter.cc",
    "browser/layout_test/layout_test_message_filter.h",
    "browser/layout_test/layout_test_notification_manager.cc",
    "browser/layout_test/layout_test_notification_manager.h",
    "browser/layout_test/layout_test_permission_manager.cc",
    "browser/layout_test/layout_test_permission_manager.h",
    "browser/layout_test/layout_test_push_messaging_service.cc",
    "browser/layout_test/layout_test_push_messaging_service.h",
    "browser/layout_test/layout_test_resource_dispatcher_host_delegate.cc",
    "browser/layout_test/layout_test_resource_dispatcher_host_delegate.h",
    "browser/layout_test/layout_test_url_request_context_getter.cc",
    "browser/layout_test/layout_test_url_request_context_getter.h",
    "browser/layout_test/mojo_layout_test_helper.cc",
    "browser/layout_test/mojo_layout_test_helper.h",
    "browser/layout_test/secondary_test_window_observer.cc",
    "browser/layout_test/secondary_test_window_observer.h",
    "browser/layout_test/test_info_extractor.cc",
    "browser/layout_test/test_info_extractor.h",
    "browser/renderer_host/shell_render_widget_host_view_mac_delegate.h",
    "browser/renderer_host/shell_render_widget_host_view_mac_delegate.mm",
    "browser/shell.cc",
    "browser/shell.h",
    "browser/shell_android.cc",
    "browser/shell_application_mac.h",
    "browser/shell_application_mac.mm",
    "browser/shell_browser_context.cc",
    "browser/shell_browser_context.h",
    "browser/shell_browser_main.cc",
    "browser/shell_browser_main.h",
    "browser/shell_browser_main_parts.cc",
    "browser/shell_browser_main_parts.h",
    "browser/shell_browser_main_parts_mac.mm",
    "browser/shell_content_browser_client.cc",
    "browser/shell_content_browser_client.h",
    "browser/shell_devtools_bindings.cc",
    "browser/shell_devtools_bindings.h",
    "browser/shell_devtools_frontend.cc",
    "browser/shell_devtools_frontend.h",
    "browser/shell_devtools_manager_delegate.cc",
    "browser/shell_devtools_manager_delegate.h",
    "browser/shell_download_manager_delegate.cc",
    "browser/shell_download_manager_delegate.h",
    "browser/shell_javascript_dialog.h",
    "browser/shell_javascript_dialog_mac.mm",
    "browser/shell_javascript_dialog_manager.cc",
    "browser/shell_javascript_dialog_manager.h",
    "browser/shell_javascript_dialog_win.cc",
    "browser/shell_login_dialog.cc",
    "browser/shell_login_dialog.h",
    "browser/shell_login_dialog_mac.mm",
    "browser/shell_mac.mm",
    "browser/shell_net_log.cc",
    "browser/shell_net_log.h",
    "browser/shell_network_delegate.cc",
    "browser/shell_network_delegate.h",
    "browser/shell_permission_manager.cc",
    "browser/shell_permission_manager.h",
    "browser/shell_platform_data_aura.cc",
    "browser/shell_platform_data_aura.h",
    "browser/shell_plugin_service_filter.cc",
    "browser/shell_plugin_service_filter.h",
    "browser/shell_quota_permission_context.cc",
    "browser/shell_quota_permission_context.h",
    "browser/shell_resource_dispatcher_host_delegate.cc",
    "browser/shell_resource_dispatcher_host_delegate.h",
    "browser/shell_speech_recognition_manager_delegate.cc",
    "browser/shell_speech_recognition_manager_delegate.h",
    "browser/shell_url_request_context_getter.cc",
    "browser/shell_url_request_context_getter.h",
    "browser/shell_web_contents_view_delegate.h",
    "browser/shell_web_contents_view_delegate_android.cc",
    "browser/shell_web_contents_view_delegate_creator.h",
    "browser/shell_web_contents_view_delegate_mac.mm",
    "common/layout_test/layout_test_content_client.cc",
    "common/layout_test/layout_test_content_client.h",
    "common/layout_test/layout_test_messages.cc",
    "common/layout_test/layout_test_messages.h",
    "common/layout_test/layout_test_switches.cc",
    "common/layout_test/layout_test_switches.h",
    "common/leak_detection_result.h",
    "common/power_monitor_test_impl.cc",
    "common/power_monitor_test_impl.h",
    "common/shell_content_client.cc",
    "common/shell_content_client.h",
    "common/shell_messages.cc",
    "common/shell_messages.h",
    "common/shell_origin_trial_policy.cc",
    "common/shell_origin_trial_policy.h",
    "common/shell_switches.cc",
    "common/shell_switches.h",
    "gpu/shell_content_gpu_client.cc",
    "gpu/shell_content_gpu_client.h",
    "renderer/layout_test/blink_test_helpers.cc",
    "renderer/layout_test/blink_test_helpers.h",
    "renderer/layout_test/blink_test_runner.cc",
    "renderer/layout_test/blink_test_runner.h",
    "renderer/layout_test/layout_test_content_renderer_client.cc",
    "renderer/layout_test/layout_test_content_renderer_client.h",
    "renderer/layout_test/layout_test_render_frame_observer.cc",
    "renderer/layout_test/layout_test_render_frame_observer.h",
    "renderer/layout_test/layout_test_render_thread_observer.cc",
    "renderer/layout_test/layout_test_render_thread_observer.h",
    "renderer/layout_test/leak_detector.cc",
    "renderer/layout_test/leak_detector.h",
    "renderer/layout_test/test_media_stream_renderer_factory.cc",
    "renderer/layout_test/test_media_stream_renderer_factory.h",
    "renderer/layout_test/test_media_stream_video_renderer.cc",
    "renderer/layout_test/test_media_stream_video_renderer.h",
    "renderer/shell_content_renderer_client.cc",
    "renderer/shell_content_renderer_client.h",
    "renderer/shell_render_view_observer.cc",
    "renderer/shell_render_view_observer.h",
    "utility/shell_content_utility_client.cc",
    "utility/shell_content_utility_client.h",
  ]

  configs += [
    ":content_shell_lib_warnings",
    "//build/config:precompiled_headers",

    # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
    "//build/config/compiler:no_size_t_to_int_warning",
  ]

  defines = [ "CONTENT_SHELL_VERSION=\"$content_shell_version\"" ]

  public_deps = [
    # This exposes all public content APIs.
    "//content/public/app:both",
    "//content/public/browser",
    "//content/public/child",
    "//content/public/common",
    "//content/public/gpu",
    "//content/public/network",
    "//content/public/renderer",
    "//content/public/utility",
    "//ipc",
  ]
  deps = [
    ":content_shell_packaged_services_manifest_overlay",
    ":mojo_bindings",
    ":resources",
    "//base",
    "//base:base_static",
    "//base/third_party/dynamic_annotations",
    "//cc",
    "//components/cdm/renderer",
    "//components/crash/content/app",
    "//components/crash/content/app:test_support",
    "//components/crash/content/browser",
    "//components/keyed_service/content",
    "//components/network_session_configurator/browser",
    "//components/plugins/renderer",
    "//components/url_formatter",
    "//components/web_cache/renderer",
    "//content:resources",
    "//content/app/resources",
    "//content/app/strings",
    "//content/gpu",
    "//content/public/common",
    "//content/public/common:service_names",
    "//content/shell/test_runner:test_runner",
    "//content/test:content_test_mojo_bindings",
    "//content/test:layouttest_support",
    "//content/test:mojo_layouttest_bindings",
    "//content/test:test_support",
    "//device/bluetooth",
    "//device/bluetooth:fake_bluetooth",
    "//device/bluetooth:mocks",
    "//device/geolocation",
    "//device/geolocation/public/interfaces",
    "//device/sensors/public/cpp:full",
    "//gin",
    "//gpu",
    "//media",
    "//media/capture",
    "//media/mojo:features",
    "//mojo/edk/js",
    "//net",
    "//net:net_resources",
    "//net:test_support",
    "//ppapi/features",
    "//sandbox",
    "//services/service_manager/public/cpp",
    "//services/test/echo:lib",
    "//services/test/echo/public/interfaces",
    "//skia",
    "//storage/browser",
    "//testing/gmock",
    "//testing/gtest",
    "//third_party/WebKit/public:blink",
    "//third_party/WebKit/public:features",
    "//third_party/WebKit/public:image_resources",
    "//third_party/WebKit/public:resources",
    "//third_party/WebKit/public:test_support",
    "//third_party/icu",
    "//ui/base",
    "//ui/base/ime",
    "//ui/display",
    "//ui/events:events_base",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/gfx/ipc",
    "//ui/gfx/ipc/geometry",
    "//ui/gfx/ipc/skia",
    "//ui/gl",
    "//url",
    "//v8",
  ]

  if (is_fuchsia) {
    sources += [ "app/blink_test_platform_support_fuchsia.cc" ]
    deps -= [
      "//components/crash/content/app",
      "//components/crash/content/app:test_support",
      "//components/crash/content/browser",
    ]
  }

  # Annoyingly, this target and layouttest_support have circular includes.
  allow_circular_includes_from = [ "//content/test:layouttest_support" ]

  if (enable_plugins) {
    deps += [
      "//cc/paint",
      "//content/ppapi_plugin",
      "//ppapi:blink_deprecated_test_plugin",
      "//ppapi:blink_test_plugin",
      "//ppapi/shared_impl",
    ]
  }
  if (mojo_media_host == "browser") {
    deps += [
      "//media/mojo/interfaces:constants",
      "//media/mojo/services",
    ]
  }

  if (is_win) {
    sources += [
      "common/v8_breakpad_support_win.cc",
      "common/v8_breakpad_support_win.h",
    ]
  }

  if (is_linux) {
    deps += [
      "//third_party/fontconfig",
      "//ui/gfx:test_support",
    ]
  }

  if (use_x11) {
    # Some tests rely on this tool at runtime. Note: it might be better if
    # the tests that needed it had this as a dep instead of adding it here.
    deps += [ "//ui/events/devices/x11" ]
  }

  if (is_android) {
    sources += [
      "browser/layout_test/scoped_android_configuration.cc",
      "browser/layout_test/scoped_android_configuration.h",
    ]
    deps += [
      "//base/test:test_support",
      "//content/shell/android:content_shell_jni_headers",
    ]
  }

  if (use_aura) {
    deps += [
      "//ui/aura",
      "//ui/aura:test_support",
      "//ui/events",
      "//ui/strings",
      "//ui/wm",
    ]

    if (toolkit_views) {
      sources += [
        "browser/shell_views.cc",
        "browser/shell_web_contents_view_delegate_views.cc",
      ]
      deps += [
        "//ui/resources",
        "//ui/views",
        "//ui/views:test_support",
        "//ui/views/controls/webview",
        "//ui/wm:test_support",
      ]
    } else {
      sources += [
        "browser/shell_aura.cc",
        "browser/shell_web_contents_view_delegate_aura.cc",
      ]
    }
  } else {
    sources -= [
      "browser/shell_platform_data_aura.cc",
      "browser/shell_platform_data_aura.h",
    ]
  }

  if (is_chromeos) {
    deps += [
      "//chromeos",
      "//ui/wm:test_support",
    ]
  }

  if (is_linux) {
    deps += [ "//build/config/freetype" ]
  }

  if (!enable_plugins) {
    sources -= [
      "browser/shell_plugin_service_filter.cc",
      "browser/shell_plugin_service_filter.h",
    ]
  }
}

grit("content_shell_resources_grit") {
  # External code should depend on ":resources" instead.
  visibility = [ ":*" ]
  source = "shell_resources.grd"
  outputs = [
    "grit/shell_resources.h",
    "shell_resources.pak",
  ]

  # Mojo manifest overlays are generated.
  source_is_generated = true
  grit_flags = [
    "-E",
    "root_gen_dir=" + rebase_path(root_gen_dir, root_build_dir),
  ]
  deps = [
    ":content_shell_packaged_services_manifest_overlay",
  ]
}

copy("copy_shell_resources") {
  sources = [
    "$target_gen_dir/shell_resources.pak",
  ]
  outputs = [
    "$root_out_dir/shell_resources.pak",
  ]

  public_deps = [
    ":content_shell_resources_grit",
  ]
}

group("resources") {
  public_deps = [
    ":copy_shell_resources",
  ]
  deps = [
    "//content/shell/test_runner:resources",
  ]
  data_deps = [
    "//content/shell/test_runner:resources",
  ]
}

repack("pak") {
  sources = [
    "$root_gen_dir/blink/public/resources/blink_resources.pak",
    "$root_gen_dir/blink/public/resources/blink_scaled_resources_100_percent.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/tracing/tracing_resources.pak",
    "$root_gen_dir/content/content_resources.pak",
    "$root_gen_dir/content/shell/shell_resources.pak",
    "$root_gen_dir/mojo/public/js/mojo_bindings_resources.pak",
    "$root_gen_dir/net/net_resources.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 = [
    ":resources",
    "//content:resources",
    "//content/app/resources",
    "//content/app/strings",
    "//content/browser/tracing:resources",
    "//mojo/public/js:resources",
    "//net:net_resources",
    "//third_party/WebKit/public:resources",
    "//third_party/WebKit/public:scaled_resources_100_percent",
    "//ui/resources",
    "//ui/strings",
  ]

  if (toolkit_views) {
    deps += [ "//ui/views/resources" ]
    sources +=
        [ "$root_gen_dir/ui/views/resources/views_resources_100_percent.pak" ]
  }
  if (!is_android) {
    sources +=
        [ "$root_gen_dir/content/browser/devtools/devtools_resources.pak" ]
    deps += [ "//content/browser/devtools:resources" ]
  }
  output = "$root_out_dir/content_shell.pak"
}

if (is_android) {
  group("content_shell") {
    testonly = true
    deps = [
      "//content/shell/android:content_shell_apk",
    ]
  }
} else if (is_mac) {
  tweak_info_plist("content_shell_plist") {
    testonly = true
    info_plist = "app/app-Info.plist"
    args = [
      "--scm=1",
      "--version",
      content_shell_version,
    ]
  }
  mac_app_bundle("content_shell") {
    testonly = true
    output_name = content_shell_product_name
    sources = [
      "app/shell_main.cc",
    ]
    deps = [
      ":content_shell_framework_bundle_data",
      ":content_shell_resources_bundle_data",
      "//build/config:exe_and_shlib_deps",

      # TODO(rsesek): Remove this after GYP is gone, since it only needs to
      # be here per the comment in blink_test_platform_support_mac.mm about
      # the bundle structure.
      "//content/shell/test_runner:resources",
    ]
    ldflags = [
      # The main app is at Content Shell.app/Contents/MacOS/Content Shell
      # so set the rpath up to Contents/ so that the loader can find
      # Framworks/.
      "-rpath",
      "@executable_path/../",
    ]
    info_plist_target = ":content_shell_plist"
    data_deps = [
      ":content_shell_lib",
    ]
  }
} else {
  executable("content_shell") {
    testonly = true

    sources = [
      "app/shell_main.cc",
    ]

    if (is_win) {
      sources += [ "app/shell.rc" ]
    }

    defines = []

    deps = [
      ":content_shell_lib",
      ":pak",
      "//build/config:exe_and_shlib_deps",
      "//build/win:default_exe_manifest",
    ]

    data_deps = [
      ":pak",
    ]

    public_deps = [
      "//tools/v8_context_snapshot:v8_context_snapshot",
    ]

    data = [
      "$root_out_dir/v8_context_snapshot.bin",
    ]

    if (is_win) {
      deps += [ "//sandbox" ]

      # This is a large module that can't do incremental linking in some cases.
      configs -= [ "//build/config/win:default_incremental_linking" ]
      configs +=
          [ "//build/config/win:default_large_module_incremental_linking" ]
      if (win_console_app) {
        defines += [ "WIN_CONSOLE_APP" ]
      } else {
        # Set /SUBSYSTEM:WINDOWS unless a console build has been requested.
        configs -= [ "//build/config/win:console" ]
        configs += [ "//build/config/win:windowed" ]
      }

      data_deps +=
          [ "//third_party/crashpad/crashpad/handler:crashpad_handler" ]
    }

    if (is_linux) {
      data_deps += [ "//third_party/content_shell_fonts" ]
    }

    if (is_linux && !is_component_build) {
      # Set rpath to find our own libfreetype even in a non-component build.
      configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
    }
  }

  if (is_fuchsia) {
    fuchsia_executable_runner("content_shell_fuchsia") {
      testonly = true
      exe_target = ":content_shell"
    }
  }
}

if (is_win) {
  if (is_syzyasan) {
    syzygy_asan("content_shell_syzyasan") {
      binary_name = "content_shell.exe"
      dest_dir = "$root_out_dir/syzygy"
      deps = [
        "//content/shell:content_shell",
      ]
      testonly = true
    }
  }
}

if (is_mac) {
  bundle_data("content_shell_framework_helpers") {
    testonly = true
    sources = [
      "$root_out_dir/crashpad_handler",
    ]
    outputs = [
      "{{bundle_contents_dir}}/Helpers/{{source_file_part}}",
    ]
    public_deps = [
      "//third_party/crashpad/crashpad/handler:crashpad_handler",
    ]
  }

  mac_xib_bundle_data("content_shell_framework_xibs") {
    sources = [
      "app/English.lproj/HttpAuth.xib",
      "app/English.lproj/MainMenu.xib",
    ]
    output_path = "{{bundle_resources_dir}}/English.lproj"
  }

  bundle_data("content_shell_framework_resources") {
    sources = [
      "$root_out_dir/content_shell.pak",
      "$root_out_dir/v8_context_snapshot.bin",
      "resources/missingImage.png",
    ]

    public_deps = [
      ":pak",
      "//tools/v8_context_snapshot:v8_context_snapshot",
    ]

    if (icu_use_data_file) {
      sources += [ "$root_out_dir/icudtl.dat" ]
      deps = [
        "//third_party/icu:icudata",
      ]
    }

    if (v8_use_external_startup_data) {
      sources += [
        "$root_out_dir/natives_blob.bin",
        "$root_out_dir/snapshot_blob.bin",
      ]
      public_deps += [ "//v8" ]
    }

    outputs = [
      "{{bundle_resources_dir}}/{{source_file_part}}",
    ]
  }

  if (enable_plugins) {
    bundle_data("content_shell_framework_plugins") {
      sources = [
        "$root_out_dir/blink_deprecated_test_plugin.plugin",
        "$root_out_dir/blink_test_plugin.plugin",
      ]

      outputs = [
        "{{bundle_contents_dir}}/{{source_file_part}}",
      ]

      public_deps = [
        "//ppapi:blink_deprecated_test_plugin",
        "//ppapi:blink_test_plugin",
      ]
    }
  }

  content_shell_framework_name = "$content_shell_product_name Framework"
  content_shell_helper_name = "$content_shell_product_name Helper"

  tweak_info_plist("content_shell_framework_plist") {
    testonly = true
    info_plist = "app/framework-Info.plist"
    args = [
      "--breakpad=0",
      "--keystone=0",
      "--scm=1",
      "--version",
      content_shell_version,
      "--branding",
      content_shell_product_name,
    ]
  }

  mac_framework_bundle("content_shell_framework") {
    testonly = true

    output_name = content_shell_framework_name

    sources = [
      "app/shell_content_main.cc",
      "app/shell_content_main.h",
    ]

    public_deps = [
      ":content_shell_lib",
    ]
    deps = [
      ":content_shell_framework_helpers",
      ":content_shell_framework_resources",
      ":content_shell_framework_xibs",
      "//third_party/icu:icudata",
    ]

    if (enable_plugins) {
      deps += [ ":content_shell_framework_plugins" ]
    }

    # Both the main :content_shell and :content_shell_helper_app executables
    # need to link the framework. Because they are at different directory
    # depths, using @executable_path as the install_name would require using
    # install_name_tool on one of the executables. However install_name_tool
    # only operates in-place, which is problematic to express in GN. Instead,
    # use rpath-based loading.
    # TODO(rsesek): After GYP is gone, re-write content_shell_main to be like
    # chrome_main and use dlopen() instead of a linked framework.
    ldflags = [ "-Wl,-install_name,@rpath/Frameworks/$output_name.framework/$output_name" ]

    if (is_component_build) {
      # Set up the rpath for the framework so that it can find dylibs in the
      # root output directory. The framework is at
      # Content Shell.app/Contents/Frameworks/Content Shell Framework.framework/Content Shell Framework
      # so use loader_path to go back to the root output directory.
      ldflags += [
        "-rpath",
        "@loader_path/../../../..",
      ]
    }

    info_plist_target = ":content_shell_framework_plist"
  }

  tweak_info_plist("content_shell_helper_plist") {
    testonly = true
    info_plist = "app/helper-Info.plist"
    args = [
      "--breakpad=0",
      "--keystone=0",
      "--scm=0",
      "--version",
      content_shell_version,
    ]
  }

  mac_app_bundle("content_shell_helper_app") {
    testonly = true
    output_name = content_shell_helper_name
    sources = [
      "app/shell_main.cc",
    ]
    deps = [
      ":content_shell_framework+link",
      "//build/config:exe_and_shlib_deps",
    ]
    ldflags = [
      # The helper is in Content Shell.app/Contents/Frameworks/Content Shell Helper.app/Contents/MacOS/
      # so set rpath up to Contents/ so that the loader can find Frameworks/.
      "-rpath",
      "@executable_path/../../../..",
    ]
    info_plist_target = ":content_shell_helper_plist"
  }

  bundle_data("content_shell_framework_bundle_data") {
    testonly = true
    sources = [
      "$root_out_dir/$content_shell_framework_name.framework",
      "$root_out_dir/$content_shell_helper_name.app",
    ]
    outputs = [
      "{{bundle_contents_dir}}/Frameworks/{{source_file_part}}",
    ]
    public_deps = [
      ":content_shell_framework+link",
      ":content_shell_helper_app",
    ]
  }

  bundle_data("content_shell_resources_bundle_data") {
    testonly = true
    sources = [
      "app/app.icns",
    ]
    outputs = [
      "{{bundle_resources_dir}}/{{source_file_part}}",
    ]
  }
}

mojom("mojo_bindings") {
  sources = [
    "common/layout_test.mojom",
    "common/layout_test/layout_test_bluetooth_fake_adapter_setter.mojom",
    "common/power_monitor_test.mojom",
  ]
  public_deps = [
    "//mojo/common:common_custom_types",
    "//ui/gfx/geometry/mojo",
    "//url/mojo:url_mojom_gurl",
  ]
}

service_manifest("content_shell_packaged_services_manifest_overlay") {
  source = "//content/shell/browser/content_shell_packaged_services_manifest_overlay.json"
  packaged_services = [ "//services/test/echo:manifest" ]
}

group("content_shell_crash_test") {
  testonly = true
  data_deps = [
    ":content_shell",
    "//third_party/mesa:osmesa",
  ]
  data = [
    "//content/shell/tools/breakpad_integration_test.py",
    "//testing/scripts/common.py",
    "//testing/scripts/content_shell_crash_test.py",
    "//testing/xvfb.py",
  ]
  if (is_posix) {
    data += [
      "//components/crash/content/tools/generate_breakpad_symbols.py",
      "//components/crash/content/tools/dmp2minidump.py",
    ]
  }
  if (is_win) {
    data_deps += [ "//build/win:copy_cdb_to_output" ]
  }
  if (is_posix && !is_android) {
    data_deps += [
      "//third_party/breakpad:dump_syms($host_toolchain)",
      "//third_party/breakpad:minidump_stackwalk($host_toolchain)",
    ]
  }
  if (is_android) {
    data_deps += [
      "//third_party/breakpad:dump_syms",
      "//third_party/breakpad:microdump_stackwalk",
      "//third_party/breakpad:minidump_dump",
      "//third_party/breakpad:minidump_stackwalk",
      "//third_party/breakpad:symupload",
      "//tools/android/forwarder2",
    ]
  }
}
