Class: Dommy::HTMLMediaElement

Inherits:
HTMLElement show all
Defined in:
lib/dommy/html_elements.rb

Overview

<audio> / <video> shared base. The actual media engine is absent in Dommy — getters return inert values, play() returns a resolved Promise, and pause() flips paused back to true.

Direct Known Subclasses

HTMLAudioElement, HTMLVideoElement

Constant Summary collapse

NETWORK_EMPTY =

Own js_call methods, on top of Element's.

0
NETWORK_IDLE =
1
NETWORK_LOADING =
2
NETWORK_NO_SOURCE =
3
HAVE_NOTHING =
0
HAVE_METADATA =
1
HAVE_CURRENT_DATA =
2
HAVE_FUTURE_DATA =
3
HAVE_ENOUGH_DATA =
4

Constants inherited from Element

Element::ADJACENT_POSITIONS, Element::APPROX_CHAR_PX, Element::APPROX_LINE_PX, Element::ATTRIBUTE_NODE, Element::CDATA_SECTION_NODE, Element::COMMENT_NODE, Element::DOCUMENT_FRAGMENT_NODE, Element::DOCUMENT_NODE, Element::DOCUMENT_POSITION_CONTAINED_BY, Element::DOCUMENT_POSITION_CONTAINS, Element::DOCUMENT_POSITION_DISCONNECTED, Element::DOCUMENT_POSITION_FOLLOWING, Element::DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, Element::DOCUMENT_POSITION_PRECEDING, Element::DOCUMENT_TYPE_NODE, Element::ELEMENT_NODE, Element::HTML_NAMESPACE, Element::INLINE_TAGS, Element::PROCESSING_INSTRUCTION_NODE, Element::REFLECTED_TOKEN_LIST_HOSTS, Element::SHADOW_HOST_TAGS, Element::SVG_NAMESPACE, Element::TEXT_NODE

Constants included from Node

Node::ATTRIBUTE_NODE, Node::CDATA_SECTION_NODE, Node::COMMENT_NODE, Node::DOCUMENT_FRAGMENT_NODE, Node::DOCUMENT_NODE, Node::DOCUMENT_POSITION_CONTAINED_BY, Node::DOCUMENT_POSITION_CONTAINS, Node::DOCUMENT_POSITION_DISCONNECTED, Node::DOCUMENT_POSITION_FOLLOWING, Node::DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, Node::DOCUMENT_POSITION_PRECEDING, Node::DOCUMENT_TYPE_NODE, Node::ELEMENT_NODE, Node::HTML_NAMESPACE, Node::PROCESSING_INSTRUCTION_NODE, Node::TEXT_NODE, Node::XMLNS_NAMESPACE, Node::XML_NAMESPACE

Instance Attribute Summary

Attributes inherited from Element

#document

Instance Method Summary collapse

Methods inherited from HTMLElement

#case_sensitive_attribute_names?, #disabled_by_ancestor_fieldset?, #labels_node_list, #parse_non_negative_reflected, #set_non_negative_reflected

Methods included from Internal::ReflectedAttributes

included

Methods inherited from Element

#[], #[]=, #__dommy_backend_node__, #__internal_approx_box, #__internal_case_sensitive_attribute_names__?, #__internal_created_namespace__, #__internal_normalize_attr_key__, #__internal_set_namespace__, #__internal_shadow_root__, #__js_attribute_snapshot__, #__run_click_activation_behavior__, #__test_scroll_log__, #access_key_label, #accessibility_tree, #activation_behavior, #activation_target, #activation_target?, #after, #anchor_href, #animate, #approximate_layout?, #aria_content_attr, #aria_element_attr, #aria_element_get, #aria_element_set, #aria_elements_attr, #aria_elements_current, #aria_elements_get, #aria_elements_set, #aria_find_in_root, #aria_get, #aria_ref_in_valid_scope?, #aria_set, #aria_snapshot, #assigned_slot, #at_xpath, #attach_shadow, #attributes, #base_uri, #before, #blur, #child_element_count, #child_nodes, #children, #class_list, #class_name, #class_name=, #clear_aria_element_ref_for, #click, #clone_node, #closest, #computed_description, #computed_label, #computed_role, #contains?, #dataset, #element_prefix, #equal_node?, #first_child, #first_element_child, #focus, #get_animations, #get_attribute, #get_attribute_names, #get_attribute_node, #get_attribute_node_ns, #get_attribute_ns, #get_bounding_client_rect, #get_client_rects, #get_elements_by_class_name, #get_elements_by_tag_name, #get_elements_by_tag_name_ns, #get_html, #get_inner_html, #has_attribute?, #has_attribute_ns?, #has_attributes?, #has_child_nodes?, #hide_popover, #id, #id=, #initialize, #inner_html, #inner_html=, #insert_adjacent_element, #insert_adjacent_html, #insert_adjacent_text, #insert_before, #insertion_parent!, #is_connected?, #last_child, #last_element_child, #live_child_nodes, #local_name, #mark_fragment_scripts_started, #matches?, #namespace_uri, #next_element_sibling, #next_sibling, #on, #outer_html, #outer_html=, #owner_document, #parent_element, #parent_node, #path, #pre_click_activation_state, #previous_element_sibling, #previous_sibling, #query_selector, #query_selector_all, #reflected_attr_name, #reflected_token_list, #remove, #remove_attribute, #remove_attribute_node, #remove_attribute_ns, #remove_child, #replace_child, #replace_with_nodes, #request_fullscreen, #restore_pre_click_activation, #role, #role=, #root_node, #run_post_click_activation, #same_node?, #set_attribute, #set_attribute_node, #set_attribute_ns, #shadow_root, #show_popover, #slot, #slot=, #style, #tag_name, #text_content, #text_content=, #to_s, #toggle_attribute, #toggle_popover, #translate_mode?, #validate_adjacent_document_insert!, #with_selector_errors, #xpath

Methods included from Bridge::Methods

included

Methods included from Internal::ParentNode

#append, #append_child, #normalize, #prepend, #replace_children

Methods included from Internal::ChildNode

#child_node_after, #child_node_before, #child_node_replace_with, #nullable_dom_string, #validate_insert_before_ref!

Methods included from Node

#compare_document_position, #get_root_node, #is_default_namespace, #is_equal_node, #is_same_node, #lookup_namespace_uri, #lookup_prefix

Methods included from EventTarget

#__dommy_dump_event_failure__, #__internal_deliver_event__, #__internal_event_parent__, #__internal_process_event_handler_return__, #add_event_listener, capture_flag, #deliver_at, #dispatch_event, #event_name_from_on, #invoke_listener_isolated, js_truthy?, #on_handler, #remove_event_listener, #set_on_handler

Constructor Details

This class inherits a constructor from Dommy::Element

Instance Method Details

#__js_call__(method, args) ⇒ Object



4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
# File 'lib/dommy/html_elements.rb', line 4097

def __js_call__(method, args)
  case method
  when "play"
    play
  when "pause"
    pause
  when "load"
    load
  when "canPlayType"
    can_play_type(args[0])
  else
    super
  end
end

#__js_get__(key) ⇒ Object



4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
# File 'lib/dommy/html_elements.rb', line 4030

def __js_get__(key)
  case key
  when "currentSrc"
    current_src
  when "muted"
    muted
  when "paused"
    paused
  when "ended"
    ended
  when "seeking"
    seeking
  when "volume"
    volume
  when "playbackRate"
    playback_rate
  when "defaultPlaybackRate"
    default_playback_rate
  when "currentTime"
    current_time
  when "duration"
    duration
  when "networkState"
    network_state
  when "readyState"
    ready_state
  when "NETWORK_EMPTY"
    NETWORK_EMPTY
  when "NETWORK_IDLE"
    NETWORK_IDLE
  when "NETWORK_LOADING"
    NETWORK_LOADING
  when "NETWORK_NO_SOURCE"
    NETWORK_NO_SOURCE
  when "HAVE_NOTHING"
    HAVE_NOTHING
  when "HAVE_METADATA"
    HAVE_METADATA
  when "HAVE_CURRENT_DATA"
    HAVE_CURRENT_DATA
  when "HAVE_FUTURE_DATA"
    HAVE_FUTURE_DATA
  when "HAVE_ENOUGH_DATA"
    HAVE_ENOUGH_DATA
  else
    super
  end
end

#__js_set__(key, value) ⇒ Object



4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
# File 'lib/dommy/html_elements.rb', line 4079

def __js_set__(key, value)
  case key
  when "muted"
    self.muted = value
  when "volume"
    self.volume = value
  when "playbackRate"
    self.playback_rate = value
  when "defaultPlaybackRate"
    self.default_playback_rate = value
  when "currentTime"
    self.current_time = value
  else
    super
  end
end

#can_play_type(_type) ⇒ Object



4025
4026
4027
4028
# File 'lib/dommy/html_elements.rb', line 4025

def can_play_type(_type)
  # spec: "" | "maybe" | "probably". We don't decode → "".
  ""
end

#current_srcObject



3941
3942
3943
# File 'lib/dommy/html_elements.rb', line 3941

def current_src
  src
end

#current_timeObject



3989
3990
3991
# File 'lib/dommy/html_elements.rb', line 3989

def current_time
  @__current_time.to_f
end

#current_time=(v) ⇒ Object



3993
3994
3995
# File 'lib/dommy/html_elements.rb', line 3993

def current_time=(v)
  @__current_time = v.to_f
end

#default_playback_rateObject



3981
3982
3983
# File 'lib/dommy/html_elements.rb', line 3981

def default_playback_rate
  @__default_rate.nil? ? 1.0 : @__default_rate
end

#default_playback_rate=(v) ⇒ Object



3985
3986
3987
# File 'lib/dommy/html_elements.rb', line 3985

def default_playback_rate=(v)
  @__default_rate = v.to_f
end

#durationObject



3997
3998
3999
# File 'lib/dommy/html_elements.rb', line 3997

def duration
  Float::NAN
end

#endedObject



3957
3958
3959
# File 'lib/dommy/html_elements.rb', line 3957

def ended
  false
end

#loadObject



4021
4022
4023
# File 'lib/dommy/html_elements.rb', line 4021

def load
  nil
end

#mutedObject



3945
3946
3947
# File 'lib/dommy/html_elements.rb', line 3945

def muted
  @__muted == true || reflected_boolean("muted")
end

#muted=(v) ⇒ Object



3949
3950
3951
# File 'lib/dommy/html_elements.rb', line 3949

def muted=(v)
  @__muted = !!v
end

#network_stateObject



4001
4002
4003
# File 'lib/dommy/html_elements.rb', line 4001

def network_state
  NETWORK_EMPTY
end

#pauseObject



4016
4017
4018
4019
# File 'lib/dommy/html_elements.rb', line 4016

def pause
  @__paused = true
  nil
end

#pausedObject



3953
3954
3955
# File 'lib/dommy/html_elements.rb', line 3953

def paused
  @__paused.nil? ? true : @__paused
end

#playObject



4009
4010
4011
4012
4013
4014
# File 'lib/dommy/html_elements.rb', line 4009

def play
  @__paused = false
  promise = PromiseValue.new(@document.default_view)
  promise.fulfill(nil)
  promise
end

#playback_rateObject



3973
3974
3975
# File 'lib/dommy/html_elements.rb', line 3973

def playback_rate
  @__rate.nil? ? 1.0 : @__rate
end

#playback_rate=(v) ⇒ Object



3977
3978
3979
# File 'lib/dommy/html_elements.rb', line 3977

def playback_rate=(v)
  @__rate = v.to_f
end

#ready_stateObject



4005
4006
4007
# File 'lib/dommy/html_elements.rb', line 4005

def ready_state
  HAVE_NOTHING
end

#seekingObject



3961
3962
3963
# File 'lib/dommy/html_elements.rb', line 3961

def seeking
  false
end

#volumeObject



3965
3966
3967
# File 'lib/dommy/html_elements.rb', line 3965

def volume
  @__volume.nil? ? 1.0 : @__volume
end

#volume=(v) ⇒ Object



3969
3970
3971
# File 'lib/dommy/html_elements.rb', line 3969

def volume=(v)
  @__volume = v.to_f
end