chromium/components/webapps/browser/BUILD.gn

# Copyright 2020 The Chromium Authors
# 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")

assert(use_blink)

# This source set should contain only types and constants and no dependencies,
# for use in crosapi type mappings.
source_set("constants") {
  sources = [
    "install_result_code.cc",
    "install_result_code.h",
    "uninstall_result_code.cc",
    "uninstall_result_code.h",
  ]
}

source_set("webapps_client") {
  sources = [
    "webapps_client.cc",
    "webapps_client.h",
  ]
  public_deps = [
    "//base",
    "//components/security_state/core",
    "//components/webapps/common",
  ]
  deps = [ "//components/segmentation_platform/public:public" ]
}

source_set("browser") {
  sources = [
    "banners/app_banner_manager.cc",
    "banners/app_banner_manager.h",
    "banners/app_banner_metrics.cc",
    "banners/app_banner_metrics.h",
    "banners/app_banner_settings_helper.cc",
    "banners/app_banner_settings_helper.h",
    "banners/install_banner_config.cc",
    "banners/install_banner_config.h",
    "banners/installable_web_app_check_result.h",
    "banners/native_app_banner_data.cc",
    "banners/native_app_banner_data.h",
    "banners/web_app_banner_data.cc",
    "banners/web_app_banner_data.h",
    "features.cc",
    "features.h",
    "installable/installable_data.cc",
    "installable/installable_data.h",
    "installable/installable_data_fetcher.cc",
    "installable/installable_data_fetcher.h",
    "installable/installable_evaluator.cc",
    "installable/installable_evaluator.h",
    "installable/installable_icon_fetcher.cc",
    "installable/installable_icon_fetcher.h",
    "installable/installable_logging.cc",
    "installable/installable_logging.h",
    "installable/installable_manager.cc",
    "installable/installable_manager.h",
    "installable/installable_metrics.cc",
    "installable/installable_metrics.h",
    "installable/installable_page_data.cc",
    "installable/installable_page_data.h",
    "installable/installable_params.cc",
    "installable/installable_params.h",
    "installable/installable_task.cc",
    "installable/installable_task.h",
    "installable/installable_task_queue.cc",
    "installable/installable_task_queue.h",
    "installable/metrics/site_manifest_metrics_task.cc",
    "installable/metrics/site_manifest_metrics_task.h",
    "installable/metrics/site_quality_metrics_task.cc",
    "installable/metrics/site_quality_metrics_task.h",
    "installable/ml_install_operation_tracker.cc",
    "installable/ml_install_operation_tracker.h",
    "installable/ml_install_result_reporter.cc",
    "installable/ml_install_result_reporter.h",
    "installable/ml_installability_promoter.cc",
    "installable/ml_installability_promoter.h",
    "pwa_install_path_tracker.cc",
    "pwa_install_path_tracker.h",
    "web_contents/web_app_url_loader.cc",
    "web_contents/web_app_url_loader.h",
  ]
  deps = [
    "//base",
    "//build:android_buildflags",
    "//components/back_forward_cache",
    "//components/content_settings/core/browser",
    "//components/favicon/content",
    "//components/favicon/core",
    "//components/favicon_base",
    "//components/password_manager/content/common",
    "//components/permissions",
    "//components/security_state/core",
    "//components/segmentation_platform/public:public",
    "//components/site_engagement/content",
    "//components/variations",
    "//components/webapps/common",
    "//components/webapps/common:mojo_bindings",
    "//content/public/browser",
    "//content/public/common",
    "//net",
    "//services/metrics/public/cpp:ukm_builders",
    "//services/network/public/cpp",
    "//skia",
    "//third_party/blink/public/common",
    "//third_party/blink/public/mojom:mojom_platform_headers",
    "//url",
  ]

  public_deps = [
    ":constants",
    ":webapps_client",
  ]

  if (is_android) {
    sources += [
      "android/add_to_homescreen_coordinator.cc",
      "android/add_to_homescreen_coordinator.h",
      "android/add_to_homescreen_data_fetcher.cc",
      "android/add_to_homescreen_data_fetcher.h",
      "android/add_to_homescreen_installer.cc",
      "android/add_to_homescreen_installer.h",
      "android/add_to_homescreen_mediator.cc",
      "android/add_to_homescreen_mediator.h",
      "android/add_to_homescreen_params.cc",
      "android/add_to_homescreen_params.h",
      "android/ambient_badge_manager.cc",
      "android/ambient_badge_manager.h",
      "android/app_banner_manager_android.cc",
      "android/app_banner_manager_android.h",
      "android/bottomsheet/pwa_bottom_sheet_controller.cc",
      "android/bottomsheet/pwa_bottom_sheet_controller.h",
      "android/install_prompt_prefs.cc",
      "android/install_prompt_prefs.h",
      "android/installable/installable_ambient_badge_client.h",
      "android/installable/installable_ambient_badge_message_controller.cc",
      "android/installable/installable_ambient_badge_message_controller.h",
      "android/pwa_universal_install_bottom_sheet_coordinator.cc",
      "android/shortcut_info.cc",
      "android/shortcut_info.h",
      "android/webapk/webapk_icons_hasher.cc",
      "android/webapk/webapk_icons_hasher.h",
      "android/webapk/webapk_proto_builder.cc",
      "android/webapk/webapk_proto_builder.h",
      "android/webapk/webapk_single_icon_hasher.cc",
      "android/webapk/webapk_single_icon_hasher.h",
      "android/webapk/webapk_types.h",
      "android/webapp_icon.cc",
      "android/webapp_icon.h",
      "android/webapps_icon_utils.cc",
      "android/webapps_icon_utils.h",
      "android/webapps_utils.cc",
      "android/webapps_utils.h",
    ]

    public_deps += [ "android:webapps_jni_headers" ]

    deps += [
      "//base",
      "//components/dom_distiller/core",
      "//components/feature_engagement",
      "//components/messages/android",
      "//components/messages/android:feature_flags",
      "//components/prefs:prefs",
      "//components/strings",
      "//components/url_formatter",
      "//components/version_info",
      "//components/version_info/android:channel_getter",
      "//components/webapk:proto",
      "//components/webapps/common:mojo_bindings",
      "//services/device/public/mojom",
      "//third_party/smhasher:murmurhash2",
      "//ui/android:android",
      "//ui/base",
      "//ui/gfx",
    ]
  }
}

source_set("test_support") {
  testonly = true
  sources = [
    "installable/fake_installable_manager.cc",
    "installable/fake_installable_manager.h",
    "test/service_worker_registration_waiter.cc",
    "test/service_worker_registration_waiter.h",
  ]
  deps = [
    ":browser",
    "//base",
    "//components/webapps/common:mojo_bindings",
    "//content/test:test_support",
    "//skia",
    "//third_party/blink/public/common:headers",
    "//third_party/blink/public/mojom:mojom_platform_headers",
    "//url",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "banners/app_banner_settings_helper_unittest.cc",
    "install_result_code_unittest.cc",
    "installable/installable_evaluator_unittest.cc",
    "installable/installable_task_queue_unittest.cc",
    "pwa_install_path_tracker_unittest.cc",
    "web_contents/web_app_url_loader_unittest.cc",
  ]
  deps = [
    ":browser",
    "//base",
    "//base/test:test_support",
    "//components/content_settings/core/browser",
    "//components/permissions:test_support",
    "//components/prefs:test_support",
    "//components/site_engagement/content",
    "//components/user_prefs",
    "//content/public/browser",
    "//content/public/common",
    "//content/test:test_support",
    "//testing/gtest",
    "//third_party/blink/public/mojom:mojom_platform_headers",
  ]

  if (is_ios) {
    deps += [ "//components/test:webapps_test_bundle_data" ]
  }

  if (is_android) {
    sources += [ "android/installable/installable_ambient_badge_message_controller_unittest.cc" ]
    deps += [ "//components/messages/android:test_support" ]
  }
}