# Copyright 2021 The Cobalt Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import("//cobalt/build/contents_dir.gni")

static_library("dom") {
  has_pedantic_warnings = true

  # Includes cobalt/dom/testing/stub_environment_settings.h from dom_testing
  # which depends on this target.
  check_includes = false

  sources = [
    "abort_controller.cc",
    "abort_controller.h",
    "abort_signal.cc",
    "abort_signal.h",
    "animation_event.h",
    "animation_frame_request_callback_list.cc",
    "animation_frame_request_callback_list.h",
    "application_lifecycle_state.cc",
    "application_lifecycle_state.h",
    "attr.cc",
    "attr.h",
    "audio_track.h",
    "audio_track_list.h",
    "base64.cc",
    "base64.h",
    "benchmark_stat_names.cc",
    "benchmark_stat_names.h",
    "c_val_view.cc",
    "c_val_view.h",
    "camera_3d.cc",
    "camera_3d.h",
    "captions/system_caption_settings.cc",
    "captions/system_caption_settings.h",
    "cdata_section.cc",
    "cdata_section.h",
    "character_data.cc",
    "character_data.h",
    "comment.cc",
    "comment.h",
    "css_animations_adapter.cc",
    "css_animations_adapter.h",
    "css_transitions_adapter.cc",
    "css_transitions_adapter.h",
    "device_orientation_event.cc",
    "device_orientation_event.h",
    "directionality.h",
    "document.cc",
    "document.h",
    "document_load_timing_info.h",
    "document_timeline.cc",
    "document_timeline.h",
    "document_type.cc",
    "document_type.h",
    "dom_animatable.cc",
    "dom_animatable.h",
    "dom_implementation.cc",
    "dom_implementation.h",
    "dom_parser.cc",
    "dom_parser.h",
    "dom_rect.h",
    "dom_rect_list.cc",
    "dom_rect_list.h",
    "dom_rect_read_only.h",
    "dom_settings.cc",
    "dom_settings.h",
    "dom_stat_tracker.cc",
    "dom_stat_tracker.h",
    "dom_string_map.cc",
    "dom_string_map.h",
    "dom_token_list.cc",
    "dom_token_list.h",
    "element.cc",
    "element.h",
    "element_intersection_observer_module.cc",
    "element_intersection_observer_module.h",
    "eme/media_encrypted_event.cc",
    "eme/media_encrypted_event.h",
    "eme/media_key_message_event.cc",
    "eme/media_key_message_event.h",
    "eme/media_key_session.cc",
    "eme/media_key_session.h",
    "eme/media_key_status_map.cc",
    "eme/media_key_status_map.h",
    "eme/media_key_system_access.cc",
    "eme/media_key_system_access.h",
    "eme/media_keys.cc",
    "eme/media_keys.h",
    "event_listener.h",
    "event_queue.cc",
    "event_queue.h",
    "focus_event.cc",
    "focus_event.h",
    "font_cache.cc",
    "font_cache.h",
    "font_face.cc",
    "font_face.h",
    "font_face_updater.cc",
    "font_face_updater.h",
    "font_list.cc",
    "font_list.h",
    "global_stats.cc",
    "global_stats.h",
    "history.cc",
    "history.h",
    "html_anchor_element.cc",
    "html_anchor_element.h",
    "html_audio_element.cc",
    "html_audio_element.h",
    "html_body_element.cc",
    "html_body_element.h",
    "html_br_element.cc",
    "html_br_element.h",
    "html_collection.cc",
    "html_collection.h",
    "html_div_element.cc",
    "html_div_element.h",
    "html_element.cc",
    "html_element.h",
    "html_element_context.cc",
    "html_element_context.h",
    "html_element_factory.cc",
    "html_element_factory.h",
    "html_head_element.cc",
    "html_head_element.h",
    "html_heading_element.cc",
    "html_heading_element.h",
    "html_html_element.cc",
    "html_html_element.h",
    "html_image_element.cc",
    "html_image_element.h",
    "html_link_element.cc",
    "html_link_element.h",
    "html_media_element.cc",
    "html_media_element.h",
    "html_meta_element.cc",
    "html_meta_element.h",
    "html_paragraph_element.cc",
    "html_paragraph_element.h",
    "html_script_element.cc",
    "html_script_element.h",
    "html_span_element.cc",
    "html_span_element.h",
    "html_style_element.cc",
    "html_style_element.h",
    "html_title_element.cc",
    "html_title_element.h",
    "html_unknown_element.h",
    "html_video_element.cc",
    "html_video_element.h",
    "initial_computed_style.cc",
    "initial_computed_style.h",
    "input_event.cc",
    "input_event.h",
    "intersection_observer.cc",
    "intersection_observer.h",
    "intersection_observer_entry.cc",
    "intersection_observer_entry.h",
    "intersection_observer_task_manager.cc",
    "intersection_observer_task_manager.h",
    "keyboard_event.cc",
    "keyboard_event.h",
    "keycode.h",
    "keyframes_map_updater.cc",
    "keyframes_map_updater.h",
    "layout_boxes.h",
    "local_storage_database.cc",
    "local_storage_database.h",
    "location.cc",
    "location.h",
    "lottie_player.cc",
    "lottie_player.h",
    "media_query_list.cc",
    "media_query_list.h",
    "media_source.cc",
    "media_source.h",
    "media_source_settings.cc",
    "media_source_settings.h",
    "memory_info.cc",
    "memory_info.h",
    "mime_type_array.cc",
    "mime_type_array.h",
    "mouse_event.cc",
    "mouse_event.h",
    "mutation_observer.cc",
    "mutation_observer.h",
    "mutation_observer_task_manager.cc",
    "mutation_observer_task_manager.h",
    "mutation_record.cc",
    "mutation_record.h",
    "mutation_reporter.cc",
    "mutation_reporter.h",
    "named_node_map.cc",
    "named_node_map.h",
    "navigator.cc",
    "navigator.h",
    "node.cc",
    "node.h",
    "node_children_iterator.h",
    "node_descendants_iterator.h",
    "node_list.cc",
    "node_list.h",
    "node_list_live.cc",
    "node_list_live.h",
    "on_screen_keyboard.cc",
    "on_screen_keyboard.h",
    "on_screen_keyboard_bridge.h",
    "performance.cc",
    "performance.h",
    "performance_entry.cc",
    "performance_entry.h",
    "performance_entry_list_impl.cc",
    "performance_entry_list_impl.h",
    "performance_high_resolution_time.h",
    "performance_lifecycle_timing.cc",
    "performance_lifecycle_timing.h",
    "performance_mark.cc",
    "performance_mark.h",
    "performance_measure.cc",
    "performance_measure.h",
    "performance_navigation_timing.cc",
    "performance_navigation_timing.h",
    "performance_observer.cc",
    "performance_observer.h",
    "performance_observer_entry_list.cc",
    "performance_observer_entry_list.h",
    "performance_resource_timing.cc",
    "performance_resource_timing.h",
    "performance_timing.cc",
    "performance_timing.h",
    "plugin_array.cc",
    "plugin_array.h",
    "pointer_event.cc",
    "pointer_event.h",
    "pointer_state.cc",
    "pointer_state.h",
    "progress_event.cc",
    "progress_event.h",
    "pseudo_element.cc",
    "pseudo_element.h",
    "registered_observer.h",
    "registered_observer_list.cc",
    "registered_observer_list.h",
    "rule_matching.cc",
    "rule_matching.h",
    "screen.h",
    "screenshot.cc",
    "screenshot.h",
    "screenshot_manager.cc",
    "screenshot_manager.h",
    "serialized_algorithm_runner.cc",
    "serialized_algorithm_runner.h",
    "serializer.cc",
    "serializer.h",
    "source_buffer.cc",
    "source_buffer.h",
    "source_buffer_algorithm.cc",
    "source_buffer_algorithm.h",
    "source_buffer_list.cc",
    "source_buffer_list.h",
    "source_buffer_metrics.cc",
    "source_buffer_metrics.h",
    "storage.cc",
    "storage.h",
    "storage_area.cc",
    "storage_area.h",
    "storage_event.cc",
    "storage_event.h",
    "test_runner.cc",
    "test_runner.h",
    "text.cc",
    "text.h",
    "time_ranges.cc",
    "time_ranges.h",
    "track_base.h",
    "track_default.h",
    "track_default_list.h",
    "track_event.h",
    "transition_event.h",
    "ui_event.cc",
    "ui_event.h",
    "ui_event_with_key_state.cc",
    "ui_event_with_key_state.h",
    "url_media_source.cc",
    "video_track.h",
    "video_track_list.h",
    "wheel_event.cc",
    "wheel_event.h",
    "window.cc",
    "window.h",
    "xml_document.h",
    "xml_serializer.cc",
    "xml_serializer.h",
  ]

  if (use_skia_next) {
    defines = [ "USE_SKIA_NEXT" ]
  }

  public_deps = [
    "//cobalt/browser:generated_types",
    "//cobalt/web",
    "//cobalt/web:window_timers",
  ]

  deps = [
    ":licenses",
    "//base:i18n",
    "//cobalt/base",
    "//cobalt/browser:generated_bindings",
    "//cobalt/csp",
    "//cobalt/cssom",
    "//cobalt/loader",
    "//cobalt/loader:origin",
    "//cobalt/math",
    "//cobalt/media",
    "//cobalt/media_capture",
    "//cobalt/media_session",
    "//cobalt/network",
    "//cobalt/network_bridge",
    "//cobalt/render_tree",
    "//cobalt/script",
    "//cobalt/speech",
    "//cobalt/storage",
    "//cobalt/storage/store:memory_store",
    "//cobalt/system_window",
    "//cobalt/ui_navigation",
    "//cobalt/web",
    "//cobalt/web:dom_exception",
    "//cobalt/web_animations",
    "//cobalt/worker",
    "//cobalt/xhr:global_stats",
    "//crypto",
    "//nb",
    "//net",
    "//starboard/common",
    "//third_party/icu:icuuc",
    "//third_party/modp_b64:modp_b64",
    "//third_party/protobuf:protobuf_lite",
    "//url",
  ]
}

copy("licenses") {
  install_content = true
  license_path =
      "licenses/platform/$cobalt_licenses_platform/licenses_cobalt.txt"
  sources = [ "$static_contents_source_dir/$license_path" ]
  outputs =
      [ "$sb_static_contents_output_data_dir/licenses/licenses_cobalt.txt" ]
}

target(gtest_target_type, "dom_test") {
  testonly = true
  has_pedantic_warnings = true

  sources = [
    "application_lifecycle_state_test.cc",
    "comment_test.cc",
    "document_test.cc",
    "document_type_test.cc",
    "dom_implementation_test.cc",
    "dom_parser_test.cc",
    "dom_rect_list_test.cc",
    "dom_string_map_test.cc",
    "dom_token_list_test.cc",
    "element_test.cc",
    "event_queue_test.cc",
    "font_cache_test.cc",
    "html_element_factory_test.cc",
    "html_element_test.cc",
    "html_link_element_test.cc",
    "intersection_observer_test.cc",
    "keyboard_event_test.cc",
    "local_storage_database_test.cc",
    "location_test.cc",
    "media_query_list_test.cc",
    "media_source_settings_test.cc",
    "mutation_observer_test.cc",
    "named_node_map_test.cc",
    "navigator_licenses_test.cc",
    "navigator_test.cc",
    "node_dispatch_event_test.cc",
    "node_list_live_test.cc",
    "node_list_test.cc",
    "node_test.cc",
    "on_screen_keyboard_test.cc",
    "performance_observer_test.cc",
    "performance_test.cc",
    "rule_matching_test.cc",
    "screen_test.cc",
    "serializer_test.cc",
    "storage_area_test.cc",
    "text_test.cc",
    "time_ranges_test.cc",
    "user_agent_data_test.cc",
    "window_test.cc",
    "xml_document_test.cc",
  ]

  deps = [
    ":dom",
    "//cobalt/base",
    "//cobalt/browser:browser",
    "//cobalt/browser:generated_bindings",
    "//cobalt/browser:generated_types",
    "//cobalt/csp",
    "//cobalt/css_parser",
    "//cobalt/cssom",
    "//cobalt/dom/testing:dom_testing",
    "//cobalt/dom_parser",
    "//cobalt/h5vcc",
    "//cobalt/loader",
    "//cobalt/media_session",
    "//cobalt/network_bridge",
    "//cobalt/render_tree",
    "//cobalt/script",
    "//cobalt/script/v8c:engine",
    "//cobalt/storage",
    "//cobalt/storage/store:memory_store",
    "//cobalt/test:run_all_unittests",
    "//cobalt/web:dom_exception",
    "//nb",
    "//net:test_support",
    "//testing/gmock",
    "//testing/gtest",
    "//url",
  ]

  content_deps = [ ":licenses" ]
}
