# 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("//extensions/common/api/schema.gni")
import("//extensions/features/features.gni")
import("//mojo/public/tools/bindings/mojom.gni")
import("//tools/json_schema_compiler/json_schema_api.gni")

assert(enable_extensions)

json_schema_api("generated_api") {
  sources = extensions_api_schema_files
  schemas = true
  bundle = true
  bundle_name = ""
  root_namespace = extensions_api_root_namespace
  uncompiled_sources = extensions_api_uncompiled_sources
  uncompiled_bundle_schema_sources =
      extensions_api_uncompiled_bundle_schema_sources
  deps = [
    "//base",
    "//extensions/features",
  ]
}

mojom("mojom") {
  sources = [
    "mime_handler.mojom",
  ]

  # TODO(crbug.com/714018): Convert the implementation to use OnceCallback.
  use_once_callback = false

  # TODO(crbug.com/699569): Convert to use the new JS bindings.
  use_new_js_bindings = false
}

group("api") {
  public_deps = [
    ":generated_api",
    ":mojom",
    "//extensions/features",
  ]
}
