# Copyright 2017 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("//third_party/blink/renderer/core/core.gni")

blink_core_sources("script") {
  split_count = 5

  sources = [
    "classic_pending_script.cc",
    "classic_pending_script.h",
    "classic_script.cc",
    "classic_script.h",
    "document_modulator_impl.cc",
    "document_modulator_impl.h",
    "document_write_intervention.cc",
    "document_write_intervention.h",
    "dynamic_module_resolver.cc",
    "dynamic_module_resolver.h",
    "fetch_client_settings_object_impl.cc",
    "fetch_client_settings_object_impl.h",
    "html_parser_script_runner.cc",
    "html_parser_script_runner.h",
    "html_parser_script_runner_host.h",
    "ignore_destructive_write_count_incrementer.h",
    "layered_api.cc",
    "layered_api.h",
    "modulator.cc",
    "modulator.h",
    "modulator_impl_base.cc",
    "modulator_impl_base.h",
    "module_import_meta.h",
    "module_map.cc",
    "module_map.h",
    "module_pending_script.cc",
    "module_pending_script.h",
    "module_script.cc",
    "module_script.h",
    "pending_script.cc",
    "pending_script.h",
    "script.h",
    "script_element_base.cc",
    "script_element_base.h",
    "script_loader.cc",
    "script_loader.h",
    "script_module_resolver.h",
    "script_module_resolver_impl.cc",
    "script_module_resolver_impl.h",
    "script_runner.cc",
    "script_runner.h",
    "script_scheduling_type.h",
    "worker_modulator_impl.cc",
    "worker_modulator_impl.h",
    "worklet_modulator_impl.cc",
    "worklet_modulator_impl.h",
    "xml_parser_script_runner.cc",
    "xml_parser_script_runner.h",
    "xml_parser_script_runner_host.h",
  ]

  deps = [
    "//third_party/blink/public:resources",
  ]

  jumbo_excluded_sources = [ "modulator.cc" ]  # https://crbug.com/716395
}
