# 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",
    "blob.cc",
    "blob.h",
    "buffer_source.cc",
    "buffer_source.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",
    "cobalt_ua_data_values_interface.cc",
    "cobalt_ua_data_values_interface.h",
    "comment.cc",
    "comment.h",
    "crypto.cc",
    "crypto.h",
    "csp_delegate.cc",
    "csp_delegate.h",
    "csp_delegate_factory.cc",
    "csp_delegate_factory.h",
    "csp_violation_reporter.cc",
    "csp_violation_reporter.h",
    "css_animations_adapter.cc",
    "css_animations_adapter.h",
    "css_transitions_adapter.cc",
    "css_transitions_adapter.h",
    "custom_event.h",
    "device_orientation_event.cc",
    "device_orientation_event.h",
    "directionality.h",
    "document.cc",
    "document.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",
    "error_event.h",
    "event.cc",
    "event.h",
    "event_listener.h",
    "event_queue.cc",
    "event_queue.h",
    "event_target.cc",
    "event_target.h",
    "event_target_listener_info.cc",
    "event_target_listener_info.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",
    "memory_info.cc",
    "memory_info.h",
    "message_event.cc",
    "message_event.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",
    "navigator_ua_data.cc",
    "navigator_ua_data.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_error_event_listener.cc",
    "on_error_event_listener.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_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",
    "security_policy_violation_event.cc",
    "security_policy_violation_event.h",
    "serializer.cc",
    "serializer.h",
    "source_buffer.cc",
    "source_buffer.h",
    "source_buffer_list.cc",
    "source_buffer_list.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.cc",
    "url.h",
    "url_registry.h",
    "url_utils.cc",
    "url_utils.h",
    "user_agent_platform_info.h",
    "video_track.h",
    "video_track_list.h",
    "wheel_event.cc",
    "wheel_event.h",
    "window.cc",
    "window.h",
    "window_timers.cc",
    "window_timers.h",
    "xml_document.h",
    "xml_serializer.cc",
    "xml_serializer.h",
  ]

  public_deps = [ "//cobalt/browser:generated_types" ]

  deps = [
    ":dom_exception",
    ":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_animations",
    "//crypto",
    "//nb",
    "//net",
    "//starboard/common",
    "//third_party/icu:icuuc",
    "//third_party/modp_b64:modp_b64",
    "//third_party/protobuf:protobuf_lite",
    "//url",
  ]
}

static_library("dom_exception") {
  has_pedantic_warnings = true

  sources = [
    "dom_exception.cc",
    "dom_exception.h",
  ]

  deps = [ "//cobalt/script" ]
}

copy("licenses") {
  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" ]
}
