# Copyright 2026 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

source_set("loader") {
  sources = [
    "from_gws_navigation_and_keep_alive_request_observer.h",
    "from_gws_navigation_and_keep_alive_request_tab_helper.h",
    "from_gws_navigation_and_keep_alive_request_tracker.h",
    "from_gws_navigation_and_keep_alive_request_tracker_factory.h",
    "keep_alive_request_tracker.h",
  ]
  public_deps = [
    "//base",
    "//chrome/browser/profiles:profile",
    "//components/keyed_service/core",
    "//content/public/browser",
    "//services/metrics/public/cpp:ukm_builders",
    "//url",
  ]

  # ScopedKeepAlive / ScopedProfileKeepAlive are desktop-only.
  if (!is_android) {
    sources += [
      "features.cc",
      "features.h",
      "fetch_keepalive_process_manager.h",
    ]
  }
}

source_set("impl") {
  sources = [
    "from_gws_navigation_and_keep_alive_request_observer.cc",
    "from_gws_navigation_and_keep_alive_request_tab_helper.cc",
    "from_gws_navigation_and_keep_alive_request_tracker.cc",
    "from_gws_navigation_and_keep_alive_request_tracker_factory.cc",
    "keep_alive_request_tracker.cc",
  ]
  deps = [
    ":loader",
    "//chrome/browser/profiles:profile",
    "//chrome/browser/ui/navigator",
    "//components/page_load_metrics/browser",
    "//components/page_load_metrics/google/browser",
    "//services/metrics/public/cpp:metrics_cpp",
  ]
  public_deps = [ "//chrome/browser:browser_public_dependencies" ]

  # ScopedKeepAlive / ScopedProfileKeepAlive are desktop-only.
  if (!is_android) {
    sources += [ "fetch_keepalive_process_manager.cc" ]
    deps += [
      "//chrome/browser/profiles/keep_alive",
      "//chrome/browser/ui/browser_window",
      "//components/keep_alive_registry",
    ]
  }
}

if (!is_android) {
  source_set("browser_tests") {
    testonly = true
    defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
    sources = [
      "keep_alive_browser_process_alive_browsertest.cc",
      "keep_alive_category_request_browsertest.cc",
      "keep_alive_request_browsertest_util.cc",
      "keep_alive_request_browsertest_util.h",
      "keep_alive_url_browsertest.cc",
      "signed_exchange_policy_browsertest.cc",
    ]
    deps = [
      ":impl",
      ":loader",
      "//chrome/browser:chrome_content_browser_client",
      "//chrome/browser/lifetime",
      "//chrome/browser/ssl:cert_verifier_test_support",
      "//chrome/browser/ui",
      "//chrome/test:test_support",
      "//chrome/test:test_support_ui",
      "//components/keep_alive_registry",
      "//components/page_load_metrics/browser",
    ]
  }
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "from_gws_navigation_and_keep_alive_request_observer_unittest.cc",
    "from_gws_navigation_and_keep_alive_request_tracker_unittest.cc",
    "keep_alive_request_tracker_unittest.cc",
  ]
  deps = [
    ":impl",
    ":loader",
    "//chrome/test:test_support",
    "//components/page_load_metrics/browser",
    "//components/ukm:test_support",
  ]
}
