# 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.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",
  ]

  data_deps = [ ":licenses" ]
}
