dommy 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +30 -38
  3. data/lib/dommy/animation.rb +10 -2
  4. data/lib/dommy/attr.rb +197 -32
  5. data/lib/dommy/backend/nokogiri_adapter.rb +127 -0
  6. data/lib/dommy/backend/nokolexbor_adapter.rb +117 -0
  7. data/lib/dommy/backend.rb +175 -0
  8. data/lib/dommy/blob.rb +30 -11
  9. data/lib/dommy/bridge/constructor_registry.rb +28 -0
  10. data/lib/dommy/bridge/methods.rb +57 -0
  11. data/lib/dommy/bridge.rb +97 -0
  12. data/lib/dommy/callable_invoker.rb +36 -0
  13. data/lib/dommy/compression_streams.rb +4 -4
  14. data/lib/dommy/cookie_store.rb +4 -2
  15. data/lib/dommy/crypto.rb +16 -9
  16. data/lib/dommy/css.rb +53 -7
  17. data/lib/dommy/custom_elements.rb +33 -9
  18. data/lib/dommy/data_transfer.rb +4 -0
  19. data/lib/dommy/document.rb +693 -60
  20. data/lib/dommy/dom_parser.rb +29 -15
  21. data/lib/dommy/element.rb +1147 -438
  22. data/lib/dommy/event.rb +279 -79
  23. data/lib/dommy/event_source.rb +14 -10
  24. data/lib/dommy/fetch.rb +509 -39
  25. data/lib/dommy/file_reader.rb +14 -6
  26. data/lib/dommy/form_data.rb +3 -3
  27. data/lib/dommy/history.rb +46 -8
  28. data/lib/dommy/html_collection.rb +59 -6
  29. data/lib/dommy/html_elements.rb +153 -1502
  30. data/lib/dommy/internal/css_pseudo_handlers.rb +137 -0
  31. data/lib/dommy/internal/dom_matching.rb +3 -3
  32. data/lib/dommy/internal/global_functions.rb +26 -0
  33. data/lib/dommy/internal/idna.rb +16 -7
  34. data/lib/dommy/internal/ipv4_parser.rb +22 -7
  35. data/lib/dommy/internal/mutation_coordinator.rb +11 -2
  36. data/lib/dommy/internal/namespaces.rb +70 -0
  37. data/lib/dommy/internal/node_equality.rb +86 -0
  38. data/lib/dommy/internal/node_traversal.rb +1 -1
  39. data/lib/dommy/internal/node_wrapper_cache.rb +77 -31
  40. data/lib/dommy/internal/observable_callback.rb +1 -5
  41. data/lib/dommy/internal/parent_node.rb +126 -0
  42. data/lib/dommy/internal/reflected_attributes.rb +103 -13
  43. data/lib/dommy/internal/selector_parser.rb +664 -0
  44. data/lib/dommy/internal/template_content_registry.rb +6 -6
  45. data/lib/dommy/internal/url_parser.rb +677 -0
  46. data/lib/dommy/intersection_observer.rb +4 -2
  47. data/lib/dommy/location.rb +10 -4
  48. data/lib/dommy/media_query_list.rb +10 -4
  49. data/lib/dommy/message_channel.rb +41 -11
  50. data/lib/dommy/mutation_observer.rb +76 -23
  51. data/lib/dommy/navigator.rb +38 -24
  52. data/lib/dommy/node.rb +158 -16
  53. data/lib/dommy/notification.rb +6 -4
  54. data/lib/dommy/parser.rb +13 -13
  55. data/lib/dommy/performance.rb +4 -0
  56. data/lib/dommy/performance_observer.rb +4 -2
  57. data/lib/dommy/promise.rb +14 -14
  58. data/lib/dommy/range.rb +74 -5
  59. data/lib/dommy/resize_observer.rb +4 -2
  60. data/lib/dommy/scheduler.rb +34 -13
  61. data/lib/dommy/shadow_root.rb +31 -60
  62. data/lib/dommy/storage.rb +2 -0
  63. data/lib/dommy/streams.rb +40 -49
  64. data/lib/dommy/svg_elements.rb +204 -3606
  65. data/lib/dommy/text_codec.rb +178 -25
  66. data/lib/dommy/tree_walker.rb +270 -81
  67. data/lib/dommy/url.rb +305 -450
  68. data/lib/dommy/url_pattern.rb +2 -0
  69. data/lib/dommy/version.rb +1 -1
  70. data/lib/dommy/web_socket.rb +49 -19
  71. data/lib/dommy/window.rb +205 -203
  72. data/lib/dommy/worker.rb +12 -12
  73. data/lib/dommy/xml_http_request.rb +32 -7
  74. data/lib/dommy.rb +19 -2
  75. metadata +22 -27
@@ -4,9 +4,9 @@ module Dommy
4
4
  # `EventSource` (Server-Sent Events). Like `WebSocket`, dommy
5
5
  # provides simulation seams instead of network IO:
6
6
  #
7
- # es.__simulate_open__
8
- # es.__simulate_message__(data, event: "msg", id: "1")
9
- # es.__simulate_error__
7
+ # es.__test_simulate_open__
8
+ # es.__test_simulate_message__(data, event: "msg", id: "1")
9
+ # es.__test_simulate_error__
10
10
  #
11
11
  # Auto-opens on a microtask after construction, mirroring real
12
12
  # browser behavior.
@@ -31,7 +31,7 @@ module Dommy
31
31
  @with_credentials = !!(opts["withCredentials"] || opts[:withCredentials])
32
32
  @inline_handlers = {}
33
33
 
34
- @window.scheduler.queue_microtask(proc { __simulate_open__ })
34
+ @window.scheduler.queue_microtask(proc { __test_simulate_open__ })
35
35
  end
36
36
 
37
37
  def close
@@ -41,14 +41,14 @@ module Dommy
41
41
 
42
42
  # --- Test seams ------------------------------------------------
43
43
 
44
- def __simulate_open__
44
+ def __test_simulate_open__
45
45
  return if @ready_state != CONNECTING
46
46
 
47
47
  @ready_state = OPEN
48
48
  dispatch_event(Event.new("open"))
49
49
  end
50
50
 
51
- def __simulate_message__(data, event: "message", id: nil, retry_ms: nil)
51
+ def __test_simulate_message__(data, event: "message", id: nil, retry_ms: nil)
52
52
  return if @ready_state != OPEN
53
53
 
54
54
  payload = {"data" => data.to_s}
@@ -57,7 +57,7 @@ module Dommy
57
57
  dispatch_event(MessageEvent.new(event.to_s, payload))
58
58
  end
59
59
 
60
- def __simulate_error__
60
+ def __test_simulate_error__
61
61
  dispatch_event(Event.new("error"))
62
62
  end
63
63
 
@@ -84,10 +84,14 @@ module Dommy
84
84
 
85
85
  def __js_set__(key, value)
86
86
  event = inline_event_for(key)
87
- set_inline_handler(event, value) if event
87
+ return Bridge::UNHANDLED unless event
88
+
89
+ set_inline_handler(event, value)
88
90
  nil
89
91
  end
90
92
 
93
+ include Bridge::Methods
94
+ js_methods %w[close addEventListener removeEventListener dispatchEvent]
91
95
  def __js_call__(method, args)
92
96
  case method
93
97
  when "close"
@@ -95,13 +99,13 @@ module Dommy
95
99
  when "addEventListener"
96
100
  add_event_listener(args[0], args[1], args[2])
97
101
  when "removeEventListener"
98
- remove_event_listener(args[0], args[1])
102
+ remove_event_listener(args[0], args[1], args[2])
99
103
  when "dispatchEvent"
100
104
  dispatch_event(args[0])
101
105
  end
102
106
  end
103
107
 
104
- def __event_parent__
108
+ def __internal_event_parent__
105
109
  nil
106
110
  end
107
111