Class: Dommy::Clipboard

Inherits:
Object
  • Object
show all
Includes:
Bridge::Methods, EventTarget
Defined in:
lib/dommy/navigator.rb

Overview

navigator.clipboard — an in-memory clipboard for tests. Real OS clipboard access is intentionally not implemented; reads and writes round-trip through Ruby memory only.

Async APIs (readText/writeText/read/write) return PromiseValue so callers' .await chains keep working.

Instance Method Summary collapse

Methods included from Bridge::Methods

included

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) ⇒ Clipboard

Returns a new instance of Clipboard.



162
163
164
165
166
# File 'lib/dommy/navigator.rb', line 162

def initialize(window)
  @window = window
  @text = ""
  @items = []
end

Instance Method Details

#__internal_event_parent__Object



224
225
226
# File 'lib/dommy/navigator.rb', line 224

def __internal_event_parent__
  nil
end

#__js_call__(method, args) ⇒ Object



205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
# File 'lib/dommy/navigator.rb', line 205

def __js_call__(method, args)
  case method
  when "readText"
    read_text
  when "writeText"
    write_text(args[0])
  when "read"
    read
  when "write"
    write(args[0])
  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



195
196
197
# File 'lib/dommy/navigator.rb', line 195

def __js_get__(_key)
  nil
end

#__js_set__(_key, _value) ⇒ Object



199
200
201
# File 'lib/dommy/navigator.rb', line 199

def __js_set__(_key, _value)
  Bridge::UNHANDLED
end

#readObject



186
187
188
# File 'lib/dommy/navigator.rb', line 186

def read
  PromiseValue.resolve(@window, @items.dup)
end

#read_textObject



177
178
179
# File 'lib/dommy/navigator.rb', line 177

def read_text
  PromiseValue.resolve(@window, @text)
end

#textObject

Sync read for tests that don't want to await.



169
170
171
# File 'lib/dommy/navigator.rb', line 169

def text
  @text
end

#text=(value) ⇒ Object



173
174
175
# File 'lib/dommy/navigator.rb', line 173

def text=(value)
  @text = value.to_s
end

#write(items) ⇒ Object



190
191
192
193
# File 'lib/dommy/navigator.rb', line 190

def write(items)
  @items = items.is_a?(Array) ? items : [items]
  PromiseValue.resolve(@window, nil)
end

#write_text(text) ⇒ Object



181
182
183
184
# File 'lib/dommy/navigator.rb', line 181

def write_text(text)
  @text = text.to_s
  PromiseValue.resolve(@window, nil)
end