[Web IDL] interface objects should be Function objects
authorcdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 10 Feb 2016 21:51:18 +0000 (21:51 +0000)
committercdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 10 Feb 2016 21:51:18 +0000 (21:51 +0000)
https://bugs.webkit.org/show_bug.cgi?id=154038
<rdar://problem/24569358>

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Rebaseline W3C tests now that more checks are passing. Some checks still
fail because a lot of our interfaces should inherit EventTarget and
currently don't (they duplicate the EventTarget API instead).

Also, as per WebIDL, window.NodeFilter's proto should be ObjectPrototype
instead of FunctionPrototype but this is an exceptional case and our new
behavior is consistent with Firefox and Chrome.

* web-platform-tests/XMLHttpRequest/interfaces-expected.txt:
* web-platform-tests/dom/events/Event-constructors-expected.txt:
* web-platform-tests/dom/historical-expected.txt:
* web-platform-tests/dom/interfaces-expected.txt:
* web-platform-tests/fetch/api/headers/headers-idl-expected.txt:
* web-platform-tests/fetch/api/request/request-idl-expected.txt:
* web-platform-tests/html/dom/interfaces-expected.txt:
* web-platform-tests/html/semantics/embedded-content/the-audio-element/audio_constructor-expected.txt:

Source/JavaScriptCore:

Update functionProtoFuncToString() to handle JSObjects that
have the TypeOfShouldCallGetCallData flag and are callable,
as these behave like functions and use ClassInfo::className()
as function name in this case.

* runtime/FunctionPrototype.cpp:
(JSC::functionProtoFuncToString):

Source/WebCore:

interface objects should be Function objects as per Web IDL:
- http://heycam.github.io/webidl/#interface-object
- http://heycam.github.io/webidl/#es-interfaces

So window.Event should be a Function object for e.g. but in WebKit it
is a regular EventConstructor JSObject.
Firefox and Chrome match the specification.

Test: js/interface-objects.html

* bindings/js/JSDOMBinding.cpp:
(WebCore::callThrowTypeError):
(WebCore::DOMConstructorObject::getCallData):
When calling the interface object as a function, we throw a TypeError
with a message asking to use the 'new' operator to match the behavior
of Firefox and Chrome.

* bindings/js/JSDOMBinding.h:
Add JSC::TypeOfShouldCallGetCallData structure flag and implement
getCallData() so that typeof returns "function", as per the
specification and the behavior of other browsers.

(WebCore::DOMConstructorObject::className):
Implement className() and return "Function" to match the specification and
other browsers. Otherwise, it would fall back to using ClassInfo::className
which os the function name and interface name (e.g. "Event").

* bindings/js/JSDOMConstructor.h:
(WebCore::JSDOMConstructorNotConstructable::callThrowTypeError):
(WebCore::JSDOMConstructorNotConstructable::getCallData):
As per the specification, interfaces that do not have a [Constructor]
should throw a TypeError when called as a function. Use the "Illegal
constructor" error message to match Firefox and Chrome.

* bindings/js/JSDOMGlobalObject.h:
(WebCore::getDOMConstructor):
Instead of using objectPrototype as prototype for all DOM constructors,
we now call the prototypeForStructure() static function that is
generated for each bindings class. As per the Web IDL specification,
The [[Prototype]] internal property of an interface object for a
non-callback interface is determined as follows:
1. If the interface inherits from some other interface, the value of
   [[Prototype]] is the interface object for that other interface.
2. If the interface doesn't inherit from any other interface, the value
   of [[Prototype]] is %FunctionPrototype% ([ECMA-262], section 6.1.7.4).

* bindings/js/JSImageConstructor.cpp:
(WebCore::JSImageConstructor::prototypeForStructure):
Have the Image's interface object use HTMLElement's interface object
as prototype as HTMLImageElement inherits HTMLElement.

* bindings/scripts/CodeGenerator.pm:
(getInterfaceExtendedAttributesFromName):
Add a utility function to cheaply retrieve an interface's IDL extended
attributes without actually parsing the IDL. This is used to check if
an interface's parent is marked as [NoInterfaceObject] currently.

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateHeader):
(GenerateImplementation):
(GenerateCallbackHeader):
(GenerateCallbackImplementation):
Mark JSGlobalObject* parameter as const as the implementation does not
alter the globalObject.

(GenerateConstructorHelperMethods):
- Generate prototypeForStructure() function for each bindings class that
  is not marked as [NoInterfaceObject] so getDOMConstructor() knows which
  prototype to use for the interface object / constructor when constructing
  it.
- Use the interface name for the interface object, without the "Constructor"
  suffix, to match the behavior of Firefox and Chrome.

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

LayoutTests:

Rebaseline / update existing layout tests now that interface objects
are now Function objects. Also add a layout test to cover various
aspects of interface objects.

* css3/blending/background-blend-mode-property-parsing-expected.txt:
* css3/blending/blend-mode-property-parsing-expected.txt:
* css3/blending/script-tests/background-blend-mode-property-parsing.js:
(shouldBeType):
* css3/blending/script-tests/blend-mode-property-parsing.js:
(shouldBeType):
* css3/filters/backdrop/backdropfilter-property-parsing-expected.txt:
* css3/filters/backdrop/script-tests/backdropfilter-property-parsing.js:
(shouldBeType):
* css3/filters/filter-property-parsing-expected.txt:
* css3/filters/script-tests/filter-property-parsing.js:
(shouldBeType):
* fast/css/image-set-parsing-expected.txt:
* fast/css/script-tests/image-set-parsing.js:
(shouldBeType):
* fast/dom/DOMException/XPathException-expected.txt:
* fast/dom/DOMException/prototype-object-expected.txt:
* fast/dom/DOMException/prototype-object.html:
* fast/dom/DOMException/resources/XPathException.js:
* fast/dom/MutationObserver/mutation-record-constructor-expected.txt:
* fast/dom/MutationObserver/mutation-record-constructor.html:
* fast/dom/Window/element-constructors-on-window-expected.txt:
* fast/dom/call-a-constructor-as-a-function-expected.txt:
* fast/dom/constructor-proto-expected.txt:
* fast/dom/constructor-proto.html:
* fast/dom/wrapper-classes-expected.txt:
* fast/dom/wrapper-classes.html:
* fast/mediastream/MediaStreamConstructor-expected.txt:
* fast/mediastream/MediaStreamConstructor.html:
* fast/workers/constructor-proto-expected.txt:
* fast/workers/worker-location-expected.txt:
* http/tests/xmlhttprequest/XMLHttpRequestException-expected.txt:
* http/tests/xmlhttprequest/XMLHttpRequestException.html:
* js/dom/global-constructors-attributes-dedicated-worker-expected.txt:
* js/dom/script-tests/global-constructors-attributes-idb.js:
(constructorPropertiesOnGlobalObject):
* js/dom/script-tests/global-constructors-attributes.js:
(constructorPropertiesOnGlobalObject):
* js/interface-objects-expected.txt: Added.
* js/interface-objects.html: Added.
* media/encrypted-media/encrypted-media-v2-syntax-expected.txt:
* media/encrypted-media/encrypted-media-v2-syntax.html:
* media/track/track-vttcue-expected.txt:
* platform/mac/fast/dom/Window/window-lookup-precedence-expected.txt:
* platform/mac/js/dom/global-constructors-attributes-expected.txt:
* svg/custom/SVGException-expected.txt:
* svg/custom/global-constructors-expected.txt:
* svg/custom/script-tests/SVGException.js:
* svg/custom/script-tests/global-constructors.js:
(shouldBeDefined):
* transforms/2d/transform-value-types-expected.txt:
* transforms/2d/transform-value-types.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@196392 268f45cc-cd09-0410-ab3c-d52691b4dbfc

109 files changed:
LayoutTests/ChangeLog
LayoutTests/css3/blending/background-blend-mode-property-parsing-expected.txt
LayoutTests/css3/blending/blend-mode-property-parsing-expected.txt
LayoutTests/css3/blending/script-tests/background-blend-mode-property-parsing.js
LayoutTests/css3/blending/script-tests/blend-mode-property-parsing.js
LayoutTests/css3/filters/backdrop/backdropfilter-property-parsing-expected.txt
LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property-parsing.js
LayoutTests/css3/filters/filter-property-parsing-expected.txt
LayoutTests/css3/filters/script-tests/filter-property-parsing.js
LayoutTests/fast/css/image-set-parsing-expected.txt
LayoutTests/fast/css/script-tests/image-set-parsing.js
LayoutTests/fast/dom/DOMException/XPathException-expected.txt
LayoutTests/fast/dom/DOMException/prototype-object-expected.txt
LayoutTests/fast/dom/DOMException/prototype-object.html
LayoutTests/fast/dom/DOMException/resources/XPathException.js
LayoutTests/fast/dom/MutationObserver/mutation-record-constructor-expected.txt
LayoutTests/fast/dom/MutationObserver/mutation-record-constructor.html
LayoutTests/fast/dom/Window/element-constructors-on-window-expected.txt
LayoutTests/fast/dom/call-a-constructor-as-a-function-expected.txt
LayoutTests/fast/dom/constructor-proto-expected.txt
LayoutTests/fast/dom/constructor-proto.html
LayoutTests/fast/dom/wrapper-classes-expected.txt
LayoutTests/fast/dom/wrapper-classes.html
LayoutTests/fast/mediastream/MediaStreamConstructor-expected.txt
LayoutTests/fast/mediastream/MediaStreamConstructor.html
LayoutTests/fast/workers/constructor-proto-expected.txt
LayoutTests/fast/workers/worker-location-expected.txt
LayoutTests/http/tests/security/cross-frame-access-put-expected.txt
LayoutTests/http/tests/xmlhttprequest/XMLHttpRequestException-expected.txt
LayoutTests/http/tests/xmlhttprequest/XMLHttpRequestException.html
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/interfaces-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-constructors-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/historical-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/headers-idl-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-idl-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-audio-element/audio_constructor-expected.txt
LayoutTests/js/dom/global-constructors-attributes-dedicated-worker-expected.txt
LayoutTests/js/dom/script-tests/global-constructors-attributes-idb.js
LayoutTests/js/dom/script-tests/global-constructors-attributes.js
LayoutTests/js/interface-objects-expected.txt [new file with mode: 0644]
LayoutTests/js/interface-objects.html [new file with mode: 0644]
LayoutTests/media/encrypted-media/encrypted-media-v2-syntax-expected.txt
LayoutTests/media/encrypted-media/encrypted-media-v2-syntax.html
LayoutTests/media/track/track-vttcue-expected.txt
LayoutTests/platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt
LayoutTests/platform/mac/fast/dom/Window/window-lookup-precedence-expected.txt
LayoutTests/platform/mac/js/dom/global-constructors-attributes-expected.txt
LayoutTests/svg/custom/SVGException-expected.txt
LayoutTests/svg/custom/global-constructors-expected.txt
LayoutTests/svg/custom/script-tests/SVGException.js
LayoutTests/svg/custom/script-tests/global-constructors.js
LayoutTests/transforms/2d/transform-value-types-expected.txt
LayoutTests/transforms/2d/transform-value-types.html
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/runtime/FunctionPrototype.cpp
Source/WebCore/ChangeLog
Source/WebCore/bindings/js/JSDOMBinding.cpp
Source/WebCore/bindings/js/JSDOMBinding.h
Source/WebCore/bindings/js/JSDOMConstructor.h
Source/WebCore/bindings/js/JSDOMGlobalObject.h
Source/WebCore/bindings/js/JSImageConstructor.cpp
Source/WebCore/bindings/scripts/CodeGenerator.pm
Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.h
Source/WebCore/bindings/scripts/test/JS/JSTestCallback.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestCallback.h
Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h
Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.h
Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.h
Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.h
Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestException.h
Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.h
Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h
Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h
Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.h
Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.h
Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNode.h
Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.h
Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestObj.h
Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h
Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.h
Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h
Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.h
Source/WebCore/bindings/scripts/test/JS/JSattribute.cpp
Source/WebCore/bindings/scripts/test/JS/JSattribute.h
Source/WebCore/bindings/scripts/test/JS/JSreadonly.cpp
Source/WebCore/bindings/scripts/test/JS/JSreadonly.h

index 564ff0c..dc05fa8 100644 (file)
@@ -1,3 +1,68 @@
+2016-02-10  Chris Dumez  <cdumez@apple.com>
+
+        [Web IDL] interface objects should be Function objects
+        https://bugs.webkit.org/show_bug.cgi?id=154038
+        <rdar://problem/24569358>
+
+        Reviewed by Geoffrey Garen.
+
+        Rebaseline / update existing layout tests now that interface objects
+        are now Function objects. Also add a layout test to cover various
+        aspects of interface objects.
+
+        * css3/blending/background-blend-mode-property-parsing-expected.txt:
+        * css3/blending/blend-mode-property-parsing-expected.txt:
+        * css3/blending/script-tests/background-blend-mode-property-parsing.js:
+        (shouldBeType):
+        * css3/blending/script-tests/blend-mode-property-parsing.js:
+        (shouldBeType):
+        * css3/filters/backdrop/backdropfilter-property-parsing-expected.txt:
+        * css3/filters/backdrop/script-tests/backdropfilter-property-parsing.js:
+        (shouldBeType):
+        * css3/filters/filter-property-parsing-expected.txt:
+        * css3/filters/script-tests/filter-property-parsing.js:
+        (shouldBeType):
+        * fast/css/image-set-parsing-expected.txt:
+        * fast/css/script-tests/image-set-parsing.js:
+        (shouldBeType):
+        * fast/dom/DOMException/XPathException-expected.txt:
+        * fast/dom/DOMException/prototype-object-expected.txt:
+        * fast/dom/DOMException/prototype-object.html:
+        * fast/dom/DOMException/resources/XPathException.js:
+        * fast/dom/MutationObserver/mutation-record-constructor-expected.txt:
+        * fast/dom/MutationObserver/mutation-record-constructor.html:
+        * fast/dom/Window/element-constructors-on-window-expected.txt:
+        * fast/dom/call-a-constructor-as-a-function-expected.txt:
+        * fast/dom/constructor-proto-expected.txt:
+        * fast/dom/constructor-proto.html:
+        * fast/dom/wrapper-classes-expected.txt:
+        * fast/dom/wrapper-classes.html:
+        * fast/mediastream/MediaStreamConstructor-expected.txt:
+        * fast/mediastream/MediaStreamConstructor.html:
+        * fast/workers/constructor-proto-expected.txt:
+        * fast/workers/worker-location-expected.txt:
+        * http/tests/xmlhttprequest/XMLHttpRequestException-expected.txt:
+        * http/tests/xmlhttprequest/XMLHttpRequestException.html:
+        * js/dom/global-constructors-attributes-dedicated-worker-expected.txt:
+        * js/dom/script-tests/global-constructors-attributes-idb.js:
+        (constructorPropertiesOnGlobalObject):
+        * js/dom/script-tests/global-constructors-attributes.js:
+        (constructorPropertiesOnGlobalObject):
+        * js/interface-objects-expected.txt: Added.
+        * js/interface-objects.html: Added.
+        * media/encrypted-media/encrypted-media-v2-syntax-expected.txt:
+        * media/encrypted-media/encrypted-media-v2-syntax.html:
+        * media/track/track-vttcue-expected.txt:
+        * platform/mac/fast/dom/Window/window-lookup-precedence-expected.txt:
+        * platform/mac/js/dom/global-constructors-attributes-expected.txt:
+        * svg/custom/SVGException-expected.txt:
+        * svg/custom/global-constructors-expected.txt:
+        * svg/custom/script-tests/SVGException.js:
+        * svg/custom/script-tests/global-constructors.js:
+        (shouldBeDefined):
+        * transforms/2d/transform-value-types-expected.txt:
+        * transforms/2d/transform-value-types.html:
+
 2016-02-10  Ryan Haddad  <ryanhaddad@apple.com>
 
         Marking fast/css-generated-content/details-summary-before-after.html as failing on ios-simulator
index e8a6375..e9221ea 100644 (file)
@@ -10,7 +10,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('background-blend-mode') is 'normal'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
-PASS jsWrapperClass(blendModeRule.constructor) is 'CSSPrimitiveValueConstructor'
+PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : multiply, screen
 PASS cssRule.type is 1
@@ -18,7 +18,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('background-blend-mode') is 'multiply, screen'
 PASS jsWrapperClass(blendModeRule) is 'CSSValueList'
 PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(blendModeRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : screen, multiply
 PASS cssRule.type is 1
@@ -26,7 +26,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('background-blend-mode') is 'screen, multiply'
 PASS jsWrapperClass(blendModeRule) is 'CSSValueList'
 PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(blendModeRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : overlay, normal
 PASS cssRule.type is 1
@@ -34,7 +34,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('background-blend-mode') is 'overlay, normal'
 PASS jsWrapperClass(blendModeRule) is 'CSSValueList'
 PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(blendModeRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : darken, lighten, normal, multiply
 PASS cssRule.type is 1
@@ -42,7 +42,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('background-blend-mode') is 'darken, lighten, normal, multiply'
 PASS jsWrapperClass(blendModeRule) is 'CSSValueList'
 PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(blendModeRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : lighten
 PASS cssRule.type is 1
@@ -50,7 +50,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('background-blend-mode') is 'lighten'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
-PASS jsWrapperClass(blendModeRule.constructor) is 'CSSPrimitiveValueConstructor'
+PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : color-dodge
 PASS cssRule.type is 1
@@ -58,7 +58,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('background-blend-mode') is 'color-dodge'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
-PASS jsWrapperClass(blendModeRule.constructor) is 'CSSPrimitiveValueConstructor'
+PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : color-burn
 PASS cssRule.type is 1
@@ -66,7 +66,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('background-blend-mode') is 'color-burn'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
-PASS jsWrapperClass(blendModeRule.constructor) is 'CSSPrimitiveValueConstructor'
+PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : hard-light
 PASS cssRule.type is 1
@@ -74,7 +74,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('background-blend-mode') is 'hard-light'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
-PASS jsWrapperClass(blendModeRule.constructor) is 'CSSPrimitiveValueConstructor'
+PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : soft-light
 PASS cssRule.type is 1
@@ -82,7 +82,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('background-blend-mode') is 'soft-light'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
-PASS jsWrapperClass(blendModeRule.constructor) is 'CSSPrimitiveValueConstructor'
+PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : difference
 PASS cssRule.type is 1
@@ -90,7 +90,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('background-blend-mode') is 'difference'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
-PASS jsWrapperClass(blendModeRule.constructor) is 'CSSPrimitiveValueConstructor'
+PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : exclusion
 PASS cssRule.type is 1
@@ -98,7 +98,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('background-blend-mode') is 'exclusion'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
-PASS jsWrapperClass(blendModeRule.constructor) is 'CSSPrimitiveValueConstructor'
+PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 PASS successfullyParsed is true
 
 TEST COMPLETE
index 7110b30..fed3598 100644 (file)
@@ -10,7 +10,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'normal'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
-PASS jsWrapperClass(blendModeRule.constructor) is 'CSSPrimitiveValueConstructor'
+PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : multiply
 PASS cssRule.type is 1
@@ -18,7 +18,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'multiply'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
-PASS jsWrapperClass(blendModeRule.constructor) is 'CSSPrimitiveValueConstructor'
+PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : screen
 PASS cssRule.type is 1
@@ -26,7 +26,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'screen'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
-PASS jsWrapperClass(blendModeRule.constructor) is 'CSSPrimitiveValueConstructor'
+PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : overlay
 PASS cssRule.type is 1
@@ -34,7 +34,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'overlay'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
-PASS jsWrapperClass(blendModeRule.constructor) is 'CSSPrimitiveValueConstructor'
+PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : darken
 PASS cssRule.type is 1
@@ -42,7 +42,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'darken'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
-PASS jsWrapperClass(blendModeRule.constructor) is 'CSSPrimitiveValueConstructor'
+PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : lighten
 PASS cssRule.type is 1
@@ -50,7 +50,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'lighten'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
-PASS jsWrapperClass(blendModeRule.constructor) is 'CSSPrimitiveValueConstructor'
+PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : color-dodge
 PASS cssRule.type is 1
@@ -58,7 +58,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'color-dodge'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
-PASS jsWrapperClass(blendModeRule.constructor) is 'CSSPrimitiveValueConstructor'
+PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : color-burn
 PASS cssRule.type is 1
@@ -66,7 +66,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'color-burn'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
-PASS jsWrapperClass(blendModeRule.constructor) is 'CSSPrimitiveValueConstructor'
+PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : hard-light
 PASS cssRule.type is 1
@@ -74,7 +74,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'hard-light'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
-PASS jsWrapperClass(blendModeRule.constructor) is 'CSSPrimitiveValueConstructor'
+PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : soft-light
 PASS cssRule.type is 1
@@ -82,7 +82,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'soft-light'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
-PASS jsWrapperClass(blendModeRule.constructor) is 'CSSPrimitiveValueConstructor'
+PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : difference
 PASS cssRule.type is 1
@@ -90,7 +90,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'difference'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
-PASS jsWrapperClass(blendModeRule.constructor) is 'CSSPrimitiveValueConstructor'
+PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : exclusion
 PASS cssRule.type is 1
@@ -98,7 +98,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'exclusion'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
-PASS jsWrapperClass(blendModeRule.constructor) is 'CSSPrimitiveValueConstructor'
+PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : plus-darker
 PASS cssRule.type is 1
@@ -106,7 +106,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'plus-darker'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
-PASS jsWrapperClass(blendModeRule.constructor) is 'CSSPrimitiveValueConstructor'
+PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : plus-lighter
 PASS cssRule.type is 1
@@ -114,7 +114,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'plus-lighter'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
-PASS jsWrapperClass(blendModeRule.constructor) is 'CSSPrimitiveValueConstructor'
+PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 PASS successfullyParsed is true
 
 TEST COMPLETE
index e131143..d468b56 100644 (file)
@@ -16,7 +16,7 @@ function shouldBeType(expression, className, prototypeName, constructorName)
         constructorName = className + "Constructor";
     shouldBe("jsWrapperClass(" + expression + ")", "'" + className + "'");
     shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + prototypeName + "'");
-    shouldBe("jsWrapperClass(" + expression + ".constructor)", "'" + constructorName + "'");
+    shouldBe("jsWrapperClass(" + expression + ".constructor)", "'Function'");
 }
 
 // These have to be global for the test helpers to see them.
index 741b815..4b53786 100644 (file)
@@ -16,7 +16,7 @@ function shouldBeType(expression, className, prototypeName, constructorName)
         constructorName = className + "Constructor";
     shouldBe("jsWrapperClass(" + expression + ")", "'" + className + "'");
     shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + prototypeName + "'");
-    shouldBe("jsWrapperClass(" + expression + ".constructor)", "'" + constructorName + "'");
+    shouldBe("jsWrapperClass(" + expression + ".constructor)", "'Function'");
 }
 
 // These have to be global for the test helpers to see them.
index f0ba831..9d04c5c 100644 (file)
@@ -10,7 +10,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'url(#a)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_REFERENCE
 PASS subRule.cssText is 'url(#a)'
@@ -21,7 +21,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'url(#a)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_REFERENCE
 PASS subRule.cssText is 'url(#a)'
@@ -32,7 +32,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'url(#a) url(#b)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_REFERENCE
 PASS subRule.cssText is 'url(#a)'
@@ -45,7 +45,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale(1) url(#a)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
 PASS subRule.cssText is 'grayscale(1)'
@@ -58,7 +58,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
 PASS subRule.cssText is 'grayscale(1)'
@@ -69,7 +69,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale(50%)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
 PASS subRule.cssText is 'grayscale(50%)'
@@ -80,7 +80,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
 PASS subRule.cssText is 'grayscale(1)'
@@ -91,7 +91,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale(0)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
 PASS subRule.cssText is 'grayscale(0)'
@@ -102,7 +102,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale()'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
 PASS subRule.cssText is 'grayscale()'
@@ -113,7 +113,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale(0.5) grayscale(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
 PASS subRule.cssText is 'grayscale(0.5)'
@@ -126,7 +126,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'sepia(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
 PASS subRule.cssText is 'sepia(1)'
@@ -137,7 +137,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'sepia(50%)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
 PASS subRule.cssText is 'sepia(50%)'
@@ -148,7 +148,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'sepia(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
 PASS subRule.cssText is 'sepia(1)'
@@ -159,7 +159,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'sepia(0)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
 PASS subRule.cssText is 'sepia(0)'
@@ -170,7 +170,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'sepia()'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
 PASS subRule.cssText is 'sepia()'
@@ -181,7 +181,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'sepia(0.5) sepia(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
 PASS subRule.cssText is 'sepia(0.5)'
@@ -194,7 +194,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'sepia(0.5) grayscale(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
 PASS subRule.cssText is 'sepia(0.5)'
@@ -207,7 +207,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'saturate(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
 PASS subRule.cssText is 'saturate(1)'
@@ -218,7 +218,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'saturate(50%)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
 PASS subRule.cssText is 'saturate(50%)'
@@ -229,7 +229,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'saturate(250%)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
 PASS subRule.cssText is 'saturate(250%)'
@@ -240,7 +240,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'saturate(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
 PASS subRule.cssText is 'saturate(1)'
@@ -251,7 +251,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'saturate(5.5)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
 PASS subRule.cssText is 'saturate(5.5)'
@@ -262,7 +262,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'saturate(0)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
 PASS subRule.cssText is 'saturate(0)'
@@ -273,7 +273,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'saturate()'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
 PASS subRule.cssText is 'saturate()'
@@ -284,7 +284,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'saturate(0.5) saturate(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
 PASS subRule.cssText is 'saturate(0.5)'
@@ -297,7 +297,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'saturate(0.5) grayscale(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
 PASS subRule.cssText is 'saturate(0.5)'
@@ -310,7 +310,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'hue-rotate(10deg)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
 PASS subRule.cssText is 'hue-rotate(10deg)'
@@ -321,7 +321,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'hue-rotate(10deg)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
 PASS subRule.cssText is 'hue-rotate(10deg)'
@@ -332,7 +332,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'hue-rotate(10rad)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
 PASS subRule.cssText is 'hue-rotate(10rad)'
@@ -343,7 +343,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'hue-rotate(10grad)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
 PASS subRule.cssText is 'hue-rotate(10grad)'
@@ -354,7 +354,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'hue-rotate(0.5turn)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
 PASS subRule.cssText is 'hue-rotate(0.5turn)'
@@ -365,7 +365,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'hue-rotate(0deg)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
 PASS subRule.cssText is 'hue-rotate(0deg)'
@@ -376,7 +376,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'hue-rotate()'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
 PASS subRule.cssText is 'hue-rotate()'
@@ -387,7 +387,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'hue-rotate(10deg) grayscale(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
 PASS subRule.cssText is 'hue-rotate(10deg)'
@@ -400,7 +400,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'invert(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
 PASS subRule.cssText is 'invert(1)'
@@ -411,7 +411,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'invert(50%)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
 PASS subRule.cssText is 'invert(50%)'
@@ -422,7 +422,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'invert(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
 PASS subRule.cssText is 'invert(1)'
@@ -433,7 +433,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'invert(0)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
 PASS subRule.cssText is 'invert(0)'
@@ -444,7 +444,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'invert()'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
 PASS subRule.cssText is 'invert()'
@@ -455,7 +455,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'invert(0.5) invert(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
 PASS subRule.cssText is 'invert(0.5)'
@@ -468,7 +468,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'invert(0.5) grayscale(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
 PASS subRule.cssText is 'invert(0.5)'
@@ -481,7 +481,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'opacity(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
 PASS subRule.cssText is 'opacity(1)'
@@ -492,7 +492,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'opacity(50%)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
 PASS subRule.cssText is 'opacity(50%)'
@@ -503,7 +503,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'opacity(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
 PASS subRule.cssText is 'opacity(1)'
@@ -514,7 +514,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'opacity(0)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
 PASS subRule.cssText is 'opacity(0)'
@@ -525,7 +525,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'opacity()'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
 PASS subRule.cssText is 'opacity()'
@@ -536,7 +536,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'opacity(0.5) opacity(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
 PASS subRule.cssText is 'opacity(0.5)'
@@ -549,7 +549,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'opacity(0.5) grayscale(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
 PASS subRule.cssText is 'opacity(0.5)'
@@ -562,7 +562,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'brightness(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
 PASS subRule.cssText is 'brightness(1)'
@@ -573,7 +573,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'brightness(50%)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
 PASS subRule.cssText is 'brightness(50%)'
@@ -584,7 +584,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'brightness(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
 PASS subRule.cssText is 'brightness(1)'
@@ -595,7 +595,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'brightness(0)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
 PASS subRule.cssText is 'brightness(0)'
@@ -606,7 +606,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'brightness()'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
 PASS subRule.cssText is 'brightness()'
@@ -617,7 +617,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'brightness(0.5) brightness(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
 PASS subRule.cssText is 'brightness(0.5)'
@@ -630,7 +630,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'brightness(0.5) grayscale(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
 PASS subRule.cssText is 'brightness(0.5)'
@@ -643,7 +643,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'brightness(-1.1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
 PASS subRule.cssText is 'brightness(-1.1)'
@@ -654,7 +654,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'brightness(101%)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
 PASS subRule.cssText is 'brightness(101%)'
@@ -665,7 +665,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale(0.25) brightness(0.5)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
 PASS subRule.cssText is 'grayscale(0.25)'
@@ -678,7 +678,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'contrast(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
 PASS subRule.cssText is 'contrast(1)'
@@ -689,7 +689,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'contrast(50%)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
 PASS subRule.cssText is 'contrast(50%)'
@@ -700,7 +700,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'contrast(250%)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
 PASS subRule.cssText is 'contrast(250%)'
@@ -711,7 +711,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'contrast(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
 PASS subRule.cssText is 'contrast(1)'
@@ -722,7 +722,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'contrast(0)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
 PASS subRule.cssText is 'contrast(0)'
@@ -733,7 +733,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'contrast()'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
 PASS subRule.cssText is 'contrast()'
@@ -744,7 +744,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'contrast(2)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
 PASS subRule.cssText is 'contrast(2)'
@@ -755,7 +755,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'contrast(0.5) contrast(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
 PASS subRule.cssText is 'contrast(0.5)'
@@ -768,7 +768,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'contrast(0.5) grayscale(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
 PASS subRule.cssText is 'contrast(0.5)'
@@ -781,7 +781,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale(0.25) contrast(0.5)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
 PASS subRule.cssText is 'grayscale(0.25)'
@@ -794,7 +794,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'blur(0px)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
 PASS subRule.cssText is 'blur(0px)'
@@ -805,7 +805,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'blur(10px)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
 PASS subRule.cssText is 'blur(10px)'
@@ -816,7 +816,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'blur()'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
 PASS subRule.cssText is 'blur()'
@@ -827,7 +827,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'drop-shadow(red 1px 2px 3px)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
 PASS subRule.cssText is 'drop-shadow(red 1px 2px 3px)'
@@ -838,7 +838,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'drop-shadow(red 1px 2px 3px)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
 PASS subRule.cssText is 'drop-shadow(red 1px 2px 3px)'
@@ -849,7 +849,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'drop-shadow(rgb(170, 187, 204) 0px 0px 0px)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
 PASS subRule.cssText is 'drop-shadow(rgb(170, 187, 204) 0px 0px 0px)'
@@ -860,7 +860,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'drop-shadow(0px 0px 0px)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
 PASS subRule.cssText is 'drop-shadow(0px 0px 0px)'
@@ -871,7 +871,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'drop-shadow(1px 2px)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
 PASS subRule.cssText is 'drop-shadow(1px 2px)'
@@ -882,7 +882,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px) drop-shadow(green 1px 2px 3px)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 8
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
 PASS subRule.cssText is 'grayscale(0.5)'
index e0c349d..32705ae 100644 (file)
@@ -16,7 +16,7 @@ function shouldBeType(expression, className, prototypeName, constructorName)
         constructorName = className + "Constructor";
     shouldBe("jsWrapperClass(" + expression + ")", "'" + className + "'");
     shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + prototypeName + "'");
-    shouldBe("jsWrapperClass(" + expression + ".constructor)", "'" + constructorName + "'");
+    shouldBe("jsWrapperClass(" + expression + ".constructor)", "'Function'");
 }
 
 // These have to be global for the test helpers to see them.
index 82f5548..f786388 100644 (file)
@@ -10,7 +10,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'url(#a)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_REFERENCE
 PASS subRule.cssText is 'url(#a)'
@@ -21,7 +21,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'url(#a)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_REFERENCE
 PASS subRule.cssText is 'url(#a)'
@@ -32,7 +32,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'url(#a) url(#b)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_REFERENCE
 PASS subRule.cssText is 'url(#a)'
@@ -45,7 +45,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'grayscale(1) url(#a)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
 PASS subRule.cssText is 'grayscale(1)'
@@ -58,7 +58,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'grayscale(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
 PASS subRule.cssText is 'grayscale(1)'
@@ -69,7 +69,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'grayscale(50%)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
 PASS subRule.cssText is 'grayscale(50%)'
@@ -80,7 +80,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'grayscale(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
 PASS subRule.cssText is 'grayscale(1)'
@@ -91,7 +91,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'grayscale(0)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
 PASS subRule.cssText is 'grayscale(0)'
@@ -102,7 +102,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'grayscale()'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
 PASS subRule.cssText is 'grayscale()'
@@ -113,7 +113,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'grayscale(0.5) grayscale(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
 PASS subRule.cssText is 'grayscale(0.5)'
@@ -126,7 +126,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'sepia(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
 PASS subRule.cssText is 'sepia(1)'
@@ -137,7 +137,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'sepia(50%)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
 PASS subRule.cssText is 'sepia(50%)'
@@ -148,7 +148,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'sepia(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
 PASS subRule.cssText is 'sepia(1)'
@@ -159,7 +159,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'sepia(0)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
 PASS subRule.cssText is 'sepia(0)'
@@ -170,7 +170,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'sepia()'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
 PASS subRule.cssText is 'sepia()'
@@ -181,7 +181,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'sepia(0.5) sepia(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
 PASS subRule.cssText is 'sepia(0.5)'
@@ -194,7 +194,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'sepia(0.5) grayscale(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
 PASS subRule.cssText is 'sepia(0.5)'
@@ -207,7 +207,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'saturate(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
 PASS subRule.cssText is 'saturate(1)'
@@ -218,7 +218,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'saturate(50%)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
 PASS subRule.cssText is 'saturate(50%)'
@@ -229,7 +229,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'saturate(250%)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
 PASS subRule.cssText is 'saturate(250%)'
@@ -240,7 +240,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'saturate(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
 PASS subRule.cssText is 'saturate(1)'
@@ -251,7 +251,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'saturate(5.5)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
 PASS subRule.cssText is 'saturate(5.5)'
@@ -262,7 +262,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'saturate(0)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
 PASS subRule.cssText is 'saturate(0)'
@@ -273,7 +273,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'saturate()'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
 PASS subRule.cssText is 'saturate()'
@@ -284,7 +284,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'saturate(0.5) saturate(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
 PASS subRule.cssText is 'saturate(0.5)'
@@ -297,7 +297,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'saturate(0.5) grayscale(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
 PASS subRule.cssText is 'saturate(0.5)'
@@ -310,7 +310,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'hue-rotate(10deg)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
 PASS subRule.cssText is 'hue-rotate(10deg)'
@@ -321,7 +321,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'hue-rotate(10deg)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
 PASS subRule.cssText is 'hue-rotate(10deg)'
@@ -332,7 +332,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'hue-rotate(10rad)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
 PASS subRule.cssText is 'hue-rotate(10rad)'
@@ -343,7 +343,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'hue-rotate(10grad)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
 PASS subRule.cssText is 'hue-rotate(10grad)'
@@ -354,7 +354,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'hue-rotate(0.5turn)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
 PASS subRule.cssText is 'hue-rotate(0.5turn)'
@@ -365,7 +365,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'hue-rotate(0deg)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
 PASS subRule.cssText is 'hue-rotate(0deg)'
@@ -376,7 +376,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'hue-rotate()'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
 PASS subRule.cssText is 'hue-rotate()'
@@ -387,7 +387,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'hue-rotate(10deg) grayscale(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
 PASS subRule.cssText is 'hue-rotate(10deg)'
@@ -400,7 +400,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'invert(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
 PASS subRule.cssText is 'invert(1)'
@@ -411,7 +411,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'invert(50%)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
 PASS subRule.cssText is 'invert(50%)'
@@ -422,7 +422,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'invert(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
 PASS subRule.cssText is 'invert(1)'
@@ -433,7 +433,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'invert(0)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
 PASS subRule.cssText is 'invert(0)'
@@ -444,7 +444,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'invert()'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
 PASS subRule.cssText is 'invert()'
@@ -455,7 +455,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'invert(0.5) invert(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
 PASS subRule.cssText is 'invert(0.5)'
@@ -468,7 +468,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'invert(0.5) grayscale(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
 PASS subRule.cssText is 'invert(0.5)'
@@ -481,7 +481,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'opacity(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
 PASS subRule.cssText is 'opacity(1)'
@@ -492,7 +492,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'opacity(50%)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
 PASS subRule.cssText is 'opacity(50%)'
@@ -503,7 +503,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'opacity(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
 PASS subRule.cssText is 'opacity(1)'
@@ -514,7 +514,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'opacity(0)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
 PASS subRule.cssText is 'opacity(0)'
@@ -525,7 +525,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'opacity()'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
 PASS subRule.cssText is 'opacity()'
@@ -536,7 +536,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'opacity(0.5) opacity(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
 PASS subRule.cssText is 'opacity(0.5)'
@@ -549,7 +549,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'opacity(0.5) grayscale(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
 PASS subRule.cssText is 'opacity(0.5)'
@@ -562,7 +562,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'brightness(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
 PASS subRule.cssText is 'brightness(1)'
@@ -573,7 +573,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'brightness(50%)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
 PASS subRule.cssText is 'brightness(50%)'
@@ -584,7 +584,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'brightness(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
 PASS subRule.cssText is 'brightness(1)'
@@ -595,7 +595,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'brightness(0)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
 PASS subRule.cssText is 'brightness(0)'
@@ -606,7 +606,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'brightness()'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
 PASS subRule.cssText is 'brightness()'
@@ -617,7 +617,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'brightness(0.5) brightness(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
 PASS subRule.cssText is 'brightness(0.5)'
@@ -630,7 +630,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'brightness(0.5) grayscale(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
 PASS subRule.cssText is 'brightness(0.5)'
@@ -643,7 +643,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'brightness(-1.1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
 PASS subRule.cssText is 'brightness(-1.1)'
@@ -654,7 +654,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'brightness(101%)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
 PASS subRule.cssText is 'brightness(101%)'
@@ -665,7 +665,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'grayscale(0.25) brightness(0.5)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
 PASS subRule.cssText is 'grayscale(0.25)'
@@ -678,7 +678,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'contrast(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
 PASS subRule.cssText is 'contrast(1)'
@@ -689,7 +689,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'contrast(50%)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
 PASS subRule.cssText is 'contrast(50%)'
@@ -700,7 +700,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'contrast(250%)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
 PASS subRule.cssText is 'contrast(250%)'
@@ -711,7 +711,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'contrast(1)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
 PASS subRule.cssText is 'contrast(1)'
@@ -722,7 +722,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'contrast(0)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
 PASS subRule.cssText is 'contrast(0)'
@@ -733,7 +733,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'contrast()'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
 PASS subRule.cssText is 'contrast()'
@@ -744,7 +744,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'contrast(2)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
 PASS subRule.cssText is 'contrast(2)'
@@ -755,7 +755,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'contrast(0.5) contrast(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
 PASS subRule.cssText is 'contrast(0.5)'
@@ -768,7 +768,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'contrast(0.5) grayscale(0.25)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
 PASS subRule.cssText is 'contrast(0.5)'
@@ -781,7 +781,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'grayscale(0.25) contrast(0.5)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
 PASS subRule.cssText is 'grayscale(0.25)'
@@ -794,7 +794,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'blur(0px)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
 PASS subRule.cssText is 'blur(0px)'
@@ -805,7 +805,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'blur(10px)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
 PASS subRule.cssText is 'blur(10px)'
@@ -816,7 +816,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'blur()'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
 PASS subRule.cssText is 'blur()'
@@ -827,7 +827,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'drop-shadow(red 1px 2px 3px)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
 PASS subRule.cssText is 'drop-shadow(red 1px 2px 3px)'
@@ -838,7 +838,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'drop-shadow(red 1px 2px 3px)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
 PASS subRule.cssText is 'drop-shadow(red 1px 2px 3px)'
@@ -849,7 +849,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'drop-shadow(rgb(170, 187, 204) 0px 0px 0px)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
 PASS subRule.cssText is 'drop-shadow(rgb(170, 187, 204) 0px 0px 0px)'
@@ -860,7 +860,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'drop-shadow(0px 0px 0px)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
 PASS subRule.cssText is 'drop-shadow(0px 0px 0px)'
@@ -871,7 +871,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'drop-shadow(1px 2px)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
 PASS subRule.cssText is 'drop-shadow(1px 2px)'
@@ -882,7 +882,7 @@ PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is 'grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px) drop-shadow(green 1px 2px 3px)'
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 8
 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
 PASS subRule.cssText is 'grayscale(0.5)'
index 1ff126c..69ec83f 100644 (file)
@@ -16,7 +16,7 @@ function shouldBeType(expression, className, prototypeName, constructorName)
         constructorName = className + "Constructor";
     shouldBe("jsWrapperClass(" + expression + ")", "'" + className + "'");
     shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + prototypeName + "'");
-    shouldBe("jsWrapperClass(" + expression + ".constructor)", "'" + constructorName + "'");
+    shouldBe("jsWrapperClass(" + expression + ".constructor)", "'Function'");
 }
 
 // These have to be global for the test helpers to see them.
index a3eb9ad..66e060a 100644 (file)
@@ -7,7 +7,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 Single value for background-image : url('#a') 1x
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(imageSetRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 2
 PASS subRule is 'a'
 PASS subRule.cssText is '1'
@@ -15,7 +15,7 @@ PASS subRule.cssText is '1'
 Multiple values for background-image : url('#a') 1x, url('#b') 2x
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(imageSetRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 4
 PASS subRule is 'a'
 PASS subRule.cssText is '1'
@@ -25,7 +25,7 @@ PASS subRule.cssText is '2'
 Multiple values for background-image, out of order : url('#c') 3x, url('#b') 2x, url('#a') 1x
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(imageSetRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 6
 PASS subRule is 'c'
 PASS subRule.cssText is '3'
@@ -37,7 +37,7 @@ PASS subRule.cssText is '1'
 Single value for content : url('#a') 1x
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(imageSetRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 2
 PASS subRule is 'a'
 PASS subRule.cssText is '1'
@@ -45,7 +45,7 @@ PASS subRule.cssText is '1'
 Multiple values for content : url('#a') 1x, url('#b') 2x
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(imageSetRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 4
 PASS subRule is 'a'
 PASS subRule.cssText is '1'
@@ -55,7 +55,7 @@ PASS subRule.cssText is '2'
 Single value for border-image : url('#a') 1x
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(imageSetRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 2
 PASS subRule is 'a'
 PASS subRule.cssText is '1'
@@ -63,7 +63,7 @@ PASS subRule.cssText is '1'
 Multiple values for border-image : url('#a') 1x, url('#b') 2x
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(imageSetRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 4
 PASS subRule is 'a'
 PASS subRule.cssText is '1'
@@ -73,7 +73,7 @@ PASS subRule.cssText is '2'
 Single value for -webkit-mask-box-image : url('#a') 1x
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(imageSetRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 2
 PASS subRule is 'a'
 PASS subRule.cssText is '1'
@@ -81,7 +81,7 @@ PASS subRule.cssText is '1'
 Multiple values for -webkit-mask-box-image : url('#a') 1x, url('#b') 2x
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(imageSetRule.constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 4
 PASS subRule is 'a'
 PASS subRule.cssText is '1'
index 666abdc..f720298 100644 (file)
@@ -16,7 +16,7 @@ function shouldBeType(expression, className, prototypeName, constructorName)
         constructorName = className + "Constructor";
     shouldBe("jsWrapperClass(" + expression + ")", "'" + className + "'");
     shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + prototypeName + "'");
-    shouldBe("jsWrapperClass(" + expression + ".constructor)", "'" + constructorName + "'");
+    shouldBe("jsWrapperClass(" + expression + ".constructor)", "'Function'");
 }
 
 // These have to be global for the test helpers to see them.
index 4eab88f..a455274 100644 (file)
@@ -6,7 +6,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 PASS e.toString() is "Error: TYPE_ERR: DOM XPath Exception 52"
 PASS Object.prototype.toString.call(e) is "[object XPathException]"
 PASS Object.prototype.toString.call(e.__proto__) is "[object XPathExceptionPrototype]"
-PASS e.constructor.toString() is "[object XPathExceptionConstructor]"
+PASS e.constructor.toString() is "function XPathException() {\n    [native code]\n}"
 PASS e.constructor is window.XPathException
 PASS e.TYPE_ERR is e.constructor.TYPE_ERR
 PASS e.INVALID_EXPRESSION_ERR is 51
index b39c249..aa0787f 100644 (file)
@@ -7,7 +7,7 @@ PASS e.toString() is "Error: HierarchyRequestError: DOM Exception 3"
 PASS Object.prototype.toString.call(e) is "[object DOMException]"
 PASS Object.prototype.toString.call(e.__proto__) is "[object DOMExceptionPrototype]"
 PASS Object.prototype.toString.call(e.__proto__.__proto__) is "[object Error]"
-PASS e.constructor.toString() is "[object DOMExceptionConstructor]"
+PASS e.constructor.toString() is "function DOMException() {\n    [native code]\n}"
 PASS e instanceof DOMException is true
 PASS e instanceof Error is true
 PASS e.constructor is window.DOMException
index ec5cf41..f2c9db3 100644 (file)
@@ -16,7 +16,7 @@ shouldBeEqualToString("e.toString()", "Error: HierarchyRequestError: DOM Excepti
 shouldBeEqualToString("Object.prototype.toString.call(e)", "[object DOMException]");
 shouldBeEqualToString("Object.prototype.toString.call(e.__proto__)", "[object DOMExceptionPrototype]");
 shouldBeEqualToString("Object.prototype.toString.call(e.__proto__.__proto__)", "[object Error]");
-shouldBeEqualToString("e.constructor.toString()", "[object DOMExceptionConstructor]");
+shouldBeEqualToString("e.constructor.toString()", "function DOMException() {\n    [native code]\n}");
 shouldBeTrue("e instanceof DOMException");
 shouldBeTrue("e instanceof Error");
 shouldBe("e.constructor", "window.DOMException");
index 1f2625c..ae36afc 100644 (file)
@@ -14,7 +14,7 @@ try {
 shouldBeEqualToString("e.toString()", "Error: TYPE_ERR: DOM XPath Exception 52");
 shouldBeEqualToString("Object.prototype.toString.call(e)", "[object XPathException]");
 shouldBeEqualToString("Object.prototype.toString.call(e.__proto__)", "[object XPathExceptionPrototype]");
-shouldBeEqualToString("e.constructor.toString()", "[object XPathExceptionConstructor]");
+shouldBeEqualToString("e.constructor.toString()", "function XPathException() {\n    [native code]\n}");
 shouldBe("e.constructor", "window.XPathException");
 shouldBe("e.TYPE_ERR", "e.constructor.TYPE_ERR");
 shouldBe("e.INVALID_EXPRESSION_ERR", "51");
index 7d91905..65ec103 100644 (file)
@@ -4,8 +4,8 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 
 PASS window.MutationRecord is non-null.
-PASS typeof MutationRecord is "object"
-PASS new MutationRecord threw exception TypeError: MutationRecordConstructor is not a constructor (evaluating 'new MutationRecord').
+PASS typeof MutationRecord is "function"
+PASS new MutationRecord threw exception TypeError: function is not a constructor (evaluating 'new MutationRecord').
 PASS record instanceof MutationRecord is true
 PASS successfullyParsed is true
 
index e62d642..89ae48c 100644 (file)
@@ -4,7 +4,7 @@
 description('MutationRecord should be exposed on window but not constructible');
 
 shouldBeNonNull('window.MutationRecord');
-shouldBe('typeof MutationRecord', '"object"');
+shouldBe('typeof MutationRecord', '"function"');
 shouldThrow('new MutationRecord');
 
 var div = document.createElement('div');
index 2177dea..67540e0 100644 (file)
 Test that HTML element constructors are accessible as window object properties.
 
-HTMLElement: [object HTMLElementConstructor]
+HTMLElement: function HTMLElement() { [native code] }
 
-HTMLAnchorElement: [object HTMLAnchorElementConstructor]
+HTMLAnchorElement: function HTMLAnchorElement() { [native code] }
 
-HTMLAppletElement: [object HTMLAppletElementConstructor]
+HTMLAppletElement: function HTMLAppletElement() { [native code] }
 
-HTMLAreaElement: [object HTMLAreaElementConstructor]
+HTMLAreaElement: function HTMLAreaElement() { [native code] }
 
-HTMLBaseElement: [object HTMLBaseElementConstructor]
+HTMLBaseElement: function HTMLBaseElement() { [native code] }
 
-HTMLBodyElement: [object HTMLBodyElementConstructor]
+HTMLBodyElement: function HTMLBodyElement() { [native code] }
 
-HTMLBRElement: [object HTMLBRElementConstructor]
+HTMLBRElement: function HTMLBRElement() { [native code] }
 
-HTMLButtonElement: [object HTMLButtonElementConstructor]
+HTMLButtonElement: function HTMLButtonElement() { [native code] }
 
-HTMLDirectoryElement: [object HTMLDirectoryElementConstructor]
+HTMLDirectoryElement: function HTMLDirectoryElement() { [native code] }
 
-HTMLDivElement: [object HTMLDivElementConstructor]
+HTMLDivElement: function HTMLDivElement() { [native code] }
 
-HTMLDListElement: [object HTMLDListElementConstructor]
+HTMLDListElement: function HTMLDListElement() { [native code] }
 
-HTMLFieldSetElement: [object HTMLFieldSetElementConstructor]
+HTMLFieldSetElement: function HTMLFieldSetElement() { [native code] }
 
-HTMLFontElement: [object HTMLFontElementConstructor]
+HTMLFontElement: function HTMLFontElement() { [native code] }
 
-HTMLFormElement: [object HTMLFormElementConstructor]
+HTMLFormElement: function HTMLFormElement() { [native code] }
 
-HTMLFrameElement: [object HTMLFrameElementConstructor]
+HTMLFrameElement: function HTMLFrameElement() { [native code] }
 
-HTMLFrameSetElement: [object HTMLFrameSetElementConstructor]
+HTMLFrameSetElement: function HTMLFrameSetElement() { [native code] }
 
-HTMLHeadElement: [object HTMLHeadElementConstructor]
+HTMLHeadElement: function HTMLHeadElement() { [native code] }
 
-HTMLHeadingElement: [object HTMLHeadingElementConstructor]
+HTMLHeadingElement: function HTMLHeadingElement() { [native code] }
 
-HTMLHRElement: [object HTMLHRElementConstructor]
+HTMLHRElement: function HTMLHRElement() { [native code] }
 
-HTMLHtmlElement: [object HTMLHtmlElementConstructor]
+HTMLHtmlElement: function HTMLHtmlElement() { [native code] }
 
-HTMLIFrameElement: [object HTMLIFrameElementConstructor]
+HTMLIFrameElement: function HTMLIFrameElement() { [native code] }
 
-HTMLImageElement: [object HTMLImageElementConstructor]
+HTMLImageElement: function HTMLImageElement() { [native code] }
 
-HTMLInputElement: [object HTMLInputElementConstructor]
+HTMLInputElement: function HTMLInputElement() { [native code] }
 
-HTMLLabelElement: [object HTMLLabelElementConstructor]
+HTMLLabelElement: function HTMLLabelElement() { [native code] }
 
-HTMLLegendElement: [object HTMLLegendElementConstructor]
+HTMLLegendElement: function HTMLLegendElement() { [native code] }
 
-HTMLLIElement: [object HTMLLIElementConstructor]
+HTMLLIElement: function HTMLLIElement() { [native code] }
 
-HTMLLinkElement: [object HTMLLinkElementConstructor]
+HTMLLinkElement: function HTMLLinkElement() { [native code] }
 
-HTMLMapElement: [object HTMLMapElementConstructor]
+HTMLMapElement: function HTMLMapElement() { [native code] }
 
-HTMLMenuElement: [object HTMLMenuElementConstructor]
+HTMLMenuElement: function HTMLMenuElement() { [native code] }
 
-HTMLMetaElement: [object HTMLMetaElementConstructor]
+HTMLMetaElement: function HTMLMetaElement() { [native code] }
 
-HTMLModElement: [object HTMLModElementConstructor]
+HTMLModElement: function HTMLModElement() { [native code] }
 
-HTMLObjectElement: [object HTMLObjectElementConstructor]
+HTMLObjectElement: function HTMLObjectElement() { [native code] }
 
-HTMLOListElement: [object HTMLOListElementConstructor]
+HTMLOListElement: function HTMLOListElement() { [native code] }
 
-HTMLOptGroupElement: [object HTMLOptGroupElementConstructor]
+HTMLOptGroupElement: function HTMLOptGroupElement() { [native code] }
 
-HTMLOptionElement: [object HTMLOptionElementConstructor]
+HTMLOptionElement: function HTMLOptionElement() { [native code] }
 
-HTMLParagraphElement: [object HTMLParagraphElementConstructor]
+HTMLParagraphElement: function HTMLParagraphElement() { [native code] }
 
-HTMLParamElement: [object HTMLParamElementConstructor]
+HTMLParamElement: function HTMLParamElement() { [native code] }
 
-HTMLPreElement: [object HTMLPreElementConstructor]
+HTMLPreElement: function HTMLPreElement() { [native code] }
 
-HTMLQuoteElement: [object HTMLQuoteElementConstructor]
+HTMLQuoteElement: function HTMLQuoteElement() { [native code] }
 
-HTMLScriptElement: [object HTMLScriptElementConstructor]
+HTMLScriptElement: function HTMLScriptElement() { [native code] }
 
-HTMLSelectElement: [object HTMLSelectElementConstructor]
+HTMLSelectElement: function HTMLSelectElement() { [native code] }
 
-HTMLStyleElement: [object HTMLStyleElementConstructor]
+HTMLStyleElement: function HTMLStyleElement() { [native code] }
 
-HTMLTableCaptionElement: [object HTMLTableCaptionElementConstructor]
+HTMLTableCaptionElement: function HTMLTableCaptionElement() { [native code] }
 
-HTMLTableCellElement: [object HTMLTableCellElementConstructor]
+HTMLTableCellElement: function HTMLTableCellElement() { [native code] }
 
-HTMLTableColElement: [object HTMLTableColElementConstructor]
+HTMLTableColElement: function HTMLTableColElement() { [native code] }
 
-HTMLTableElement: [object HTMLTableElementConstructor]
+HTMLTableElement: function HTMLTableElement() { [native code] }
 
-HTMLTableRowElement: [object HTMLTableRowElementConstructor]
+HTMLTableRowElement: function HTMLTableRowElement() { [native code] }
 
-HTMLTableSectionElement: [object HTMLTableSectionElementConstructor]
+HTMLTableSectionElement: function HTMLTableSectionElement() { [native code] }
 
-HTMLTextAreaElement: [object HTMLTextAreaElementConstructor]
+HTMLTextAreaElement: function HTMLTextAreaElement() { [native code] }
 
-HTMLTitleElement: [object HTMLTitleElementConstructor]
+HTMLTitleElement: function HTMLTitleElement() { [native code] }
 
-HTMLUListElement: [object HTMLUListElementConstructor]
+HTMLUListElement: function HTMLUListElement() { [native code] }
 
-HTMLCanvasElement: [object HTMLCanvasElementConstructor]
+HTMLCanvasElement: function HTMLCanvasElement() { [native code] }
 
 HTMLInsElement: undefined
 
 HTMLDelElement: undefined
 
-HTMLEmbedElement: [object HTMLEmbedElementConstructor]
+HTMLEmbedElement: function HTMLEmbedElement() { [native code] }
 
-HTMLMarqueeElement: [object HTMLMarqueeElementConstructor]
+HTMLMarqueeElement: function HTMLMarqueeElement() { [native code] }
index 6f96e3a..8a1801c 100644 (file)
@@ -4,19 +4,19 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 
 SKIP AudioContext is not implemented.
-PASS FormData() threw exception TypeError: FormData is not a function. (In 'FormData()', 'FormData' is an instance of FormDataConstructor).
-PASS EventSource() threw exception TypeError: EventSource is not a function. (In 'EventSource()', 'EventSource' is an instance of EventSourceConstructor).
-PASS FileReader() threw exception TypeError: FileReader is not a function. (In 'FileReader()', 'FileReader' is an instance of FileReaderConstructor).
-PASS Audio() threw exception TypeError: Audio is not a function. (In 'Audio()', 'Audio' is an instance of AudioConstructor).
-PASS Image() threw exception TypeError: Image is not a function. (In 'Image()', 'Image' is an instance of ImageConstructor).
-PASS Option() threw exception TypeError: Option is not a function. (In 'Option()', 'Option' is an instance of OptionConstructor).
-PASS MessageChannel() threw exception TypeError: MessageChannel is not a function. (In 'MessageChannel()', 'MessageChannel' is an instance of MessageChannelConstructor).
-PASS WebKitCSSMatrix() threw exception TypeError: WebKitCSSMatrix is not a function. (In 'WebKitCSSMatrix()', 'WebKitCSSMatrix' is an instance of WebKitCSSMatrixConstructor).
-PASS WebKitPoint() threw exception TypeError: WebKitPoint is not a function. (In 'WebKitPoint()', 'WebKitPoint' is an instance of WebKitPointConstructor).
-PASS WebSocket() threw exception TypeError: WebSocket is not a function. (In 'WebSocket()', 'WebSocket' is an instance of WebSocketConstructor).
-PASS Worker() threw exception TypeError: Worker is not a function. (In 'Worker()', 'Worker' is an instance of WorkerConstructor).
-PASS XMLHttpRequest() threw exception TypeError: XMLHttpRequest is not a function. (In 'XMLHttpRequest()', 'XMLHttpRequest' is an instance of XMLHttpRequestConstructor).
-PASS XSLTProcessor() threw exception TypeError: XSLTProcessor is not a function. (In 'XSLTProcessor()', 'XSLTProcessor' is an instance of XSLTProcessorConstructor).
+PASS FormData() threw exception TypeError: Constructor requires 'new' operator.
+PASS EventSource() threw exception TypeError: Constructor requires 'new' operator.
+PASS FileReader() threw exception TypeError: Constructor requires 'new' operator.
+PASS Audio() threw exception TypeError: Constructor requires 'new' operator.
+PASS Image() threw exception TypeError: Constructor requires 'new' operator.
+PASS Option() threw exception TypeError: Constructor requires 'new' operator.
+PASS MessageChannel() threw exception TypeError: Constructor requires 'new' operator.
+PASS WebKitCSSMatrix() threw exception TypeError: Constructor requires 'new' operator.
+PASS WebKitPoint() threw exception TypeError: Constructor requires 'new' operator.
+PASS WebSocket() threw exception TypeError: Constructor requires 'new' operator.
+PASS Worker() threw exception TypeError: Constructor requires 'new' operator.
+PASS XMLHttpRequest() threw exception TypeError: Constructor requires 'new' operator.
+PASS XSLTProcessor() threw exception TypeError: Constructor requires 'new' operator.
 PASS successfullyParsed is true
 
 TEST COMPLETE
index eaaa6ad..34cf939 100644 (file)
@@ -3,7 +3,7 @@ This tests that setting the proto of a built in constructor is not reset
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS Object.getPrototypeOf(HTMLElement) is Object.prototype
+PASS Object.getPrototypeOf(HTMLElement) is Element
 PASS Object.getPrototypeOf(HTMLElement) is proto
 PASS successfullyParsed is true
 
index 74c98d9..e569afb 100644 (file)
@@ -5,7 +5,7 @@
 description('This tests that setting the proto of a built in constructor is not reset');
 
 // Hotmail depends on the [[Prototype]] of DOM constructors to be Object.prototype.
-shouldBe('Object.getPrototypeOf(HTMLElement)', 'Object.prototype');
+shouldBe('Object.getPrototypeOf(HTMLElement)', 'Element');
 
 var proto = new Number(42);
 HTMLElement.__proto__ = proto;
index a9cea30..a0ac38e 100644 (file)
@@ -7,482 +7,482 @@ Basics
 
 PASS jsWrapperClass(document.createAttribute()) is 'Attr'
 PASS jsWrapperClass(document.createAttribute().__proto__) is 'AttrPrototype'
-PASS jsWrapperClass(document.createAttribute().constructor) is 'AttrConstructor'
+PASS jsWrapperClass(document.createAttribute().constructor) is 'Function'
 PASS jsWrapperClass(document.createComment()) is 'Comment'
 PASS jsWrapperClass(document.createComment().__proto__) is 'CommentPrototype'
-PASS jsWrapperClass(document.createComment().constructor) is 'CommentConstructor'
+PASS jsWrapperClass(document.createComment().constructor) is 'Function'
 PASS jsWrapperClass(document.createDocumentFragment()) is 'DocumentFragment'
 PASS jsWrapperClass(document.createDocumentFragment().__proto__) is 'DocumentFragmentPrototype'
-PASS jsWrapperClass(document.createDocumentFragment().constructor) is 'DocumentFragmentConstructor'
+PASS jsWrapperClass(document.createDocumentFragment().constructor) is 'Function'
 PASS jsWrapperClass(document.implementation) is 'DOMImplementation'
 PASS jsWrapperClass(document.implementation.__proto__) is 'DOMImplementationPrototype'
-PASS jsWrapperClass(document.implementation.constructor) is 'DOMImplementationConstructor'
+PASS jsWrapperClass(document.implementation.constructor) is 'Function'
 PASS jsWrapperClass(root.attributes) is 'NamedNodeMap'
 PASS jsWrapperClass(root.attributes.__proto__) is 'NamedNodeMapPrototype'
-PASS jsWrapperClass(root.attributes.constructor) is 'NamedNodeMapConstructor'
+PASS jsWrapperClass(root.attributes.constructor) is 'Function'
 PASS jsWrapperClass(document.createNodeIterator(root, 0, null, false)) is 'NodeIterator'
 PASS jsWrapperClass(document.createNodeIterator(root, 0, null, false).__proto__) is 'NodeIteratorPrototype'
-PASS jsWrapperClass(document.createNodeIterator(root, 0, null, false).constructor) is 'NodeIteratorConstructor'
+PASS jsWrapperClass(document.createNodeIterator(root, 0, null, false).constructor) is 'Function'
 PASS jsWrapperClass(document.getElementsByTagName('div')) is 'HTMLCollection'
 PASS jsWrapperClass(document.getElementsByTagName('div').__proto__) is 'HTMLCollectionPrototype'
-PASS jsWrapperClass(document.getElementsByTagName('div').constructor) is 'HTMLCollectionConstructor'
+PASS jsWrapperClass(document.getElementsByTagName('div').constructor) is 'Function'
 PASS jsWrapperClass(document.createRange()) is 'Range'
 PASS jsWrapperClass(document.createRange().__proto__) is 'RangePrototype'
-PASS jsWrapperClass(document.createRange().constructor) is 'RangeConstructor'
+PASS jsWrapperClass(document.createRange().constructor) is 'Function'
 PASS jsWrapperClass(document.createTextNode()) is 'Text'
 PASS jsWrapperClass(document.createTextNode().__proto__) is 'TextPrototype'
-PASS jsWrapperClass(document.createTextNode().constructor) is 'TextConstructor'
+PASS jsWrapperClass(document.createTextNode().constructor) is 'Function'
 PASS jsWrapperClass(document.createTreeWalker(root, 0, null, false)) is 'TreeWalker'
 PASS jsWrapperClass(document.createTreeWalker(root, 0, null, false).__proto__) is 'TreeWalkerPrototype'
-PASS jsWrapperClass(document.createTreeWalker(root, 0, null, false).constructor) is 'TreeWalkerConstructor'
+PASS jsWrapperClass(document.createTreeWalker(root, 0, null, false).constructor) is 'Function'
 
 XML
 
 PASS jsWrapperClass(xmlDocument) is 'XMLDocument'
 PASS jsWrapperClass(xmlDocument.__proto__) is 'XMLDocumentPrototype'
-PASS jsWrapperClass(xmlDocument.constructor) is 'XMLDocumentConstructor'
+PASS jsWrapperClass(xmlDocument.constructor) is 'Function'
 PASS jsWrapperClass(xmlDocument.createCDATASection()) is 'CDATASection'
 PASS jsWrapperClass(xmlDocument.createCDATASection().__proto__) is 'CDATASectionPrototype'
-PASS jsWrapperClass(xmlDocument.createCDATASection().constructor) is 'CDATASectionConstructor'
+PASS jsWrapperClass(xmlDocument.createCDATASection().constructor) is 'Function'
 PASS jsWrapperClass(xmlDocument.createElementNS('x', 'x', 'x')) is 'Element'
 PASS jsWrapperClass(xmlDocument.createElementNS('x', 'x', 'x').__proto__) is 'ElementPrototype'
-PASS jsWrapperClass(xmlDocument.createElementNS('x', 'x', 'x').constructor) is 'ElementConstructor'
+PASS jsWrapperClass(xmlDocument.createElementNS('x', 'x', 'x').constructor) is 'Function'
 PASS jsWrapperClass(xmlDocument.createProcessingInstruction()) is 'ProcessingInstruction'
 PASS jsWrapperClass(xmlDocument.createProcessingInstruction().__proto__) is 'ProcessingInstructionPrototype'
-PASS jsWrapperClass(xmlDocument.createProcessingInstruction().constructor) is 'ProcessingInstructionConstructor'
+PASS jsWrapperClass(xmlDocument.createProcessingInstruction().constructor) is 'Function'
 
 Events
 
 PASS jsWrapperClass(document.createEvent('Event')) is 'Event'
 PASS jsWrapperClass(document.createEvent('Event').__proto__) is 'EventPrototype'
-PASS jsWrapperClass(document.createEvent('Event').constructor) is 'EventConstructor'
+PASS jsWrapperClass(document.createEvent('Event').constructor) is 'Function'
 PASS jsWrapperClass(document.createEvent('KeyboardEvent')) is 'KeyboardEvent'
 PASS jsWrapperClass(document.createEvent('KeyboardEvent').__proto__) is 'KeyboardEventPrototype'
-PASS jsWrapperClass(document.createEvent('KeyboardEvent').constructor) is 'KeyboardEventConstructor'
+PASS jsWrapperClass(document.createEvent('KeyboardEvent').constructor) is 'Function'
 PASS jsWrapperClass(document.createEvent('MouseEvent')) is 'MouseEvent'
 PASS jsWrapperClass(document.createEvent('MouseEvent').__proto__) is 'MouseEventPrototype'
-PASS jsWrapperClass(document.createEvent('MouseEvent').constructor) is 'MouseEventConstructor'
+PASS jsWrapperClass(document.createEvent('MouseEvent').constructor) is 'Function'
 PASS jsWrapperClass(document.createEvent('MutationEvent')) is 'MutationEvent'
 PASS jsWrapperClass(document.createEvent('MutationEvent').__proto__) is 'MutationEventPrototype'
-PASS jsWrapperClass(document.createEvent('MutationEvent').constructor) is 'MutationEventConstructor'
+PASS jsWrapperClass(document.createEvent('MutationEvent').constructor) is 'Function'
 PASS jsWrapperClass(document.createEvent('OverflowEvent')) is 'OverflowEvent'
 PASS jsWrapperClass(document.createEvent('OverflowEvent').__proto__) is 'OverflowEventPrototype'
-PASS jsWrapperClass(document.createEvent('OverflowEvent').constructor) is 'OverflowEventConstructor'
+PASS jsWrapperClass(document.createEvent('OverflowEvent').constructor) is 'Function'
 PASS jsWrapperClass(document.createEvent('TextEvent')) is 'TextEvent'
 PASS jsWrapperClass(document.createEvent('TextEvent').__proto__) is 'TextEventPrototype'
-PASS jsWrapperClass(document.createEvent('TextEvent').constructor) is 'TextEventConstructor'
+PASS jsWrapperClass(document.createEvent('TextEvent').constructor) is 'Function'
 PASS jsWrapperClass(document.createEvent('UIEvent')) is 'UIEvent'
 PASS jsWrapperClass(document.createEvent('UIEvent').__proto__) is 'UIEventPrototype'
-PASS jsWrapperClass(document.createEvent('UIEvent').constructor) is 'UIEventConstructor'
+PASS jsWrapperClass(document.createEvent('UIEvent').constructor) is 'Function'
 PASS jsWrapperClass(document.createEvent('WheelEvent')) is 'WheelEvent'
 PASS jsWrapperClass(document.createEvent('WheelEvent').__proto__) is 'WheelEventPrototype'
-PASS jsWrapperClass(document.createEvent('WheelEvent').constructor) is 'WheelEventConstructor'
+PASS jsWrapperClass(document.createEvent('WheelEvent').constructor) is 'Function'
 
 CSS DOM
 
 PASS jsWrapperClass(document.styleSheets) is 'StyleSheetList'
 PASS jsWrapperClass(document.styleSheets.__proto__) is 'StyleSheetListPrototype'
-PASS jsWrapperClass(document.styleSheets.constructor) is 'StyleSheetListConstructor'
+PASS jsWrapperClass(document.styleSheets.constructor) is 'Function'
 PASS jsWrapperClass(stylesheet) is 'CSSStyleSheet'
 PASS jsWrapperClass(stylesheet.__proto__) is 'CSSStyleSheetPrototype'
-PASS jsWrapperClass(stylesheet.constructor) is 'CSSStyleSheetConstructor'
+PASS jsWrapperClass(stylesheet.constructor) is 'Function'
 PASS jsWrapperClass(stylesheet.cssRules) is 'CSSRuleList'
 PASS jsWrapperClass(stylesheet.cssRules.__proto__) is 'CSSRuleListPrototype'
-PASS jsWrapperClass(stylesheet.cssRules.constructor) is 'CSSRuleListConstructor'
+PASS jsWrapperClass(stylesheet.cssRules.constructor) is 'Function'
 PASS jsWrapperClass(stylesheet.cssRules.item(0)) is 'CSSStyleRule'
 PASS jsWrapperClass(stylesheet.cssRules.item(0).__proto__) is 'CSSStyleRulePrototype'
-PASS jsWrapperClass(stylesheet.cssRules.item(0).constructor) is 'CSSStyleRuleConstructor'
+PASS jsWrapperClass(stylesheet.cssRules.item(0).constructor) is 'Function'
 PASS jsWrapperClass(stylesheet.cssRules.item(0).style) is 'CSSStyleDeclaration'
 PASS jsWrapperClass(stylesheet.cssRules.item(0).style.__proto__) is 'CSSStyleDeclarationPrototype'
-PASS jsWrapperClass(stylesheet.cssRules.item(0).style.constructor) is 'CSSStyleDeclarationConstructor'
+PASS jsWrapperClass(stylesheet.cssRules.item(0).style.constructor) is 'Function'
 PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('color')) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('color').__proto__) is 'CSSPrimitiveValuePrototype'
-PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('color').constructor) is 'CSSPrimitiveValueConstructor'
+PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('color').constructor) is 'Function'
 PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('color').getRGBColorValue()) is 'RGBColor'
 PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('color').getRGBColorValue().__proto__) is 'RGBColorPrototype'
-PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('color').getRGBColorValue().constructor) is 'RGBColorConstructor'
+PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('color').getRGBColorValue().constructor) is 'Function'
 PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('clip').getRectValue()) is 'Rect'
 PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('clip').getRectValue().__proto__) is 'RectPrototype'
-PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('clip').getRectValue().constructor) is 'RectConstructor'
+PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('clip').getRectValue().constructor) is 'Function'
 PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('content')) is 'CSSValueList'
 PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('content').__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('content').constructor) is 'CSSValueListConstructor'
+PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('content').constructor) is 'Function'
 PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('content').item(0).getCounterValue()) is 'Counter'
 PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('content').item(0).getCounterValue().__proto__) is 'CounterPrototype'
-PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('content').item(0).getCounterValue().constructor) is 'CounterConstructor'
+PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('content').item(0).getCounterValue().constructor) is 'Function'
 PASS jsWrapperClass(stylesheet.media) is 'MediaList'
 PASS jsWrapperClass(stylesheet.media.__proto__) is 'MediaListPrototype'
-PASS jsWrapperClass(stylesheet.media.constructor) is 'MediaListConstructor'
+PASS jsWrapperClass(stylesheet.media.constructor) is 'Function'
 
 XPath
 
 PASS jsWrapperClass(document.createExpression('//*', document.createNSResolver(document))) is 'XPathExpression'
 PASS jsWrapperClass(document.createExpression('//*', document.createNSResolver(document)).__proto__) is 'XPathExpressionPrototype'
-PASS jsWrapperClass(document.createExpression('//*', document.createNSResolver(document)).constructor) is 'XPathExpressionConstructor'
+PASS jsWrapperClass(document.createExpression('//*', document.createNSResolver(document)).constructor) is 'Function'
 PASS jsWrapperClass(document.evaluate('//*', document, document.createNSResolver(document), 0, null)) is 'XPathResult'
 PASS jsWrapperClass(document.evaluate('//*', document, document.createNSResolver(document), 0, null).__proto__) is 'XPathResultPrototype'
-PASS jsWrapperClass(document.evaluate('//*', document, document.createNSResolver(document), 0, null).constructor) is 'XPathResultConstructor'
+PASS jsWrapperClass(document.evaluate('//*', document, document.createNSResolver(document), 0, null).constructor) is 'Function'
 
 Other
 
 PASS jsWrapperClass(window) is 'Window'
 PASS jsWrapperClass(window.__proto__) is 'WindowPrototype'
-PASS jsWrapperClass(window.constructor) is 'WindowConstructor'
+PASS jsWrapperClass(window.constructor) is 'Function'
 
 HTML DOM
 
 PASS jsWrapperClass(root.children) is 'HTMLCollection'
 PASS jsWrapperClass(root.children.__proto__) is 'HTMLCollectionPrototype'
-PASS jsWrapperClass(root.children.constructor) is 'HTMLCollectionConstructor'
+PASS jsWrapperClass(root.children.constructor) is 'Function'
 PASS jsWrapperClass(document) is 'HTMLDocument'
 PASS jsWrapperClass(document.__proto__) is 'HTMLDocumentPrototype'
-PASS jsWrapperClass(document.constructor) is 'HTMLDocumentConstructor'
+PASS jsWrapperClass(document.constructor) is 'Function'
 PASS jsWrapperClass(document.createElement('select').options) is 'HTMLOptionsCollection'
 PASS jsWrapperClass(document.createElement('select').options.__proto__) is 'HTMLOptionsCollectionPrototype'
-PASS jsWrapperClass(document.createElement('select').options.constructor) is 'HTMLOptionsCollectionConstructor'
+PASS jsWrapperClass(document.createElement('select').options.constructor) is 'Function'
 
 HTML Elements
 
 PASS tagJSWrapperClass('a') is 'HTMLAnchorElement'
 PASS tagJSWrapperPrototypeClass('a') is 'HTMLAnchorElementPrototype'
-PASS tagJSWrapperConstructorClass('a') is 'HTMLAnchorElementConstructor'
+PASS tagJSWrapperConstructorClass('a') is 'Function'
 PASS tagJSWrapperClass('abbr') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('abbr') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('abbr') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('abbr') is 'Function'
 PASS tagJSWrapperClass('acronym') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('acronym') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('acronym') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('acronym') is 'Function'
 PASS tagJSWrapperClass('address') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('address') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('address') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('address') is 'Function'
 PASS tagJSWrapperClass('applet') is 'HTMLAppletElement'
 PASS tagJSWrapperPrototypeClass('applet') is 'HTMLAppletElementPrototype'
-PASS tagJSWrapperConstructorClass('applet') is 'HTMLAppletElementConstructor'
+PASS tagJSWrapperConstructorClass('applet') is 'Function'
 PASS tagJSWrapperClass('area') is 'HTMLAreaElement'
 PASS tagJSWrapperPrototypeClass('area') is 'HTMLAreaElementPrototype'
-PASS tagJSWrapperConstructorClass('area') is 'HTMLAreaElementConstructor'
+PASS tagJSWrapperConstructorClass('area') is 'Function'
 PASS tagJSWrapperClass('article') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('article') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('article') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('article') is 'Function'
 PASS tagJSWrapperClass('aside') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('aside') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('aside') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('aside') is 'Function'
 PASS tagJSWrapperClass('b') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('b') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('b') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('b') is 'Function'
 PASS tagJSWrapperClass('base') is 'HTMLBaseElement'
 PASS tagJSWrapperPrototypeClass('base') is 'HTMLBaseElementPrototype'
-PASS tagJSWrapperConstructorClass('base') is 'HTMLBaseElementConstructor'
+PASS tagJSWrapperConstructorClass('base') is 'Function'
 PASS tagJSWrapperClass('bdo') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('bdo') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('bdo') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('bdo') is 'Function'
 PASS tagJSWrapperClass('big') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('big') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('big') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('big') is 'Function'
 PASS tagJSWrapperClass('blockquote') is 'HTMLQuoteElement'
 PASS tagJSWrapperPrototypeClass('blockquote') is 'HTMLQuoteElementPrototype'
-PASS tagJSWrapperConstructorClass('blockquote') is 'HTMLQuoteElementConstructor'
+PASS tagJSWrapperConstructorClass('blockquote') is 'Function'
 PASS tagJSWrapperClass('body') is 'HTMLBodyElement'
 PASS tagJSWrapperPrototypeClass('body') is 'HTMLBodyElementPrototype'
-PASS tagJSWrapperConstructorClass('body') is 'HTMLBodyElementConstructor'
+PASS tagJSWrapperConstructorClass('body') is 'Function'
 PASS tagJSWrapperClass('br') is 'HTMLBRElement'
 PASS tagJSWrapperPrototypeClass('br') is 'HTMLBRElementPrototype'
-PASS tagJSWrapperConstructorClass('br') is 'HTMLBRElementConstructor'
+PASS tagJSWrapperConstructorClass('br') is 'Function'
 PASS tagJSWrapperClass('button') is 'HTMLButtonElement'
 PASS tagJSWrapperPrototypeClass('button') is 'HTMLButtonElementPrototype'
-PASS tagJSWrapperConstructorClass('button') is 'HTMLButtonElementConstructor'
+PASS tagJSWrapperConstructorClass('button') is 'Function'
 PASS tagJSWrapperClass('canvas') is 'HTMLCanvasElement'
 PASS tagJSWrapperPrototypeClass('canvas') is 'HTMLCanvasElementPrototype'
-PASS tagJSWrapperConstructorClass('canvas') is 'HTMLCanvasElementConstructor'
+PASS tagJSWrapperConstructorClass('canvas') is 'Function'
 PASS tagJSWrapperClass('caption') is 'HTMLTableCaptionElement'
 PASS tagJSWrapperPrototypeClass('caption') is 'HTMLTableCaptionElementPrototype'
-PASS tagJSWrapperConstructorClass('caption') is 'HTMLTableCaptionElementConstructor'
+PASS tagJSWrapperConstructorClass('caption') is 'Function'
 PASS tagJSWrapperClass('center') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('center') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('center') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('center') is 'Function'
 PASS tagJSWrapperClass('cite') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('cite') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('cite') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('cite') is 'Function'
 PASS tagJSWrapperClass('code') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('code') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('code') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('code') is 'Function'
 PASS tagJSWrapperClass('col') is 'HTMLTableColElement'
 PASS tagJSWrapperPrototypeClass('col') is 'HTMLTableColElementPrototype'
-PASS tagJSWrapperConstructorClass('col') is 'HTMLTableColElementConstructor'
+PASS tagJSWrapperConstructorClass('col') is 'Function'
 PASS tagJSWrapperClass('colgroup') is 'HTMLTableColElement'
 PASS tagJSWrapperPrototypeClass('colgroup') is 'HTMLTableColElementPrototype'
-PASS tagJSWrapperConstructorClass('colgroup') is 'HTMLTableColElementConstructor'
+PASS tagJSWrapperConstructorClass('colgroup') is 'Function'
 PASS tagJSWrapperClass('dd') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('dd') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('dd') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('dd') is 'Function'
 PASS tagJSWrapperClass('del') is 'HTMLModElement'
 PASS tagJSWrapperPrototypeClass('del') is 'HTMLModElementPrototype'
-PASS tagJSWrapperConstructorClass('del') is 'HTMLModElementConstructor'
+PASS tagJSWrapperConstructorClass('del') is 'Function'
 PASS tagJSWrapperClass('dfn') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('dfn') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('dfn') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('dfn') is 'Function'
 PASS tagJSWrapperClass('dir') is 'HTMLDirectoryElement'
 PASS tagJSWrapperPrototypeClass('dir') is 'HTMLDirectoryElementPrototype'
-PASS tagJSWrapperConstructorClass('dir') is 'HTMLDirectoryElementConstructor'
+PASS tagJSWrapperConstructorClass('dir') is 'Function'
 PASS tagJSWrapperClass('div') is 'HTMLDivElement'
 PASS tagJSWrapperPrototypeClass('div') is 'HTMLDivElementPrototype'
-PASS tagJSWrapperConstructorClass('div') is 'HTMLDivElementConstructor'
+PASS tagJSWrapperConstructorClass('div') is 'Function'
 PASS tagJSWrapperClass('dl') is 'HTMLDListElement'
 PASS tagJSWrapperPrototypeClass('dl') is 'HTMLDListElementPrototype'
-PASS tagJSWrapperConstructorClass('dl') is 'HTMLDListElementConstructor'
+PASS tagJSWrapperConstructorClass('dl') is 'Function'
 PASS tagJSWrapperClass('dt') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('dt') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('dt') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('dt') is 'Function'
 PASS tagJSWrapperClass('em') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('em') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('em') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('em') is 'Function'
 PASS tagJSWrapperClass('embed') is 'HTMLEmbedElement'
 PASS tagJSWrapperPrototypeClass('embed') is 'HTMLEmbedElementPrototype'
-PASS tagJSWrapperConstructorClass('embed') is 'HTMLEmbedElementConstructor'
+PASS tagJSWrapperConstructorClass('embed') is 'Function'
 PASS tagJSWrapperClass('fieldset') is 'HTMLFieldSetElement'
 PASS tagJSWrapperPrototypeClass('fieldset') is 'HTMLFieldSetElementPrototype'
-PASS tagJSWrapperConstructorClass('fieldset') is 'HTMLFieldSetElementConstructor'
+PASS tagJSWrapperConstructorClass('fieldset') is 'Function'
 PASS tagJSWrapperClass('font') is 'HTMLFontElement'
 PASS tagJSWrapperPrototypeClass('font') is 'HTMLFontElementPrototype'
-PASS tagJSWrapperConstructorClass('font') is 'HTMLFontElementConstructor'
+PASS tagJSWrapperConstructorClass('font') is 'Function'
 PASS tagJSWrapperClass('footer') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('footer') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('footer') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('footer') is 'Function'
 PASS tagJSWrapperClass('form') is 'HTMLFormElement'
 PASS tagJSWrapperPrototypeClass('form') is 'HTMLFormElementPrototype'
-PASS tagJSWrapperConstructorClass('form') is 'HTMLFormElementConstructor'
+PASS tagJSWrapperConstructorClass('form') is 'Function'
 PASS tagJSWrapperClass('frame') is 'HTMLFrameElement'
 PASS tagJSWrapperPrototypeClass('frame') is 'HTMLFrameElementPrototype'
-PASS tagJSWrapperConstructorClass('frame') is 'HTMLFrameElementConstructor'
+PASS tagJSWrapperConstructorClass('frame') is 'Function'
 PASS tagJSWrapperClass('frameset') is 'HTMLFrameSetElement'
 PASS tagJSWrapperPrototypeClass('frameset') is 'HTMLFrameSetElementPrototype'
-PASS tagJSWrapperConstructorClass('frameset') is 'HTMLFrameSetElementConstructor'
+PASS tagJSWrapperConstructorClass('frameset') is 'Function'
 PASS tagJSWrapperClass('head') is 'HTMLHeadElement'
 PASS tagJSWrapperPrototypeClass('head') is 'HTMLHeadElementPrototype'
-PASS tagJSWrapperConstructorClass('head') is 'HTMLHeadElementConstructor'
+PASS tagJSWrapperConstructorClass('head') is 'Function'
 PASS tagJSWrapperClass('h1') is 'HTMLHeadingElement'
 PASS tagJSWrapperPrototypeClass('h1') is 'HTMLHeadingElementPrototype'
-PASS tagJSWrapperConstructorClass('h1') is 'HTMLHeadingElementConstructor'
+PASS tagJSWrapperConstructorClass('h1') is 'Function'
 PASS tagJSWrapperClass('h2') is 'HTMLHeadingElement'
 PASS tagJSWrapperPrototypeClass('h2') is 'HTMLHeadingElementPrototype'
-PASS tagJSWrapperConstructorClass('h2') is 'HTMLHeadingElementConstructor'
+PASS tagJSWrapperConstructorClass('h2') is 'Function'
 PASS tagJSWrapperClass('h3') is 'HTMLHeadingElement'
 PASS tagJSWrapperPrototypeClass('h3') is 'HTMLHeadingElementPrototype'
-PASS tagJSWrapperConstructorClass('h3') is 'HTMLHeadingElementConstructor'
+PASS tagJSWrapperConstructorClass('h3') is 'Function'
 PASS tagJSWrapperClass('h4') is 'HTMLHeadingElement'
 PASS tagJSWrapperPrototypeClass('h4') is 'HTMLHeadingElementPrototype'
-PASS tagJSWrapperConstructorClass('h4') is 'HTMLHeadingElementConstructor'
+PASS tagJSWrapperConstructorClass('h4') is 'Function'
 PASS tagJSWrapperClass('h5') is 'HTMLHeadingElement'
 PASS tagJSWrapperPrototypeClass('h5') is 'HTMLHeadingElementPrototype'
-PASS tagJSWrapperConstructorClass('h5') is 'HTMLHeadingElementConstructor'
+PASS tagJSWrapperConstructorClass('h5') is 'Function'
 PASS tagJSWrapperClass('h6') is 'HTMLHeadingElement'
 PASS tagJSWrapperPrototypeClass('h6') is 'HTMLHeadingElementPrototype'
-PASS tagJSWrapperConstructorClass('h6') is 'HTMLHeadingElementConstructor'
+PASS tagJSWrapperConstructorClass('h6') is 'Function'
 PASS tagJSWrapperClass('head') is 'HTMLHeadElement'
 PASS tagJSWrapperPrototypeClass('head') is 'HTMLHeadElementPrototype'
-PASS tagJSWrapperConstructorClass('head') is 'HTMLHeadElementConstructor'
+PASS tagJSWrapperConstructorClass('head') is 'Function'
 PASS tagJSWrapperClass('header') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('header') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('header') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('header') is 'Function'
 PASS tagJSWrapperClass('hgroup') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('hgroup') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('hgroup') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('hgroup') is 'Function'
 PASS tagJSWrapperClass('hr') is 'HTMLHRElement'
 PASS tagJSWrapperPrototypeClass('hr') is 'HTMLHRElementPrototype'
-PASS tagJSWrapperConstructorClass('hr') is 'HTMLHRElementConstructor'
+PASS tagJSWrapperConstructorClass('hr') is 'Function'
 PASS tagJSWrapperClass('html') is 'HTMLHtmlElement'
 PASS tagJSWrapperPrototypeClass('html') is 'HTMLHtmlElementPrototype'
-PASS tagJSWrapperConstructorClass('html') is 'HTMLHtmlElementConstructor'
+PASS tagJSWrapperConstructorClass('html') is 'Function'
 PASS tagJSWrapperClass('i') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('i') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('i') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('i') is 'Function'
 PASS tagJSWrapperClass('iframe') is 'HTMLIFrameElement'
 PASS tagJSWrapperPrototypeClass('iframe') is 'HTMLIFrameElementPrototype'
-PASS tagJSWrapperConstructorClass('iframe') is 'HTMLIFrameElementConstructor'
+PASS tagJSWrapperConstructorClass('iframe') is 'Function'
 PASS tagJSWrapperClass('image') is 'HTMLUnknownElement'
 PASS tagJSWrapperPrototypeClass('image') is 'HTMLUnknownElementPrototype'
-PASS tagJSWrapperConstructorClass('image') is 'HTMLUnknownElementConstructor'
+PASS tagJSWrapperConstructorClass('image') is 'Function'
 PASS tagJSWrapperClass('img') is 'HTMLImageElement'
 PASS tagJSWrapperPrototypeClass('img') is 'HTMLImageElementPrototype'
-PASS tagJSWrapperConstructorClass('img') is 'HTMLImageElementConstructor'
+PASS tagJSWrapperConstructorClass('img') is 'Function'
 PASS tagJSWrapperClass('input') is 'HTMLInputElement'
 PASS tagJSWrapperPrototypeClass('input') is 'HTMLInputElementPrototype'
-PASS tagJSWrapperConstructorClass('input') is 'HTMLInputElementConstructor'
+PASS tagJSWrapperConstructorClass('input') is 'Function'
 PASS tagJSWrapperClass('ins') is 'HTMLModElement'
 PASS tagJSWrapperPrototypeClass('ins') is 'HTMLModElementPrototype'
-PASS tagJSWrapperConstructorClass('ins') is 'HTMLModElementConstructor'
+PASS tagJSWrapperConstructorClass('ins') is 'Function'
 PASS tagJSWrapperClass('kbd') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('kbd') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('kbd') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('kbd') is 'Function'
 PASS tagJSWrapperClass('keygen') is 'HTMLKeygenElement'
 PASS tagJSWrapperPrototypeClass('keygen') is 'HTMLKeygenElementPrototype'
-PASS tagJSWrapperConstructorClass('keygen') is 'HTMLKeygenElementConstructor'
+PASS tagJSWrapperConstructorClass('keygen') is 'Function'
 PASS tagJSWrapperClass('label') is 'HTMLLabelElement'
 PASS tagJSWrapperPrototypeClass('label') is 'HTMLLabelElementPrototype'
-PASS tagJSWrapperConstructorClass('label') is 'HTMLLabelElementConstructor'
+PASS tagJSWrapperConstructorClass('label') is 'Function'
 PASS tagJSWrapperClass('layer') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('layer') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('layer') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('layer') is 'Function'
 PASS tagJSWrapperClass('legend') is 'HTMLLegendElement'
 PASS tagJSWrapperPrototypeClass('legend') is 'HTMLLegendElementPrototype'
-PASS tagJSWrapperConstructorClass('legend') is 'HTMLLegendElementConstructor'
+PASS tagJSWrapperConstructorClass('legend') is 'Function'
 PASS tagJSWrapperClass('li') is 'HTMLLIElement'
 PASS tagJSWrapperPrototypeClass('li') is 'HTMLLIElementPrototype'
-PASS tagJSWrapperConstructorClass('li') is 'HTMLLIElementConstructor'
+PASS tagJSWrapperConstructorClass('li') is 'Function'
 PASS tagJSWrapperClass('link') is 'HTMLLinkElement'
 PASS tagJSWrapperPrototypeClass('link') is 'HTMLLinkElementPrototype'
-PASS tagJSWrapperConstructorClass('link') is 'HTMLLinkElementConstructor'
+PASS tagJSWrapperConstructorClass('link') is 'Function'
 PASS tagJSWrapperClass('listing') is 'HTMLPreElement'
 PASS tagJSWrapperPrototypeClass('listing') is 'HTMLPreElementPrototype'
-PASS tagJSWrapperConstructorClass('listing') is 'HTMLPreElementConstructor'
+PASS tagJSWrapperConstructorClass('listing') is 'Function'
 PASS tagJSWrapperClass('main') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('main') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('main') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('main') is 'Function'
 PASS tagJSWrapperClass('map') is 'HTMLMapElement'
 PASS tagJSWrapperPrototypeClass('map') is 'HTMLMapElementPrototype'
-PASS tagJSWrapperConstructorClass('map') is 'HTMLMapElementConstructor'
+PASS tagJSWrapperConstructorClass('map') is 'Function'
 PASS tagJSWrapperClass('marquee') is 'HTMLMarqueeElement'
 PASS tagJSWrapperPrototypeClass('marquee') is 'HTMLMarqueeElementPrototype'
-PASS tagJSWrapperConstructorClass('marquee') is 'HTMLMarqueeElementConstructor'
+PASS tagJSWrapperConstructorClass('marquee') is 'Function'
 PASS tagJSWrapperClass('menu') is 'HTMLMenuElement'
 PASS tagJSWrapperPrototypeClass('menu') is 'HTMLMenuElementPrototype'
-PASS tagJSWrapperConstructorClass('menu') is 'HTMLMenuElementConstructor'
+PASS tagJSWrapperConstructorClass('menu') is 'Function'
 PASS tagJSWrapperClass('meta') is 'HTMLMetaElement'
 PASS tagJSWrapperPrototypeClass('meta') is 'HTMLMetaElementPrototype'
-PASS tagJSWrapperConstructorClass('meta') is 'HTMLMetaElementConstructor'
+PASS tagJSWrapperConstructorClass('meta') is 'Function'
 PASS tagJSWrapperClass('nav') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('nav') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('nav') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('nav') is 'Function'
 PASS tagJSWrapperClass('nobr') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('nobr') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('nobr') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('nobr') is 'Function'
 PASS tagJSWrapperClass('noembed') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('noembed') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('noembed') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('noembed') is 'Function'
 PASS tagJSWrapperClass('noframes') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('noframes') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('noframes') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('noframes') is 'Function'
 PASS tagJSWrapperClass('nolayer') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('nolayer') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('nolayer') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('nolayer') is 'Function'
 PASS tagJSWrapperClass('noscript') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('noscript') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('noscript') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('noscript') is 'Function'
 PASS tagJSWrapperClass('object') is 'HTMLObjectElement'
 PASS tagJSWrapperPrototypeClass('object') is 'HTMLObjectElementPrototype'
-PASS tagJSWrapperConstructorClass('object') is 'HTMLObjectElementConstructor'
+PASS tagJSWrapperConstructorClass('object') is 'Function'
 PASS tagJSWrapperClass('ol') is 'HTMLOListElement'
 PASS tagJSWrapperPrototypeClass('ol') is 'HTMLOListElementPrototype'
-PASS tagJSWrapperConstructorClass('ol') is 'HTMLOListElementConstructor'
+PASS tagJSWrapperConstructorClass('ol') is 'Function'
 PASS tagJSWrapperClass('optgroup') is 'HTMLOptGroupElement'
 PASS tagJSWrapperPrototypeClass('optgroup') is 'HTMLOptGroupElementPrototype'
-PASS tagJSWrapperConstructorClass('optgroup') is 'HTMLOptGroupElementConstructor'
+PASS tagJSWrapperConstructorClass('optgroup') is 'Function'
 PASS tagJSWrapperClass('option') is 'HTMLOptionElement'
 PASS tagJSWrapperPrototypeClass('option') is 'HTMLOptionElementPrototype'
-PASS tagJSWrapperConstructorClass('option') is 'HTMLOptionElementConstructor'
+PASS tagJSWrapperConstructorClass('option') is 'Function'
 PASS tagJSWrapperClass('p') is 'HTMLParagraphElement'
 PASS tagJSWrapperPrototypeClass('p') is 'HTMLParagraphElementPrototype'
-PASS tagJSWrapperConstructorClass('p') is 'HTMLParagraphElementConstructor'
+PASS tagJSWrapperConstructorClass('p') is 'Function'
 PASS tagJSWrapperClass('param') is 'HTMLParamElement'
 PASS tagJSWrapperPrototypeClass('param') is 'HTMLParamElementPrototype'
-PASS tagJSWrapperConstructorClass('param') is 'HTMLParamElementConstructor'
+PASS tagJSWrapperConstructorClass('param') is 'Function'
 PASS tagJSWrapperClass('plaintext') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('plaintext') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('plaintext') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('plaintext') is 'Function'
 PASS tagJSWrapperClass('pre') is 'HTMLPreElement'
 PASS tagJSWrapperPrototypeClass('pre') is 'HTMLPreElementPrototype'
-PASS tagJSWrapperConstructorClass('pre') is 'HTMLPreElementConstructor'
+PASS tagJSWrapperConstructorClass('pre') is 'Function'
 PASS tagJSWrapperClass('q') is 'HTMLQuoteElement'
 PASS tagJSWrapperPrototypeClass('q') is 'HTMLQuoteElementPrototype'
-PASS tagJSWrapperConstructorClass('q') is 'HTMLQuoteElementConstructor'
+PASS tagJSWrapperConstructorClass('q') is 'Function'
 PASS tagJSWrapperClass('rp') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('rp') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('rp') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('rp') is 'Function'
 PASS tagJSWrapperClass('rt') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('rt') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('rt') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('rt') is 'Function'
 PASS tagJSWrapperClass('ruby') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('ruby') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('ruby') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('ruby') is 'Function'
 PASS tagJSWrapperClass('s') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('s') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('s') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('s') is 'Function'
 PASS tagJSWrapperClass('samp') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('samp') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('samp') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('samp') is 'Function'
 PASS tagJSWrapperClass('script') is 'HTMLScriptElement'
 PASS tagJSWrapperPrototypeClass('script') is 'HTMLScriptElementPrototype'
-PASS tagJSWrapperConstructorClass('script') is 'HTMLScriptElementConstructor'
+PASS tagJSWrapperConstructorClass('script') is 'Function'
 PASS tagJSWrapperClass('section') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('section') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('section') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('section') is 'Function'
 PASS tagJSWrapperClass('select') is 'HTMLSelectElement'
 PASS tagJSWrapperPrototypeClass('select') is 'HTMLSelectElementPrototype'
-PASS tagJSWrapperConstructorClass('select') is 'HTMLSelectElementConstructor'
+PASS tagJSWrapperConstructorClass('select') is 'Function'
 PASS tagJSWrapperClass('small') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('small') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('small') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('small') is 'Function'
 PASS tagJSWrapperClass('span') is 'HTMLSpanElement'
 PASS tagJSWrapperPrototypeClass('span') is 'HTMLSpanElementPrototype'
-PASS tagJSWrapperConstructorClass('span') is 'HTMLSpanElementConstructor'
+PASS tagJSWrapperConstructorClass('span') is 'Function'
 PASS tagJSWrapperClass('strike') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('strike') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('strike') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('strike') is 'Function'
 PASS tagJSWrapperClass('strong') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('strong') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('strong') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('strong') is 'Function'
 PASS tagJSWrapperClass('style') is 'HTMLStyleElement'
 PASS tagJSWrapperPrototypeClass('style') is 'HTMLStyleElementPrototype'
-PASS tagJSWrapperConstructorClass('style') is 'HTMLStyleElementConstructor'
+PASS tagJSWrapperConstructorClass('style') is 'Function'
 PASS tagJSWrapperClass('sub') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('sub') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('sub') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('sub') is 'Function'
 PASS tagJSWrapperClass('sup') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('sup') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('sup') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('sup') is 'Function'
 PASS tagJSWrapperClass('table') is 'HTMLTableElement'
 PASS tagJSWrapperPrototypeClass('table') is 'HTMLTableElementPrototype'
-PASS tagJSWrapperConstructorClass('table') is 'HTMLTableElementConstructor'
+PASS tagJSWrapperConstructorClass('table') is 'Function'
 PASS tagJSWrapperClass('tbody') is 'HTMLTableSectionElement'
 PASS tagJSWrapperPrototypeClass('tbody') is 'HTMLTableSectionElementPrototype'
-PASS tagJSWrapperConstructorClass('tbody') is 'HTMLTableSectionElementConstructor'
+PASS tagJSWrapperConstructorClass('tbody') is 'Function'
 PASS tagJSWrapperClass('td') is 'HTMLTableDataCellElement'
 PASS tagJSWrapperPrototypeClass('td') is 'HTMLTableDataCellElementPrototype'
-PASS tagJSWrapperConstructorClass('td') is 'HTMLTableDataCellElementConstructor'
+PASS tagJSWrapperConstructorClass('td') is 'Function'
 PASS tagJSWrapperClass('textarea') is 'HTMLTextAreaElement'
 PASS tagJSWrapperPrototypeClass('textarea') is 'HTMLTextAreaElementPrototype'
-PASS tagJSWrapperConstructorClass('textarea') is 'HTMLTextAreaElementConstructor'
+PASS tagJSWrapperConstructorClass('textarea') is 'Function'
 PASS tagJSWrapperClass('tfoot') is 'HTMLTableSectionElement'
 PASS tagJSWrapperPrototypeClass('tfoot') is 'HTMLTableSectionElementPrototype'
-PASS tagJSWrapperConstructorClass('tfoot') is 'HTMLTableSectionElementConstructor'
+PASS tagJSWrapperConstructorClass('tfoot') is 'Function'
 PASS tagJSWrapperClass('th') is 'HTMLTableHeaderCellElement'
 PASS tagJSWrapperPrototypeClass('th') is 'HTMLTableHeaderCellElementPrototype'
-PASS tagJSWrapperConstructorClass('th') is 'HTMLTableHeaderCellElementConstructor'
+PASS tagJSWrapperConstructorClass('th') is 'Function'
 PASS tagJSWrapperClass('thead') is 'HTMLTableSectionElement'
 PASS tagJSWrapperPrototypeClass('thead') is 'HTMLTableSectionElementPrototype'
-PASS tagJSWrapperConstructorClass('thead') is 'HTMLTableSectionElementConstructor'
+PASS tagJSWrapperConstructorClass('thead') is 'Function'
 PASS tagJSWrapperClass('title') is 'HTMLTitleElement'
 PASS tagJSWrapperPrototypeClass('title') is 'HTMLTitleElementPrototype'
-PASS tagJSWrapperConstructorClass('title') is 'HTMLTitleElementConstructor'
+PASS tagJSWrapperConstructorClass('title') is 'Function'
 PASS tagJSWrapperClass('tr') is 'HTMLTableRowElement'
 PASS tagJSWrapperPrototypeClass('tr') is 'HTMLTableRowElementPrototype'
-PASS tagJSWrapperConstructorClass('tr') is 'HTMLTableRowElementConstructor'
+PASS tagJSWrapperConstructorClass('tr') is 'Function'
 PASS tagJSWrapperClass('tt') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('tt') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('tt') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('tt') is 'Function'
 PASS tagJSWrapperClass('u') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('u') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('u') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('u') is 'Function'
 PASS tagJSWrapperClass('ul') is 'HTMLUListElement'
 PASS tagJSWrapperPrototypeClass('ul') is 'HTMLUListElementPrototype'
-PASS tagJSWrapperConstructorClass('ul') is 'HTMLUListElementConstructor'
+PASS tagJSWrapperConstructorClass('ul') is 'Function'
 PASS tagJSWrapperClass('var') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('var') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('var') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('var') is 'Function'
 PASS tagJSWrapperClass('wbr') is 'HTMLElement'
 PASS tagJSWrapperPrototypeClass('wbr') is 'HTMLElementPrototype'
-PASS tagJSWrapperConstructorClass('wbr') is 'HTMLElementConstructor'
+PASS tagJSWrapperConstructorClass('wbr') is 'Function'
 PASS tagJSWrapperClass('xmp') is 'HTMLPreElement'
 PASS tagJSWrapperPrototypeClass('xmp') is 'HTMLPreElementPrototype'
-PASS tagJSWrapperConstructorClass('xmp') is 'HTMLPreElementConstructor'
+PASS tagJSWrapperConstructorClass('xmp') is 'Function'
 
index ca7c341..8ff887d 100644 (file)
@@ -46,7 +46,7 @@ function testTag(tagName, className, prototypeName, constructorName)
         constructorName = className + "Constructor";
     shouldBe("tagJSWrapperClass('" + tagName + "')", "'" + className + "'");
     shouldBe("tagJSWrapperPrototypeClass('" + tagName + "')", "'" + prototypeName + "'");
-    shouldBe("tagJSWrapperConstructorClass('" + tagName + "')", "'" + constructorName + "'");
+    shouldBe("tagJSWrapperConstructorClass('" + tagName + "')", "'Function'");
 }
 
 function test(expression, className, prototypeName, constructorName)
@@ -57,7 +57,7 @@ function test(expression, className, prototypeName, constructorName)
         constructorName = className + "Constructor";
     shouldBe("jsWrapperClass(" + expression + ")", "'" + className + "'");
     shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + prototypeName + "'");
-    shouldBe("jsWrapperClass(" + expression + ".constructor)", "'" + constructorName + "'");
+    shouldBe("jsWrapperClass(" + expression + ".constructor)", "'Function'");
 }
 
 function runTest()
index 54ab8d2..e0d9b7a 100644 (file)
@@ -6,7 +6,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 PASS Got local stream.
 PASS localStream.getAudioTracks().length is 1
 PASS localStream.getVideoTracks().length is 1
-PASS typeof MediaStream === 'object' is true
+PASS typeof MediaStream === 'function' is true
 PASS checkIdAttribute(localStream.id) is true
 PASS new MediaStream(document) threw exception TypeError: Type error.
 PASS new MediaStream([document]) threw exception TypeError: Invalid Array element type.
@@ -20,7 +20,7 @@ PASS new MediaStream(undefined) threw exception TypeError: Type error.
 PASS Stream constructed
 PASS [object MediaStream] is non-null.
 PASS [object MediaStream] is defined.
-PASS newStream.constructor.toString() is '[object MediaStreamConstructor]'
+PASS newStream.constructor.toString() is "function MediaStream() {\n    [native code]\n}"
 PASS newStream.getAudioTracks().length is nAudio
 PASS newStream.getVideoTracks().length is nVideo
 PASS checkIdAttribute(newStream.id) is true
@@ -29,7 +29,7 @@ PASS checkIdAttribute(newStream.id) is true
 PASS Stream constructed
 PASS [object MediaStream] is non-null.
 PASS [object MediaStream] is defined.
-PASS newStream.constructor.toString() is '[object MediaStreamConstructor]'
+PASS newStream.constructor.toString() is "function MediaStream() {\n    [native code]\n}"
 PASS newStream.getAudioTracks().length is nAudio
 PASS newStream.getVideoTracks().length is nVideo
 PASS checkIdAttribute(newStream.id) is true
@@ -38,7 +38,7 @@ PASS checkIdAttribute(newStream.id) is true
 PASS Stream constructed
 PASS [object MediaStream] is non-null.
 PASS [object MediaStream] is defined.
-PASS newStream.constructor.toString() is '[object MediaStreamConstructor]'
+PASS newStream.constructor.toString() is "function MediaStream() {\n    [native code]\n}"
 PASS newStream.getAudioTracks().length is nAudio
 PASS newStream.getVideoTracks().length is nVideo
 PASS checkIdAttribute(newStream.id) is true
@@ -47,7 +47,7 @@ PASS checkIdAttribute(newStream.id) is true
 PASS Stream constructed
 PASS [object MediaStream] is non-null.
 PASS [object MediaStream] is defined.
-PASS newStream.constructor.toString() is '[object MediaStreamConstructor]'
+PASS newStream.constructor.toString() is "function MediaStream() {\n    [native code]\n}"
 PASS newStream.getAudioTracks().length is nAudio
 PASS newStream.getVideoTracks().length is nVideo
 PASS checkIdAttribute(newStream.id) is true
@@ -56,7 +56,7 @@ PASS checkIdAttribute(newStream.id) is true
 PASS Stream constructed
 PASS [object MediaStream] is non-null.
 PASS [object MediaStream] is defined.
-PASS newStream.constructor.toString() is '[object MediaStreamConstructor]'
+PASS newStream.constructor.toString() is "function MediaStream() {\n    [native code]\n}"
 PASS newStream.getAudioTracks().length is nAudio
 PASS newStream.getVideoTracks().length is nVideo
 PASS checkIdAttribute(newStream.id) is true
@@ -65,7 +65,7 @@ PASS checkIdAttribute(newStream.id) is true
 PASS Stream constructed
 PASS [object MediaStream] is non-null.
 PASS [object MediaStream] is defined.
-PASS newStream.constructor.toString() is '[object MediaStreamConstructor]'
+PASS newStream.constructor.toString() is "function MediaStream() {\n    [native code]\n}"
 PASS newStream.getAudioTracks().length is nAudio
 PASS newStream.getVideoTracks().length is nVideo
 PASS checkIdAttribute(newStream.id) is true
@@ -74,7 +74,7 @@ PASS checkIdAttribute(newStream.id) is true
 PASS Stream constructed
 PASS [object MediaStream] is non-null.
 PASS [object MediaStream] is defined.
-PASS newStream.constructor.toString() is '[object MediaStreamConstructor]'
+PASS newStream.constructor.toString() is "function MediaStream() {\n    [native code]\n}"
 PASS newStream.getAudioTracks().length is nAudio
 PASS newStream.getVideoTracks().length is nVideo
 PASS checkIdAttribute(newStream.id) is true
index 9a285fa..de20bdb 100644 (file)
@@ -47,7 +47,7 @@
                 shouldBe('localStream.getAudioTracks().length', '1');
                 shouldBe('localStream.getVideoTracks().length', '1');
 
-                shouldBeTrue("typeof MediaStream === 'object'");
+                shouldBeTrue("typeof MediaStream === 'function'");
                 shouldBeTrue('checkIdAttribute(localStream.id)');
                 testConstructor(localStream);
             }
@@ -84,7 +84,7 @@
                 testPassed('Stream constructed');
                 shouldBeNonNull(newStream);
                 shouldBeDefined(newStream);
-                shouldBe("newStream.constructor.toString()", "'[object MediaStreamConstructor]'");
+                shouldBeEqualToString("newStream.constructor.toString()", "function MediaStream() {\n    [native code]\n}");
                 shouldBe('newStream.getAudioTracks().length', 'nAudio');
                 shouldBe('newStream.getVideoTracks().length', 'nVideo');
 
index 9bf9c15..1fc67b5 100644 (file)
@@ -4,7 +4,9 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 
 proto = new Number(42): 42
-Object.getPrototypeOf(WorkerLocation): [object Object]
+Object.getPrototypeOf(WorkerLocation): function () {
+    [native code]
+}
 WorkerLocation.__proto__ = proto: 42
 Object.getPrototypeOf(WorkerLocation): 42
 PASS successfullyParsed is true
index 2f64cb6..5908fed 100644 (file)
@@ -1,6 +1,6 @@
 Test WorkerLocation properties.
 
-WorkerLocation: [object WorkerLocationConstructor]
+WorkerLocation: function WorkerLocation() { [native code] }
 typeof location: object
 location: file:<...>/fast/workers/resources/worker-common.js
 location.href: file:<...>/fast/workers/resources/worker-common.js
index 90978fd..97aed5f 100644 (file)
@@ -1,91 +1,91 @@
 CONSOLE MESSAGE: line 151: Blocked a frame with origin "http://localhost:8000" from accessing a frame with origin "http://127.0.0.1:8000". Protocols, domains, and ports must match.
-ALERT: PASS: window.Attr should be '[object AttrConstructor]' and is.
-ALERT: PASS: window.CDATASection should be '[object CDATASectionConstructor]' and is.
-ALERT: PASS: window.CharacterData should be '[object CharacterDataConstructor]' and is.
-ALERT: PASS: window.Comment should be '[object CommentConstructor]' and is.
-ALERT: PASS: window.CSSPrimitiveValue should be '[object CSSPrimitiveValueConstructor]' and is.
-ALERT: PASS: window.CSSRule should be '[object CSSRuleConstructor]' and is.
-ALERT: PASS: window.CSSStyleDeclaration should be '[object CSSStyleDeclarationConstructor]' and is.
-ALERT: PASS: window.CSSValue should be '[object CSSValueConstructor]' and is.
-ALERT: PASS: window.Document should be '[object DocumentConstructor]' and is.
-ALERT: PASS: window.DocumentFragment should be '[object DocumentFragmentConstructor]' and is.
-ALERT: PASS: window.DocumentType should be '[object DocumentTypeConstructor]' and is.
-ALERT: PASS: window.DOMException should be '[object DOMExceptionConstructor]' and is.
-ALERT: PASS: window.DOMImplementation should be '[object DOMImplementationConstructor]' and is.
-ALERT: PASS: window.DOMParser should be '[object DOMParserConstructor]' and is.
-ALERT: PASS: window.Element should be '[object ElementConstructor]' and is.
+ALERT: PASS: window.Attr should be 'function Attr() {    [native code]}' and is.
+ALERT: PASS: window.CDATASection should be 'function CDATASection() {    [native code]}' and is.
+ALERT: PASS: window.CharacterData should be 'function CharacterData() {    [native code]}' and is.
+ALERT: PASS: window.Comment should be 'function Comment() {    [native code]}' and is.
+ALERT: PASS: window.CSSPrimitiveValue should be 'function CSSPrimitiveValue() {    [native code]}' and is.
+ALERT: PASS: window.CSSRule should be 'function CSSRule() {    [native code]}' and is.
+ALERT: PASS: window.CSSStyleDeclaration should be 'function CSSStyleDeclaration() {    [native code]}' and is.
+ALERT: PASS: window.CSSValue should be 'function CSSValue() {    [native code]}' and is.
+ALERT: PASS: window.Document should be 'function Document() {    [native code]}' and is.
+ALERT: PASS: window.DocumentFragment should be 'function DocumentFragment() {    [native code]}' and is.
+ALERT: PASS: window.DocumentType should be 'function DocumentType() {    [native code]}' and is.
+ALERT: PASS: window.DOMException should be 'function DOMException() {    [native code]}' and is.
+ALERT: PASS: window.DOMImplementation should be 'function DOMImplementation() {    [native code]}' and is.
+ALERT: PASS: window.DOMParser should be 'function DOMParser() {    [native code]}' and is.
+ALERT: PASS: window.Element should be 'function Element() {    [native code]}' and is.
 ALERT: PASS: window.EvalError should be 'function EvalError() {    [native code]}' and is.
-ALERT: PASS: window.Event should be '[object EventConstructor]' and is.
-ALERT: PASS: window.HTMLAnchorElement should be '[object HTMLAnchorElementConstructor]' and is.
-ALERT: PASS: window.HTMLAppletElement should be '[object HTMLAppletElementConstructor]' and is.
-ALERT: PASS: window.HTMLAreaElement should be '[object HTMLAreaElementConstructor]' and is.
-ALERT: PASS: window.HTMLBaseElement should be '[object HTMLBaseElementConstructor]' and is.
-ALERT: PASS: window.HTMLBodyElement should be '[object HTMLBodyElementConstructor]' and is.
-ALERT: PASS: window.HTMLBRElement should be '[object HTMLBRElementConstructor]' and is.
-ALERT: PASS: window.HTMLButtonElement should be '[object HTMLButtonElementConstructor]' and is.
-ALERT: PASS: window.HTMLCanvasElement should be '[object HTMLCanvasElementConstructor]' and is.
-ALERT: PASS: window.HTMLDirectoryElement should be '[object HTMLDirectoryElementConstructor]' and is.
-ALERT: PASS: window.HTMLDivElement should be '[object HTMLDivElementConstructor]' and is.
-ALERT: PASS: window.HTMLDListElement should be '[object HTMLDListElementConstructor]' and is.
-ALERT: PASS: window.HTMLDocument should be '[object HTMLDocumentConstructor]' and is.
-ALERT: PASS: window.HTMLElement should be '[object HTMLElementConstructor]' and is.
-ALERT: PASS: window.HTMLFieldSetElement should be '[object HTMLFieldSetElementConstructor]' and is.
-ALERT: PASS: window.HTMLFontElement should be '[object HTMLFontElementConstructor]' and is.
-ALERT: PASS: window.HTMLFormElement should be '[object HTMLFormElementConstructor]' and is.
-ALERT: PASS: window.HTMLFrameElement should be '[object HTMLFrameElementConstructor]' and is.
-ALERT: PASS: window.HTMLFrameSetElement should be '[object HTMLFrameSetElementConstructor]' and is.
-ALERT: PASS: window.HTMLHeadElement should be '[object HTMLHeadElementConstructor]' and is.
-ALERT: PASS: window.HTMLHeadingElement should be '[object HTMLHeadingElementConstructor]' and is.
-ALERT: PASS: window.HTMLHRElement should be '[object HTMLHRElementConstructor]' and is.
-ALERT: PASS: window.HTMLHtmlElement should be '[object HTMLHtmlElementConstructor]' and is.
-ALERT: PASS: window.HTMLIFrameElement should be '[object HTMLIFrameElementConstructor]' and is.
-ALERT: PASS: window.HTMLImageElement should be '[object HTMLImageElementConstructor]' and is.
-ALERT: PASS: window.HTMLInputElement should be '[object HTMLInputElementConstructor]' and is.
+ALERT: PASS: window.Event should be 'function Event() {    [native code]}' and is.
+ALERT: PASS: window.HTMLAnchorElement should be 'function HTMLAnchorElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLAppletElement should be 'function HTMLAppletElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLAreaElement should be 'function HTMLAreaElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLBaseElement should be 'function HTMLBaseElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLBodyElement should be 'function HTMLBodyElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLBRElement should be 'function HTMLBRElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLButtonElement should be 'function HTMLButtonElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLCanvasElement should be 'function HTMLCanvasElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLDirectoryElement should be 'function HTMLDirectoryElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLDivElement should be 'function HTMLDivElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLDListElement should be 'function HTMLDListElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLDocument should be 'function HTMLDocument() {    [native code]}' and is.
+ALERT: PASS: window.HTMLElement should be 'function HTMLElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLFieldSetElement should be 'function HTMLFieldSetElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLFontElement should be 'function HTMLFontElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLFormElement should be 'function HTMLFormElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLFrameElement should be 'function HTMLFrameElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLFrameSetElement should be 'function HTMLFrameSetElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLHeadElement should be 'function HTMLHeadElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLHeadingElement should be 'function HTMLHeadingElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLHRElement should be 'function HTMLHRElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLHtmlElement should be 'function HTMLHtmlElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLIFrameElement should be 'function HTMLIFrameElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLImageElement should be 'function HTMLImageElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLInputElement should be 'function HTMLInputElement() {    [native code]}' and is.
 ALERT: PASS: window.HTMLIsIndexElement should be 'undefined' and is.
-ALERT: PASS: window.HTMLLabelElement should be '[object HTMLLabelElementConstructor]' and is.
-ALERT: PASS: window.HTMLLegendElement should be '[object HTMLLegendElementConstructor]' and is.
-ALERT: PASS: window.HTMLLIElement should be '[object HTMLLIElementConstructor]' and is.
-ALERT: PASS: window.HTMLLinkElement should be '[object HTMLLinkElementConstructor]' and is.
-ALERT: PASS: window.HTMLMapElement should be '[object HTMLMapElementConstructor]' and is.
-ALERT: PASS: window.HTMLMarqueeElement should be '[object HTMLMarqueeElementConstructor]' and is.
-ALERT: PASS: window.HTMLMenuElement should be '[object HTMLMenuElementConstructor]' and is.
-ALERT: PASS: window.HTMLMetaElement should be '[object HTMLMetaElementConstructor]' and is.
-ALERT: PASS: window.HTMLModElement should be '[object HTMLModElementConstructor]' and is.
-ALERT: PASS: window.HTMLOListElement should be '[object HTMLOListElementConstructor]' and is.
-ALERT: PASS: window.HTMLOptGroupElement should be '[object HTMLOptGroupElementConstructor]' and is.
-ALERT: PASS: window.HTMLOptionElement should be '[object HTMLOptionElementConstructor]' and is.
-ALERT: PASS: window.HTMLParagraphElement should be '[object HTMLParagraphElementConstructor]' and is.
-ALERT: PASS: window.HTMLParamElement should be '[object HTMLParamElementConstructor]' and is.
-ALERT: PASS: window.HTMLPreElement should be '[object HTMLPreElementConstructor]' and is.
-ALERT: PASS: window.HTMLQuoteElement should be '[object HTMLQuoteElementConstructor]' and is.
-ALERT: PASS: window.HTMLScriptElement should be '[object HTMLScriptElementConstructor]' and is.
-ALERT: PASS: window.HTMLSelectElement should be '[object HTMLSelectElementConstructor]' and is.
-ALERT: PASS: window.HTMLStyleElement should be '[object HTMLStyleElementConstructor]' and is.
-ALERT: PASS: window.HTMLTableCaptionElement should be '[object HTMLTableCaptionElementConstructor]' and is.
-ALERT: PASS: window.HTMLTableCellElement should be '[object HTMLTableCellElementConstructor]' and is.
-ALERT: PASS: window.HTMLTableColElement should be '[object HTMLTableColElementConstructor]' and is.
-ALERT: PASS: window.HTMLTableElement should be '[object HTMLTableElementConstructor]' and is.
-ALERT: PASS: window.HTMLTableRowElement should be '[object HTMLTableRowElementConstructor]' and is.
-ALERT: PASS: window.HTMLTableSectionElement should be '[object HTMLTableSectionElementConstructor]' and is.
-ALERT: PASS: window.HTMLTextAreaElement should be '[object HTMLTextAreaElementConstructor]' and is.
-ALERT: PASS: window.HTMLTitleElement should be '[object HTMLTitleElementConstructor]' and is.
-ALERT: PASS: window.HTMLUListElement should be '[object HTMLUListElementConstructor]' and is.
-ALERT: PASS: window.MutationEvent should be '[object MutationEventConstructor]' and is.
-ALERT: PASS: window.Node should be '[object NodeConstructor]' and is.
-ALERT: PASS: window.NodeFilter should be '[object NodeFilterConstructor]' and is.
-ALERT: PASS: window.ProcessingInstruction should be '[object ProcessingInstructionConstructor]' and is.
-ALERT: PASS: window.Range should be '[object RangeConstructor]' and is.
+ALERT: PASS: window.HTMLLabelElement should be 'function HTMLLabelElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLLegendElement should be 'function HTMLLegendElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLLIElement should be 'function HTMLLIElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLLinkElement should be 'function HTMLLinkElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLMapElement should be 'function HTMLMapElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLMarqueeElement should be 'function HTMLMarqueeElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLMenuElement should be 'function HTMLMenuElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLMetaElement should be 'function HTMLMetaElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLModElement should be 'function HTMLModElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLOListElement should be 'function HTMLOListElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLOptGroupElement should be 'function HTMLOptGroupElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLOptionElement should be 'function HTMLOptionElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLParagraphElement should be 'function HTMLParagraphElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLParamElement should be 'function HTMLParamElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLPreElement should be 'function HTMLPreElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLQuoteElement should be 'function HTMLQuoteElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLScriptElement should be 'function HTMLScriptElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLSelectElement should be 'function HTMLSelectElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLStyleElement should be 'function HTMLStyleElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLTableCaptionElement should be 'function HTMLTableCaptionElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLTableCellElement should be 'function HTMLTableCellElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLTableColElement should be 'function HTMLTableColElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLTableElement should be 'function HTMLTableElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLTableRowElement should be 'function HTMLTableRowElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLTableSectionElement should be 'function HTMLTableSectionElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLTextAreaElement should be 'function HTMLTextAreaElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLTitleElement should be 'function HTMLTitleElement() {    [native code]}' and is.
+ALERT: PASS: window.HTMLUListElement should be 'function HTMLUListElement() {    [native code]}' and is.
+ALERT: PASS: window.MutationEvent should be 'function MutationEvent() {    [native code]}' and is.
+ALERT: PASS: window.Node should be 'function Node() {    [native code]}' and is.
+ALERT: PASS: window.NodeFilter should be 'function NodeFilter() {    [native code]}' and is.
+ALERT: PASS: window.ProcessingInstruction should be 'function ProcessingInstruction() {    [native code]}' and is.
+ALERT: PASS: window.Range should be 'function Range() {    [native code]}' and is.
 ALERT: PASS: window.RangeError should be 'function RangeError() {    [native code]}' and is.
 ALERT: PASS: window.RangeException should be 'undefined' and is.
 ALERT: PASS: window.ReferenceError should be 'function ReferenceError() {    [native code]}' and is.
 ALERT: PASS: window.SyntaxError should be 'function SyntaxError() {    [native code]}' and is.
-ALERT: PASS: window.Text should be '[object TextConstructor]' and is.
+ALERT: PASS: window.Text should be 'function Text() {    [native code]}' and is.
 ALERT: PASS: window.TypeError should be 'function TypeError() {    [native code]}' and is.
 ALERT: PASS: window.URIError should be 'function URIError() {    [native code]}' and is.
-ALERT: PASS: window.XMLDocument should be '[object XMLDocumentConstructor]' and is.
-ALERT: PASS: window.XMLSerializer should be '[object XMLSerializerConstructor]' and is.
-ALERT: PASS: window.XPathEvaluator should be '[object XPathEvaluatorConstructor]' and is.
-ALERT: PASS: window.XPathResult should be '[object XPathResultConstructor]' and is.
+ALERT: PASS: window.XMLDocument should be 'function XMLDocument() {    [native code]}' and is.
+ALERT: PASS: window.XMLSerializer should be 'function XMLSerializer() {    [native code]}' and is.
+ALERT: PASS: window.XPathEvaluator should be 'function XPathEvaluator() {    [native code]}' and is.
+ALERT: PASS: window.XPathResult should be 'function XPathResult() {    [native code]}' and is.
 ALERT: PASS: window.clientInformation should be '[object Navigator]' and is.
 ALERT: PASS: window.closed should be 'false' and is.
 ALERT: PASS: window.console should be '[object Console]' and is.
index 1548c68..52f70d9 100644 (file)
@@ -3,7 +3,9 @@ Tests the properties of the exceptions related to XMLHttpRequest.
 PASS e.toString() is "Error: NetworkError: DOM Exception 19"
 PASS Object.prototype.toString.call(e) is "[object DOMException]"
 FAIL Object.prototype.toString.call(e.__proto__) is not "[object DOMException]". Was "[object DOMExceptionPrototype]"
-PASS e.constructor.toString() is "[object DOMExceptionConstructor]"
+PASS e.constructor.toString() is "function DOMException() {
+    [native code]
+}"
 PASS e.constructor is window.DOMException
 PASS e.NETWORK_ERR is e.constructor.NETWORK_ERR
 PASS e.NETWORK_ERR is 19
index 2878f03..29f73b3 100644 (file)
@@ -46,7 +46,7 @@
     shouldBeEqualToString("e.toString()", "Error: NetworkError: DOM Exception 19");
     shouldBeEqualToString("Object.prototype.toString.call(e)", "[object DOMException]");
     shouldBeEqualToString("Object.prototype.toString.call(e.__proto__)", "[object DOMException]");
-    shouldBeEqualToString("e.constructor.toString()", "[object DOMExceptionConstructor]");
+    shouldBeEqualToString("e.constructor.toString()", "function DOMException() {\n    [native code]\n}");
     shouldBe("e.constructor", "window.DOMException");
     shouldBe("e.NETWORK_ERR", "e.constructor.NETWORK_ERR");
     shouldBe("e.NETWORK_ERR", "19");
index d4801c5..9747df9 100644 (file)
@@ -1,3 +1,28 @@
+2016-02-10  Chris Dumez  <cdumez@apple.com>
+
+        [Web IDL] interface objects should be Function objects
+        https://bugs.webkit.org/show_bug.cgi?id=154038
+        <rdar://problem/24569358>
+
+        Reviewed by Geoffrey Garen.
+
+        Rebaseline W3C tests now that more checks are passing. Some checks still
+        fail because a lot of our interfaces should inherit EventTarget and
+        currently don't (they duplicate the EventTarget API instead).
+
+        Also, as per WebIDL, window.NodeFilter's proto should be ObjectPrototype
+        instead of FunctionPrototype but this is an exceptional case and our new
+        behavior is consistent with Firefox and Chrome.
+
+        * web-platform-tests/XMLHttpRequest/interfaces-expected.txt:
+        * web-platform-tests/dom/events/Event-constructors-expected.txt:
+        * web-platform-tests/dom/historical-expected.txt:
+        * web-platform-tests/dom/interfaces-expected.txt:
+        * web-platform-tests/fetch/api/headers/headers-idl-expected.txt:
+        * web-platform-tests/fetch/api/request/request-idl-expected.txt:
+        * web-platform-tests/html/dom/interfaces-expected.txt:
+        * web-platform-tests/html/semantics/embedded-content/the-audio-element/audio_constructor-expected.txt:
+
 2016-02-08  Chris Dumez  <cdumez@apple.com>
 
         Attribute getters should not require an explicit 'this' value for Window properties
index b7f4fb9..120af89 100644 (file)
@@ -14,7 +14,7 @@ FAIL XMLHttpRequestEventTarget interface: attribute onerror assert_own_property:
 FAIL XMLHttpRequestEventTarget interface: attribute onload assert_own_property: self does not have own property "XMLHttpRequestEventTarget" expected property "XMLHttpRequestEventTarget" missing
 FAIL XMLHttpRequestEventTarget interface: attribute ontimeout assert_own_property: self does not have own property "XMLHttpRequestEventTarget" expected property "XMLHttpRequestEventTarget" missing
 FAIL XMLHttpRequestEventTarget interface: attribute onloadend assert_own_property: self does not have own property "XMLHttpRequestEventTarget" expected property "XMLHttpRequestEventTarget" missing
-FAIL XMLHttpRequestUpload interface: existence and properties of interface object assert_equals: class string of XMLHttpRequestUpload expected "[object Function]" but got "[object XMLHttpRequestUploadConstructor]"
+FAIL XMLHttpRequestUpload interface: existence and properties of interface object assert_own_property: should inherit from XMLHttpRequestEventTarget, but self has no such property expected property "XMLHttpRequestEventTarget" missing
 PASS XMLHttpRequestUpload interface object length 
 PASS XMLHttpRequestUpload interface object name 
 FAIL XMLHttpRequestUpload interface: existence and properties of interface prototype object assert_own_property: should inherit from XMLHttpRequestEventTarget, but self has no such property expected property "XMLHttpRequestEventTarget" missing
@@ -38,7 +38,7 @@ FAIL EventTarget interface: calling removeEventListener(DOMString,EventListener,
 }" did not throw
 PASS EventTarget interface: (new XMLHttpRequest()).upload must inherit property "dispatchEvent" with the proper type (2) 
 PASS EventTarget interface: calling dispatchEvent(Event) on (new XMLHttpRequest()).upload with too few arguments must throw TypeError 
-FAIL XMLHttpRequest interface: existence and properties of interface object assert_equals: class string of XMLHttpRequest expected "[object Function]" but got "[object XMLHttpRequestConstructor]"
+FAIL XMLHttpRequest interface: existence and properties of interface object assert_own_property: should inherit from XMLHttpRequestEventTarget, but self has no such property expected property "XMLHttpRequestEventTarget" missing
 PASS XMLHttpRequest interface object length 
 PASS XMLHttpRequest interface object name 
 FAIL XMLHttpRequest interface: existence and properties of interface prototype object assert_own_property: should inherit from XMLHttpRequestEventTarget, but self has no such property expected property "XMLHttpRequestEventTarget" missing
@@ -123,7 +123,7 @@ FAIL EventTarget interface: calling removeEventListener(DOMString,EventListener,
 }" did not throw
 PASS EventTarget interface: new XMLHttpRequest() must inherit property "dispatchEvent" with the proper type (2) 
 PASS EventTarget interface: calling dispatchEvent(Event) on new XMLHttpRequest() with too few arguments must throw TypeError 
-FAIL FormData interface: existence and properties of interface object assert_equals: class string of FormData expected "[object Function]" but got "[object FormDataConstructor]"
+PASS FormData interface: existence and properties of interface object 
 PASS FormData interface object length 
 PASS FormData interface object name 
 PASS FormData interface: existence and properties of interface prototype object 
@@ -180,7 +180,7 @@ FAIL FormData interface: new FormData(form) must inherit property "set" with the
 FAIL FormData interface: calling set(USVString,Blob,USVString) on new FormData(form) with too few arguments must throw TypeError assert_inherits: property "set" not found in prototype chain
 FAIL FormData interface: new FormData(form) must inherit property "set" with the proper type (7) assert_inherits: property "set" not found in prototype chain
 FAIL FormData interface: calling set(USVString,USVString) on new FormData(form) with too few arguments must throw TypeError assert_inherits: property "set" not found in prototype chain
-FAIL ProgressEvent interface: existence and properties of interface object assert_equals: class string of ProgressEvent expected "[object Function]" but got "[object ProgressEventConstructor]"
+PASS ProgressEvent interface: existence and properties of interface object 
 PASS ProgressEvent interface object length 
 PASS ProgressEvent interface object name 
 PASS ProgressEvent interface: existence and properties of interface prototype object 
index 3ab9c76..a4932e3 100644 (file)
@@ -3,7 +3,7 @@ PASS Event constructors
 PASS Event constructors 1 
 FAIL Event constructors 2 assert_equals: expected (boolean) false but got (undefined) undefined
 FAIL Event constructors 3 assert_equals: expected (boolean) false but got (undefined) undefined
-FAIL Event constructors 4 Event is not a function. (In 'Event("test")', 'Event' is an instance of EventConstructor)
+FAIL Event constructors 4 Constructor requires 'new' operator
 PASS Event constructors 5 
 PASS Event constructors 6 
 PASS Event constructors 7 
index c6ec80c..f542187 100644 (file)
@@ -1,5 +1,7 @@
 
-FAIL Historical DOM features must be removed: CDATASection assert_equals: expected (undefined) undefined but got (object) object "[object CDATASectionConstructor]"
+FAIL Historical DOM features must be removed: CDATASection assert_equals: expected (undefined) undefined but got (function) function "function CDATASection() {
+    [native code]
+}"
 PASS Historical DOM features must be removed: DOMConfiguration 
 PASS Historical DOM features must be removed: DOMError 
 PASS Historical DOM features must be removed: DOMErrorHandler 
@@ -7,7 +9,9 @@ PASS Historical DOM features must be removed: DOMImplementationList
 PASS Historical DOM features must be removed: DOMImplementationSource 
 PASS Historical DOM features must be removed: DOMLocator 
 PASS Historical DOM features must be removed: DOMObject 
-FAIL Historical DOM features must be removed: DOMSettableTokenList assert_equals: expected (undefined) undefined but got (object) object "[object DOMTokenListConstructor]"
+FAIL Historical DOM features must be removed: DOMSettableTokenList assert_equals: expected (undefined) undefined but got (function) function "function DOMTokenList() {
+    [native code]
+}"
 PASS Historical DOM features must be removed: DOMUserData 
 PASS Historical DOM features must be removed: Entity 
 PASS Historical DOM features must be removed: EntityReference 
index c3cc7e6..9d5449d 100644 (file)
@@ -2,7 +2,7 @@ CONSOLE MESSAGE: line 198: callback not yet supported
 DOM IDL tests
 
 
-FAIL Event interface: existence and properties of interface object assert_equals: class string of Event expected "[object Function]" but got "[object EventConstructor]"
+PASS Event interface: existence and properties of interface object 
 PASS Event interface object length 
 PASS Event interface object name 
 PASS Event interface: existence and properties of interface prototype object 
@@ -71,7 +71,7 @@ PASS Event interface: new Event("foo") must inherit property "initEvent" with th
 FAIL Event interface: calling initEvent(DOMString,boolean,boolean) on new Event("foo") with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "function () {
     [native code]
 }" did not throw
-FAIL CustomEvent interface: existence and properties of interface object assert_equals: class string of CustomEvent expected "[object Function]" but got "[object CustomEventConstructor]"
+PASS CustomEvent interface: existence and properties of interface object 
 PASS CustomEvent interface object length 
 PASS CustomEvent interface object name 
 PASS CustomEvent interface: existence and properties of interface prototype object 
@@ -105,7 +105,7 @@ PASS Event interface: new CustomEvent("foo") must inherit property "initEvent" w
 FAIL Event interface: calling initEvent(DOMString,boolean,boolean) on new CustomEvent("foo") with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "function () {
     [native code]
 }" did not throw
-FAIL EventTarget interface: existence and properties of interface object assert_equals: class string of EventTarget expected "[object Function]" but got "[object EventTargetConstructor]"
+PASS EventTarget interface: existence and properties of interface object 
 PASS EventTarget interface object length 
 PASS EventTarget interface object name 
 PASS EventTarget interface: existence and properties of interface prototype object 
@@ -117,7 +117,7 @@ PASS EventListener interface: existence and properties of interface object
 PASS EventListener interface: existence and properties of interface prototype object 
 PASS EventListener interface: existence and properties of interface prototype object's "constructor" property 
 PASS EventListener interface: operation handleEvent(Event) 
-FAIL NodeList interface: existence and properties of interface object assert_equals: class string of NodeList expected "[object Function]" but got "[object NodeListConstructor]"
+PASS NodeList interface: existence and properties of interface object 
 PASS NodeList interface object length 
 PASS NodeList interface object name 
 PASS NodeList interface: existence and properties of interface prototype object 
@@ -129,7 +129,7 @@ PASS Stringification of document.querySelectorAll("script")
 PASS NodeList interface: document.querySelectorAll("script") must inherit property "item" with the proper type (0) 
 PASS NodeList interface: calling item(unsigned long) on document.querySelectorAll("script") with too few arguments must throw TypeError 
 FAIL NodeList interface: document.querySelectorAll("script") must inherit property "length" with the proper type (1) assert_inherits: property "length" found on object expected in prototype chain
-FAIL HTMLCollection interface: existence and properties of interface object assert_equals: class string of HTMLCollection expected "[object Function]" but got "[object HTMLCollectionConstructor]"
+PASS HTMLCollection interface: existence and properties of interface object 
 PASS HTMLCollection interface object length 
 PASS HTMLCollection interface object name 
 PASS HTMLCollection interface: existence and properties of interface prototype object 
@@ -148,7 +148,7 @@ PASS HTMLCollection interface: document.body.children must inherit property "nam
 FAIL HTMLCollection interface: calling namedItem(DOMString) on document.body.children with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "function () {
     [native code]
 }" did not throw
-FAIL MutationObserver interface: existence and properties of interface object assert_equals: class string of MutationObserver expected "[object Function]" but got "[object MutationObserverConstructor]"
+PASS MutationObserver interface: existence and properties of interface object 
 PASS MutationObserver interface object length 
 PASS MutationObserver interface object name 
 PASS MutationObserver interface: existence and properties of interface prototype object 
@@ -156,7 +156,7 @@ PASS MutationObserver interface: existence and properties of interface prototype
 PASS MutationObserver interface: operation observe(Node,MutationObserverInit) 
 PASS MutationObserver interface: operation disconnect() 
 PASS MutationObserver interface: operation takeRecords() 
-FAIL MutationRecord interface: existence and properties of interface object assert_equals: class string of MutationRecord expected "[object Function]" but got "[object MutationRecordConstructor]"
+PASS MutationRecord interface: existence and properties of interface object 
 PASS MutationRecord interface object length 
 PASS MutationRecord interface object name 
 PASS MutationRecord interface: existence and properties of interface prototype object 
@@ -170,7 +170,11 @@ 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: class string of Node expected "[object Function]" but got "[object NodeConstructor]"
+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 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]"
@@ -237,7 +241,7 @@ PASS Node interface: operation insertBefore(Node,Node)
 PASS Node interface: operation appendChild(Node) 
 PASS Node interface: operation replaceChild(Node,Node) 
 PASS Node interface: operation removeChild(Node) 
-FAIL Document interface: existence and properties of interface object assert_equals: class string of Document expected "[object Function]" but got "[object DocumentConstructor]"
+PASS Document interface: existence and properties of interface object 
 PASS Document interface object length 
 PASS Document interface object name 
 PASS Document interface: existence and properties of interface prototype object 
@@ -281,7 +285,7 @@ FAIL Document interface: operation query(DOMString) assert_own_property: interfa
 FAIL Document interface: operation queryAll(DOMString) assert_own_property: interface prototype object missing non-static operation expected property "queryAll" missing
 PASS Document interface: operation querySelector(DOMString) 
 PASS Document interface: operation querySelectorAll(DOMString) 
-FAIL XMLDocument interface: existence and properties of interface object assert_equals: class string of XMLDocument expected "[object Function]" but got "[object XMLDocumentConstructor]"
+PASS XMLDocument interface: existence and properties of interface object 
 PASS XMLDocument interface object length 
 PASS XMLDocument interface object name 
 PASS XMLDocument interface: existence and properties of interface prototype object 
@@ -454,7 +458,7 @@ FAIL EventTarget interface: calling removeEventListener(DOMString,EventListener,
 }" did not throw
 PASS EventTarget interface: xmlDoc must inherit property "dispatchEvent" with the proper type (2) 
 PASS EventTarget interface: calling dispatchEvent(Event) on xmlDoc with too few arguments must throw TypeError 
-FAIL DOMImplementation interface: existence and properties of interface object assert_equals: class string of DOMImplementation expected "[object Function]" but got "[object DOMImplementationConstructor]"
+PASS DOMImplementation interface: existence and properties of interface object 
 PASS DOMImplementation interface object length 
 PASS DOMImplementation interface object name 
 PASS DOMImplementation interface: existence and properties of interface prototype object 
@@ -476,7 +480,7 @@ FAIL DOMImplementation interface: calling createDocument(DOMString,DOMString,Doc
 PASS DOMImplementation interface: document.implementation must inherit property "createHTMLDocument" with the proper type (2) 
 PASS DOMImplementation interface: calling createHTMLDocument(DOMString) on document.implementation with too few arguments must throw TypeError 
 PASS DOMImplementation interface: document.implementation must inherit property "hasFeature" with the proper type (3) 
-FAIL DocumentFragment interface: existence and properties of interface object assert_equals: class string of DocumentFragment expected "[object Function]" but got "[object DocumentFragmentConstructor]"
+PASS DocumentFragment interface: existence and properties of interface object 
 PASS DocumentFragment interface object length 
 PASS DocumentFragment interface object name 
 PASS DocumentFragment interface: existence and properties of interface prototype object 
@@ -593,7 +597,7 @@ FAIL EventTarget interface: calling removeEventListener(DOMString,EventListener,
 }" did not throw
 PASS EventTarget interface: document.createDocumentFragment() must inherit property "dispatchEvent" with the proper type (2) 
 PASS EventTarget interface: calling dispatchEvent(Event) on document.createDocumentFragment() with too few arguments must throw TypeError 
-FAIL DocumentType interface: existence and properties of interface object assert_equals: class string of DocumentType expected "[object Function]" but got "[object DocumentTypeConstructor]"
+PASS DocumentType interface: existence and properties of interface object 
 PASS DocumentType interface object length 
 PASS DocumentType interface object name 
 PASS DocumentType interface: existence and properties of interface prototype object 
@@ -696,7 +700,7 @@ FAIL EventTarget interface: calling removeEventListener(DOMString,EventListener,
 }" did not throw
 PASS EventTarget interface: document.doctype must inherit property "dispatchEvent" with the proper type (2) 
 PASS EventTarget interface: calling dispatchEvent(Event) on document.doctype with too few arguments must throw TypeError 
-FAIL Element interface: existence and properties of interface object assert_equals: class string of Element expected "[object Function]" but got "[object ElementConstructor]"
+PASS Element interface: existence and properties of interface object 
 PASS Element interface object length 
 PASS Element interface object name 
 PASS Element interface: existence and properties of interface prototype object 
@@ -923,7 +927,7 @@ FAIL EventTarget interface: calling removeEventListener(DOMString,EventListener,
 }" did not throw
 PASS EventTarget interface: element must inherit property "dispatchEvent" with the proper type (2) 
 PASS EventTarget interface: calling dispatchEvent(Event) on element with too few arguments must throw TypeError 
-FAIL NamedNodeMap interface: existence and properties of interface object assert_equals: class string of NamedNodeMap expected "[object Function]" but got "[object NamedNodeMapConstructor]"
+PASS NamedNodeMap interface: existence and properties of interface object 
 PASS NamedNodeMap interface object length 
 PASS NamedNodeMap interface object name 
 PASS NamedNodeMap interface: existence and properties of interface prototype object 
@@ -936,7 +940,11 @@ FAIL NamedNodeMap interface: operation setNamedItem(Attr) assert_equals: propert
 FAIL NamedNodeMap interface: operation setNamedItemNS(Attr) assert_equals: property has wrong .length expected 1 but got 0
 FAIL NamedNodeMap interface: operation removeNamedItem(DOMString) assert_equals: property has wrong .length expected 1 but got 0
 FAIL NamedNodeMap interface: operation removeNamedItemNS(DOMString,DOMString) assert_equals: property has wrong .length expected 2 but got 0
-FAIL Attr interface: existence and properties of interface object assert_equals: class string of Attr expected "[object Function]" but got "[object AttrConstructor]"
+FAIL Attr interface: existence and properties of interface object assert_equals: prototype of self's property "Attr" is not Function.prototype expected function "function () {
+    [native code]
+}" but got function "function Node() {
+    [native code]
+}"
 PASS Attr interface object length 
 PASS Attr interface object name 
 FAIL Attr interface: existence and properties of interface prototype object assert_equals: prototype of Attr.prototype is not Object.prototype expected object "[object Object]" but got object "[object NodePrototype]"
@@ -961,7 +969,7 @@ PASS Attr interface: document.querySelector("[id]").attributes[0] must inherit p
 PASS Attr interface: document.querySelector("[id]").attributes[0] must inherit property "textContent" with the proper type (6) 
 PASS Attr interface: document.querySelector("[id]").attributes[0] must inherit property "ownerElement" with the proper type (7) 
 PASS Attr interface: document.querySelector("[id]").attributes[0] must inherit property "specified" with the proper type (8) 
-FAIL CharacterData interface: existence and properties of interface object assert_equals: class string of CharacterData expected "[object Function]" but got "[object CharacterDataConstructor]"
+PASS CharacterData interface: existence and properties of interface object 
 PASS CharacterData interface object length 
 PASS CharacterData interface object name 
 PASS CharacterData interface: existence and properties of interface prototype object 
@@ -979,7 +987,7 @@ PASS CharacterData interface: operation before([object Object],[object Object])
 PASS CharacterData interface: operation after([object Object],[object Object]) 
 PASS CharacterData interface: operation replaceWith([object Object],[object Object]) 
 PASS CharacterData interface: operation remove() 
-FAIL Text interface: existence and properties of interface object assert_equals: class string of Text expected "[object Function]" but got "[object TextConstructor]"
+PASS Text interface: existence and properties of interface object 
 PASS Text interface object length 
 PASS Text interface object name 
 PASS Text interface: existence and properties of interface prototype object 
@@ -1091,7 +1099,7 @@ FAIL EventTarget interface: calling removeEventListener(DOMString,EventListener,
 }" did not throw
 PASS EventTarget interface: document.createTextNode("abc") must inherit property "dispatchEvent" with the proper type (2) 
 PASS EventTarget interface: calling dispatchEvent(Event) on document.createTextNode("abc") with too few arguments must throw TypeError 
-FAIL ProcessingInstruction interface: existence and properties of interface object assert_equals: class string of ProcessingInstruction expected "[object Function]" but got "[object ProcessingInstructionConstructor]"
+PASS ProcessingInstruction interface: existence and properties of interface object 
 PASS ProcessingInstruction interface object length 
 PASS ProcessingInstruction interface object name 
 PASS ProcessingInstruction interface: existence and properties of interface prototype object 
@@ -1200,7 +1208,7 @@ FAIL EventTarget interface: calling removeEventListener(DOMString,EventListener,
 }" did not throw
 PASS EventTarget interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "dispatchEvent" with the proper type (2) 
 PASS EventTarget interface: calling dispatchEvent(Event) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError 
-FAIL Comment interface: existence and properties of interface object assert_equals: class string of Comment expected "[object Function]" but got "[object CommentConstructor]"
+PASS Comment interface: existence and properties of interface object 
 PASS Comment interface object length 
 PASS Comment interface object name 
 PASS Comment interface: existence and properties of interface prototype object 
@@ -1307,7 +1315,7 @@ FAIL EventTarget interface: calling removeEventListener(DOMString,EventListener,
 }" did not throw
 PASS EventTarget interface: document.createComment("abc") must inherit property "dispatchEvent" with the proper type (2) 
 PASS EventTarget interface: calling dispatchEvent(Event) on document.createComment("abc") with too few arguments must throw TypeError 
-FAIL Range interface: existence and properties of interface object assert_equals: class string of Range expected "[object Function]" but got "[object RangeConstructor]"
+PASS Range interface: existence and properties of interface object 
 PASS Range interface object length 
 PASS Range interface object name 
 PASS Range interface: existence and properties of interface prototype object 
@@ -1457,7 +1465,7 @@ FAIL Range interface: calling comparePoint(Node,unsigned long) on detachedRange
 }" threw object "Error: WrongDocumentError: DOM Exception 4" ("WrongDocumentError") expected object "TypeError" ("TypeError")
 PASS Range interface: detachedRange must inherit property "intersectsNode" with the proper type (29) 
 PASS Range interface: calling intersectsNode(Node) on detachedRange with too few arguments must throw TypeError 
-FAIL NodeIterator interface: existence and properties of interface object assert_equals: class string of NodeIterator expected "[object Function]" but got "[object NodeIteratorConstructor]"
+PASS NodeIterator interface: existence and properties of interface object 
 PASS NodeIterator interface object length 
 PASS NodeIterator interface object name 
 PASS NodeIterator interface: existence and properties of interface prototype object 
@@ -1480,7 +1488,7 @@ PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilt
 PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "nextNode" with the proper type (5) 
 PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "previousNode" with the proper type (6) 
 PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "detach" with the proper type (7) 
-FAIL TreeWalker interface: existence and properties of interface object assert_equals: class string of TreeWalker expected "[object Function]" but got "[object TreeWalkerConstructor]"
+PASS TreeWalker interface: existence and properties of interface object 
 PASS TreeWalker interface object length 
 PASS TreeWalker interface object name 
 PASS TreeWalker interface: existence and properties of interface prototype object 
@@ -1509,7 +1517,9 @@ PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.S
 PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "nextSibling" with the proper type (8) 
 PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "previousNode" with the proper type (9) 
 PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "nextNode" with the proper type (10) 
-PASS NodeFilter interface: existence and properties of interface object 
+FAIL NodeFilter interface: existence and properties of interface object assert_equals: prototype of self's property "NodeFilter" is not Object.prototype expected (object) object "[object Object]" but got (function) function "function () {
+    [native code]
+}"
 PASS NodeFilter interface object name 
 PASS NodeFilter interface: existence and properties of interface prototype object 
 PASS NodeFilter interface: existence and properties of interface prototype object's "constructor" property 
@@ -1546,7 +1556,7 @@ PASS NodeFilter interface: constant SHOW_DOCUMENT_FRAGMENT on interface prototyp
 PASS NodeFilter interface: constant SHOW_NOTATION on interface object 
 PASS NodeFilter interface: constant SHOW_NOTATION on interface prototype object 
 PASS NodeFilter interface: operation acceptNode(Node) 
-FAIL DOMTokenList interface: existence and properties of interface object assert_equals: class string of DOMTokenList expected "[object Function]" but got "[object DOMTokenListConstructor]"
+PASS DOMTokenList interface: existence and properties of interface object 
 PASS DOMTokenList interface object length 
 PASS DOMTokenList interface object name 
 PASS DOMTokenList interface: existence and properties of interface prototype object 
index 552b5ee..ea9ff10 100644 (file)
@@ -1,5 +1,5 @@
 
-FAIL Headers interface: existence and properties of interface object assert_equals: class string of Headers expected "[object Function]" but got "[object HeadersConstructor]"
+PASS Headers interface: existence and properties of interface object 
 PASS Headers interface object length 
 PASS Headers interface object name 
 PASS Headers interface: existence and properties of interface prototype object 
index 937625e..baec249 100644 (file)
@@ -1,5 +1,5 @@
 
-FAIL Request interface: existence and properties of interface object assert_equals: class string of Request expected "[object Function]" but got "[object RequestConstructor]"
+PASS Request interface: existence and properties of interface object 
 PASS Request interface object length 
 PASS Request interface object name 
 PASS Request interface: existence and properties of interface prototype object 
index 06a55be..e5d581e 100644 (file)
@@ -751,7 +751,11 @@ PASS EventTarget interface: document.implementation.createDocument(null, "", nul
 PASS EventTarget interface: calling dispatchEvent(Event) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError 
 FAIL MouseEvent interface: attribute region assert_true: The prototype object must have a property "region" expected true got false
 FAIL Touch interface: attribute region assert_own_property: self does not have own property "Touch" expected property "Touch" missing
-FAIL HTMLAllCollection interface: existence and properties of interface object assert_equals: class string of HTMLAllCollection expected "[object Function]" but got "[object HTMLAllCollectionConstructor]"
+FAIL HTMLAllCollection interface: existence and properties of interface object assert_equals: prototype of HTMLAllCollection is not HTMLCollection expected function "function HTMLCollection() {
+    [native code]
+}" but got function "function () {
+    [native code]
+}"
 PASS HTMLAllCollection interface object length 
 PASS HTMLAllCollection interface object name 
 FAIL HTMLAllCollection interface: existence and properties of interface prototype object assert_equals: prototype of HTMLAllCollection.prototype is not HTMLCollection.prototype expected object "[object HTMLCollectionPrototype]" but got object "[object Object]"
@@ -772,7 +776,7 @@ FAIL HTMLCollection interface: document.all must inherit property "item" with th
 FAIL HTMLCollection interface: calling item(unsigned long) on document.all with too few arguments must throw TypeError assert_equals: wrong typeof object expected "function" but got "undefined"
 FAIL HTMLCollection interface: document.all must inherit property "namedItem" with the proper type (2) assert_equals: wrong typeof object expected "function" but got "undefined"
 FAIL HTMLCollection interface: calling namedItem(DOMString) on document.all with too few arguments must throw TypeError assert_equals: wrong typeof object expected "function" but got "undefined"
-FAIL HTMLFormControlsCollection interface: existence and properties of interface object assert_equals: class string of HTMLFormControlsCollection expected "[object Function]" but got "[object HTMLFormControlsCollectionConstructor]"
+PASS HTMLFormControlsCollection interface: existence and properties of interface object 
 PASS HTMLFormControlsCollection interface object length 
 PASS HTMLFormControlsCollection interface object name 
 PASS HTMLFormControlsCollection interface: existence and properties of interface prototype object 
@@ -787,13 +791,13 @@ FAIL HTMLCollection interface: document.createElement("form").elements must inhe
 FAIL HTMLCollection interface: calling item(unsigned long) on document.createElement("form").elements with too few arguments must throw TypeError assert_equals: wrong typeof object expected "function" but got "object"
 FAIL HTMLCollection interface: document.createElement("form").elements must inherit property "namedItem" with the proper type (2) assert_equals: wrong typeof object expected "function" but got "object"
 FAIL HTMLCollection interface: calling namedItem(DOMString) on document.createElement("form").elements with too few arguments must throw TypeError assert_equals: wrong typeof object expected "function" but got "object"
-FAIL RadioNodeList interface: existence and properties of interface object assert_equals: class string of RadioNodeList expected "[object Function]" but got "[object RadioNodeListConstructor]"
+PASS RadioNodeList interface: existence and properties of interface object 
 PASS RadioNodeList interface object length 
 PASS RadioNodeList interface object name 
 PASS RadioNodeList interface: existence and properties of interface prototype object 
 PASS RadioNodeList interface: existence and properties of interface prototype object's "constructor" property 
 PASS RadioNodeList interface: attribute value 
-FAIL HTMLOptionsCollection interface: existence and properties of interface object assert_equals: class string of HTMLOptionsCollection expected "[object Function]" but got "[object HTMLOptionsCollectionConstructor]"
+PASS HTMLOptionsCollection interface: existence and properties of interface object 
 PASS HTMLOptionsCollection interface object length 
 PASS HTMLOptionsCollection interface object name 
 PASS HTMLOptionsCollection interface: existence and properties of interface prototype object 
@@ -838,7 +842,7 @@ FAIL PropertyNodeList interface object name assert_own_property: self does not h
 FAIL PropertyNodeList interface: existence and properties of interface prototype object assert_own_property: self does not have own property "PropertyNodeList" expected property "PropertyNodeList" missing
 FAIL PropertyNodeList interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "PropertyNodeList" expected property "PropertyNodeList" missing
 FAIL PropertyNodeList interface: operation getValues() assert_own_property: self does not have own property "PropertyNodeList" expected property "PropertyNodeList" missing
-FAIL DOMStringMap interface: existence and properties of interface object assert_equals: class string of DOMStringMap expected "[object Function]" but got "[object DOMStringMapConstructor]"
+PASS DOMStringMap interface: existence and properties of interface object 
 PASS DOMStringMap interface object length 
 PASS DOMStringMap interface object name 
 PASS DOMStringMap interface: existence and properties of interface prototype object 
@@ -852,7 +856,7 @@ FAIL DOMElementMap interface: existence and properties of interface prototype ob
 FAIL DOMElementMap interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "DOMElementMap" expected property "DOMElementMap" missing
 FAIL DOMElementMap must be primary interface of document.cssElementMap assert_equals: wrong typeof object expected "object" but got "undefined"
 FAIL Stringification of document.cssElementMap assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL HTMLElement interface: existence and properties of interface object assert_equals: class string of HTMLElement expected "[object Function]" but got "[object HTMLElementConstructor]"
+PASS HTMLElement interface: existence and properties of interface object 
 PASS HTMLElement interface object length 
 PASS HTMLElement interface object name 
 PASS HTMLElement interface: existence and properties of interface prototype object 
@@ -1300,7 +1304,7 @@ PASS HTMLElement must be primary interface of document.createElement("summary")
 PASS Stringification of document.createElement("summary") 
 PASS HTMLElement must be primary interface of document.createElement("acronym") 
 PASS Stringification of document.createElement("acronym") 
-FAIL HTMLUnknownElement interface: existence and properties of interface object assert_equals: class string of HTMLUnknownElement expected "[object Function]" but got "[object HTMLUnknownElementConstructor]"
+PASS HTMLUnknownElement interface: existence and properties of interface object 
 PASS HTMLUnknownElement interface object length 
 PASS HTMLUnknownElement interface object name 
 PASS HTMLUnknownElement interface: existence and properties of interface prototype object 
@@ -1327,7 +1331,7 @@ PASS HTMLUnknownElement must be primary interface of document.createElement("dir
 PASS Stringification of document.createElement("directory") 
 PASS HTMLUnknownElement must be primary interface of document.createElement("mod") 
 PASS Stringification of document.createElement("mod") 
-FAIL HTMLHtmlElement interface: existence and properties of interface object assert_equals: class string of HTMLHtmlElement expected "[object Function]" but got "[object HTMLHtmlElementConstructor]"
+PASS HTMLHtmlElement interface: existence and properties of interface object 
 PASS HTMLHtmlElement interface object length 
 PASS HTMLHtmlElement interface object name 
 PASS HTMLHtmlElement interface: existence and properties of interface prototype object 
@@ -1336,14 +1340,14 @@ PASS HTMLHtmlElement interface: attribute version
 PASS HTMLHtmlElement must be primary interface of document.createElement("html") 
 PASS Stringification of document.createElement("html") 
 PASS HTMLHtmlElement interface: document.createElement("html") must inherit property "version" with the proper type (0) 
-FAIL HTMLHeadElement interface: existence and properties of interface object assert_equals: class string of HTMLHeadElement expected "[object Function]" but got "[object HTMLHeadElementConstructor]"
+PASS HTMLHeadElement interface: existence and properties of interface object 
 PASS HTMLHeadElement interface object length 
 PASS HTMLHeadElement interface object name 
 PASS HTMLHeadElement interface: existence and properties of interface prototype object 
 PASS HTMLHeadElement interface: existence and properties of interface prototype object's "constructor" property 
 PASS HTMLHeadElement must be primary interface of document.createElement("head") 
 PASS Stringification of document.createElement("head") 
-FAIL HTMLTitleElement interface: existence and properties of interface object assert_equals: class string of HTMLTitleElement expected "[object Function]" but got "[object HTMLTitleElementConstructor]"
+PASS HTMLTitleElement interface: existence and properties of interface object 
 PASS HTMLTitleElement interface object length 
 PASS HTMLTitleElement interface object name 
 PASS HTMLTitleElement interface: existence and properties of interface prototype object 
@@ -1352,7 +1356,7 @@ PASS HTMLTitleElement interface: attribute text
 PASS HTMLTitleElement must be primary interface of document.createElement("title") 
 PASS Stringification of document.createElement("title") 
 PASS HTMLTitleElement interface: document.createElement("title") must inherit property "text" with the proper type (0) 
-FAIL HTMLBaseElement interface: existence and properties of interface object assert_equals: class string of HTMLBaseElement expected "[object Function]" but got "[object HTMLBaseElementConstructor]"
+PASS HTMLBaseElement interface: existence and properties of interface object 
 PASS HTMLBaseElement interface object length 
 PASS HTMLBaseElement interface object name 
 PASS HTMLBaseElement interface: existence and properties of interface prototype object 
@@ -1363,7 +1367,7 @@ PASS HTMLBaseElement must be primary interface of document.createElement("base")
 PASS Stringification of document.createElement("base") 
 PASS HTMLBaseElement interface: document.createElement("base") must inherit property "href" with the proper type (0) 
 PASS HTMLBaseElement interface: document.createElement("base") must inherit property "target" with the proper type (1) 
-FAIL HTMLLinkElement interface: existence and properties of interface object assert_equals: class string of HTMLLinkElement expected "[object Function]" but got "[object HTMLLinkElementConstructor]"
+PASS HTMLLinkElement interface: existence and properties of interface object 
 PASS HTMLLinkElement interface object length 
 PASS HTMLLinkElement interface object name 
 PASS HTMLLinkElement interface: existence and properties of interface prototype object 
@@ -1393,7 +1397,7 @@ PASS HTMLLinkElement interface: document.createElement("link") must inherit prop
 PASS HTMLLinkElement interface: document.createElement("link") must inherit property "rev" with the proper type (9) 
 PASS HTMLLinkElement interface: document.createElement("link") must inherit property "target" with the proper type (10) 
 PASS HTMLLinkElement interface: document.createElement("link") must inherit property "sheet" with the proper type (11) 
-FAIL HTMLMetaElement interface: existence and properties of interface object assert_equals: class string of HTMLMetaElement expected "[object Function]" but got "[object HTMLMetaElementConstructor]"
+PASS HTMLMetaElement interface: existence and properties of interface object 
 PASS HTMLMetaElement interface object length 
 PASS HTMLMetaElement interface object name 
 PASS HTMLMetaElement interface: existence and properties of interface prototype object 
@@ -1408,7 +1412,7 @@ PASS HTMLMetaElement interface: document.createElement("meta") must inherit prop
 PASS HTMLMetaElement interface: document.createElement("meta") must inherit property "httpEquiv" with the proper type (1) 
 PASS HTMLMetaElement interface: document.createElement("meta") must inherit property "content" with the proper type (2) 
 PASS HTMLMetaElement interface: document.createElement("meta") must inherit property "scheme" with the proper type (3) 
-FAIL HTMLStyleElement interface: existence and properties of interface object assert_equals: class string of HTMLStyleElement expected "[object Function]" but got "[object HTMLStyleElementConstructor]"
+PASS HTMLStyleElement interface: existence and properties of interface object 
 PASS HTMLStyleElement interface object length 
 PASS HTMLStyleElement interface object name 
 PASS HTMLStyleElement interface: existence and properties of interface prototype object 
@@ -1422,7 +1426,7 @@ PASS HTMLStyleElement interface: document.createElement("style") must inherit pr
 PASS HTMLStyleElement interface: document.createElement("style") must inherit property "type" with the proper type (1) 
 FAIL HTMLStyleElement interface: document.createElement("style") must inherit property "scoped" with the proper type (2) assert_inherits: property "scoped" not found in prototype chain
 PASS HTMLStyleElement interface: document.createElement("style") must inherit property "sheet" with the proper type (3) 
-FAIL HTMLBodyElement interface: existence and properties of interface object assert_equals: class string of HTMLBodyElement expected "[object Function]" but got "[object HTMLBodyElementConstructor]"
+PASS HTMLBodyElement interface: existence and properties of interface object 
 PASS HTMLBodyElement interface object length 
 PASS HTMLBodyElement interface object name 
 PASS HTMLBodyElement interface: existence and properties of interface prototype object 
@@ -1467,7 +1471,7 @@ PASS HTMLBodyElement interface: document.createElement("body") must inherit prop
 PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onpopstate" with the proper type (16) 
 PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onstorage" with the proper type (17) 
 PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onunload" with the proper type (18) 
-FAIL HTMLHeadingElement interface: existence and properties of interface object assert_equals: class string of HTMLHeadingElement expected "[object Function]" but got "[object HTMLHeadingElementConstructor]"
+PASS HTMLHeadingElement interface: existence and properties of interface object 
 PASS HTMLHeadingElement interface object length 
 PASS HTMLHeadingElement interface object name 
 PASS HTMLHeadingElement interface: existence and properties of interface prototype object 
@@ -1491,7 +1495,7 @@ PASS HTMLHeadingElement interface: document.createElement("h5") must inherit pro
 PASS HTMLHeadingElement must be primary interface of document.createElement("h6") 
 PASS Stringification of document.createElement("h6") 
 PASS HTMLHeadingElement interface: document.createElement("h6") must inherit property "align" with the proper type (0) 
-FAIL HTMLParagraphElement interface: existence and properties of interface object assert_equals: class string of HTMLParagraphElement expected "[object Function]" but got "[object HTMLParagraphElementConstructor]"
+PASS HTMLParagraphElement interface: existence and properties of interface object 
 PASS HTMLParagraphElement interface object length 
 PASS HTMLParagraphElement interface object name 
 PASS HTMLParagraphElement interface: existence and properties of interface prototype object 
@@ -1500,7 +1504,7 @@ PASS HTMLParagraphElement interface: attribute align
 PASS HTMLParagraphElement must be primary interface of document.createElement("p") 
 PASS Stringification of document.createElement("p") 
 PASS HTMLParagraphElement interface: document.createElement("p") must inherit property "align" with the proper type (0) 
-FAIL HTMLHRElement interface: existence and properties of interface object assert_equals: class string of HTMLHRElement expected "[object Function]" but got "[object HTMLHRElementConstructor]"
+PASS HTMLHRElement interface: existence and properties of interface object 
 PASS HTMLHRElement interface object length 
 PASS HTMLHRElement interface object name 
 PASS HTMLHRElement interface: existence and properties of interface prototype object 
@@ -1517,7 +1521,7 @@ FAIL HTMLHRElement interface: document.createElement("hr") must inherit property
 PASS HTMLHRElement interface: document.createElement("hr") must inherit property "noShade" with the proper type (2) 
 PASS HTMLHRElement interface: document.createElement("hr") must inherit property "size" with the proper type (3) 
 PASS HTMLHRElement interface: document.createElement("hr") must inherit property "width" with the proper type (4) 
-FAIL HTMLPreElement interface: existence and properties of interface object assert_equals: class string of HTMLPreElement expected "[object Function]" but got "[object HTMLPreElementConstructor]"
+PASS HTMLPreElement interface: existence and properties of interface object 
 PASS HTMLPreElement interface object length 
 PASS HTMLPreElement interface object name 
 PASS HTMLPreElement interface: existence and properties of interface prototype object 
@@ -1535,7 +1539,7 @@ FAIL HTMLPreElement interface: document.createElement("plaintext") must inherit
 PASS HTMLPreElement must be primary interface of document.createElement("xmp") 
 PASS Stringification of document.createElement("xmp") 
 PASS HTMLPreElement interface: document.createElement("xmp") must inherit property "width" with the proper type (0) 
-FAIL HTMLQuoteElement interface: existence and properties of interface object assert_equals: class string of HTMLQuoteElement expected "[object Function]" but got "[object HTMLQuoteElementConstructor]"
+PASS HTMLQuoteElement interface: existence and properties of interface object 
 PASS HTMLQuoteElement interface object length 
 PASS HTMLQuoteElement interface object name 
 PASS HTMLQuoteElement interface: existence and properties of interface prototype object 
@@ -1547,7 +1551,7 @@ PASS HTMLQuoteElement interface: document.createElement("blockquote") must inher
 PASS HTMLQuoteElement must be primary interface of document.createElement("q") 
 PASS Stringification of document.createElement("q") 
 PASS HTMLQuoteElement interface: document.createElement("q") must inherit property "cite" with the proper type (0) 
-FAIL HTMLOListElement interface: existence and properties of interface object assert_equals: class string of HTMLOListElement expected "[object Function]" but got "[object HTMLOListElementConstructor]"
+PASS HTMLOListElement interface: existence and properties of interface object 
 PASS HTMLOListElement interface object length 
 PASS HTMLOListElement interface object name 
 PASS HTMLOListElement interface: existence and properties of interface prototype object 
@@ -1556,14 +1560,14 @@ PASS HTMLOListElement interface: attribute reversed
 PASS HTMLOListElement interface: attribute start 
 PASS HTMLOListElement interface: attribute type 
 PASS HTMLOListElement interface: attribute compact 
-FAIL HTMLUListElement interface: existence and properties of interface object assert_equals: class string of HTMLUListElement expected "[object Function]" but got "[object HTMLUListElementConstructor]"
+PASS HTMLUListElement interface: existence and properties of interface object 
 PASS HTMLUListElement interface object length 
 PASS HTMLUListElement interface object name 
 PASS HTMLUListElement interface: existence and properties of interface prototype object 
 PASS HTMLUListElement interface: existence and properties of interface prototype object's "constructor" property 
 PASS HTMLUListElement interface: attribute compact 
 PASS HTMLUListElement interface: attribute type 
-FAIL HTMLLIElement interface: existence and properties of interface object assert_equals: class string of HTMLLIElement expected "[object Function]" but got "[object HTMLLIElementConstructor]"
+PASS HTMLLIElement interface: existence and properties of interface object 
 PASS HTMLLIElement interface object length 
 PASS HTMLLIElement interface object name 
 PASS HTMLLIElement interface: existence and properties of interface prototype object 
@@ -1574,13 +1578,13 @@ PASS HTMLLIElement must be primary interface of document.createElement("li")
 PASS Stringification of document.createElement("li") 
 PASS HTMLLIElement interface: document.createElement("li") must inherit property "value" with the proper type (0) 
 PASS HTMLLIElement interface: document.createElement("li") must inherit property "type" with the proper type (1) 
-FAIL HTMLDListElement interface: existence and properties of interface object assert_equals: class string of HTMLDListElement expected "[object Function]" but got "[object HTMLDListElementConstructor]"
+PASS HTMLDListElement interface: existence and properties of interface object 
 PASS HTMLDListElement interface object length 
 PASS HTMLDListElement interface object name 
 PASS HTMLDListElement interface: existence and properties of interface prototype object 
 PASS HTMLDListElement interface: existence and properties of interface prototype object's "constructor" property 
 PASS HTMLDListElement interface: attribute compact 
-FAIL HTMLDivElement interface: existence and properties of interface object assert_equals: class string of HTMLDivElement expected "[object Function]" but got "[object HTMLDivElementConstructor]"
+PASS HTMLDivElement interface: existence and properties of interface object 
 PASS HTMLDivElement interface object length 
 PASS HTMLDivElement interface object name 
 PASS HTMLDivElement interface: existence and properties of interface prototype object 
@@ -1589,7 +1593,7 @@ PASS HTMLDivElement interface: attribute align
 PASS HTMLDivElement must be primary interface of document.createElement("div") 
 PASS Stringification of document.createElement("div") 
 PASS HTMLDivElement interface: document.createElement("div") must inherit property "align" with the proper type (0) 
-FAIL HTMLAnchorElement interface: existence and properties of interface object assert_equals: class string of HTMLAnchorElement expected "[object Function]" but got "[object HTMLAnchorElementConstructor]"
+PASS HTMLAnchorElement interface: existence and properties of interface object 
 PASS HTMLAnchorElement interface object length 
 PASS HTMLAnchorElement interface object name 
 PASS HTMLAnchorElement interface: existence and properties of interface prototype object 
@@ -1644,7 +1648,7 @@ PASS HTMLAnchorElement interface: document.createElement("a") must inherit prope
 PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "pathname" with the proper type (21) 
 PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "search" with the proper type (22) 
 PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "hash" with the proper type (23) 
-FAIL HTMLDataElement interface: existence and properties of interface object assert_equals: class string of HTMLDataElement expected "[object Function]" but got "[object HTMLDataElementConstructor]"
+PASS HTMLDataElement interface: existence and properties of interface object 
 PASS HTMLDataElement interface object length 
 PASS HTMLDataElement interface object name 
 PASS HTMLDataElement interface: existence and properties of interface prototype object 
@@ -1653,7 +1657,7 @@ PASS HTMLDataElement interface: attribute value
 PASS HTMLDataElement must be primary interface of document.createElement("data") 
 PASS Stringification of document.createElement("data") 
 PASS HTMLDataElement interface: document.createElement("data") must inherit property "value" with the proper type (0) 
-FAIL HTMLTimeElement interface: existence and properties of interface object assert_equals: class string of HTMLTimeElement expected "[object Function]" but got "[object HTMLTimeElementConstructor]"
+PASS HTMLTimeElement interface: existence and properties of interface object 
 PASS HTMLTimeElement interface object length 
 PASS HTMLTimeElement interface object name 
 PASS HTMLTimeElement interface: existence and properties of interface prototype object 
@@ -1662,14 +1666,14 @@ PASS HTMLTimeElement interface: attribute dateTime
 PASS HTMLTimeElement must be primary interface of document.createElement("time") 
 PASS Stringification of document.createElement("time") 
 PASS HTMLTimeElement interface: document.createElement("time") must inherit property "dateTime" with the proper type (0) 
-FAIL HTMLSpanElement interface: existence and properties of interface object assert_equals: class string of HTMLSpanElement expected "[object Function]" but got "[object HTMLSpanElementConstructor]"
+PASS HTMLSpanElement interface: existence and properties of interface object 
 PASS HTMLSpanElement interface object length 
 PASS HTMLSpanElement interface object name 
 PASS HTMLSpanElement interface: existence and properties of interface prototype object 
 PASS HTMLSpanElement interface: existence and properties of interface prototype object's "constructor" property 
 PASS HTMLSpanElement must be primary interface of document.createElement("span") 
 PASS Stringification of document.createElement("span") 
-FAIL HTMLBRElement interface: existence and properties of interface object assert_equals: class string of HTMLBRElement expected "[object Function]" but got "[object HTMLBRElementConstructor]"
+PASS HTMLBRElement interface: existence and properties of interface object 
 PASS HTMLBRElement interface object length 
 PASS HTMLBRElement interface object name 
 PASS HTMLBRElement interface: existence and properties of interface prototype object 
@@ -1678,7 +1682,7 @@ PASS HTMLBRElement interface: attribute clear
 PASS HTMLBRElement must be primary interface of document.createElement("br") 
 PASS Stringification of document.createElement("br") 
 PASS HTMLBRElement interface: document.createElement("br") must inherit property "clear" with the proper type (0) 
-FAIL HTMLModElement interface: existence and properties of interface object assert_equals: class string of HTMLModElement expected "[object Function]" but got "[object HTMLModElementConstructor]"
+PASS HTMLModElement interface: existence and properties of interface object 
 PASS HTMLModElement interface object length 
 PASS HTMLModElement interface object name 
 PASS HTMLModElement interface: existence and properties of interface prototype object 
@@ -1693,14 +1697,14 @@ PASS HTMLModElement must be primary interface of document.createElement("del")
 PASS Stringification of document.createElement("del") 
 PASS HTMLModElement interface: document.createElement("del") must inherit property "cite" with the proper type (0) 
 PASS HTMLModElement interface: document.createElement("del") must inherit property "dateTime" with the proper type (1) 
-FAIL HTMLPictureElement interface: existence and properties of interface object assert_equals: class string of HTMLPictureElement expected "[object Function]" but got "[object HTMLPictureElementConstructor]"
+PASS HTMLPictureElement interface: existence and properties of interface object 
 PASS HTMLPictureElement interface object length 
 PASS HTMLPictureElement interface object name 
 PASS HTMLPictureElement interface: existence and properties of interface prototype object 
 PASS HTMLPictureElement interface: existence and properties of interface prototype object's "constructor" property 
 PASS HTMLPictureElement must be primary interface of document.createElement("picture") 
 PASS Stringification of document.createElement("picture") 
-FAIL HTMLImageElement interface: existence and properties of interface object assert_equals: class string of HTMLImageElement expected "[object Function]" but got "[object HTMLImageElementConstructor]"
+PASS HTMLImageElement interface: existence and properties of interface object 
 PASS HTMLImageElement interface object length 
 PASS HTMLImageElement interface object name 
 PASS HTMLImageElement interface: existence and properties of interface prototype object 
@@ -1769,7 +1773,7 @@ PASS HTMLImageElement interface: new Image() must inherit property "hspace" with
 PASS HTMLImageElement interface: new Image() must inherit property "vspace" with the proper type (17) 
 PASS HTMLImageElement interface: new Image() must inherit property "longDesc" with the proper type (18) 
 PASS HTMLImageElement interface: new Image() must inherit property "border" with the proper type (19) 
-FAIL HTMLIFrameElement interface: existence and properties of interface object assert_equals: class string of HTMLIFrameElement expected "[object Function]" but got "[object HTMLIFrameElementConstructor]"
+PASS HTMLIFrameElement interface: existence and properties of interface object 
 PASS HTMLIFrameElement interface object length 
 PASS HTMLIFrameElement interface object name 
 PASS HTMLIFrameElement interface: existence and properties of interface prototype object 
@@ -1790,7 +1794,7 @@ PASS HTMLIFrameElement interface: attribute frameBorder
 PASS HTMLIFrameElement interface: attribute longDesc 
 PASS HTMLIFrameElement interface: attribute marginHeight 
 PASS HTMLIFrameElement interface: attribute marginWidth 
-FAIL HTMLEmbedElement interface: existence and properties of interface object assert_equals: class string of HTMLEmbedElement expected "[object Function]" but got "[object HTMLEmbedElementConstructor]"
+PASS HTMLEmbedElement interface: existence and properties of interface object 
 PASS HTMLEmbedElement interface object length 
 PASS HTMLEmbedElement interface object name 
 PASS HTMLEmbedElement interface: existence and properties of interface prototype object 
@@ -1811,7 +1815,7 @@ FAIL HTMLEmbedElement interface: document.createElement("embed") must inherit pr
 FAIL HTMLEmbedElement interface: document.createElement("embed") must inherit property "getSVGDocument" with the proper type (4) assert_equals: wrong typeof object expected "function" but got "object"
 FAIL HTMLEmbedElement interface: document.createElement("embed") must inherit property "align" with the proper type (6) assert_equals: wrong typeof object expected "function" but got "object"
 FAIL HTMLEmbedElement interface: document.createElement("embed") must inherit property "name" with the proper type (7) assert_equals: wrong typeof object expected "function" but got "object"
-FAIL HTMLObjectElement interface: existence and properties of interface object assert_equals: class string of HTMLObjectElement expected "[object Function]" but got "[object HTMLObjectElementConstructor]"
+PASS HTMLObjectElement interface: existence and properties of interface object 
 PASS HTMLObjectElement interface object length 
 PASS HTMLObjectElement interface object name 
 PASS HTMLObjectElement interface: existence and properties of interface prototype object 
@@ -1871,7 +1875,7 @@ FAIL HTMLObjectElement interface: document.createElement("object") must inherit
 FAIL HTMLObjectElement interface: document.createElement("object") must inherit property "codeBase" with the proper type (24) assert_equals: wrong typeof object expected "function" but got "object"
 FAIL HTMLObjectElement interface: document.createElement("object") must inherit property "codeType" with the proper type (25) assert_equals: wrong typeof object expected "function" but got "object"
 FAIL HTMLObjectElement interface: document.createElement("object") must inherit property "border" with the proper type (26) assert_equals: wrong typeof object expected "function" but got "object"
-FAIL HTMLParamElement interface: existence and properties of interface object assert_equals: class string of HTMLParamElement expected "[object Function]" but got "[object HTMLParamElementConstructor]"
+PASS HTMLParamElement interface: existence and properties of interface object 
 PASS HTMLParamElement interface object length 
 PASS HTMLParamElement interface object name 
 PASS HTMLParamElement interface: existence and properties of interface prototype object 
@@ -1886,7 +1890,7 @@ PASS HTMLParamElement interface: document.createElement("param") must inherit pr
 PASS HTMLParamElement interface: document.createElement("param") must inherit property "value" with the proper type (1) 
 PASS HTMLParamElement interface: document.createElement("param") must inherit property "type" with the proper type (2) 
 PASS HTMLParamElement interface: document.createElement("param") must inherit property "valueType" with the proper type (3) 
-FAIL HTMLVideoElement interface: existence and properties of interface object assert_equals: class string of HTMLVideoElement expected "[object Function]" but got "[object HTMLVideoElementConstructor]"
+PASS HTMLVideoElement interface: existence and properties of interface object 
 PASS HTMLVideoElement interface object length 
 PASS HTMLVideoElement interface object name 
 PASS HTMLVideoElement interface: existence and properties of interface prototype object 
@@ -1952,7 +1956,7 @@ PASS HTMLMediaElement interface: document.createElement("video") must inherit pr
 PASS HTMLMediaElement interface: document.createElement("video") must inherit property "textTracks" with the proper type (42) 
 PASS HTMLMediaElement interface: document.createElement("video") must inherit property "addTextTrack" with the proper type (43) 
 PASS HTMLMediaElement interface: calling addTextTrack(TextTrackKind,DOMString,DOMString) on document.createElement("video") with too few arguments must throw TypeError 
-FAIL HTMLAudioElement interface: existence and properties of interface object assert_equals: class string of HTMLAudioElement expected "[object Function]" but got "[object HTMLAudioElementConstructor]"
+PASS HTMLAudioElement interface: existence and properties of interface object 
 PASS HTMLAudioElement interface object length 
 PASS HTMLAudioElement interface object name 
 PASS HTMLAudioElement interface: existence and properties of interface prototype object 
@@ -2059,7 +2063,7 @@ PASS HTMLMediaElement interface: new Audio() must inherit property "videoTracks"
 PASS HTMLMediaElement interface: new Audio() must inherit property "textTracks" with the proper type (42) 
 PASS HTMLMediaElement interface: new Audio() must inherit property "addTextTrack" with the proper type (43) 
 PASS HTMLMediaElement interface: calling addTextTrack(TextTrackKind,DOMString,DOMString) on new Audio() with too few arguments must throw TypeError 
-FAIL HTMLSourceElement interface: existence and properties of interface object assert_equals: class string of HTMLSourceElement expected "[object Function]" but got "[object HTMLSourceElementConstructor]"
+PASS HTMLSourceElement interface: existence and properties of interface object 
 PASS HTMLSourceElement interface object length 
 PASS HTMLSourceElement interface object name 
 PASS HTMLSourceElement interface: existence and properties of interface prototype object 
@@ -2076,7 +2080,7 @@ PASS HTMLSourceElement interface: document.createElement("source") must inherit
 FAIL HTMLSourceElement interface: document.createElement("source") must inherit property "srcset" with the proper type (2) assert_inherits: property "srcset" not found in prototype chain
 FAIL HTMLSourceElement interface: document.createElement("source") must inherit property "sizes" with the proper type (3) assert_inherits: property "sizes" not found in prototype chain
 PASS HTMLSourceElement interface: document.createElement("source") must inherit property "media" with the proper type (4) 
-FAIL HTMLTrackElement interface: existence and properties of interface object assert_equals: class string of HTMLTrackElement expected "[object Function]" but got "[object HTMLTrackElementConstructor]"
+PASS HTMLTrackElement interface: existence and properties of interface object 
 PASS HTMLTrackElement interface object length 
 PASS HTMLTrackElement interface object name 
 PASS HTMLTrackElement interface: existence and properties of interface prototype object 
@@ -2109,7 +2113,7 @@ PASS HTMLTrackElement interface: document.createElement("track") must inherit pr
 PASS HTMLTrackElement interface: document.createElement("track") must inherit property "ERROR" with the proper type (8) 
 PASS HTMLTrackElement interface: document.createElement("track") must inherit property "readyState" with the proper type (9) 
 PASS HTMLTrackElement interface: document.createElement("track") must inherit property "track" with the proper type (10) 
-FAIL HTMLMediaElement interface: existence and properties of interface object assert_equals: class string of HTMLMediaElement expected "[object Function]" but got "[object HTMLMediaElementConstructor]"
+PASS HTMLMediaElement interface: existence and properties of interface object 
 PASS HTMLMediaElement interface object length 
 PASS HTMLMediaElement interface object name 
 PASS HTMLMediaElement interface: existence and properties of interface prototype object 
@@ -2167,7 +2171,7 @@ PASS HTMLMediaElement interface: attribute audioTracks
 PASS HTMLMediaElement interface: attribute videoTracks 
 PASS HTMLMediaElement interface: attribute textTracks 
 PASS HTMLMediaElement interface: operation addTextTrack(TextTrackKind,DOMString,DOMString) 
-FAIL MediaError interface: existence and properties of interface object assert_equals: class string of MediaError expected "[object Function]" but got "[object MediaErrorConstructor]"
+PASS MediaError interface: existence and properties of interface object 
 PASS MediaError interface object length 
 PASS MediaError interface object name 
 PASS MediaError interface: existence and properties of interface prototype object 
@@ -2229,7 +2233,11 @@ 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: class string of MediaController expected "[object Function]" but got "[object MediaControllerConstructor]"
+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 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]"
@@ -2304,7 +2312,11 @@ 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: class string of TextTrackList expected "[object Function]" but got "[object TextTrackListConstructor]"
+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 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]"
@@ -2332,7 +2344,11 @@ 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: class string of TextTrack expected "[object Function]" but got "[object TextTrackConstructor]"
+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 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]"
@@ -2377,7 +2393,7 @@ FAIL EventTarget interface: calling removeEventListener(DOMString,EventListener,
 }" did not throw
 PASS EventTarget interface: document.createElement("track").track must inherit property "dispatchEvent" with the proper type (2) 
 PASS EventTarget interface: calling dispatchEvent(Event) on document.createElement("track").track with too few arguments must throw TypeError 
-FAIL TextTrackCueList interface: existence and properties of interface object assert_equals: class string of TextTrackCueList expected "[object Function]" but got "[object TextTrackCueListConstructor]"
+PASS TextTrackCueList interface: existence and properties of interface object 
 PASS TextTrackCueList interface object length 
 PASS TextTrackCueList interface object name 
 PASS TextTrackCueList interface: existence and properties of interface prototype object 
@@ -2389,7 +2405,11 @@ PASS Stringification of document.createElement("video").addTextTrack("subtitles"
 FAIL TextTrackCueList interface: document.createElement("video").addTextTrack("subtitles").cues must inherit property "length" with the proper type (0) assert_inherits: property "length" found on object expected in prototype chain
 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: class string of TextTrackCue expected "[object Function]" but got "[object TextTrackCueConstructor]"
+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]
+}"
 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]"
@@ -2401,7 +2421,7 @@ PASS TextTrackCue interface: attribute endTime
 PASS TextTrackCue interface: attribute pauseOnExit 
 PASS TextTrackCue interface: attribute onenter 
 PASS TextTrackCue interface: attribute onexit 
-FAIL TimeRanges interface: existence and properties of interface object assert_equals: class string of TimeRanges expected "[object Function]" but got "[object TimeRangesConstructor]"
+PASS TimeRanges interface: existence and properties of interface object 
 PASS TimeRanges interface object length 
 PASS TimeRanges interface object name 
 PASS TimeRanges interface: existence and properties of interface prototype object 
@@ -2416,7 +2436,7 @@ PASS TimeRanges interface: document.createElement("video").buffered must inherit
 PASS TimeRanges interface: calling start(unsigned long) on document.createElement("video").buffered with too few arguments must throw TypeError 
 PASS TimeRanges interface: document.createElement("video").buffered must inherit property "end" with the proper type (2) 
 PASS TimeRanges interface: calling end(unsigned long) on document.createElement("video").buffered with too few arguments must throw TypeError 
-FAIL TrackEvent interface: existence and properties of interface object assert_equals: class string of TrackEvent expected "[object Function]" but got "[object TrackEventConstructor]"
+PASS TrackEvent interface: existence and properties of interface object 
 PASS TrackEvent interface object length 
 PASS TrackEvent interface object name 
 PASS TrackEvent interface: existence and properties of interface prototype object 
@@ -2443,7 +2463,7 @@ FAIL Event interface: new TrackEvent("addtrack"; {track:document.createElement("
 FAIL Event interface: new TrackEvent("addtrack"; {track:document.createElement("track").track}) must inherit property "timeStamp" with the proper type (15) assert_equals: Unexpected exception when evaluating object expected null but got object "SyntaxError: Unexpected token ';'. Expected ')' to end a ..."
 FAIL Event interface: new TrackEvent("addtrack"; {track:document.createElement("track").track}) must inherit property "initEvent" with the proper type (16) assert_equals: Unexpected exception when evaluating object expected null but got object "SyntaxError: Unexpected token ';'. Expected ')' to end a ..."
 FAIL Event interface: calling initEvent(DOMString,boolean,boolean) on new TrackEvent("addtrack"; {track:document.createElement("track").track}) with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "SyntaxError: Unexpected token ';'. Expected ')' to end a ..."
-FAIL HTMLMapElement interface: existence and properties of interface object assert_equals: class string of HTMLMapElement expected "[object Function]" but got "[object HTMLMapElementConstructor]"
+PASS HTMLMapElement interface: existence and properties of interface object 
 PASS HTMLMapElement interface object length 
 PASS HTMLMapElement interface object name 
 PASS HTMLMapElement interface: existence and properties of interface prototype object 
@@ -2456,7 +2476,7 @@ PASS Stringification of document.createElement("map")
 PASS HTMLMapElement interface: document.createElement("map") must inherit property "name" with the proper type (0) 
 PASS HTMLMapElement interface: document.createElement("map") must inherit property "areas" with the proper type (1) 
 FAIL HTMLMapElement interface: document.createElement("map") must inherit property "images" with the proper type (2) assert_inherits: property "images" not found in prototype chain
-FAIL HTMLAreaElement interface: existence and properties of interface object assert_equals: class string of HTMLAreaElement expected "[object Function]" but got "[object HTMLAreaElementConstructor]"
+PASS HTMLAreaElement interface: existence and properties of interface object 
 PASS HTMLAreaElement interface object length 
 PASS HTMLAreaElement interface object name 
 PASS HTMLAreaElement interface: existence and properties of interface prototype object 
@@ -2503,7 +2523,7 @@ PASS HTMLAreaElement interface: document.createElement("area") must inherit prop
 PASS HTMLAreaElement interface: document.createElement("area") must inherit property "pathname" with the proper type (17) 
 PASS HTMLAreaElement interface: document.createElement("area") must inherit property "search" with the proper type (18) 
 PASS HTMLAreaElement interface: document.createElement("area") must inherit property "hash" with the proper type (19) 
-FAIL HTMLTableElement interface: existence and properties of interface object assert_equals: class string of HTMLTableElement expected "[object Function]" but got "[object HTMLTableElementConstructor]"
+PASS HTMLTableElement interface: existence and properties of interface object 
 PASS HTMLTableElement interface object length 
 PASS HTMLTableElement interface object name 
 PASS HTMLTableElement interface: existence and properties of interface prototype object 
@@ -2564,7 +2584,7 @@ PASS HTMLTableElement interface: document.createElement("table") must inherit pr
 PASS HTMLTableElement interface: document.createElement("table") must inherit property "bgColor" with the proper type (22) 
 PASS HTMLTableElement interface: document.createElement("table") must inherit property "cellPadding" with the proper type (23) 
 PASS HTMLTableElement interface: document.createElement("table") must inherit property "cellSpacing" with the proper type (24) 
-FAIL HTMLTableCaptionElement interface: existence and properties of interface object assert_equals: class string of HTMLTableCaptionElement expected "[object Function]" but got "[object HTMLTableCaptionElementConstructor]"
+PASS HTMLTableCaptionElement interface: existence and properties of interface object 
 PASS HTMLTableCaptionElement interface object length 
 PASS HTMLTableCaptionElement interface object name 
 PASS HTMLTableCaptionElement interface: existence and properties of interface prototype object 
@@ -2573,7 +2593,7 @@ PASS HTMLTableCaptionElement interface: attribute align
 PASS HTMLTableCaptionElement must be primary interface of document.createElement("caption") 
 PASS Stringification of document.createElement("caption") 
 PASS HTMLTableCaptionElement interface: document.createElement("caption") must inherit property "align" with the proper type (0) 
-FAIL HTMLTableColElement interface: existence and properties of interface object assert_equals: class string of HTMLTableColElement expected "[object Function]" but got "[object HTMLTableColElementConstructor]"
+PASS HTMLTableColElement interface: existence and properties of interface object 
 PASS HTMLTableColElement interface object length 
 PASS HTMLTableColElement interface object name 
 PASS HTMLTableColElement interface: existence and properties of interface prototype object 
@@ -2600,7 +2620,7 @@ PASS HTMLTableColElement interface: document.createElement("col") must inherit p
 PASS HTMLTableColElement interface: document.createElement("col") must inherit property "chOff" with the proper type (3) 
 PASS HTMLTableColElement interface: document.createElement("col") must inherit property "vAlign" with the proper type (4) 
 PASS HTMLTableColElement interface: document.createElement("col") must inherit property "width" with the proper type (5) 
-FAIL HTMLTableSectionElement interface: existence and properties of interface object assert_equals: class string of HTMLTableSectionElement expected "[object Function]" but got "[object HTMLTableSectionElementConstructor]"
+PASS HTMLTableSectionElement interface: existence and properties of interface object 
 PASS HTMLTableSectionElement interface object length 
 PASS HTMLTableSectionElement interface object name 
 PASS HTMLTableSectionElement interface: existence and properties of interface prototype object 
@@ -2651,7 +2671,7 @@ PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inh
 PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "ch" with the proper type (4) 
 PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "chOff" with the proper type (5) 
 PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "vAlign" with the proper type (6) 
-FAIL HTMLTableRowElement interface: existence and properties of interface object assert_equals: class string of HTMLTableRowElement expected "[object Function]" but got "[object HTMLTableRowElementConstructor]"
+PASS HTMLTableRowElement interface: existence and properties of interface object 
 PASS HTMLTableRowElement interface object length 
 PASS HTMLTableRowElement interface object name 
 PASS HTMLTableRowElement interface: existence and properties of interface prototype object 
@@ -2682,7 +2702,7 @@ PASS HTMLTableRowElement interface: document.createElement("tr") must inherit pr
 PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "chOff" with the proper type (7) 
 PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "vAlign" with the proper type (8) 
 PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "bgColor" with the proper type (9) 
-FAIL HTMLTableDataCellElement interface: existence and properties of interface object assert_equals: class string of HTMLTableDataCellElement expected "[object Function]" but got "[object HTMLTableDataCellElementConstructor]"
+PASS HTMLTableDataCellElement interface: existence and properties of interface object 
 PASS HTMLTableDataCellElement interface object length 
 PASS HTMLTableDataCellElement interface object name 
 PASS HTMLTableDataCellElement interface: existence and properties of interface prototype object 
@@ -2704,7 +2724,7 @@ PASS HTMLTableCellElement interface: document.createElement("td") must inherit p
 PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "noWrap" with the proper type (10) 
 PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "vAlign" with the proper type (11) 
 PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "bgColor" with the proper type (12) 
-FAIL HTMLTableHeaderCellElement interface: existence and properties of interface object assert_equals: class string of HTMLTableHeaderCellElement expected "[object Function]" but got "[object HTMLTableHeaderCellElementConstructor]"
+PASS HTMLTableHeaderCellElement interface: existence and properties of interface object 
 PASS HTMLTableHeaderCellElement interface object length 
 PASS HTMLTableHeaderCellElement interface object name 
 PASS HTMLTableHeaderCellElement interface: existence and properties of interface prototype object 
@@ -2732,7 +2752,7 @@ PASS HTMLTableCellElement interface: document.createElement("th") must inherit p
 PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "noWrap" with the proper type (10) 
 PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "vAlign" with the proper type (11) 
 PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "bgColor" with the proper type (12) 
-FAIL HTMLTableCellElement interface: existence and properties of interface object assert_equals: class string of HTMLTableCellElement expected "[object Function]" but got "[object HTMLTableCellElementConstructor]"
+PASS HTMLTableCellElement interface: existence and properties of interface object 
 PASS HTMLTableCellElement interface object length 
 PASS HTMLTableCellElement interface object name 
 PASS HTMLTableCellElement interface: existence and properties of interface prototype object 
@@ -2750,7 +2770,7 @@ PASS HTMLTableCellElement interface: attribute chOff
 PASS HTMLTableCellElement interface: attribute noWrap 
 PASS HTMLTableCellElement interface: attribute vAlign 
 PASS HTMLTableCellElement interface: attribute bgColor 
-FAIL HTMLFormElement interface: existence and properties of interface object assert_equals: class string of HTMLFormElement expected "[object Function]" but got "[object HTMLFormElementConstructor]"
+PASS HTMLFormElement interface: existence and properties of interface object 
 PASS HTMLFormElement interface object length 
 PASS HTMLFormElement interface object name 
 PASS HTMLFormElement interface: existence and properties of interface prototype object 
@@ -2789,7 +2809,7 @@ PASS HTMLFormElement interface: document.createElement("form") must inherit prop
 PASS HTMLFormElement interface: document.createElement("form") must inherit property "checkValidity" with the proper type (15) 
 FAIL HTMLFormElement interface: document.createElement("form") must inherit property "reportValidity" with the proper type (16) assert_inherits: property "reportValidity" not found in prototype chain
 FAIL HTMLFormElement interface: document.createElement("form") must inherit property "requestAutocomplete" with the proper type (17) assert_inherits: property "requestAutocomplete" not found in prototype chain
-FAIL HTMLLabelElement interface: existence and properties of interface object assert_equals: class string of HTMLLabelElement expected "[object Function]" but got "[object HTMLLabelElementConstructor]"
+PASS HTMLLabelElement interface: existence and properties of interface object 
 PASS HTMLLabelElement interface object length 
 PASS HTMLLabelElement interface object name 
 PASS HTMLLabelElement interface: existence and properties of interface prototype object 
@@ -2802,7 +2822,7 @@ PASS Stringification of document.createElement("label")
 PASS HTMLLabelElement interface: document.createElement("label") must inherit property "form" with the proper type (0) 
 PASS HTMLLabelElement interface: document.createElement("label") must inherit property "htmlFor" with the proper type (1) 
 PASS HTMLLabelElement interface: document.createElement("label") must inherit property "control" with the proper type (2) 
-FAIL HTMLInputElement interface: existence and properties of interface object assert_equals: class string of HTMLInputElement expected "[object Function]" but got "[object HTMLInputElementConstructor]"
+PASS HTMLInputElement interface: existence and properties of interface object 
 PASS HTMLInputElement interface object length 
 PASS HTMLInputElement interface object name 
 PASS HTMLInputElement interface: existence and properties of interface prototype object 
@@ -2935,7 +2955,7 @@ FAIL HTMLInputElement interface: calling setSelectionRange(unsigned long,unsigne
 }" did not throw
 PASS HTMLInputElement interface: document.createElement("input") must inherit property "align" with the proper type (56) 
 PASS HTMLInputElement interface: document.createElement("input") must inherit property "useMap" with the proper type (57) 
-FAIL HTMLButtonElement interface: existence and properties of interface object assert_equals: class string of HTMLButtonElement expected "[object Function]" but got "[object HTMLButtonElementConstructor]"
+PASS HTMLButtonElement interface: existence and properties of interface object 
 PASS HTMLButtonElement interface object length 
 PASS HTMLButtonElement interface object name 
 PASS HTMLButtonElement interface: existence and properties of interface prototype object 
@@ -2981,7 +3001,7 @@ FAIL HTMLButtonElement interface: document.createElement("button") must inherit
 PASS HTMLButtonElement interface: document.createElement("button") must inherit property "setCustomValidity" with the proper type (17) 
 PASS HTMLButtonElement interface: calling setCustomValidity(DOMString) on document.createElement("button") with too few arguments must throw TypeError 
 PASS HTMLButtonElement interface: document.createElement("button") must inherit property "labels" with the proper type (18) 
-FAIL HTMLSelectElement interface: existence and properties of interface object assert_equals: class string of HTMLSelectElement expected "[object Function]" but got "[object HTMLSelectElementConstructor]"
+PASS HTMLSelectElement interface: existence and properties of interface object 
 PASS HTMLSelectElement interface object length 
 PASS HTMLSelectElement interface object name 
 PASS HTMLSelectElement interface: existence and properties of interface prototype object 
@@ -3056,7 +3076,7 @@ FAIL HTMLDataListElement interface: attribute options assert_own_property: self
 FAIL HTMLDataListElement must be primary interface of document.createElement("datalist") assert_own_property: self does not have own property "HTMLDataListElement" expected property "HTMLDataListElement" missing
 FAIL Stringification of document.createElement("datalist") assert_equals: class string of document.createElement("datalist") expected "[object HTMLDataListElement]" but got "[object HTMLUnknownElement]"
 FAIL HTMLDataListElement interface: document.createElement("datalist") must inherit property "options" with the proper type (0) assert_inherits: property "options" not found in prototype chain
-FAIL HTMLOptGroupElement interface: existence and properties of interface object assert_equals: class string of HTMLOptGroupElement expected "[object Function]" but got "[object HTMLOptGroupElementConstructor]"
+PASS HTMLOptGroupElement interface: existence and properties of interface object 
 PASS HTMLOptGroupElement interface object length 
 PASS HTMLOptGroupElement interface object name 
 PASS HTMLOptGroupElement interface: existence and properties of interface prototype object 
@@ -3067,7 +3087,7 @@ PASS HTMLOptGroupElement must be primary interface of document.createElement("op
 PASS Stringification of document.createElement("optgroup") 
 PASS HTMLOptGroupElement interface: document.createElement("optgroup") must inherit property "disabled" with the proper type (0) 
 PASS HTMLOptGroupElement interface: document.createElement("optgroup") must inherit property "label" with the proper type (1) 
-FAIL HTMLOptionElement interface: existence and properties of interface object assert_equals: class string of HTMLOptionElement expected "[object Function]" but got "[object HTMLOptionElementConstructor]"
+PASS HTMLOptionElement interface: existence and properties of interface object 
 PASS HTMLOptionElement interface object length 
 PASS HTMLOptionElement interface object name 
 PASS HTMLOptionElement interface: existence and properties of interface prototype object 
@@ -3100,7 +3120,7 @@ PASS HTMLOptionElement interface: new Option() must inherit property "selected"
 PASS HTMLOptionElement interface: new Option() must inherit property "value" with the proper type (5) 
 PASS HTMLOptionElement interface: new Option() must inherit property "text" with the proper type (6) 
 PASS HTMLOptionElement interface: new Option() must inherit property "index" with the proper type (7) 
-FAIL HTMLTextAreaElement interface: existence and properties of interface object assert_equals: class string of HTMLTextAreaElement expected "[object Function]" but got "[object HTMLTextAreaElementConstructor]"
+PASS HTMLTextAreaElement interface: existence and properties of interface object 
 PASS HTMLTextAreaElement interface object length 
 PASS HTMLTextAreaElement interface object name 
 PASS HTMLTextAreaElement interface: existence and properties of interface prototype object 
@@ -3179,7 +3199,7 @@ PASS HTMLTextAreaElement interface: document.createElement("textarea") must inhe
 FAIL HTMLTextAreaElement interface: calling setSelectionRange(unsigned long,unsigned long,DOMString) on document.createElement("textarea") with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "function () {
     [native code]
 }" did not throw
-FAIL HTMLKeygenElement interface: existence and properties of interface object assert_equals: class string of HTMLKeygenElement expected "[object Function]" but got "[object HTMLKeygenElementConstructor]"
+PASS HTMLKeygenElement interface: existence and properties of interface object 
 PASS HTMLKeygenElement interface object length 
 PASS HTMLKeygenElement interface object name 
 PASS HTMLKeygenElement interface: existence and properties of interface prototype object 
@@ -3215,7 +3235,7 @@ FAIL HTMLKeygenElement interface: document.createElement("keygen") must inherit
 PASS HTMLKeygenElement interface: document.createElement("keygen") must inherit property "setCustomValidity" with the proper type (12) 
 PASS HTMLKeygenElement interface: calling setCustomValidity(DOMString) on document.createElement("keygen") with too few arguments must throw TypeError 
 PASS HTMLKeygenElement interface: document.createElement("keygen") must inherit property "labels" with the proper type (13) 
-FAIL HTMLOutputElement interface: existence and properties of interface object assert_equals: class string of HTMLOutputElement expected "[object Function]" but got "[object HTMLOutputElementConstructor]"
+PASS HTMLOutputElement interface: existence and properties of interface object 
 PASS HTMLOutputElement interface object length 
 PASS HTMLOutputElement interface object name 
 PASS HTMLOutputElement interface: existence and properties of interface prototype object 
@@ -3249,7 +3269,7 @@ FAIL HTMLOutputElement interface: document.createElement("output") must inherit
 PASS HTMLOutputElement interface: document.createElement("output") must inherit property "setCustomValidity" with the proper type (11) 
 PASS HTMLOutputElement interface: calling setCustomValidity(DOMString) on document.createElement("output") with too few arguments must throw TypeError 
 PASS HTMLOutputElement interface: document.createElement("output") must inherit property "labels" with the proper type (12) 
-FAIL HTMLProgressElement interface: existence and properties of interface object assert_equals: class string of HTMLProgressElement expected "[object Function]" but got "[object HTMLProgressElementConstructor]"
+PASS HTMLProgressElement interface: existence and properties of interface object 
 PASS HTMLProgressElement interface object length 
 PASS HTMLProgressElement interface object name 
 PASS HTMLProgressElement interface: existence and properties of interface prototype object 
@@ -3264,7 +3284,7 @@ PASS HTMLProgressElement interface: document.createElement("progress") must inhe
 PASS HTMLProgressElement interface: document.createElement("progress") must inherit property "max" with the proper type (1) 
 PASS HTMLProgressElement interface: document.createElement("progress") must inherit property "position" with the proper type (2) 
 PASS HTMLProgressElement interface: document.createElement("progress") must inherit property "labels" with the proper type (3) 
-FAIL HTMLMeterElement interface: existence and properties of interface object assert_equals: class string of HTMLMeterElement expected "[object Function]" but got "[object HTMLMeterElementConstructor]"
+PASS HTMLMeterElement interface: existence and properties of interface object 
 PASS HTMLMeterElement interface object length 
 PASS HTMLMeterElement interface object name 
 PASS HTMLMeterElement interface: existence and properties of interface prototype object 
@@ -3285,7 +3305,7 @@ PASS HTMLMeterElement interface: document.createElement("meter") must inherit pr
 PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "high" with the proper type (4) 
 PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "optimum" with the proper type (5) 
 PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "labels" with the proper type (6) 
-FAIL HTMLFieldSetElement interface: existence and properties of interface object assert_equals: class string of HTMLFieldSetElement expected "[object Function]" but got "[object HTMLFieldSetElementConstructor]"
+PASS HTMLFieldSetElement interface: existence and properties of interface object 
 PASS HTMLFieldSetElement interface object length 
 PASS HTMLFieldSetElement interface object name 
 PASS HTMLFieldSetElement interface: existence and properties of interface prototype object 
@@ -3301,7 +3321,7 @@ PASS HTMLFieldSetElement interface: attribute validationMessage
 PASS HTMLFieldSetElement interface: operation checkValidity() 
 FAIL HTMLFieldSetElement interface: operation reportValidity() assert_own_property: interface prototype object missing non-static operation expected property "reportValidity" missing
 PASS HTMLFieldSetElement interface: operation setCustomValidity(DOMString) 
-FAIL HTMLLegendElement interface: existence and properties of interface object assert_equals: class string of HTMLLegendElement expected "[object Function]" but got "[object HTMLLegendElementConstructor]"
+PASS HTMLLegendElement interface: existence and properties of interface object 
 PASS HTMLLegendElement interface object length 
 PASS HTMLLegendElement interface object name 
 PASS HTMLLegendElement interface: existence and properties of interface prototype object 
@@ -3318,7 +3338,7 @@ FAIL AutocompleteErrorEvent interface object name assert_own_property: self does
 FAIL AutocompleteErrorEvent interface: existence and properties of interface prototype object assert_own_property: self does not have own property "AutocompleteErrorEvent" expected property "AutocompleteErrorEvent" missing
 FAIL AutocompleteErrorEvent interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "AutocompleteErrorEvent" expected property "AutocompleteErrorEvent" missing
 FAIL AutocompleteErrorEvent interface: attribute reason assert_own_property: self does not have own property "AutocompleteErrorEvent" expected property "AutocompleteErrorEvent" missing
-FAIL ValidityState interface: existence and properties of interface object assert_equals: class string of ValidityState expected "[object Function]" but got "[object ValidityStateConstructor]"
+PASS ValidityState interface: existence and properties of interface object 
 PASS ValidityState interface object length 
 PASS ValidityState interface object name 
 PASS ValidityState interface: existence and properties of interface prototype object 
@@ -3347,7 +3367,7 @@ PASS ValidityState interface: document.createElement("input").validity must inhe
 PASS ValidityState interface: document.createElement("input").validity must inherit property "badInput" with the proper type (8) 
 PASS ValidityState interface: document.createElement("input").validity must inherit property "customError" with the proper type (9) 
 PASS ValidityState interface: document.createElement("input").validity must inherit property "valid" with the proper type (10) 
-FAIL HTMLDetailsElement interface: existence and properties of interface object assert_equals: class string of HTMLDetailsElement expected "[object Function]" but got "[object HTMLDetailsElementConstructor]"
+PASS HTMLDetailsElement interface: existence and properties of interface object 
 PASS HTMLDetailsElement interface object length 
 PASS HTMLDetailsElement interface object name 
 PASS HTMLDetailsElement interface: existence and properties of interface prototype object 
@@ -3356,7 +3376,7 @@ PASS HTMLDetailsElement interface: attribute open
 PASS HTMLDetailsElement must be primary interface of document.createElement("details") 
 PASS Stringification of document.createElement("details") 
 PASS HTMLDetailsElement interface: document.createElement("details") must inherit property "open" with the proper type (0) 
-FAIL HTMLMenuElement interface: existence and properties of interface object assert_equals: class string of HTMLMenuElement expected "[object Function]" but got "[object HTMLMenuElementConstructor]"
+PASS HTMLMenuElement interface: existence and properties of interface object 
 PASS HTMLMenuElement interface object length 
 PASS HTMLMenuElement interface object name 
 PASS HTMLMenuElement interface: existence and properties of interface prototype object 
@@ -3398,7 +3418,7 @@ FAIL HTMLDialogElement interface: attribute returnValue assert_own_property: sel
 FAIL HTMLDialogElement interface: operation show([object Object],[object Object]) assert_own_property: self does not have own property "HTMLDialogElement" expected property "HTMLDialogElement" missing
 FAIL HTMLDialogElement interface: operation showModal([object Object],[object Object]) assert_own_property: self does not have own property "HTMLDialogElement" expected property "HTMLDialogElement" missing
 FAIL HTMLDialogElement interface: operation close(DOMString) assert_own_property: self does not have own property "HTMLDialogElement" expected property "HTMLDialogElement" missing
-FAIL HTMLScriptElement interface: existence and properties of interface object assert_equals: class string of HTMLScriptElement expected "[object Function]" but got "[object HTMLScriptElementConstructor]"
+PASS HTMLScriptElement interface: existence and properties of interface object 
 PASS HTMLScriptElement interface object length 
 PASS HTMLScriptElement interface object name 
 PASS HTMLScriptElement interface: existence and properties of interface prototype object 
@@ -3423,13 +3443,13 @@ PASS HTMLScriptElement interface: document.createElement("script") must inherit
 PASS HTMLScriptElement interface: document.createElement("script") must inherit property "text" with the proper type (6) 
 PASS HTMLScriptElement interface: document.createElement("script") must inherit property "event" with the proper type (7) 
 PASS HTMLScriptElement interface: document.createElement("script") must inherit property "htmlFor" with the proper type (8) 
-FAIL HTMLTemplateElement interface: existence and properties of interface object assert_equals: class string of HTMLTemplateElement expected "[object Function]" but got "[object HTMLTemplateElementConstructor]"
+PASS HTMLTemplateElement interface: existence and properties of interface object 
 PASS HTMLTemplateElement interface object length 
 PASS HTMLTemplateElement interface object name 
 PASS HTMLTemplateElement interface: existence and properties of interface prototype object 
 PASS HTMLTemplateElement interface: existence and properties of interface prototype object's "constructor" property 
 PASS HTMLTemplateElement interface: attribute content 
-FAIL HTMLCanvasElement interface: existence and properties of interface object assert_equals: class string of HTMLCanvasElement expected "[object Function]" but got "[object HTMLCanvasElementConstructor]"
+PASS HTMLCanvasElement interface: existence and properties of interface object 
 PASS HTMLCanvasElement interface object length 
 PASS HTMLCanvasElement interface object name 
 PASS HTMLCanvasElement interface: existence and properties of interface prototype object 
@@ -3467,7 +3487,7 @@ FAIL CanvasProxy interface object name assert_own_property: self does not have o
 FAIL CanvasProxy interface: existence and properties of interface prototype object assert_own_property: self does not have own property "CanvasProxy" expected property "CanvasProxy" missing
 FAIL CanvasProxy interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "CanvasProxy" expected property "CanvasProxy" missing
 FAIL CanvasProxy interface: operation setContext(RenderingContext) assert_own_property: self does not have own property "CanvasProxy" expected property "CanvasProxy" missing
-FAIL CanvasRenderingContext2D interface: existence and properties of interface object assert_equals: class string of CanvasRenderingContext2D expected "[object Function]" but got "[object CanvasRenderingContext2DConstructor]"
+PASS CanvasRenderingContext2D interface: existence and properties of interface object 
 FAIL CanvasRenderingContext2D interface object length assert_equals: wrong value for CanvasRenderingContext2D.length expected 1 but got 0
 PASS CanvasRenderingContext2D interface object name 
 FAIL CanvasRenderingContext2D interface: existence and properties of interface prototype object assert_equals: prototype of CanvasRenderingContext2D.prototype is not Object.prototype expected object "[object Object]" but got object "[object CanvasRenderingContextPrototype]"
@@ -3682,19 +3702,19 @@ PASS CanvasRenderingContext2D interface: document.createElement("canvas").getCon
 PASS CanvasRenderingContext2D interface: calling arc(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,boolean) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError 
 PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "ellipse" with the proper type (79) 
 PASS CanvasRenderingContext2D interface: calling ellipse(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,boolean) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError 
-FAIL CanvasGradient interface: existence and properties of interface object assert_equals: class string of CanvasGradient expected "[object Function]" but got "[object CanvasGradientConstructor]"
+PASS CanvasGradient interface: existence and properties of interface object 
 PASS CanvasGradient interface object length 
 PASS CanvasGradient interface object name 
 PASS CanvasGradient interface: existence and properties of interface prototype object 
 PASS CanvasGradient interface: existence and properties of interface prototype object's "constructor" property 
 FAIL CanvasGradient interface: operation addColorStop(double,DOMString) assert_equals: property has wrong .length expected 2 but got 0
-FAIL CanvasPattern interface: existence and properties of interface object assert_equals: class string of CanvasPattern expected "[object Function]" but got "[object CanvasPatternConstructor]"
+PASS CanvasPattern interface: existence and properties of interface object 
 PASS CanvasPattern interface object length 
 PASS CanvasPattern interface object name 
 PASS CanvasPattern interface: existence and properties of interface prototype object 
 PASS CanvasPattern interface: existence and properties of interface prototype object's "constructor" property 
 FAIL CanvasPattern interface: operation setTransform(SVGMatrix) assert_own_property: interface prototype object missing non-static operation expected property "setTransform" missing
-FAIL TextMetrics interface: existence and properties of interface object assert_equals: class string of TextMetrics expected "[object Function]" but got "[object TextMetricsConstructor]"
+PASS TextMetrics interface: existence and properties of interface object 
 PASS TextMetrics interface object length 
 PASS TextMetrics interface object name 
 PASS TextMetrics interface: existence and properties of interface prototype object 
@@ -3711,7 +3731,7 @@ FAIL TextMetrics interface: attribute emHeightDescent assert_true: The prototype
 FAIL TextMetrics interface: attribute hangingBaseline assert_true: The prototype object must have a property "hangingBaseline" expected true got false
 FAIL TextMetrics interface: attribute alphabeticBaseline assert_true: The prototype object must have a property "alphabeticBaseline" expected true got false
 FAIL TextMetrics interface: attribute ideographicBaseline assert_true: The prototype object must have a property "ideographicBaseline" expected true got false
-FAIL ImageData interface: existence and properties of interface object assert_equals: class string of ImageData expected "[object Function]" but got "[object ImageDataConstructor]"
+PASS ImageData interface: existence and properties of interface object 
 PASS ImageData interface object length 
 PASS ImageData interface object name 
 PASS ImageData interface: existence and properties of interface prototype object 
@@ -3735,7 +3755,7 @@ FAIL DrawingStyle interface: attribute font assert_own_property: self does not h
 FAIL DrawingStyle interface: attribute textAlign assert_own_property: self does not have own property "DrawingStyle" expected property "DrawingStyle" missing
 FAIL DrawingStyle interface: attribute textBaseline assert_own_property: self does not have own property "DrawingStyle" expected property "DrawingStyle" missing
 FAIL DrawingStyle interface: attribute direction assert_own_property: self does not have own property "DrawingStyle" expected property "DrawingStyle" missing
-FAIL Path2D interface: existence and properties of interface object assert_equals: class string of Path2D expected "[object Function]" but got "[object Path2DConstructor]"
+PASS Path2D interface: existence and properties of interface object 
 PASS Path2D interface object length 
 PASS Path2D interface object name 
 PASS Path2D interface: existence and properties of interface prototype object 
@@ -3756,7 +3776,7 @@ FAIL Path2D interface: operation arcTo(unrestricted double,unrestricted double,u
 FAIL Path2D interface: operation rect(unrestricted double,unrestricted double,unrestricted double,unrestricted double) assert_equals: property has wrong .length expected 4 but got 0
 FAIL Path2D interface: operation arc(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,boolean) assert_equals: property has wrong .length expected 5 but got 0
 PASS Path2D interface: operation ellipse(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,boolean) 
-FAIL DataTransfer interface: existence and properties of interface object assert_equals: class string of DataTransfer expected "[object Function]" but got "[object DataTransferConstructor]"
+PASS DataTransfer interface: existence and properties of interface object 
 PASS DataTransfer interface object length 
 PASS DataTransfer interface object name 
 PASS DataTransfer interface: existence and properties of interface prototype object 
@@ -3795,7 +3815,11 @@ FAIL DragEvent interface object name assert_own_property: self does not have own
 FAIL DragEvent interface: existence and properties of interface prototype object assert_own_property: self does not have own property "DragEvent" expected property "DragEvent" missing
 FAIL DragEvent interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "DragEvent" expected property "DragEvent" missing
 FAIL DragEvent interface: attribute dataTransfer assert_own_property: self does not have own property "DragEvent" expected property "DragEvent" missing
-FAIL Window interface: existence and properties of interface object assert_equals: class string of Window expected "[object Function]" but got "[object WindowConstructor]"
+FAIL Window interface: existence and properties of interface object assert_equals: prototype of Window is not EventTarget expected function "function EventTarget() {
+    [native code]
+}" but got function "function () {
+    [native code]
+}"
 PASS Window interface object length 
 PASS Window interface object name 
 FAIL Window interface: existence and properties of interface prototype object assert_equals: Class name for prototype of Window.prototype is not "WindowProperties" expected "[object WindowProperties]" but got "[object Object]"
@@ -4078,13 +4102,13 @@ FAIL EventTarget interface: window must inherit property "removeEventListener" w
 FAIL EventTarget interface: calling removeEventListener(DOMString,EventListener,boolean) on window with too few arguments must throw TypeError assert_inherits: property "removeEventListener" found on object expected in prototype chain
 FAIL EventTarget interface: window must inherit property "dispatchEvent" with the proper type (2) assert_inherits: property "dispatchEvent" found on object expected in prototype chain
 FAIL EventTarget interface: calling dispatchEvent(Event) on window with too few arguments must throw TypeError assert_inherits: property "dispatchEvent" found on object expected in prototype chain
-FAIL BarProp interface: existence and properties of interface object assert_equals: class string of BarProp expected "[object Function]" but got "[object BarPropConstructor]"
+PASS BarProp interface: existence and properties of interface object 
 PASS BarProp interface object length 
 PASS BarProp interface object name 
 PASS BarProp interface: existence and properties of interface prototype object 
 PASS BarProp interface: existence and properties of interface prototype object's "constructor" property 
 FAIL BarProp interface: attribute visible assert_equals: setter must be function for PutForwards, Replaceable, or non-readonly attributes expected "function" but got "undefined"
-FAIL History interface: existence and properties of interface object assert_equals: class string of History expected "[object Function]" but got "[object HistoryConstructor]"
+PASS History interface: existence and properties of interface object 
 PASS History interface object length 
 PASS History interface object name 
 PASS History interface: existence and properties of interface prototype object 
@@ -4114,7 +4138,7 @@ PASS History interface: window.history must inherit property "replaceState" with
 FAIL History interface: calling replaceState(any,DOMString,DOMString) on window.history with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "function () {
     [native code]
 }" did not throw
-FAIL Location interface: existence and properties of interface object assert_equals: class string of Location expected "[object Function]" but got "[object LocationConstructor]"
+PASS Location interface: existence and properties of interface object 
 PASS Location interface object length 
 PASS Location interface object name 
 PASS Location interface: existence and properties of interface prototype object 
@@ -4136,7 +4160,7 @@ FAIL Location interface: window.location must have own property "replace" assert
 FAIL Location interface: calling replace(USVString) on window.location with too few arguments must throw TypeError assert_own_property: expected property "replace" missing
 FAIL Location interface: window.location must have own property "reload" assert_own_property: Doesn't have the unforgeable operation property expected property "reload" missing
 PASS Location interface: window.location must have own property "ancestorOrigins" 
-FAIL PopStateEvent interface: existence and properties of interface object assert_equals: class string of PopStateEvent expected "[object Function]" but got "[object PopStateEventConstructor]"
+PASS PopStateEvent interface: existence and properties of interface object 
 PASS PopStateEvent interface object length 
 PASS PopStateEvent interface object name 
 PASS PopStateEvent interface: existence and properties of interface prototype object 
@@ -4165,26 +4189,30 @@ PASS Event interface: new PopStateEvent("popstate", { data: {} }) must inherit p
 FAIL Event interface: calling initEvent(DOMString,boolean,boolean) on new PopStateEvent("popstate", { data: {} }) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "function () {
     [native code]
 }" did not throw
-FAIL HashChangeEvent interface: existence and properties of interface object assert_equals: class string of HashChangeEvent expected "[object Function]" but got "[object HashChangeEventConstructor]"
+PASS HashChangeEvent interface: existence and properties of interface object 
 PASS HashChangeEvent interface object length 
 PASS HashChangeEvent interface object name 
 PASS HashChangeEvent interface: existence and properties of interface prototype object 
 PASS HashChangeEvent interface: existence and properties of interface prototype object's "constructor" property 
 PASS HashChangeEvent interface: attribute oldURL 
 PASS HashChangeEvent interface: attribute newURL 
-FAIL PageTransitionEvent interface: existence and properties of interface object assert_equals: class string of PageTransitionEvent expected "[object Function]" but got "[object PageTransitionEventConstructor]"
+PASS PageTransitionEvent interface: existence and properties of interface object 
 PASS PageTransitionEvent interface object length 
 PASS PageTransitionEvent interface object name 
 PASS PageTransitionEvent interface: existence and properties of interface prototype object 
 PASS PageTransitionEvent interface: existence and properties of interface prototype object's "constructor" property 
 PASS PageTransitionEvent interface: attribute persisted 
-FAIL BeforeUnloadEvent interface: existence and properties of interface object assert_equals: class string of BeforeUnloadEvent expected "[object Function]" but got "[object BeforeUnloadEventConstructor]"
+PASS BeforeUnloadEvent interface: existence and properties of interface object 
 PASS BeforeUnloadEvent interface object length 
 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: class string of ApplicationCache expected "[object Function]" but got "[object ApplicationCacheConstructor]"
+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 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]"
@@ -4243,7 +4271,7 @@ FAIL EventTarget interface: calling removeEventListener(DOMString,EventListener,
 }" did not throw
 PASS EventTarget interface: window.applicationCache must inherit property "dispatchEvent" with the proper type (2) 
 PASS EventTarget interface: calling dispatchEvent(Event) on window.applicationCache with too few arguments must throw TypeError 
-FAIL ErrorEvent interface: existence and properties of interface object assert_equals: class string of ErrorEvent expected "[object Function]" but got "[object ErrorEventConstructor]"
+PASS ErrorEvent interface: existence and properties of interface object 
 PASS ErrorEvent interface object length 
 PASS ErrorEvent interface object name 
 PASS ErrorEvent interface: existence and properties of interface prototype object 
@@ -4253,7 +4281,7 @@ FAIL ErrorEvent interface: attribute filename assert_true: The prototype object
 FAIL ErrorEvent interface: attribute lineno assert_true: The prototype object must have a property "lineno" expected true got false
 FAIL ErrorEvent interface: attribute colno assert_true: The prototype object must have a property "colno" expected true got false
 FAIL ErrorEvent interface: attribute error assert_true: The prototype object must have a property "error" expected true got false
-FAIL Navigator interface: existence and properties of interface object assert_equals: class string of Navigator expected "[object Function]" but got "[object NavigatorConstructor]"
+PASS Navigator interface: existence and properties of interface object 
 PASS Navigator interface object length 
 PASS Navigator interface object name 
 PASS Navigator interface: existence and properties of interface prototype object 
@@ -4310,7 +4338,7 @@ FAIL Navigator interface: window.navigator must inherit property "yieldForStorag
 FAIL Navigator interface: window.navigator must inherit property "plugins" with the proper type (18) assert_inherits: property "plugins" found on object expected in prototype chain
 FAIL Navigator interface: window.navigator must inherit property "mimeTypes" with the proper type (19) assert_inherits: property "mimeTypes" found on object expected in prototype chain
 FAIL Navigator interface: window.navigator must inherit property "javaEnabled" with the proper type (20) assert_equals: expected "boolean" but got "function"
-FAIL PluginArray interface: existence and properties of interface object assert_equals: class string of PluginArray expected "[object Function]" but got "[object PluginArrayConstructor]"
+PASS PluginArray interface: existence and properties of interface object 
 PASS PluginArray interface object length 
 PASS PluginArray interface object name 
 PASS PluginArray interface: existence and properties of interface prototype object 
@@ -4319,7 +4347,7 @@ PASS PluginArray interface: operation refresh(boolean)
 FAIL PluginArray interface: attribute length assert_true: The prototype object must have a property "length" expected true got false
 FAIL PluginArray interface: operation item(unsigned long) assert_equals: property has wrong .length expected 1 but got 0
 FAIL PluginArray interface: operation namedItem(DOMString) assert_equals: property has wrong .length expected 1 but got 0
-FAIL MimeTypeArray interface: existence and properties of interface object assert_equals: class string of MimeTypeArray expected "[object Function]" but got "[object MimeTypeArrayConstructor]"
+PASS MimeTypeArray interface: existence and properties of interface object 
 PASS MimeTypeArray interface object length 
 PASS MimeTypeArray interface object name 
 PASS MimeTypeArray interface: existence and properties of interface prototype object 
@@ -4327,7 +4355,7 @@ PASS MimeTypeArray interface: existence and properties of interface prototype ob
 FAIL MimeTypeArray interface: attribute length assert_true: The prototype object must have a property "length" expected true got false
 FAIL MimeTypeArray interface: operation item(unsigned long) assert_equals: property has wrong .length expected 1 but got 0
 FAIL MimeTypeArray interface: operation namedItem(DOMString) assert_equals: property has wrong .length expected 1 but got 0
-FAIL Plugin interface: existence and properties of interface object assert_equals: class string of Plugin expected "[object Function]" but got "[object PluginConstructor]"
+PASS Plugin interface: existence and properties of interface object 
 PASS Plugin interface object length 
 PASS Plugin interface object name 
 PASS Plugin interface: existence and properties of interface prototype object 
@@ -4338,7 +4366,7 @@ PASS Plugin interface: attribute filename
 FAIL Plugin interface: attribute length assert_true: The prototype object must have a property "length" expected true got false
 FAIL Plugin interface: operation item(unsigned long) assert_equals: property has wrong .length expected 1 but got 0
 FAIL Plugin interface: operation namedItem(DOMString) assert_equals: property has wrong .length expected 1 but got 0
-FAIL MimeType interface: existence and properties of interface object assert_equals: class string of MimeType expected "[object Function]" but got "[object MimeTypeConstructor]"
+PASS MimeType interface: existence and properties of interface object 
 PASS MimeType interface object length 
 PASS MimeType interface object name 
 PASS MimeType interface: existence and properties of interface prototype object 
@@ -4367,7 +4395,7 @@ FAIL ImageBitmap interface: existence and properties of interface prototype obje
 FAIL ImageBitmap interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "ImageBitmap" expected property "ImageBitmap" missing
 FAIL ImageBitmap interface: attribute width assert_own_property: self does not have own property "ImageBitmap" expected property "ImageBitmap" missing
 FAIL ImageBitmap interface: attribute height assert_own_property: self does not have own property "ImageBitmap" expected property "ImageBitmap" missing
-FAIL MessageEvent interface: existence and properties of interface object assert_equals: class string of MessageEvent expected "[object Function]" but got "[object MessageEventConstructor]"
+PASS MessageEvent interface: existence and properties of interface object 
 PASS MessageEvent interface object length 
 PASS MessageEvent interface object name 
 PASS MessageEvent interface: existence and properties of interface prototype object 
@@ -4378,7 +4406,11 @@ 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: class string of EventSource expected "[object Function]" but got "[object EventSourceConstructor]"
+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 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]"
@@ -4396,7 +4428,11 @@ 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: class string of WebSocket expected "[object Function]" but got "[object WebSocketConstructor]"
+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 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]"
@@ -4460,7 +4496,7 @@ FAIL EventTarget interface: calling removeEventListener(DOMString,EventListener,
 }" did not throw
 PASS EventTarget interface: new WebSocket("ws://foo") must inherit property "dispatchEvent" with the proper type (2) 
 PASS EventTarget interface: calling dispatchEvent(Event) on new WebSocket("ws://foo") with too few arguments must throw TypeError 
-FAIL CloseEvent interface: existence and properties of interface object assert_equals: class string of CloseEvent expected "[object Function]" but got "[object CloseEventConstructor]"
+PASS CloseEvent interface: existence and properties of interface object 
 PASS CloseEvent interface object length 
 PASS CloseEvent interface object name 
 PASS CloseEvent interface: existence and properties of interface prototype object 
@@ -4493,14 +4529,18 @@ PASS Event interface: new CloseEvent("close") must inherit property "initEvent"
 FAIL Event interface: calling initEvent(DOMString,boolean,boolean) on new CloseEvent("close") with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "function () {
     [native code]
 }" did not throw
-FAIL MessageChannel interface: existence and properties of interface object assert_equals: class string of MessageChannel expected "[object Function]" but got "[object MessageChannelConstructor]"
+PASS MessageChannel interface: existence and properties of interface object 
 PASS MessageChannel interface object length 
 PASS MessageChannel interface object name 
 PASS MessageChannel interface: existence and properties of interface prototype object 
 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: class string of MessagePort expected "[object Function]" but got "[object MessagePortConstructor]"
+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 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]"
@@ -4565,7 +4605,7 @@ FAIL SharedWorkerGlobalScope interface: existence and properties of interface pr
 FAIL SharedWorkerGlobalScope interface: attribute name assert_own_property: self does not have own property "SharedWorkerGlobalScope" expected property "SharedWorkerGlobalScope" missing
 FAIL SharedWorkerGlobalScope interface: attribute applicationCache assert_own_property: self does not have own property "SharedWorkerGlobalScope" expected property "SharedWorkerGlobalScope" missing
 FAIL SharedWorkerGlobalScope interface: attribute onconnect assert_own_property: self does not have own property "SharedWorkerGlobalScope" expected property "SharedWorkerGlobalScope" missing
-FAIL Worker interface: existence and properties of interface object assert_equals: class string of Worker expected "[object Function]" but got "[object WorkerConstructor]"
+PASS Worker interface: existence and properties of interface object 
 PASS Worker interface object length 
 PASS Worker interface object name 
 PASS Worker interface: existence and properties of interface prototype object 
@@ -4610,7 +4650,7 @@ FAIL WorkerLocation interface: attribute port assert_own_property: self does not
 FAIL WorkerLocation interface: attribute pathname assert_own_property: self does not have own property "WorkerLocation" expected property "WorkerLocation" missing
 FAIL WorkerLocation interface: attribute search assert_own_property: self does not have own property "WorkerLocation" expected property "WorkerLocation" missing
 FAIL WorkerLocation interface: attribute hash assert_own_property: self does not have own property "WorkerLocation" expected property "WorkerLocation" missing
-FAIL Storage interface: existence and properties of interface object assert_equals: class string of Storage expected "[object Function]" but got "[object StorageConstructor]"
+PASS Storage interface: existence and properties of interface object 
 PASS Storage interface object length 
 PASS Storage interface object name 
 PASS Storage interface: existence and properties of interface prototype object 
@@ -4621,7 +4661,7 @@ PASS Storage interface: operation getItem(DOMString)
 PASS Storage interface: operation setItem(DOMString,DOMString) 
 PASS Storage interface: operation removeItem(DOMString) 
 PASS Storage interface: operation clear() 
-FAIL StorageEvent interface: existence and properties of interface object assert_equals: class string of StorageEvent expected "[object Function]" but got "[object StorageEventConstructor]"
+PASS StorageEvent interface: existence and properties of interface object 
 PASS StorageEvent interface object length 
 PASS StorageEvent interface object name 
 PASS StorageEvent interface: existence and properties of interface prototype object 
@@ -4631,7 +4671,7 @@ PASS StorageEvent interface: attribute oldValue
 PASS StorageEvent interface: attribute newValue 
 PASS StorageEvent interface: attribute url 
 PASS StorageEvent interface: attribute storageArea 
-FAIL HTMLAppletElement interface: existence and properties of interface object assert_equals: class string of HTMLAppletElement expected "[object Function]" but got "[object HTMLAppletElementConstructor]"
+PASS HTMLAppletElement interface: existence and properties of interface object 
 PASS HTMLAppletElement interface object length 
 PASS HTMLAppletElement interface object name 
 PASS HTMLAppletElement interface: existence and properties of interface prototype object 
@@ -4660,7 +4700,7 @@ PASS HTMLAppletElement interface: document.createElement("applet") must inherit
 PASS HTMLAppletElement interface: document.createElement("applet") must inherit property "object" with the proper type (8) 
 FAIL HTMLAppletElement interface: document.createElement("applet") must inherit property "vspace" with the proper type (9) assert_equals: expected "number" but got "string"
 PASS HTMLAppletElement interface: document.createElement("applet") must inherit property "width" with the proper type (10) 
-FAIL HTMLMarqueeElement interface: existence and properties of interface object assert_equals: class string of HTMLMarqueeElement expected "[object Function]" but got "[object HTMLMarqueeElementConstructor]"
+PASS HTMLMarqueeElement interface: existence and properties of interface object 
 PASS HTMLMarqueeElement interface object length 
 PASS HTMLMarqueeElement interface object name 
 PASS HTMLMarqueeElement interface: existence and properties of interface prototype object 
@@ -4699,7 +4739,7 @@ FAIL HTMLMarqueeElement interface: document.createElement("marquee") must inheri
 FAIL HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onstart" with the proper type (13) assert_inherits: property "onstart" not found in prototype chain
 PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "start" with the proper type (14) 
 PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "stop" with the proper type (15) 
-FAIL HTMLFrameSetElement interface: existence and properties of interface object assert_equals: class string of HTMLFrameSetElement expected "[object Function]" but got "[object HTMLFrameSetElementConstructor]"
+PASS HTMLFrameSetElement interface: existence and properties of interface object 
 PASS HTMLFrameSetElement interface object length 
 PASS HTMLFrameSetElement interface object name 
 PASS HTMLFrameSetElement interface: existence and properties of interface prototype object 
@@ -4736,7 +4776,7 @@ PASS HTMLFrameSetElement interface: document.createElement("frameset") must inhe
 PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onpopstate" with the proper type (12) 
 PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onstorage" with the proper type (13) 
 PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onunload" with the proper type (14) 
-FAIL HTMLFrameElement interface: existence and properties of interface object assert_equals: class string of HTMLFrameElement expected "[object Function]" but got "[object HTMLFrameElementConstructor]"
+PASS HTMLFrameElement interface: existence and properties of interface object 
 PASS HTMLFrameElement interface object length 
 PASS HTMLFrameElement interface object name 
 PASS HTMLFrameElement interface: existence and properties of interface prototype object 
@@ -4763,7 +4803,7 @@ FAIL HTMLFrameElement interface: document.createElement("frame") must inherit pr
 PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "contentWindow" with the proper type (7) 
 PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "marginHeight" with the proper type (8) 
 PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "marginWidth" with the proper type (9) 
-FAIL HTMLDirectoryElement interface: existence and properties of interface object assert_equals: class string of HTMLDirectoryElement expected "[object Function]" but got "[object HTMLDirectoryElementConstructor]"
+PASS HTMLDirectoryElement interface: existence and properties of interface object 
 PASS HTMLDirectoryElement interface object length 
 PASS HTMLDirectoryElement interface object name 
 PASS HTMLDirectoryElement interface: existence and properties of interface prototype object 
@@ -4772,7 +4812,7 @@ PASS HTMLDirectoryElement interface: attribute compact
 PASS HTMLDirectoryElement must be primary interface of document.createElement("dir") 
 PASS Stringification of document.createElement("dir") 
 PASS HTMLDirectoryElement interface: document.createElement("dir") must inherit property "compact" with the proper type (0) 
-FAIL HTMLFontElement interface: existence and properties of interface object assert_equals: class string of HTMLFontElement expected "[object Function]" but got "[object HTMLFontElementConstructor]"
+PASS HTMLFontElement interface: existence and properties of interface object 
 PASS HTMLFontElement interface object length 
 PASS HTMLFontElement interface object name 
 PASS HTMLFontElement interface: existence and properties of interface prototype object 
index 01e4a59..a065ff2 100644 (file)
@@ -1,16 +1,16 @@
 
 PASS Audio constructor 
-FAIL No arguments, without new Audio is not a function. (In 'Audio()', 'Audio' is an instance of AudioConstructor)
+FAIL No arguments, without new Constructor requires 'new' operator
 PASS No arguments, with new 
-FAIL Empty string argument, without new Audio is not a function. (In 'Audio("")', 'Audio' is an instance of AudioConstructor)
+FAIL Empty string argument, without new Constructor requires 'new' operator
 PASS Empty string argument, with new 
-FAIL Non-empty string argument, without new Audio is not a function. (In 'Audio("src")', 'Audio' is an instance of AudioConstructor)
+FAIL Non-empty string argument, without new Constructor requires 'new' operator
 PASS Non-empty string argument, with new 
-FAIL Null argument, without new Audio is not a function. (In 'Audio(null)', 'Audio' is an instance of AudioConstructor)
+FAIL Null argument, without new Constructor requires 'new' operator
 PASS Null argument, with new 
-FAIL Undefined argument, without new Audio is not a function. (In 'Audio(undefined)', 'Audio' is an instance of AudioConstructor)
+FAIL Undefined argument, without new Constructor requires 'new' operator
 PASS Undefined argument, with new 
-FAIL Extra argument, without new Audio is not a function. (In 'Audio("", throwingObject)', 'Audio' is an instance of AudioConstructor)
+FAIL Extra argument, without new Constructor requires 'new' operator
 PASS Extra argument, with new 
 PASS Calling HTMLAudioElement should throw 
 PASS Constructing HTMLAudioElement should throw 
index b17b6d3..943185a 100644 (file)
@@ -4,11 +4,26 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 
 Starting worker: script-tests/global-constructors-attributes.js
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Array').value is Array
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Array').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Array').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Array').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Array').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ArrayBuffer').value is ArrayBuffer
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ArrayBuffer').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ArrayBuffer').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ArrayBuffer').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ArrayBuffer').configurable is true
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Blob').value is Blob
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Blob').hasOwnProperty('get') is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Blob').hasOwnProperty('set') is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Blob').enumerable is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Blob').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Boolean').value is Boolean
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Boolean').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Boolean').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Boolean').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Boolean').configurable is true
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ByteLengthQueuingStrategy').value is ByteLengthQueuingStrategy
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ByteLengthQueuingStrategy').hasOwnProperty('get') is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ByteLengthQueuingStrategy').hasOwnProperty('set') is false
@@ -19,11 +34,31 @@ PASS [Worker] Object.getOwnPropertyDescriptor(global, 'CountQueuingStrategy').ha
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'CountQueuingStrategy').hasOwnProperty('set') is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'CountQueuingStrategy').enumerable is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'CountQueuingStrategy').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DataView').value is DataView
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DataView').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DataView').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DataView').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DataView').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Date').value is Date
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Date').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Date').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Date').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Date').configurable is true
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DedicatedWorkerGlobalScope').value is DedicatedWorkerGlobalScope
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DedicatedWorkerGlobalScope').hasOwnProperty('get') is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DedicatedWorkerGlobalScope').hasOwnProperty('set') is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DedicatedWorkerGlobalScope').enumerable is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DedicatedWorkerGlobalScope').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Error').value is Error
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Error').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Error').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Error').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Error').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'EvalError').value is EvalError
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'EvalError').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'EvalError').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'EvalError').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'EvalError').configurable is true
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'EventSource').value is EventSource
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'EventSource').hasOwnProperty('get') is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'EventSource').hasOwnProperty('set') is false
@@ -39,6 +74,21 @@ PASS [Worker] Object.getOwnPropertyDescriptor(global, 'FileReaderSync').hasOwnPr
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'FileReaderSync').hasOwnProperty('set') is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'FileReaderSync').enumerable is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'FileReaderSync').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Float32Array').value is Float32Array
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Float32Array').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Float32Array').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Float32Array').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Float32Array').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Float64Array').value is Float64Array
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Float64Array').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Float64Array').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Float64Array').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Float64Array').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Function').value is Function
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Function').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Function').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Function').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Function').configurable is true
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Headers').value is Headers
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Headers').hasOwnProperty('get') is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Headers').hasOwnProperty('set') is false
@@ -49,6 +99,26 @@ PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ImageData').hasOwnPropert
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ImageData').hasOwnProperty('set') is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ImageData').enumerable is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ImageData').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int16Array').value is Int16Array
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int16Array').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int16Array').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int16Array').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int16Array').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int32Array').value is Int32Array
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int32Array').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int32Array').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int32Array').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int32Array').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int8Array').value is Int8Array
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int8Array').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int8Array').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int8Array').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int8Array').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Map').value is Map
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Map').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Map').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Map').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Map').configurable is true
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'MessageChannel').value is MessageChannel
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'MessageChannel').hasOwnProperty('get') is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'MessageChannel').hasOwnProperty('set') is false
@@ -59,21 +129,111 @@ PASS [Worker] Object.getOwnPropertyDescriptor(global, 'MessageEvent').hasOwnProp
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'MessageEvent').hasOwnProperty('set') is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'MessageEvent').enumerable is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'MessageEvent').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Number').value is Number
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Number').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Number').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Number').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Number').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Object').value is Object
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Object').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Object').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Object').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Object').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Promise').value is Promise
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Promise').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Promise').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Promise').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Promise').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'RangeError').value is RangeError
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'RangeError').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'RangeError').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'RangeError').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'RangeError').configurable is true
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ReadableStream').value is ReadableStream
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ReadableStream').hasOwnProperty('get') is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ReadableStream').hasOwnProperty('set') is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ReadableStream').enumerable is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ReadableStream').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ReferenceError').value is ReferenceError
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ReferenceError').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ReferenceError').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ReferenceError').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ReferenceError').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'RegExp').value is RegExp
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'RegExp').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'RegExp').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'RegExp').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'RegExp').configurable is true
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Request').value is Request
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Request').hasOwnProperty('get') is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Request').hasOwnProperty('set') is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Request').enumerable is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Request').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Set').value is Set
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Set').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Set').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Set').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Set').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'String').value is String
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'String').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'String').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'String').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'String').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Symbol').value is Symbol
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Symbol').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Symbol').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Symbol').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Symbol').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'SyntaxError').value is SyntaxError
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'SyntaxError').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'SyntaxError').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'SyntaxError').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'SyntaxError').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'TypeError').value is TypeError
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'TypeError').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'TypeError').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'TypeError').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'TypeError').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'URIError').value is URIError
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'URIError').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'URIError').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'URIError').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'URIError').configurable is true
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'URL').value is URL
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'URL').hasOwnProperty('get') is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'URL').hasOwnProperty('set') is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'URL').enumerable is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'URL').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint16Array').value is Uint16Array
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint16Array').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint16Array').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint16Array').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint16Array').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint32Array').value is Uint32Array
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint32Array').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint32Array').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint32Array').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint32Array').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint8Array').value is Uint8Array
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint8Array').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint8Array').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint8Array').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint8Array').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint8ClampedArray').value is Uint8ClampedArray
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint8ClampedArray').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint8ClampedArray').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint8ClampedArray').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint8ClampedArray').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WeakMap').value is WeakMap
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WeakMap').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WeakMap').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WeakMap').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WeakMap').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WeakSet').value is WeakSet
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WeakSet').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WeakSet').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WeakSet').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WeakSet').configurable is true
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WebSocket').value is WebSocket
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WebSocket').hasOwnProperty('get') is false
 PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WebSocket').hasOwnProperty('set') is false
index f719e82..235bd37 100644 (file)
@@ -59,9 +59,10 @@ function constructorPropertiesOnGlobalObject(globalObject)
         if (value == null)
             continue;
         var type = classNameForObject(value);
-        if (!type.match("Constructor$") || propertyNames[i] == "constructor")
-            continue;
-        constructorNames.push(propertyNames[i]);
+        var descriptor = Object.getOwnPropertyDescriptor(global, propertyNames[i]);
+        if (type == "Function" && descriptor.writable && !descriptor.enumerable && descriptor.configurable
+            && (propertyNames[i][0].toUpperCase() === propertyNames[i][0] || propertyNames[i].startsWith("webkit")))
+            constructorNames.push(propertyNames[i]);
     }
     return constructorNames.sort();
 }
index 6ec5114..9158bd0 100644 (file)
@@ -59,9 +59,10 @@ function constructorPropertiesOnGlobalObject(globalObject)
         if (value == null)
             continue;
         var type = classNameForObject(value);
-        if (!type.match("Constructor$") || propertyNames[i] == "constructor")
-            continue;
-        constructorNames.push(propertyNames[i]);
+        var descriptor = Object.getOwnPropertyDescriptor(global, propertyNames[i]);
+        if (type == "Function" && descriptor.writable && !descriptor.enumerable && descriptor.configurable
+            && (propertyNames[i][0].toUpperCase() === propertyNames[i][0] || propertyNames[i].startsWith("webkit")))
+            constructorNames.push(propertyNames[i]);
     }
     return constructorNames.sort();
 }
diff --git a/LayoutTests/js/interface-objects-expected.txt b/LayoutTests/js/interface-objects-expected.txt
new file mode 100644 (file)
index 0000000..7244cde
--- /dev/null
@@ -0,0 +1,38 @@
+Tests that interfaces objects have the right type
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+* Interface with constructor
+PASS window.Event instanceof Function is true
+PASS typeof Event is "function"
+PASS Object.getPrototypeOf(Event) is Function.prototype
+PASS Event('click') threw exception TypeError: Constructor requires 'new' operator.
+PASS Event.call('click') threw exception TypeError: Constructor requires 'new' operator.
+PASS new Event('click') did not throw exception.
+PASS Event.toString() is "function Event() {\n    [native code]\n}"
+PASS object.toString.call(Event) is "[object Function]"
+
+* Interface with named constructor
+PASS window.Audio instanceof Function is true
+PASS typeof Audio is "function"
+PASS Object.getPrototypeOf(Audio) is HTMLMediaElement
+PASS Audio() threw exception TypeError: Constructor requires 'new' operator.
+PASS Audio.call() threw exception TypeError: Constructor requires 'new' operator.
+PASS new Audio() did not throw exception.
+PASS Audio.toString() is "function Audio() {\n    [native code]\n}"
+PASS object.toString.call(Audio) is "[object Function]"
+
+* Interface without constructor
+PASS window.Element instanceof Function is true
+PASS typeof Element is "function"
+PASS Object.getPrototypeOf(Element) is Node
+PASS Element() threw exception TypeError: Illegal constructor.
+PASS Element.call() threw exception TypeError: Illegal constructor.
+PASS new Element() threw exception TypeError: function is not a constructor (evaluating 'new Element()').
+PASS Element.toString() is "function Element() {\n    [native code]\n}"
+PASS object.toString.call(Element) is "[object Function]"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/js/interface-objects.html b/LayoutTests/js/interface-objects.html
new file mode 100644 (file)
index 0000000..0f60d85
--- /dev/null
@@ -0,0 +1,41 @@
+<script src="../resources/js-test-pre.js"></script>
+<script>
+description("Tests that interfaces objects have the right type");
+// http://heycam.github.io/webidl/#interface-object
+
+object = {};
+
+debug("* Interface with constructor");
+shouldBeTrue("window.Event instanceof Function");
+shouldBeEqualToString("typeof Event", "function");
+shouldBe("Object.getPrototypeOf(Event)", "Function.prototype");
+shouldThrow("Event('click')");
+shouldThrow("Event.call('click')");
+shouldNotThrow("new Event('click')");
+shouldBeEqualToString("Event.toString()", "function Event() {\n    [native code]\n}");
+shouldBeEqualToString("object.toString.call(Event)", "[object Function]");
+
+debug("");
+debug("* Interface with named constructor");
+shouldBeTrue("window.Audio instanceof Function");
+shouldBeEqualToString("typeof Audio", "function");
+shouldBe("Object.getPrototypeOf(Audio)", "HTMLMediaElement");
+shouldThrow("Audio()");
+shouldThrow("Audio.call()");
+shouldNotThrow("new Audio()");
+shouldBeEqualToString("Audio.toString()", "function Audio() {\n    [native code]\n}");
+shouldBeEqualToString("object.toString.call(Audio)", "[object Function]");
+
+debug("");
+debug("* Interface without constructor");
+shouldBeTrue("window.Element instanceof Function");
+shouldBeEqualToString("typeof Element", "function");
+shouldBe("Object.getPrototypeOf(Element)", "Node");
+shouldThrow("Element()");
+shouldThrow("Element.call()");
+shouldThrow("new Element()");
+shouldBeEqualToString("Element.toString()", "function Element() {\n    [native code]\n}");
+shouldBeEqualToString("object.toString.call(Element)", "[object Function]");
+
+</script>
+<script src="../resources/js-test-post.js"></script>
index d693d89..e51de0c 100644 (file)
@@ -1,7 +1,7 @@
 This tests the basic API of WebKitMediaKeys and WebKitMediaKeySession.
 
 Test WebKitMediaKeys.
-EXPECTED (typeof window.WebKitMediaKeys == 'object') OK
+EXPECTED (typeof window.WebKitMediaKeys == 'function') OK
 TEST(new WebKitMediaKeys("")) THROWS(DOMException.INVALID_ACCESS_ERR) OK
 TEST(new WebKitMediaKeys("unsupported")) THROWS(DOMException.NOT_SUPPORTED_ERR) OK
 RUN(mediaKeys = new WebKitMediaKeys("com.webcore.mock"))
index ff64b32..bff16e4 100644 (file)
@@ -25,7 +25,7 @@
                     internals.initializeMockCDM();
 
                 consoleWrite("Test WebKitMediaKeys.");
-                testExpected('typeof window.WebKitMediaKeys', 'object');
+                testExpected('typeof window.WebKitMediaKeys', 'function');
                 testDOMException('new WebKitMediaKeys("")', "DOMException.INVALID_ACCESS_ERR");
                 testDOMException('new WebKitMediaKeys("unsupported")', "DOMException.NOT_SUPPORTED_ERR");
                 run('mediaKeys = new WebKitMediaKeys("com.webcore.mock")');
index c41a9f8..1a306a6 100644 (file)
@@ -4,13 +4,13 @@ Tests VTTCue interface
 
 *** Test cue loaded from the file.
 RUN(trackCue = cues[0])
-EXPECTED (trackCue instanceof '[object TextTrackCueConstructor]') OK
+EXPECTED (trackCue instanceof 'function TextTrackCue() { [native code] }') OK
 EXPECTED (trackCue.track == '[object TextTrack]') OK
 EXPECTED (trackCue.id == '1') OK
 EXPECTED (trackCue.startTime == '0') OK
 EXPECTED (trackCue.endTime == '0.3') OK
 EXPECTED (trackCue.pauseOnExit == 'false') OK
-EXPECTED (trackCue instanceof '[object VTTCueConstructor]') OK
+EXPECTED (trackCue instanceof 'function VTTCue() { [native code] }') OK
 EXPECTED (trackCue.vertical == '') OK
 EXPECTED (trackCue.snapToLines == 'true') OK
 EXPECTED (trackCue.line == '-1') OK
@@ -22,13 +22,13 @@ EXPECTED (serialize(trackCue.getCueAsHTML()) == 'Lorem') OK
 
 *** Create a new cue, check values
 RUN(newCue = new VTTCue(3.14, 6.28, 'Pie'))
-EXPECTED (newCue instanceof '[object TextTrackCueConstructor]') OK
+EXPECTED (newCue instanceof 'function TextTrackCue() { [native code] }') OK
 EXPECTED (newCue.track == 'null') OK
 EXPECTED (newCue.id == '') OK
 EXPECTED (newCue.startTime == '3.14') OK
 EXPECTED (newCue.endTime == '6.28') OK
 EXPECTED (newCue.pauseOnExit == 'false') OK
-EXPECTED (newCue instanceof '[object VTTCueConstructor]') OK
+EXPECTED (newCue instanceof 'function VTTCue() { [native code] }') OK
 EXPECTED (newCue.vertical == '') OK
 EXPECTED (newCue.snapToLines == 'true') OK
 EXPECTED (newCue.line == '-1') OK
index b29ce65..8d7341b 100644 (file)
@@ -18,6 +18,16 @@ PASS Object.getOwnPropertyDescriptor(global, 'ApplicationCache').hasOwnProperty(
 PASS Object.getOwnPropertyDescriptor(global, 'ApplicationCache').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(global, 'ApplicationCache').enumerable is false
 PASS Object.getOwnPropertyDescriptor(global, 'ApplicationCache').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Array').value is Array
+PASS Object.getOwnPropertyDescriptor(global, 'Array').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Array').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Array').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Array').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'ArrayBuffer').value is ArrayBuffer