# 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")

source_set("media_settings") {
  has_pedantic_warnings = true
  sources = [ "media_settings.h" ]
  public_deps = [ "//cobalt/base" ]
}

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_settings.cc",
    "media_source.cc",
    "media_source.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",
  ]

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

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

action("embed_license_as_header_file") {
  script = "//cobalt/build/generate_data_header.py"
  license_path = "//cobalt/content/licenses/platform/$cobalt_licenses_platform/licenses_cobalt.txt"
  inputs = [ "$license_path" ]
  outputs = [ "$target_gen_dir/embedded_licenses.h" ]
  args = [ "DOMEmbeddedResources" ] + rebase_path(outputs, root_build_dir) +
         rebase_path(inputs, root_build_dir)
}

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_style_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_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",
    "source_buffer_metrics_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",
    "//net:test_support",
    "//testing/gmock",
    "//testing/gtest",
    "//url",
  ]
}
