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

import("//extensions/buildflags/buildflags.gni")
import("//pdf/features.gni")

assert(enable_extensions && !is_android)

source_set("mime_handler") {
  sources = [
    "generic_mime_handler_stream_delegate.cc",
    "generic_mime_handler_stream_delegate.h",
    "mime_handler_stream_delegate.cc",
    "mime_handler_stream_delegate.h",
    "mime_handler_stream_manager.cc",
    "mime_handler_stream_manager.h",
    "mime_handler_ui_util.cc",
    "mime_handler_ui_util.h",
    "stream_info.cc",
    "stream_info.h",
  ]
  public_deps = [
    "//base",
    "//content/public/browser",
    "//extensions/browser:browser_sources",
    "//extensions/common:mojom",
    "//mojo/public/cpp/bindings",
  ]
  deps = [
    ":stream_container",
    "//components/crash/core/common:crash_key",
    "//extensions/common",
    "//extensions/common:common_constants",
  ]
}

source_set("mime_handler_registry") {
  sources = [
    "mime_handler_registry.cc",
    "mime_handler_registry.h",
  ]
  public_deps = [
    "//base",
    "//components/keyed_service/core",
    "//extensions/browser:browser_sources",
    "//extensions/common",
  ]
  deps = [
    "//components/keyed_service/content",
    "//content/public/browser",
  ]
}

source_set("mime_handler_page") {
  sources = [
    "mime_handler_page.cc",
    "mime_handler_page.h",
  ]
  public_deps = [
    "//base",
    "//url",
  ]
  deps = [
    "//content/public/browser",
    "//content/public/common",
    "//content/public/common:buildflags",
    "//pdf:buildflags",
    "//skia",
  ]
  if (enable_pdf) {
    deps += [
      "//components/resources:components_resources_grit",
      "//ui/base",
    ]
  }
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "mime_handler_body_cache_unittest.cc",
    "mime_handler_registry_unittest.cc",
    "mime_handler_stream_delegate_unittest.cc",
    "mime_handler_stream_manager_unittest.cc",
    "stream_container_unittest.cc",
  ]
  deps = [
    ":mime_handler",
    ":mime_handler_registry",
    ":stream_container",
    ":test_helpers",
    "//base",
    "//base/test:test_support",
    "//components/version_info",
    "//content/public/browser",
    "//content/test:test_support",
    "//extensions:test_support",
    "//extensions/browser",
    "//extensions/common",
    "//mojo/public/cpp/system",
    "//services/network/public/mojom:url_loader_base",
    "//testing/gmock",
    "//testing/gtest",
    "//third_party/blink/public/mojom:mojom_platform_headers",
    "//url",
  ]
}

source_set("test_helpers") {
  testonly = true
  sources = [
    "mime_handler_test_helpers.cc",
    "mime_handler_test_helpers.h",
    "mock_mime_handler_stream_delegate.cc",
    "mock_mime_handler_stream_delegate.h",
  ]
  public_deps = [
    ":mime_handler",
    "//mojo/public/cpp/system",
    "//testing/gmock",
  ]
  deps = [
    ":stream_container",
    "//base",
    "//net",
    "//services/network/public/mojom",
    "//url",
  ]
}

source_set("stream_container") {
  sources = [
    "mime_handler_body_cache.cc",
    "mime_handler_body_cache.h",
    "stream_container.cc",
    "stream_container.h",
  ]
  public_deps = [
    "//base",
    "//extensions/common",
    "//extensions/common/api",
    "//mojo/public/cpp/system",
    "//third_party/blink/public/mojom:mojom_platform_headers",
    "//url",
  ]
  deps = [
    "//mojo/public/cpp/bindings",
    "//net",
  ]
}
