Skip to content
Permalink
Browse files
[Web IDL] interfaces should inherit EventTarget instead of duplicatin…
…g the EventTarget API

https://bugs.webkit.org/show_bug.cgi?id=154121
<rdar://problem/24613234>

Reviewed by Gavin Barraclough.

LayoutTests/imported/w3c:

Rebaseline several W3C tests now that more checks are passing.

* web-platform-tests/dom/interfaces-expected.txt:
* web-platform-tests/html/dom/interfaces-expected.txt:

Source/WebCore:

Interfaces should inherit EventTarget instead of duplicating the
EventTarget API in their IDL. Not only the duplication is ugly and
error-prone, but this also does not match the specifications and
have subtle web-exposed differences.

This patch takes care of all interfaces except for DOMWindow and
WorkerGlobalScope. Those will be updated in the follow-up patch
as they will require a little bit more work and testing.

We should also be able to get rid of the [EventTarget] WebKit IDL
attribute in a follow-up.

No new tests, already covered by existing tests.

* Modules/battery/BatteryManager.idl:
* Modules/encryptedmedia/MediaKeySession.idl:
* Modules/indexeddb/IDBDatabase.h:
* Modules/indexeddb/IDBDatabase.idl:
* Modules/indexeddb/IDBRequest.h:
* Modules/indexeddb/IDBRequest.idl:
* Modules/indexeddb/IDBTransaction.h:
* Modules/indexeddb/IDBTransaction.idl:
* Modules/mediasession/MediaRemoteControls.idl:
* Modules/mediasource/MediaSource.h:
* Modules/mediasource/MediaSource.idl:
* Modules/mediasource/SourceBuffer.h:
* Modules/mediasource/SourceBuffer.idl:
* Modules/mediasource/SourceBufferList.h:
* Modules/mediasource/SourceBufferList.idl:
* Modules/mediastream/MediaStream.h:
* Modules/mediastream/MediaStream.idl:
* Modules/mediastream/MediaStreamTrack.h:
* Modules/mediastream/MediaStreamTrack.idl:
* Modules/mediastream/RTCDTMFSender.h:
* Modules/mediastream/RTCDTMFSender.idl:
* Modules/mediastream/RTCDataChannel.h:
* Modules/mediastream/RTCDataChannel.idl:
* Modules/mediastream/RTCPeerConnection.h:
* Modules/mediastream/RTCPeerConnection.idl:
* Modules/notifications/Notification.idl:
* Modules/speech/SpeechSynthesisUtterance.idl:
* Modules/webaudio/AudioContext.idl:
* Modules/webaudio/AudioNode.idl:
* Modules/websockets/WebSocket.idl:
* css/FontLoader.idl:
* dom/EventTarget.h:
* dom/MessagePort.idl:
* dom/Node.h:
* dom/Node.idl:
* dom/WebKitNamedFlow.idl:
* fileapi/FileReader.idl:
* html/MediaController.idl:
* html/track/AudioTrackList.idl:
* html/track/TextTrack.idl:
* html/track/TextTrackCue.idl:
* html/track/TextTrackList.idl:
* html/track/VideoTrackList.idl:
* loader/appcache/DOMApplicationCache.h:
* loader/appcache/DOMApplicationCache.idl:
* page/EventSource.idl:
* page/Performance.h:
* page/Performance.idl:
* workers/Worker.idl:
* xml/XMLHttpRequest.h:
* xml/XMLHttpRequest.idl:
* xml/XMLHttpRequestUpload.idl:
- Drop hardcoded EventTarget operations and inherit EventTarget instead.
- Drop JSGenerateToNativeObject / JSGenerateToJSObject IDL extended
  attributes for interfaces inheriting the EventTarget interface as
  the bindings generator now does this automatically for us.
- On native side, have EventTarget subclass ScriptWrappable instead of
  each of its subclasses doing so. The issue was that
  EventTargetOwner::finalize() was calling uncacheWrapper() with an
  EventTarget*, which would not clear inlined cached wrapped (see
  clearInlineCachedWrapper()) because EventTarget did not subclass
  ScriptWrappable. However, cacheWrapper() is called is a specific
  subtype pointer (e.g. Node*) and we would decide to create an
  inline cached wrapper because Node subclassed ScriptWrappable
  (as well as EventTarget).

* WebCore.xcodeproj/project.pbxproj:
Export JSEventTarget.h as private header to fix the build.

* bindings/js/JSDOMBinding.h:
(WebCore::wrapperKey):
(WebCore::getCachedWrapper):
(WebCore::cacheWrapper):
(WebCore::uncacheWrapper):
Use new wrapperKey() function that is generated for each bindings
class that also has wrapperOwner(). This is used instead of the
C cast to void* in order to cast to the base wrapped type to fix
issues with multiple inheritance. The issue was that cacheWrapper()
was getting called with a DOM object subtype pointer (e.g.
AudioContext*) but uncacheWrapper() was getting called with a base
wrapped type pointer (e.g. EventTarget*). Most of our DOM classes
use multiple inheritance and thus the pointer values (used as keys
in the weak map) may differ.

* bindings/js/JSTrackCustom.cpp:
(WebCore::toJS):
Call CREATE_DOM_WRAPPER() with an actual wrapped type (e.g. AudioTrack)
instead of TrackBase type. TrackBase does not have corresponding
generated bindings and therefore does not have a wrapperKey()
function.

* bindings/scripts/CodeGeneratorJS.pm:
(ShouldGenerateToWrapped):
(ShouldGenerateToJSDeclaration):
(GenerateHeader):
- Generate a wrapperKey() utility function along-side wrapperOwner()
  to help cast to the base wrapped type.
- Generate toWrapped() / toJS() utility functions for interfaces
  that inherit EventTarget as those are required by our
  implementation and this avoids having to explicitly have them in
  the IDL.

* bindings/scripts/test/*:
Rebaseline bindings tests.

LayoutTests:

Rebaseline a couple of layout tests now that interfaces inherit EventTarget
instead of duplicating the EventTarget API in their IDL.

* fast/dom/Window/window-properties-performance-expected.txt:
* fast/dom/prototype-chain-expected.txt:


Canonical link: https://commits.webkit.org/172255@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@196466 268f45cc-cd09-0410-ab3c-d52691b4dbfc
  • Loading branch information
cdumez committed Feb 12, 2016
1 parent 1e4bb9a commit 5793ee36fec3630da94e40200bf1d052440a35ab
Showing with 366 additions and 406 deletions.
  1. +14 −0 LayoutTests/ChangeLog
  2. +3 −0 LayoutTests/fast/dom/Window/window-properties-performance-expected.txt
  3. +9 −3 LayoutTests/fast/dom/prototype-chain-expected.txt
  4. +13 −0 LayoutTests/imported/w3c/ChangeLog
  5. +2 −6 LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt
  6. +16 −48 LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt
  7. +127 −0 Source/WebCore/ChangeLog
  8. +1 −6 Source/WebCore/Modules/battery/BatteryManager.idl
  9. +1 −6 Source/WebCore/Modules/encryptedmedia/MediaKeySession.idl
  10. +1 −1 Source/WebCore/Modules/indexeddb/IDBDatabase.h
  11. +0 −2 Source/WebCore/Modules/indexeddb/IDBDatabase.idl
  12. +1 −1 Source/WebCore/Modules/indexeddb/IDBRequest.h
  13. +0 −2 Source/WebCore/Modules/indexeddb/IDBRequest.idl
  14. +1 −1 Source/WebCore/Modules/indexeddb/IDBTransaction.h
  15. +0 −2 Source/WebCore/Modules/indexeddb/IDBTransaction.idl
  16. +0 −1 Source/WebCore/Modules/mediasession/MediaRemoteControls.idl
  17. +1 −1 Source/WebCore/Modules/mediasource/MediaSource.h
  18. +0 −2 Source/WebCore/Modules/mediasource/MediaSource.idl
  19. +1 −1 Source/WebCore/Modules/mediasource/SourceBuffer.h
  20. +0 −2 Source/WebCore/Modules/mediasource/SourceBuffer.idl
  21. +1 −1 Source/WebCore/Modules/mediasource/SourceBufferList.h
  22. +0 −2 Source/WebCore/Modules/mediasource/SourceBufferList.idl
  23. +1 −1 Source/WebCore/Modules/mediastream/MediaStream.h
  24. +1 −6 Source/WebCore/Modules/mediastream/MediaStream.idl
  25. +1 −1 Source/WebCore/Modules/mediastream/MediaStreamTrack.h
  26. +1 −6 Source/WebCore/Modules/mediastream/MediaStreamTrack.idl
  27. +1 −1 Source/WebCore/Modules/mediastream/RTCDTMFSender.h
  28. +1 −6 Source/WebCore/Modules/mediastream/RTCDTMFSender.idl
  29. +1 −1 Source/WebCore/Modules/mediastream/RTCDataChannel.h
  30. +1 −6 Source/WebCore/Modules/mediastream/RTCDataChannel.idl
  31. +1 −1 Source/WebCore/Modules/mediastream/RTCPeerConnection.h
  32. +1 −6 Source/WebCore/Modules/mediastream/RTCPeerConnection.idl
  33. +1 −6 Source/WebCore/Modules/notifications/Notification.idl
  34. +2 −6 Source/WebCore/Modules/speech/SpeechSynthesisUtterance.idl
  35. +1 −1 Source/WebCore/Modules/webaudio/AudioContext.idl
  36. +0 −6 Source/WebCore/Modules/webaudio/AudioNode.idl
  37. +1 −6 Source/WebCore/Modules/websockets/WebSocket.idl
  38. +1 −1 Source/WebCore/WebCore.xcodeproj/project.pbxproj
  39. +8 −3 Source/WebCore/bindings/js/JSDOMBinding.h
  40. +6 −4 Source/WebCore/bindings/js/JSTrackCustom.cpp
  41. +3 −0 Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm
  42. +8 −3 Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
  43. +4 −0 Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm
  44. +5 −0 Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.h
  45. +5 −0 Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h
  46. +5 −0 Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h
  47. +5 −0 Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.h
  48. +5 −0 Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.h
  49. +3 −86 Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp
  50. +7 −17 Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.h
  51. +5 −0 Source/WebCore/bindings/scripts/test/JS/JSTestException.h
  52. +5 −0 Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.h
  53. +5 −0 Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h
  54. +5 −0 Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.h
  55. +5 −0 Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.h
  56. +5 −0 Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.h
  57. +5 −0 Source/WebCore/bindings/scripts/test/JS/JSTestObj.h
  58. +5 −0 Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h
  59. +5 −0 Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.h
  60. +5 −0 Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h
  61. +5 −0 Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.h
  62. +5 −0 Source/WebCore/bindings/scripts/test/JS/JSattribute.h
  63. +5 −0 Source/WebCore/bindings/scripts/test/JS/JSreadonly.h
  64. +0 −6 Source/WebCore/bindings/scripts/test/ObjC/DOMTestEventTarget.h
  65. +0 −27 Source/WebCore/bindings/scripts/test/ObjC/DOMTestEventTarget.mm
  66. +1 −9 Source/WebCore/bindings/scripts/test/TestEventTarget.idl
  67. +1 −5 Source/WebCore/css/FontLoader.idl
  68. +2 −1 Source/WebCore/dom/EventTarget.h
  69. +1 −6 Source/WebCore/dom/MessagePort.idl
  70. +1 −2 Source/WebCore/dom/Node.h
  71. +3 −9 Source/WebCore/dom/Node.idl
  72. +5 −7 Source/WebCore/dom/WebKitNamedFlow.idl
  73. +1 −6 Source/WebCore/fileapi/FileReader.idl
  74. +1 −7 Source/WebCore/html/MediaController.idl
  75. +1 −5 Source/WebCore/html/track/AudioTrackList.idl
  76. +1 −6 Source/WebCore/html/track/TextTrack.idl
  77. +1 −7 Source/WebCore/html/track/TextTrackCue.idl
  78. +1 −5 Source/WebCore/html/track/TextTrackList.idl
  79. +1 −5 Source/WebCore/html/track/VideoTrackList.idl
  80. +1 −1 Source/WebCore/loader/appcache/DOMApplicationCache.h
  81. +1 −6 Source/WebCore/loader/appcache/DOMApplicationCache.idl
  82. +1 −7 Source/WebCore/page/EventSource.idl
  83. +1 −1 Source/WebCore/page/Performance.h
  84. +1 −1 Source/WebCore/page/Performance.idl
  85. +0 −2 Source/WebCore/workers/Worker.idl
  86. +1 −1 Source/WebCore/xml/XMLHttpRequest.h
  87. +1 −6 Source/WebCore/xml/XMLHttpRequest.idl
  88. +1 −6 Source/WebCore/xml/XMLHttpRequestUpload.idl
@@ -1,3 +1,17 @@
2016-02-11 Chris Dumez <cdumez@apple.com>

[Web IDL] interfaces should inherit EventTarget instead of duplicating the EventTarget API
https://bugs.webkit.org/show_bug.cgi?id=154121
<rdar://problem/24613234>

Reviewed by Gavin Barraclough.

Rebaseline a couple of layout tests now that interfaces inherit EventTarget
instead of duplicating the EventTarget API in their IDL.

* fast/dom/Window/window-properties-performance-expected.txt:
* fast/dom/prototype-chain-expected.txt:

2016-02-11 Zalan Bujtas <zalan@apple.com>

Subpixel rendering: Make focusring painting subpixel aware.
@@ -1,6 +1,8 @@
This test dumps all of the properties that are reachable from the window.performance object, along with their types.

window.performance [object Performance]
window.performance.addEventListener [function]
window.performance.dispatchEvent [function]
window.performance.navigation [object PerformanceNavigation]
window.performance.navigation.TYPE_BACK_FORWARD [number]
window.performance.navigation.TYPE_NAVIGATE [number]
@@ -9,6 +11,7 @@ window.performance.navigation.TYPE_RESERVED [number]
window.performance.navigation.redirectCount [number]
window.performance.navigation.type [number]
window.performance.now [function]
window.performance.removeEventListener [function]
window.performance.timing [object PerformanceTiming]
window.performance.timing.connectEnd [number]
window.performance.timing.connectStart [number]
@@ -2,20 +2,24 @@ This page prints out the prototype chains of select DOM objects. Older versions

NOTE: This test will start failing if you change the layout of a related prototype chain in WebCore. That does not necessarily mean that you have done something wrong; you may just need to check in new results.

----- [object HTMLDocument] (4 prototypes) -----
----- [object HTMLDocument] (5 prototypes) -----

[object Object]

[object EventTargetPrototype]

[object NodePrototype]

[object DocumentPrototype]

[object HTMLDocumentPrototype]

----- [object HTMLDivElement] (5 prototypes) -----
----- [object HTMLDivElement] (6 prototypes) -----

[object Object]

[object EventTargetPrototype]

[object NodePrototype]

[object ElementPrototype]
@@ -24,10 +28,12 @@ NOTE: This test will start failing if you change the layout of a related prototy

[object HTMLDivElementPrototype]

----- [object HTMLFormElement] (5 prototypes) -----
----- [object HTMLFormElement] (6 prototypes) -----

[object Object]

[object EventTargetPrototype]

[object NodePrototype]

[object ElementPrototype]
@@ -1,3 +1,16 @@
2016-02-11 Chris Dumez <cdumez@apple.com>

[Web IDL] interfaces should inherit EventTarget instead of duplicating the EventTarget API
https://bugs.webkit.org/show_bug.cgi?id=154121
<rdar://problem/24613234>

Reviewed by Gavin Barraclough.

Rebaseline several W3C tests now that more checks are passing.

* web-platform-tests/dom/interfaces-expected.txt:
* web-platform-tests/html/dom/interfaces-expected.txt:

2016-02-11 Chris Dumez <cdumez@apple.com>

Move 'length' property to the prototype
@@ -170,14 +170,10 @@ PASS MutationRecord interface: attribute nextSibling
PASS MutationRecord interface: attribute attributeName
PASS MutationRecord interface: attribute attributeNamespace
PASS MutationRecord interface: attribute oldValue
FAIL Node interface: existence and properties of interface object assert_equals: prototype of Node is not EventTarget expected function "function EventTarget() {
[native code]
}" but got function "function () {
[native code]
}"
PASS Node interface: existence and properties of interface object
PASS Node interface object length
PASS Node interface object name
FAIL Node interface: existence and properties of interface prototype object assert_equals: prototype of Node.prototype is not EventTarget.prototype expected object "[object EventTargetPrototype]" but got object "[object Object]"
PASS Node interface: existence and properties of interface prototype object
PASS Node interface: existence and properties of interface prototype object's "constructor" property
PASS Node interface: constant ELEMENT_NODE on interface object
PASS Node interface: constant ELEMENT_NODE on interface prototype object
@@ -2233,14 +2233,10 @@ FAIL VideoTrack interface: attribute kind assert_own_property: self does not hav
FAIL VideoTrack interface: attribute label assert_own_property: self does not have own property "VideoTrack" expected property "VideoTrack" missing
FAIL VideoTrack interface: attribute language assert_own_property: self does not have own property "VideoTrack" expected property "VideoTrack" missing
FAIL VideoTrack interface: attribute selected assert_own_property: self does not have own property "VideoTrack" expected property "VideoTrack" missing
FAIL MediaController interface: existence and properties of interface object assert_equals: prototype of MediaController is not EventTarget expected function "function EventTarget() {
[native code]
}" but got function "function () {
[native code]
}"
PASS MediaController interface: existence and properties of interface object
PASS MediaController interface object length
PASS MediaController interface object name
FAIL MediaController interface: existence and properties of interface prototype object assert_equals: prototype of MediaController.prototype is not EventTarget.prototype expected object "[object EventTargetPrototype]" but got object "[object Object]"
PASS MediaController interface: existence and properties of interface prototype object
PASS MediaController interface: existence and properties of interface prototype object's "constructor" property
FAIL MediaController interface: attribute readyState assert_true: The prototype object must have a property "readyState" expected true got false
PASS MediaController interface: attribute buffered
@@ -2312,14 +2308,10 @@ FAIL EventTarget interface: calling removeEventListener(DOMString,EventListener,
}" did not throw
PASS EventTarget interface: new MediaController() must inherit property "dispatchEvent" with the proper type (2)
PASS EventTarget interface: calling dispatchEvent(Event) on new MediaController() with too few arguments must throw TypeError
FAIL TextTrackList interface: existence and properties of interface object assert_equals: prototype of TextTrackList is not EventTarget expected function "function EventTarget() {
[native code]
}" but got function "function () {
[native code]
}"
PASS TextTrackList interface: existence and properties of interface object
PASS TextTrackList interface object length
PASS TextTrackList interface object name
FAIL TextTrackList interface: existence and properties of interface prototype object assert_equals: prototype of TextTrackList.prototype is not EventTarget.prototype expected object "[object EventTargetPrototype]" but got object "[object Object]"
PASS TextTrackList interface: existence and properties of interface prototype object
PASS TextTrackList interface: existence and properties of interface prototype object's "constructor" property
PASS TextTrackList interface: attribute length
PASS TextTrackList interface: operation getTrackById(DOMString)
@@ -2344,14 +2336,10 @@ FAIL EventTarget interface: calling removeEventListener(DOMString,EventListener,
}" did not throw
PASS EventTarget interface: document.createElement("video").textTracks must inherit property "dispatchEvent" with the proper type (2)
PASS EventTarget interface: calling dispatchEvent(Event) on document.createElement("video").textTracks with too few arguments must throw TypeError
FAIL TextTrack interface: existence and properties of interface object assert_equals: prototype of TextTrack is not EventTarget expected function "function EventTarget() {
[native code]
}" but got function "function () {
[native code]
}"
PASS TextTrack interface: existence and properties of interface object
PASS TextTrack interface object length
PASS TextTrack interface object name
FAIL TextTrack interface: existence and properties of interface prototype object assert_equals: prototype of TextTrack.prototype is not EventTarget.prototype expected object "[object EventTargetPrototype]" but got object "[object Object]"
PASS TextTrack interface: existence and properties of interface prototype object
PASS TextTrack interface: existence and properties of interface prototype object's "constructor" property
FAIL TextTrack interface: attribute kind assert_equals: setter must be undefined for readonly attributes expected (undefined) undefined but got (function) function "function kind() {
[native code]
@@ -2405,14 +2393,10 @@ PASS Stringification of document.createElement("video").addTextTrack("subtitles"
PASS TextTrackCueList interface: document.createElement("video").addTextTrack("subtitles").cues must inherit property "length" with the proper type (0)
PASS TextTrackCueList interface: document.createElement("video").addTextTrack("subtitles").cues must inherit property "getCueById" with the proper type (2)
PASS TextTrackCueList interface: calling getCueById(DOMString) on document.createElement("video").addTextTrack("subtitles").cues with too few arguments must throw TypeError
FAIL TextTrackCue interface: existence and properties of interface object assert_equals: prototype of TextTrackCue is not EventTarget expected function "function EventTarget() {
[native code]
}" but got function "function () {
[native code]
}"
PASS TextTrackCue interface: existence and properties of interface object
FAIL TextTrackCue interface object length assert_equals: wrong value for TextTrackCue.length expected 0 but got 3
PASS TextTrackCue interface object name
FAIL TextTrackCue interface: existence and properties of interface prototype object assert_equals: prototype of TextTrackCue.prototype is not EventTarget.prototype expected object "[object EventTargetPrototype]" but got object "[object Object]"
PASS TextTrackCue interface: existence and properties of interface prototype object
PASS TextTrackCue interface: existence and properties of interface prototype object's "constructor" property
PASS TextTrackCue interface: attribute track
PASS TextTrackCue interface: attribute id
@@ -4208,14 +4192,10 @@ PASS BeforeUnloadEvent interface object name
PASS BeforeUnloadEvent interface: existence and properties of interface prototype object
PASS BeforeUnloadEvent interface: existence and properties of interface prototype object's "constructor" property
PASS BeforeUnloadEvent interface: attribute returnValue
FAIL ApplicationCache interface: existence and properties of interface object assert_equals: prototype of ApplicationCache is not EventTarget expected function "function EventTarget() {
[native code]
}" but got function "function () {
[native code]
}"
PASS ApplicationCache interface: existence and properties of interface object
PASS ApplicationCache interface object length
PASS ApplicationCache interface object name
FAIL ApplicationCache interface: existence and properties of interface prototype object assert_equals: prototype of ApplicationCache.prototype is not EventTarget.prototype expected object "[object EventTargetPrototype]" but got object "[object Object]"
PASS ApplicationCache interface: existence and properties of interface prototype object
PASS ApplicationCache interface: existence and properties of interface prototype object's "constructor" property
PASS ApplicationCache interface: constant UNCACHED on interface object
PASS ApplicationCache interface: constant UNCACHED on interface prototype object
@@ -4406,14 +4386,10 @@ PASS MessageEvent interface: attribute lastEventId
PASS MessageEvent interface: attribute source
PASS MessageEvent interface: attribute ports
FAIL MessageEvent interface: operation initMessageEvent(DOMString,boolean,boolean,any,DOMString,DOMString,[object Object],[object Object],MessagePort) assert_equals: property has wrong .length expected 8 but got 0
FAIL EventSource interface: existence and properties of interface object assert_equals: prototype of EventSource is not EventTarget expected function "function EventTarget() {
[native code]
}" but got function "function () {
[native code]
}"
PASS EventSource interface: existence and properties of interface object
PASS EventSource interface object length
PASS EventSource interface object name
FAIL EventSource interface: existence and properties of interface prototype object assert_equals: prototype of EventSource.prototype is not EventTarget.prototype expected object "[object EventTargetPrototype]" but got object "[object Object]"
PASS EventSource interface: existence and properties of interface prototype object
PASS EventSource interface: existence and properties of interface prototype object's "constructor" property
PASS EventSource interface: attribute url
PASS EventSource interface: attribute withCredentials
@@ -4428,14 +4404,10 @@ PASS EventSource interface: attribute onopen
PASS EventSource interface: attribute onmessage
PASS EventSource interface: attribute onerror
PASS EventSource interface: operation close()
FAIL WebSocket interface: existence and properties of interface object assert_equals: prototype of WebSocket is not EventTarget expected function "function EventTarget() {
[native code]
}" but got function "function () {
[native code]
}"
PASS WebSocket interface: existence and properties of interface object
PASS WebSocket interface object length
PASS WebSocket interface object name
FAIL WebSocket interface: existence and properties of interface prototype object assert_equals: prototype of WebSocket.prototype is not EventTarget.prototype expected object "[object EventTargetPrototype]" but got object "[object Object]"
PASS WebSocket interface: existence and properties of interface prototype object
PASS WebSocket interface: existence and properties of interface prototype object's "constructor" property
PASS WebSocket interface: attribute url
PASS WebSocket interface: constant CONNECTING on interface object
@@ -4536,14 +4508,10 @@ PASS MessageChannel interface: existence and properties of interface prototype o
PASS MessageChannel interface: existence and properties of interface prototype object's "constructor" property
PASS MessageChannel interface: attribute port1
PASS MessageChannel interface: attribute port2
FAIL MessagePort interface: existence and properties of interface object assert_equals: prototype of MessagePort is not EventTarget expected function "function EventTarget() {
[native code]
}" but got function "function () {
[native code]
}"
PASS MessagePort interface: existence and properties of interface object
PASS MessagePort interface object length
PASS MessagePort interface object name
FAIL MessagePort interface: existence and properties of interface prototype object assert_equals: prototype of MessagePort.prototype is not EventTarget.prototype expected object "[object EventTargetPrototype]" but got object "[object Object]"
PASS MessagePort interface: existence and properties of interface prototype object
PASS MessagePort interface: existence and properties of interface prototype object's "constructor" property
PASS MessagePort interface: operation postMessage(any,[object Object])
PASS MessagePort interface: operation start()

0 comments on commit 5793ee3

Please sign in to comment.