# Copyright 2014 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.

{
  'includes': [
    '../bindings/bindings.gypi',
  ],
  'variables': {
    'variables': {
      # By default enable MSE. This can be overriden by the port.
      'enable_mse%': 1,
    },

    # Base directory into which generated sources and intermediate files should
    # be generated.
    'bindings_output_dir': '<(SHARED_INTERMEDIATE_DIR)/bindings/browser',

    # Bindings for the interfaces in this list will be generated, and there must
    # be an implementation declared in a header that lives in the same
    # directory of each IDL.
    'source_idl_files': [
        '../audio/audio_buffer.idl',
        '../audio/audio_buffer_source_node.idl',
        '../audio/audio_context.idl',
        '../audio/audio_destination_node.idl',
        '../audio/audio_node.idl',

        '../cssom/css.idl',
        '../cssom/css_condition_rule.idl',
        '../cssom/css_grouping_rule.idl',
        '../cssom/css_font_face_rule.idl',
        '../cssom/css_media_rule.idl',
        '../cssom/css_keyframe_rule.idl',
        '../cssom/css_keyframes_rule.idl',
        '../cssom/css_rule.idl',
        '../cssom/css_rule_list.idl',
        '../cssom/css_style_declaration.idl',
        '../cssom/css_style_rule.idl',
        '../cssom/css_style_sheet.idl',
        '../cssom/media_list.idl',
        '../cssom/style_sheet.idl',
        '../cssom/style_sheet_list.idl',

        '../debug/debug_hub.idl',
        '../debug/debugger.idl',
        '../debug/debugger_event_target.idl',
        '../debug/debug_script_runner.idl',

        '../dom/animation_event.idl',
        '../dom/attr.idl',
        '../dom/audio_track.idl',
        '../dom/audio_track_list.idl',
        '../dom/blob.idl',
        '../dom/camera_3d.idl',
        '../dom/captions/system_caption_settings.idl',
        '../dom/cdata_section.idl',
        '../dom/character_data.idl',
        '../dom/comment.idl',
        '../dom/console.idl',
        '../dom/crypto.idl',
        '../dom/custom_event.idl',
        '../dom/device_orientation_event.idl',
        '../dom/document.idl',
        '../dom/document_timeline.idl',
        '../dom/document_type.idl',
        '../dom/dom_exception.idl',
        '../dom/dom_implementation.idl',
        '../dom/dom_parser.idl',
        '../dom/dom_rect.idl',
        '../dom/dom_rect_list.idl',
        '../dom/dom_rect_read_only.idl',
        '../dom/dom_string_map.idl',
        '../dom/dom_token_list.idl',
        '../dom/element.idl',
        '../dom/error_event.idl',
        '../dom/event.idl',
        '../dom/event_listener.idl',
        '../dom/event_target.idl',
        '../dom/focus_event.idl',
        '../dom/history.idl',
        '../dom/html_anchor_element.idl',
        '../dom/html_body_element.idl',
        '../dom/html_br_element.idl',
        '../dom/html_collection.idl',
        '../dom/html_div_element.idl',
        '../dom/html_element.idl',
        '../dom/html_head_element.idl',
        '../dom/html_heading_element.idl',
        '../dom/html_html_element.idl',
        '../dom/html_image_element.idl',
        '../dom/html_link_element.idl',
        '../dom/html_media_element.idl',
        '../dom/html_meta_element.idl',
        '../dom/html_paragraph_element.idl',
        '../dom/html_script_element.idl',
        '../dom/html_span_element.idl',
        '../dom/html_style_element.idl',
        '../dom/html_title_element.idl',
        '../dom/html_unknown_element.idl',
        '../dom/html_video_element.idl',
        '../dom/input_event.idl',
        '../dom/keyboard_event.idl',
        '../dom/location.idl',
        '../dom/media_error.idl',
        '../dom/media_query_list.idl',
        '../dom/memory_info.idl',
        '../dom/message_event.idl',
        '../dom/mime_type_array.idl',
        '../dom/mouse_event.idl',
        '../dom/mutation_observer.idl',
        '../dom/mutation_record.idl',
        '../dom/named_node_map.idl',
        '../dom/navigator.idl',
        '../dom/node.idl',
        '../dom/node_list.idl',
        '../dom/on_error_event_listener.idl',
        '../dom/on_screen_keyboard.idl',
        '../dom/performance.idl',
        '../dom/performance_timing.idl',
        '../dom/plugin_array.idl',
        '../dom/pointer_event.idl',
        '../dom/progress_event.idl',
        '../dom/screen.idl',
        '../dom/screenshot.idl',
        '../dom/security_policy_violation_event.idl',
        '../dom/storage.idl',
        '../dom/storage_event.idl',
        '../dom/test_runner.idl',
        '../dom/text.idl',
        '../dom/time_ranges.idl',
        '../dom/track_default.idl',
        '../dom/track_default_list.idl',
        '../dom/track_event.idl',
        '../dom/transition_event.idl',
        '../dom/ui_event.idl',
        '../dom/url.idl',
        '../dom/video_playback_quality.idl',
        '../dom/video_track.idl',
        '../dom/video_track_list.idl',
        '../dom/wheel_event.idl',
        '../dom/window.idl',
        '../dom/xml_document.idl',
        '../dom/xml_serializer.idl',

        '../fetch/fetch_internal.idl',

        '../h5vcc/dial/dial_http_request.idl',
        '../h5vcc/dial/dial_http_response.idl',
        '../h5vcc/dial/dial_server.idl',
        '../h5vcc/h5vcc.idl',
        '../h5vcc/h5vcc_accessibility.idl',
        '../h5vcc/h5vcc_account_info.idl',
        '../h5vcc/h5vcc_account_manager.idl',
        '../h5vcc/h5vcc_audio_config.idl',
        '../h5vcc/h5vcc_audio_config_array.idl',
        '../h5vcc/h5vcc_c_val.idl',
        '../h5vcc/h5vcc_c_val_key_list.idl',
        '../h5vcc/h5vcc_crash_log.idl',
        '../h5vcc/h5vcc_deep_link_event_target.idl',
        '../h5vcc/h5vcc_runtime.idl',
        '../h5vcc/h5vcc_runtime_event_target.idl',
        '../h5vcc/h5vcc_settings.idl',
        '../h5vcc/h5vcc_sso.idl',
        '../h5vcc/h5vcc_storage.idl',
        '../h5vcc/h5vcc_system.idl',
        '../h5vcc/h5vcc_trace_event.idl',

        '../media_capture/blob_event.idl',
        '../media_capture/media_device_info.idl',
        '../media_capture/media_devices.idl',
        '../media_capture/media_recorder.idl',
        '../media_session/media_metadata.idl',
        '../media_session/media_session.idl',
        '../media_session/media_session_action_details.idl',
        '../media_stream/media_stream.idl',
        '../media_stream/media_stream_track.idl',

        '../speech/speech_recognition.idl',
        '../speech/speech_recognition_alternative.idl',
        '../speech/speech_recognition_error.idl',
        '../speech/speech_recognition_event.idl',
        '../speech/speech_recognition_result.idl',
        '../speech/speech_recognition_result_list.idl',

        '../speech/speech_synthesis.idl',
        '../speech/speech_synthesis_error_event.idl',
        '../speech/speech_synthesis_event.idl',
        '../speech/speech_synthesis_utterance.idl',
        '../speech/speech_synthesis_voice.idl',

        '../web_animations/animatable.idl',
        '../web_animations/animation.idl',
        '../web_animations/animation_effect_read_only.idl',
        '../web_animations/animation_effect_timing_read_only.idl',
        '../web_animations/animation_timeline.idl',
        '../web_animations/keyframe.idl',
        '../web_animations/keyframe_effect_read_only.idl',

        '../webdriver/script_executor.idl',
        '../webdriver/script_executor_params.idl',
        '../webdriver/script_executor_result.idl',

        '../websocket/close_event.idl',
        '../websocket/web_socket.idl',

        '../xhr/xml_http_request.idl',
        '../xhr/xml_http_request_event_target.idl',
        '../xhr/xml_http_request_upload.idl',

        '<@(cobalt_webapi_extension_source_idl_files)',
    ],

    # IDL files that will end up generating a .h that will be #included in
    # Cobalt directly. IDL files for dictionaries and enums.
    'generated_header_idl_files': [
        '../audio/audio_node_channel_count_mode.idl',
        '../audio/audio_node_channel_interpretation.idl',
        '../debug/console_command.idl',
        '../dom/blob_property_bag.idl',
        '../dom/captions/caption_character_edge_style.idl',
        '../dom/captions/caption_color.idl',
        '../dom/captions/caption_font_family.idl',
        '../dom/captions/caption_font_size_percentage.idl',
        '../dom/captions/caption_opacity_percentage.idl',
        '../dom/captions/caption_state.idl',
        '../dom/custom_event_init.idl',
        '../dom/device_orientation_event_init.idl',
        '../dom/document_ready_state.idl',
        '../dom/dom_parser_supported_type.idl',
        '../dom/error_event_init.idl',
        '../dom/event_init.idl',
        '../dom/event_modifier_init.idl',
        '../dom/focus_event_init.idl',
        '../dom/input_event_init.idl',
        '../dom/keyboard_event_init.idl',
        '../dom/ui_event_init.idl',
        '../dom/media_source_end_of_stream_error.idl',
        '../dom/media_source_ready_state.idl',
        '../dom/mouse_event_init.idl',
        '../dom/mutation_observer_init.idl',
        '../dom/pointer_event_init.idl',
        '../dom/source_buffer_append_mode.idl',
        '../dom/track_default_type.idl',
        '../dom/wheel_event_init.idl',
        '../media_capture/blob_event_init.idl',
        '../media_capture/media_device_kind.idl',
        '../media_capture/media_recorder_options.idl',
        '../media_capture/recording_state.idl',
        '../media_session/media_image.idl',
        '../media_session/media_metadata_init.idl',
        '../media_session/media_session_action.idl',
        '../media_session/media_session_playback_state.idl',
        '../media_stream/media_stream_constraints.idl',
        '../media_stream/media_track_settings.idl',
        '../page_visibility/visibility_state.idl',
        '../speech/speech_recognition_error_code.idl',
        '../speech/speech_synthesis_error_code.idl',
        '../web_animations/animation_fill_mode.idl',
        '../web_animations/animation_playback_direction.idl',
        '../websocket/close_event_init.idl',
        '<@(cobalt_webapi_extension_generated_header_idl_files)',
    ],

    # Partial interfaces and the right-side of "implements". Also includes
    # callback interfaces.
    # Code will not get generated for these interfaces; they are used to add
    # functionality to other interfaces.
    'dependency_idl_files': [
        '../cssom/link_style.idl',

        '../dom/buffer_source.idl',
        '../dom/captions/navigator_system_caption_settings.idl',
        '../dom/document__web_animations_api.idl',
        '../dom/document_cobalt.idl',
        '../dom/document_cssom.idl',
        '../dom/document_html5.idl',
        '../dom/element_css_inline_style.idl',
        '../dom/element_cssom_view.idl',
        '../dom/element_dom_parsing_and_serialization.idl',
        '../dom/element_pointer_events.idl',
        '../dom/global_crypto.idl',
        '../dom/global_event_handlers.idl',
        '../dom/html_element_cssom_view.idl',
        '../dom/mouse_event_cssom_view.idl',
        '../dom/navigator_id.idl',
        '../dom/navigator_language.idl',
        '../dom/navigator_plugins.idl',
        '../dom/navigator_storage_utils.idl',
        '../dom/navigator_licenses.idl',
        '../dom/non_document_type_child_node.idl',
        '../dom/non_element_parent_node.idl',
        '../dom/parent_node.idl',
        '../dom/performance__high_resolution_time.idl',
        '../dom/speech_synthesis_getter.idl',
        '../dom/url_utils.idl',
        '../dom/window__animation_timing.idl',
        '../dom/window__performance.idl',
        '../dom/window_cssom.idl',
        '../dom/window_cssom_view.idl',
        '../dom/window_event_handlers.idl',
        '../dom/window_local_storage.idl',
        '../dom/window_on_screen_keyboard.idl',
        '../dom/window_session_storage.idl',
        '../dom/window_timers.idl',
        '../media_capture/navigator.idl',
        '../media_session/navigator_media_session.idl',
        '../page_visibility/document.idl',
    ],

    'conditions': [
      ['cobalt_media_source_2016==1', {
        'source_idl_files': [
            '../dom/eme/media_encrypted_event.idl',
            '../dom/eme/media_key_message_event.idl',
            '../dom/eme/media_key_session.idl',
            '../dom/eme/media_key_status_map.idl',
            '../dom/eme/media_key_system_access.idl',
            '../dom/eme/media_keys.idl',
        ],
        'generated_header_idl_files': [
            '../dom/eme/media_encrypted_event_init.idl',
            '../dom/eme/media_key_message_event_init.idl',
            '../dom/eme/media_key_message_type.idl',
            '../dom/eme/media_key_session_type.idl',
            '../dom/eme/media_key_status.idl',
            '../dom/eme/media_key_system_configuration.idl',
            '../dom/eme/media_key_system_media_capability.idl',
            '../dom/eme/media_keys_requirement.idl',
        ],
        'dependency_idl_files': [
            '../dom/eme/html_media_element.idl',
            '../dom/eme/navigator.idl',
        ],
      }, {
        'source_idl_files': [
            '../dom/media_key_complete_event.idl',
            '../dom/media_key_error.idl',
            '../dom/media_key_error_event.idl',
            '../dom/media_key_message_event.idl',
            '../dom/media_key_needed_event.idl',
        ],
        'dependency_idl_files': [
            '../dom/html_media_element_eme_01b.idl',
        ],
      }],
      ['enable_mse==1', {
        'source_idl_files': [
            '../dom/media_source.idl',
            '../dom/source_buffer.idl',
            '../dom/source_buffer_list.idl',
        ],
        'dependency_idl_files': [
            '../dom/url_mse.idl',
        ],
      }],
    ],
  },
}
