Class: Dommy::PermissionStatus
- Inherits:
-
Object
- Object
- Dommy::PermissionStatus
- Includes:
- Bridge::Methods, EventTarget
- Defined in:
- lib/dommy/navigator.rb
Overview
PermissionStatus — state + onchange event handler. Fires a
change event when Permissions#set mutates the underlying
value (mirrors browser behavior where the user toggles a
permission).
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#state ⇒ Object
readonly
Returns the value of attribute state.
Instance Method Summary collapse
- #__internal_event_parent__ ⇒ Object
- #__internal_set_state__(new_state) ⇒ Object
- #__js_call__(method, args) ⇒ Object
- #__js_get__(key) ⇒ Object
- #__js_set__(key, value) ⇒ Object
-
#initialize(window, name, state) ⇒ PermissionStatus
constructor
A new instance of PermissionStatus.
Methods included from Bridge::Methods
Methods included from EventTarget
#__dommy_dump_event_failure__, #__internal_deliver_event__, #__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
#initialize(window, name, state) ⇒ PermissionStatus
Returns a new instance of PermissionStatus.
312 313 314 315 316 317 |
# File 'lib/dommy/navigator.rb', line 312 def initialize(window, name, state) @window = window @name = name @state = state @onchange = nil end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
310 311 312 |
# File 'lib/dommy/navigator.rb', line 310 def name @name end |
#state ⇒ Object (readonly)
Returns the value of attribute state.
310 311 312 |
# File 'lib/dommy/navigator.rb', line 310 def state @state end |
Instance Method Details
#__internal_event_parent__ ⇒ Object
366 367 368 |
# File 'lib/dommy/navigator.rb', line 366 def __internal_event_parent__ nil end |
#__internal_set_state__(new_state) ⇒ Object
319 320 321 322 323 324 |
# File 'lib/dommy/navigator.rb', line 319 def __internal_set_state__(new_state) return if @state == new_state @state = new_state dispatch_event(Event.new("change")) end |
#__js_call__(method, args) ⇒ Object
355 356 357 358 359 360 361 362 363 364 |
# File 'lib/dommy/navigator.rb', line 355 def __js_call__(method, args) case method when "addEventListener" add_event_listener(args[0], args[1], args[2]) when "removeEventListener" remove_event_listener(args[0], args[1], args[2]) when "dispatchEvent" dispatch_event(args[0]) end end |
#__js_get__(key) ⇒ Object
326 327 328 329 330 331 332 333 334 335 336 337 |
# File 'lib/dommy/navigator.rb', line 326 def __js_get__(key) case key when "name" @name when "state" @state when "onchange" @onchange else Bridge::ABSENT end end |
#__js_set__(key, value) ⇒ Object
339 340 341 342 343 344 345 346 347 348 349 350 351 |
# File 'lib/dommy/navigator.rb', line 339 def __js_set__(key, value) case key when "onchange" # Assigning to onchange overwrites the previous handler. remove_event_listener("change", @onchange) if @onchange @onchange = value add_event_listener("change", value) if value else return Bridge::UNHANDLED end nil end |