Completely remove all IDB properties/constructors when it is disabled at runtime.
authorbeidson@apple.com <beidson@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 8 Jun 2015 16:49:57 +0000 (16:49 +0000)
committerbeidson@apple.com <beidson@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 8 Jun 2015 16:49:57 +0000 (16:49 +0000)
rdar://problem/18429374 and https://bugs.webkit.org/show_bug.cgi?id=137034

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

* runtime/CommonIdentifiers.h:

Source/WebCore:

Test: storage/indexeddb/properties-disabled-at-runtime.html

- Make constructors all runtime enabled.
- Remove autogeneration of the window.(webkit)indexedDB accessors.
- Add manual overrides for the (webkit)indexedDB accessors at runtime.

* Modules/indexeddb/DOMWindowIndexedDatabase.idl:
* Modules/indexeddb/IDBAny.idl:
* Modules/indexeddb/IDBCursor.idl:
* Modules/indexeddb/IDBCursorWithValue.idl:
* Modules/indexeddb/IDBDatabase.idl:
* Modules/indexeddb/IDBFactory.idl:
* Modules/indexeddb/IDBIndex.idl:
* Modules/indexeddb/IDBKeyRange.idl:
* Modules/indexeddb/IDBObjectStore.idl:
* Modules/indexeddb/IDBOpenDBRequest.idl:
* Modules/indexeddb/IDBRequest.idl:
* Modules/indexeddb/IDBTransaction.idl:
* Modules/indexeddb/IDBVersionChangeEvent.idl:
* page/DOMWindow.idl:

* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::jsDOMWindowIndexedDB):
(WebCore::JSDOMWindow::getOwnPropertySlot):

Source/WebKit2:

* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::WebProcess): Enable IDB at runtime if it's enabled at compile time.

LayoutTests:

* platform/mac-mavericks/TestExpectations: Disable global-constructors-attributes on Mavericks as
  there is no way to have different WK1 and WK2 results.
* platform/mac-wk1/TestExpectations: Enable the new "properties are missing" test for Mac WK1.
* platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt: Added.
* platform/win/TestExpectations: Enable the new "properties are missing" test for Win WK1
* platform/wk2/TestExpectations: Disable the new "properties are missing" test for all WK2.
* storage/indexeddb/properties-disabled-at-runtime-expected.txt: Added.
* storage/indexeddb/properties-disabled-at-runtime.html: Added.

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

28 files changed:
LayoutTests/ChangeLog
LayoutTests/platform/mac-mavericks/TestExpectations
LayoutTests/platform/mac-wk1/TestExpectations
LayoutTests/platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt [new file with mode: 0644]
LayoutTests/platform/win/TestExpectations
LayoutTests/platform/wk2/TestExpectations
LayoutTests/storage/indexeddb/properties-disabled-at-runtime-expected.txt [new file with mode: 0644]
LayoutTests/storage/indexeddb/properties-disabled-at-runtime.html [new file with mode: 0644]
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/runtime/CommonIdentifiers.h
Source/WebCore/ChangeLog
Source/WebCore/Modules/indexeddb/DOMWindowIndexedDatabase.idl
Source/WebCore/Modules/indexeddb/IDBAny.idl
Source/WebCore/Modules/indexeddb/IDBCursor.idl
Source/WebCore/Modules/indexeddb/IDBCursorWithValue.idl
Source/WebCore/Modules/indexeddb/IDBDatabase.idl
Source/WebCore/Modules/indexeddb/IDBFactory.idl
Source/WebCore/Modules/indexeddb/IDBIndex.idl
Source/WebCore/Modules/indexeddb/IDBKeyRange.idl
Source/WebCore/Modules/indexeddb/IDBObjectStore.idl
Source/WebCore/Modules/indexeddb/IDBOpenDBRequest.idl
Source/WebCore/Modules/indexeddb/IDBRequest.idl
Source/WebCore/Modules/indexeddb/IDBTransaction.idl
Source/WebCore/Modules/indexeddb/IDBVersionChangeEvent.idl
Source/WebCore/bindings/js/JSDOMWindowCustom.cpp
Source/WebCore/page/DOMWindow.idl
Source/WebKit2/ChangeLog
Source/WebKit2/WebProcess/WebProcess.cpp

index 79354fd..52b9cfe 100644 (file)
@@ -1,3 +1,19 @@
+2015-06-08  Brady Eidson  <beidson@apple.com>
+
+        Completely remove all IDB properties/constructors when it is disabled at runtime.
+        rdar://problem/18429374 and https://bugs.webkit.org/show_bug.cgi?id=137034
+
+        Reviewed by Geoffrey Garen.
+
+        * platform/mac-mavericks/TestExpectations: Disable global-constructors-attributes on Mavericks as
+          there is no way to have different WK1 and WK2 results.
+        * platform/mac-wk1/TestExpectations: Enable the new "properties are missing" test for Mac WK1.
+        * platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt: Added.
+        * platform/win/TestExpectations: Enable the new "properties are missing" test for Win WK1
+        * platform/wk2/TestExpectations: Disable the new "properties are missing" test for all WK2.
+        * storage/indexeddb/properties-disabled-at-runtime-expected.txt: Added.
+        * storage/indexeddb/properties-disabled-at-runtime.html: Added.
+
 2015-06-08  Sergio Villar Senin  <svillar@igalia.com>
 
         [CSS Grid Layout] Add some more testing for grid line names
index a549230..06c8f72 100644 (file)
@@ -18,3 +18,6 @@ platform/mac/fast/ruby/ruby-expansion-cjk.html [ Skip ]
 platform/mac/fast/ruby/ruby-expansion-cjk-2.html [ Skip ]
 platform/mac/fast/ruby/ruby-expansion-cjk-3.html [ Skip ]
 platform/mac/fast/ruby/ruby-expansion-cjk-4.html [ Skip ]
+
+# Need to have Mavericks WK1 and Mavericks WK2 compare to different results which is not currently possible
+js/dom/global-constructors-attributes.html [ Skip ]
index 68111c5..dbe8f7e 100644 (file)
@@ -41,9 +41,9 @@ webkit.org/b/144127 compositing/scrolling/touch-scroll-to-clip.html [ Pass Failu
 ### START OF (2) Failures without bug reports
 
 # IndexedDB is not yet enabled in Mac WK1
+storage/indexeddb
 fast/history/page-cache-indexed-closed-db.html
 fast/history/page-cache-indexed-opened-db.html
-storage/indexeddb
 http/tests/security/cross-origin-indexeddb-allowed.html
 http/tests/security/cross-origin-indexeddb.html
 http/tests/security/cross-origin-worker-indexeddb-allowed.html
@@ -52,6 +52,9 @@ http/tests/security/no-indexeddb-from-sandbox.html
 crypto/subtle/rsa-indexeddb.html
 crypto/subtle/rsa-indexeddb-non-exportable.html
 
+# But since it is disabled at runtime, we should make sure it is correctly disabled
+storage/indexeddb/properties-disabled-at-runtime.html [ Pass ]
+
 # Fails with WebKit1 only.
 editing/secure-input/reset-state-on-navigation.html [ Failure ]
 
diff --git a/LayoutTests/platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt b/LayoutTests/platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt
new file mode 100644 (file)
index 0000000..0230131
--- /dev/null
@@ -0,0 +1,2084 @@
+Test to ensure that global constructors have the right attributes
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS Object.getOwnPropertyDescriptor(global, 'AnalyserNode').value is AnalyserNode
+PASS Object.getOwnPropertyDescriptor(global, 'AnalyserNode').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AnalyserNode').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AnalyserNode').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'AnalyserNode').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'AnimationEvent').value is AnimationEvent
+PASS Object.getOwnPropertyDescriptor(global, 'AnimationEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AnimationEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AnimationEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'AnimationEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Attr').value is Attr
+PASS Object.getOwnPropertyDescriptor(global, 'Attr').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Attr').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Attr').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Attr').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Audio').value is Audio
+PASS Object.getOwnPropertyDescriptor(global, 'Audio').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Audio').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Audio').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Audio').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'AudioBuffer').value is AudioBuffer
+PASS Object.getOwnPropertyDescriptor(global, 'AudioBuffer').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AudioBuffer').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AudioBuffer').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'AudioBuffer').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'AudioBufferSourceNode').value is AudioBufferSourceNode
+PASS Object.getOwnPropertyDescriptor(global, 'AudioBufferSourceNode').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AudioBufferSourceNode').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AudioBufferSourceNode').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'AudioBufferSourceNode').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'AudioDestinationNode').value is AudioDestinationNode
+PASS Object.getOwnPropertyDescriptor(global, 'AudioDestinationNode').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AudioDestinationNode').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AudioDestinationNode').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'AudioDestinationNode').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'AudioListener').value is AudioListener
+PASS Object.getOwnPropertyDescriptor(global, 'AudioListener').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AudioListener').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AudioListener').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'AudioListener').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'AudioNode').value is AudioNode
+PASS Object.getOwnPropertyDescriptor(global, 'AudioNode').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AudioNode').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AudioNode').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'AudioNode').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'AudioParam').value is AudioParam
+PASS Object.getOwnPropertyDescriptor(global, 'AudioParam').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AudioParam').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AudioParam').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'AudioParam').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'AudioProcessingEvent').value is AudioProcessingEvent
+PASS Object.getOwnPropertyDescriptor(global, 'AudioProcessingEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AudioProcessingEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'AudioProcessingEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'AudioProcessingEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'BarProp').value is BarProp
+PASS Object.getOwnPropertyDescriptor(global, 'BarProp').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'BarProp').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'BarProp').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'BarProp').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'BeforeLoadEvent').value is BeforeLoadEvent
+PASS Object.getOwnPropertyDescriptor(global, 'BeforeLoadEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'BeforeLoadEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'BeforeLoadEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'BeforeLoadEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'BeforeUnloadEvent').value is BeforeUnloadEvent
+PASS Object.getOwnPropertyDescriptor(global, 'BeforeUnloadEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'BeforeUnloadEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'BeforeUnloadEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'BeforeUnloadEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'BiquadFilterNode').value is BiquadFilterNode
+PASS Object.getOwnPropertyDescriptor(global, 'BiquadFilterNode').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'BiquadFilterNode').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'BiquadFilterNode').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'BiquadFilterNode').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Blob').value is Blob
+PASS Object.getOwnPropertyDescriptor(global, 'Blob').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Blob').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Blob').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Blob').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'CDATASection').value is CDATASection
+PASS Object.getOwnPropertyDescriptor(global, 'CDATASection').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CDATASection').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CDATASection').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'CDATASection').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'CSSCharsetRule').value is CSSCharsetRule
+PASS Object.getOwnPropertyDescriptor(global, 'CSSCharsetRule').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSCharsetRule').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSCharsetRule').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSCharsetRule').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'CSSFontFaceRule').value is CSSFontFaceRule
+PASS Object.getOwnPropertyDescriptor(global, 'CSSFontFaceRule').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSFontFaceRule').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSFontFaceRule').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSFontFaceRule').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'CSSImportRule').value is CSSImportRule
+PASS Object.getOwnPropertyDescriptor(global, 'CSSImportRule').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSImportRule').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSImportRule').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSImportRule').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'CSSKeyframeRule').value is CSSKeyframeRule
+PASS Object.getOwnPropertyDescriptor(global, 'CSSKeyframeRule').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSKeyframeRule').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSKeyframeRule').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSKeyframeRule').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'CSSKeyframesRule').value is CSSKeyframesRule
+PASS Object.getOwnPropertyDescriptor(global, 'CSSKeyframesRule').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSKeyframesRule').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSKeyframesRule').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSKeyframesRule').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'CSSMediaRule').value is CSSMediaRule
+PASS Object.getOwnPropertyDescriptor(global, 'CSSMediaRule').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSMediaRule').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSMediaRule').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSMediaRule').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'CSSPageRule').value is CSSPageRule
+PASS Object.getOwnPropertyDescriptor(global, 'CSSPageRule').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSPageRule').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSPageRule').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSPageRule').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'CSSPrimitiveValue').value is CSSPrimitiveValue
+PASS Object.getOwnPropertyDescriptor(global, 'CSSPrimitiveValue').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSPrimitiveValue').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSPrimitiveValue').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSPrimitiveValue').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'CSSRule').value is CSSRule
+PASS Object.getOwnPropertyDescriptor(global, 'CSSRule').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSRule').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSRule').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSRule').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'CSSRuleList').value is CSSRuleList
+PASS Object.getOwnPropertyDescriptor(global, 'CSSRuleList').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSRuleList').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSRuleList').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSRuleList').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'CSSStyleDeclaration').value is CSSStyleDeclaration
+PASS Object.getOwnPropertyDescriptor(global, 'CSSStyleDeclaration').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSStyleDeclaration').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSStyleDeclaration').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSStyleDeclaration').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'CSSStyleRule').value is CSSStyleRule
+PASS Object.getOwnPropertyDescriptor(global, 'CSSStyleRule').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSStyleRule').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSStyleRule').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSStyleRule').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'CSSStyleSheet').value is CSSStyleSheet
+PASS Object.getOwnPropertyDescriptor(global, 'CSSStyleSheet').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSStyleSheet').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSStyleSheet').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSStyleSheet').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'CSSValue').value is CSSValue
+PASS Object.getOwnPropertyDescriptor(global, 'CSSValue').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSValue').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSValue').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSValue').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'CSSValueList').value is CSSValueList
+PASS Object.getOwnPropertyDescriptor(global, 'CSSValueList').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSValueList').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSValueList').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'CSSValueList').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'CanvasGradient').value is CanvasGradient
+PASS Object.getOwnPropertyDescriptor(global, 'CanvasGradient').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CanvasGradient').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CanvasGradient').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'CanvasGradient').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'CanvasPattern').value is CanvasPattern
+PASS Object.getOwnPropertyDescriptor(global, 'CanvasPattern').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CanvasPattern').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CanvasPattern').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'CanvasPattern').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'CanvasRenderingContext2D').value is CanvasRenderingContext2D
+PASS Object.getOwnPropertyDescriptor(global, 'CanvasRenderingContext2D').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CanvasRenderingContext2D').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CanvasRenderingContext2D').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'CanvasRenderingContext2D').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'ChannelMergerNode').value is ChannelMergerNode
+PASS Object.getOwnPropertyDescriptor(global, 'ChannelMergerNode').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ChannelMergerNode').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ChannelMergerNode').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'ChannelMergerNode').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'ChannelSplitterNode').value is ChannelSplitterNode
+PASS Object.getOwnPropertyDescriptor(global, 'ChannelSplitterNode').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ChannelSplitterNode').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ChannelSplitterNode').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'ChannelSplitterNode').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'CharacterData').value is CharacterData
+PASS Object.getOwnPropertyDescriptor(global, 'CharacterData').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CharacterData').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CharacterData').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'CharacterData').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'ClientRect').value is ClientRect
+PASS Object.getOwnPropertyDescriptor(global, 'ClientRect').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ClientRect').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ClientRect').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'ClientRect').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'ClientRectList').value is ClientRectList
+PASS Object.getOwnPropertyDescriptor(global, 'ClientRectList').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ClientRectList').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ClientRectList').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'ClientRectList').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'CloseEvent').value is CloseEvent
+PASS Object.getOwnPropertyDescriptor(global, 'CloseEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CloseEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CloseEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'CloseEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Comment').value is Comment
+PASS Object.getOwnPropertyDescriptor(global, 'Comment').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Comment').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Comment').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Comment').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'CompositionEvent').value is CompositionEvent
+PASS Object.getOwnPropertyDescriptor(global, 'CompositionEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CompositionEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CompositionEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'CompositionEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'ConvolverNode').value is ConvolverNode
+PASS Object.getOwnPropertyDescriptor(global, 'ConvolverNode').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ConvolverNode').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ConvolverNode').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'ConvolverNode').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Counter').value is Counter
+PASS Object.getOwnPropertyDescriptor(global, 'Counter').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Counter').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Counter').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Counter').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'CustomEvent').value is CustomEvent
+PASS Object.getOwnPropertyDescriptor(global, 'CustomEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CustomEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CustomEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'CustomEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'DOMException').value is DOMException
+PASS Object.getOwnPropertyDescriptor(global, 'DOMException').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DOMException').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DOMException').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'DOMException').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'DOMImplementation').value is DOMImplementation
+PASS Object.getOwnPropertyDescriptor(global, 'DOMImplementation').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DOMImplementation').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DOMImplementation').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'DOMImplementation').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'DOMParser').value is DOMParser
+PASS Object.getOwnPropertyDescriptor(global, 'DOMParser').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DOMParser').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DOMParser').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'DOMParser').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'DOMSettableTokenList').value is DOMSettableTokenList
+PASS Object.getOwnPropertyDescriptor(global, 'DOMSettableTokenList').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DOMSettableTokenList').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DOMSettableTokenList').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'DOMSettableTokenList').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'DOMStringList').value is DOMStringList
+PASS Object.getOwnPropertyDescriptor(global, 'DOMStringList').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DOMStringList').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DOMStringList').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'DOMStringList').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'DOMStringMap').value is DOMStringMap
+PASS Object.getOwnPropertyDescriptor(global, 'DOMStringMap').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DOMStringMap').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DOMStringMap').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'DOMStringMap').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'DOMTokenList').value is DOMTokenList
+PASS Object.getOwnPropertyDescriptor(global, 'DOMTokenList').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DOMTokenList').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DOMTokenList').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'DOMTokenList').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'DataTransfer').value is DataTransfer
+PASS Object.getOwnPropertyDescriptor(global, 'DataTransfer').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DataTransfer').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DataTransfer').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'DataTransfer').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'DelayNode').value is DelayNode
+PASS Object.getOwnPropertyDescriptor(global, 'DelayNode').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DelayNode').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DelayNode').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'DelayNode').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Document').value is Document
+PASS Object.getOwnPropertyDescriptor(global, 'Document').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Document').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Document').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Document').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'DocumentFragment').value is DocumentFragment
+PASS Object.getOwnPropertyDescriptor(global, 'DocumentFragment').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DocumentFragment').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DocumentFragment').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'DocumentFragment').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'DocumentType').value is DocumentType
+PASS Object.getOwnPropertyDescriptor(global, 'DocumentType').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DocumentType').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DocumentType').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'DocumentType').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'DynamicsCompressorNode').value is DynamicsCompressorNode
+PASS Object.getOwnPropertyDescriptor(global, 'DynamicsCompressorNode').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DynamicsCompressorNode').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'DynamicsCompressorNode').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'DynamicsCompressorNode').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Element').value is Element
+PASS Object.getOwnPropertyDescriptor(global, 'Element').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Element').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Element').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Element').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Entity').value is Entity
+PASS Object.getOwnPropertyDescriptor(global, 'Entity').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Entity').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Entity').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Entity').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'EntityReference').value is EntityReference
+PASS Object.getOwnPropertyDescriptor(global, 'EntityReference').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'EntityReference').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'EntityReference').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'EntityReference').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'ErrorEvent').value is ErrorEvent
+PASS Object.getOwnPropertyDescriptor(global, 'ErrorEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ErrorEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ErrorEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'ErrorEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Event').value is Event
+PASS Object.getOwnPropertyDescriptor(global, 'Event').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Event').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Event').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Event').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'EventException').value is EventException
+PASS Object.getOwnPropertyDescriptor(global, 'EventException').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'EventException').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'EventException').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'EventException').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'EventSource').value is EventSource
+PASS Object.getOwnPropertyDescriptor(global, 'EventSource').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'EventSource').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'EventSource').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'EventSource').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'File').value is File
+PASS Object.getOwnPropertyDescriptor(global, 'File').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'File').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'File').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'File').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'FileError').value is FileError
+PASS Object.getOwnPropertyDescriptor(global, 'FileError').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'FileError').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'FileError').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'FileError').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'FileList').value is FileList
+PASS Object.getOwnPropertyDescriptor(global, 'FileList').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'FileList').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'FileList').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'FileList').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'FileReader').value is FileReader
+PASS Object.getOwnPropertyDescriptor(global, 'FileReader').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'FileReader').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'FileReader').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'FileReader').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'FocusEvent').value is FocusEvent
+PASS Object.getOwnPropertyDescriptor(global, 'FocusEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'FocusEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'FocusEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'FocusEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'FormData').value is FormData
+PASS Object.getOwnPropertyDescriptor(global, 'FormData').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'FormData').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'FormData').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'FormData').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'GainNode').value is GainNode
+PASS Object.getOwnPropertyDescriptor(global, 'GainNode').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'GainNode').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'GainNode').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'GainNode').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAllCollection').value is HTMLAllCollection
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAllCollection').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAllCollection').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAllCollection').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAllCollection').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAnchorElement').value is HTMLAnchorElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAnchorElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAnchorElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAnchorElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAnchorElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAppletElement').value is HTMLAppletElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAppletElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAppletElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAppletElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAppletElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAreaElement').value is HTMLAreaElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAreaElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAreaElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAreaElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAreaElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAttachmentElement').value is HTMLAttachmentElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAttachmentElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAttachmentElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAttachmentElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAttachmentElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAudioElement').value is HTMLAudioElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAudioElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAudioElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAudioElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLAudioElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLBRElement').value is HTMLBRElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLBRElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLBRElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLBRElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLBRElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLBaseElement').value is HTMLBaseElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLBaseElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLBaseElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLBaseElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLBaseElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLBaseFontElement').value is HTMLBaseFontElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLBaseFontElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLBaseFontElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLBaseFontElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLBaseFontElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLBodyElement').value is HTMLBodyElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLBodyElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLBodyElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLBodyElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLBodyElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLButtonElement').value is HTMLButtonElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLButtonElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLButtonElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLButtonElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLButtonElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLCanvasElement').value is HTMLCanvasElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLCanvasElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLCanvasElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLCanvasElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLCanvasElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLCollection').value is HTMLCollection
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLCollection').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLCollection').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLCollection').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLCollection').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLDListElement').value is HTMLDListElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLDListElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLDListElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLDListElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLDListElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLDirectoryElement').value is HTMLDirectoryElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLDirectoryElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLDirectoryElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLDirectoryElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLDirectoryElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLDivElement').value is HTMLDivElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLDivElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLDivElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLDivElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLDivElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLDocument').value is HTMLDocument
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLDocument').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLDocument').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLDocument').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLDocument').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLElement').value is HTMLElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLEmbedElement').value is HTMLEmbedElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLEmbedElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLEmbedElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLEmbedElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLEmbedElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFieldSetElement').value is HTMLFieldSetElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFieldSetElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFieldSetElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFieldSetElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFieldSetElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFontElement').value is HTMLFontElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFontElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFontElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFontElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFontElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFormControlsCollection').value is HTMLFormControlsCollection
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFormControlsCollection').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFormControlsCollection').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFormControlsCollection').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFormControlsCollection').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFormElement').value is HTMLFormElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFormElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFormElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFormElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFormElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFrameElement').value is HTMLFrameElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFrameElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFrameElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFrameElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFrameElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFrameSetElement').value is HTMLFrameSetElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFrameSetElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFrameSetElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFrameSetElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLFrameSetElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLHRElement').value is HTMLHRElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLHRElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLHRElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLHRElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLHRElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLHeadElement').value is HTMLHeadElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLHeadElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLHeadElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLHeadElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLHeadElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLHeadingElement').value is HTMLHeadingElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLHeadingElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLHeadingElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLHeadingElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLHeadingElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLHtmlElement').value is HTMLHtmlElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLHtmlElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLHtmlElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLHtmlElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLHtmlElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLIFrameElement').value is HTMLIFrameElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLIFrameElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLIFrameElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLIFrameElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLIFrameElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLImageElement').value is HTMLImageElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLImageElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLImageElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLImageElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLImageElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLInputElement').value is HTMLInputElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLInputElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLInputElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLInputElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLInputElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLKeygenElement').value is HTMLKeygenElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLKeygenElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLKeygenElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLKeygenElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLKeygenElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLLIElement').value is HTMLLIElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLLIElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLLIElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLLIElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLLIElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLLabelElement').value is HTMLLabelElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLLabelElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLLabelElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLLabelElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLLabelElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLLegendElement').value is HTMLLegendElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLLegendElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLLegendElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLLegendElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLLegendElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLLinkElement').value is HTMLLinkElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLLinkElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLLinkElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLLinkElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLLinkElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMapElement').value is HTMLMapElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMapElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMapElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMapElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMapElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMarqueeElement').value is HTMLMarqueeElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMarqueeElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMarqueeElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMarqueeElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMarqueeElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMediaElement').value is HTMLMediaElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMediaElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMediaElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMediaElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMediaElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMenuElement').value is HTMLMenuElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMenuElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMenuElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMenuElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMenuElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMetaElement').value is HTMLMetaElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMetaElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMetaElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMetaElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMetaElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMeterElement').value is HTMLMeterElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMeterElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMeterElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMeterElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLMeterElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLModElement').value is HTMLModElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLModElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLModElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLModElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLModElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLOListElement').value is HTMLOListElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLOListElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLOListElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLOListElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLOListElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLObjectElement').value is HTMLObjectElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLObjectElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLObjectElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLObjectElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLObjectElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLOptGroupElement').value is HTMLOptGroupElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLOptGroupElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLOptGroupElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLOptGroupElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLOptGroupElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLOptionElement').value is HTMLOptionElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLOptionElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLOptionElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLOptionElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLOptionElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLOptionsCollection').value is HTMLOptionsCollection
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLOptionsCollection').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLOptionsCollection').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLOptionsCollection').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLOptionsCollection').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLOutputElement').value is HTMLOutputElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLOutputElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLOutputElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLOutputElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLOutputElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLParagraphElement').value is HTMLParagraphElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLParagraphElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLParagraphElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLParagraphElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLParagraphElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLParamElement').value is HTMLParamElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLParamElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLParamElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLParamElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLParamElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLPreElement').value is HTMLPreElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLPreElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLPreElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLPreElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLPreElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLProgressElement').value is HTMLProgressElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLProgressElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLProgressElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLProgressElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLProgressElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLQuoteElement').value is HTMLQuoteElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLQuoteElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLQuoteElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLQuoteElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLQuoteElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLScriptElement').value is HTMLScriptElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLScriptElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLScriptElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLScriptElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLScriptElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSelectElement').value is HTMLSelectElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSelectElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSelectElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSelectElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSelectElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSourceElement').value is HTMLSourceElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSourceElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSourceElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSourceElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSourceElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSpanElement').value is HTMLSpanElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSpanElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSpanElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSpanElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSpanElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLStyleElement').value is HTMLStyleElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLStyleElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLStyleElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLStyleElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLStyleElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableCaptionElement').value is HTMLTableCaptionElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableCaptionElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableCaptionElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableCaptionElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableCaptionElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableCellElement').value is HTMLTableCellElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableCellElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableCellElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableCellElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableCellElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableColElement').value is HTMLTableColElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableColElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableColElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableColElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableColElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableElement').value is HTMLTableElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableRowElement').value is HTMLTableRowElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableRowElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableRowElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableRowElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableRowElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableSectionElement').value is HTMLTableSectionElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableSectionElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableSectionElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableSectionElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTableSectionElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTemplateElement').value is HTMLTemplateElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTemplateElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTemplateElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTemplateElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTemplateElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTextAreaElement').value is HTMLTextAreaElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTextAreaElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTextAreaElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTextAreaElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTextAreaElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTitleElement').value is HTMLTitleElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTitleElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTitleElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTitleElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTitleElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTrackElement').value is HTMLTrackElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTrackElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTrackElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTrackElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLTrackElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLUListElement').value is HTMLUListElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLUListElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLUListElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLUListElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLUListElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLUnknownElement').value is HTMLUnknownElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLUnknownElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLUnknownElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLUnknownElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLUnknownElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLVideoElement').value is HTMLVideoElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLVideoElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLVideoElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLVideoElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLVideoElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'HashChangeEvent').value is HashChangeEvent
+PASS Object.getOwnPropertyDescriptor(global, 'HashChangeEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HashChangeEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HashChangeEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HashChangeEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'History').value is History
+PASS Object.getOwnPropertyDescriptor(global, 'History').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'History').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'History').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'History').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Image').value is Image
+PASS Object.getOwnPropertyDescriptor(global, 'Image').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Image').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Image').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Image').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'ImageData').value is ImageData
+PASS Object.getOwnPropertyDescriptor(global, 'ImageData').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ImageData').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ImageData').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'ImageData').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'KeyboardEvent').value is KeyboardEvent
+PASS Object.getOwnPropertyDescriptor(global, 'KeyboardEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'KeyboardEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'KeyboardEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'KeyboardEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Location').value is Location
+PASS Object.getOwnPropertyDescriptor(global, 'Location').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Location').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Location').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Location').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'MediaController').value is MediaController
+PASS Object.getOwnPropertyDescriptor(global, 'MediaController').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MediaController').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MediaController').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'MediaController').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'MediaElementAudioSourceNode').value is MediaElementAudioSourceNode
+PASS Object.getOwnPropertyDescriptor(global, 'MediaElementAudioSourceNode').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MediaElementAudioSourceNode').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MediaElementAudioSourceNode').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'MediaElementAudioSourceNode').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'MediaError').value is MediaError
+PASS Object.getOwnPropertyDescriptor(global, 'MediaError').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MediaError').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MediaError').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'MediaError').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'MediaKeyEvent').value is MediaKeyEvent
+PASS Object.getOwnPropertyDescriptor(global, 'MediaKeyEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MediaKeyEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MediaKeyEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'MediaKeyEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'MediaKeyNeededEvent').value is MediaKeyNeededEvent
+PASS Object.getOwnPropertyDescriptor(global, 'MediaKeyNeededEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MediaKeyNeededEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MediaKeyNeededEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'MediaKeyNeededEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'MediaList').value is MediaList
+PASS Object.getOwnPropertyDescriptor(global, 'MediaList').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MediaList').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MediaList').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'MediaList').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'MediaSource').value is MediaSource
+PASS Object.getOwnPropertyDescriptor(global, 'MediaSource').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MediaSource').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MediaSource').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'MediaSource').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'MessageChannel').value is MessageChannel
+PASS Object.getOwnPropertyDescriptor(global, 'MessageChannel').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MessageChannel').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MessageChannel').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'MessageChannel').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'MessageEvent').value is MessageEvent
+PASS Object.getOwnPropertyDescriptor(global, 'MessageEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MessageEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MessageEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'MessageEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'MessagePort').value is MessagePort
+PASS Object.getOwnPropertyDescriptor(global, 'MessagePort').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MessagePort').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MessagePort').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'MessagePort').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'MimeType').value is MimeType
+PASS Object.getOwnPropertyDescriptor(global, 'MimeType').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MimeType').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MimeType').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'MimeType').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'MimeTypeArray').value is MimeTypeArray
+PASS Object.getOwnPropertyDescriptor(global, 'MimeTypeArray').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MimeTypeArray').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MimeTypeArray').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'MimeTypeArray').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'MouseEvent').value is MouseEvent
+PASS Object.getOwnPropertyDescriptor(global, 'MouseEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MouseEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MouseEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'MouseEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'MutationEvent').value is MutationEvent
+PASS Object.getOwnPropertyDescriptor(global, 'MutationEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MutationEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MutationEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'MutationEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'MutationObserver').value is MutationObserver
+PASS Object.getOwnPropertyDescriptor(global, 'MutationObserver').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MutationObserver').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MutationObserver').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'MutationObserver').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'MutationRecord').value is MutationRecord
+PASS Object.getOwnPropertyDescriptor(global, 'MutationRecord').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MutationRecord').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'MutationRecord').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'MutationRecord').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'NamedNodeMap').value is NamedNodeMap
+PASS Object.getOwnPropertyDescriptor(global, 'NamedNodeMap').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'NamedNodeMap').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'NamedNodeMap').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'NamedNodeMap').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Navigator').value is Navigator
+PASS Object.getOwnPropertyDescriptor(global, 'Navigator').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Navigator').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Navigator').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Navigator').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Node').value is Node
+PASS Object.getOwnPropertyDescriptor(global, 'Node').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Node').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Node').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Node').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'NodeFilter').value is NodeFilter
+PASS Object.getOwnPropertyDescriptor(global, 'NodeFilter').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'NodeFilter').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'NodeFilter').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'NodeFilter').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'NodeIterator').value is NodeIterator
+PASS Object.getOwnPropertyDescriptor(global, 'NodeIterator').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'NodeIterator').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'NodeIterator').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'NodeIterator').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'NodeList').value is NodeList
+PASS Object.getOwnPropertyDescriptor(global, 'NodeList').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'NodeList').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'NodeList').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'NodeList').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Notification').value is Notification
+PASS Object.getOwnPropertyDescriptor(global, 'Notification').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Notification').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Notification').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Notification').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'OfflineAudioCompletionEvent').value is OfflineAudioCompletionEvent
+PASS Object.getOwnPropertyDescriptor(global, 'OfflineAudioCompletionEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'OfflineAudioCompletionEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'OfflineAudioCompletionEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'OfflineAudioCompletionEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Option').value is Option
+PASS Object.getOwnPropertyDescriptor(global, 'Option').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Option').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Option').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Option').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'OscillatorNode').value is OscillatorNode
+PASS Object.getOwnPropertyDescriptor(global, 'OscillatorNode').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'OscillatorNode').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'OscillatorNode').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'OscillatorNode').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'OverflowEvent').value is OverflowEvent
+PASS Object.getOwnPropertyDescriptor(global, 'OverflowEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'OverflowEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'OverflowEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'OverflowEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'PageTransitionEvent').value is PageTransitionEvent
+PASS Object.getOwnPropertyDescriptor(global, 'PageTransitionEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PageTransitionEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PageTransitionEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PageTransitionEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Path2D').value is Path2D
+PASS Object.getOwnPropertyDescriptor(global, 'Path2D').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Path2D').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Path2D').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Path2D').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Performance').value is Performance
+PASS Object.getOwnPropertyDescriptor(global, 'Performance').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Performance').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Performance').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Performance').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').value is PerformanceNavigation
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceTiming').value is PerformanceTiming
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceTiming').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceTiming').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceTiming').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceTiming').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'PeriodicWave').value is PeriodicWave
+PASS Object.getOwnPropertyDescriptor(global, 'PeriodicWave').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PeriodicWave').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PeriodicWave').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PeriodicWave').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Plugin').value is Plugin
+PASS Object.getOwnPropertyDescriptor(global, 'Plugin').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Plugin').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Plugin').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Plugin').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'PluginArray').value is PluginArray
+PASS Object.getOwnPropertyDescriptor(global, 'PluginArray').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PluginArray').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PluginArray').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PluginArray').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'PopStateEvent').value is PopStateEvent
+PASS Object.getOwnPropertyDescriptor(global, 'PopStateEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PopStateEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PopStateEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PopStateEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'ProcessingInstruction').value is ProcessingInstruction
+PASS Object.getOwnPropertyDescriptor(global, 'ProcessingInstruction').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ProcessingInstruction').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ProcessingInstruction').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'ProcessingInstruction').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'ProgressEvent').value is ProgressEvent
+PASS Object.getOwnPropertyDescriptor(global, 'ProgressEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ProgressEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ProgressEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'ProgressEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'RGBColor').value is RGBColor
+PASS Object.getOwnPropertyDescriptor(global, 'RGBColor').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'RGBColor').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'RGBColor').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'RGBColor').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Range').value is Range
+PASS Object.getOwnPropertyDescriptor(global, 'Range').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Range').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Range').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Range').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'RangeException').value is RangeException
+PASS Object.getOwnPropertyDescriptor(global, 'RangeException').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'RangeException').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'RangeException').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'RangeException').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'ReadableStream').value is ReadableStream
+PASS Object.getOwnPropertyDescriptor(global, 'ReadableStream').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ReadableStream').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ReadableStream').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'ReadableStream').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Rect').value is Rect
+PASS Object.getOwnPropertyDescriptor(global, 'Rect').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Rect').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Rect').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Rect').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SQLException').value is SQLException
+PASS Object.getOwnPropertyDescriptor(global, 'SQLException').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SQLException').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SQLException').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SQLException').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAElement').value is SVGAElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAltGlyphDefElement').value is SVGAltGlyphDefElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAltGlyphDefElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAltGlyphDefElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAltGlyphDefElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAltGlyphDefElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAltGlyphElement').value is SVGAltGlyphElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAltGlyphElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAltGlyphElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAltGlyphElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAltGlyphElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAltGlyphItemElement').value is SVGAltGlyphItemElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAltGlyphItemElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAltGlyphItemElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAltGlyphItemElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAltGlyphItemElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAngle').value is SVGAngle
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAngle').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAngle').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAngle').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAngle').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimateColorElement').value is SVGAnimateColorElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimateColorElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimateColorElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimateColorElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimateColorElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimateElement').value is SVGAnimateElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimateElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimateElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimateElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimateElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimateMotionElement').value is SVGAnimateMotionElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimateMotionElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimateMotionElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimateMotionElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimateMotionElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimateTransformElement').value is SVGAnimateTransformElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimateTransformElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimateTransformElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimateTransformElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimateTransformElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedAngle').value is SVGAnimatedAngle
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedAngle').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedAngle').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedAngle').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedAngle').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedBoolean').value is SVGAnimatedBoolean
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedBoolean').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedBoolean').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedBoolean').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedBoolean').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedEnumeration').value is SVGAnimatedEnumeration
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedEnumeration').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedEnumeration').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedEnumeration').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedEnumeration').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedInteger').value is SVGAnimatedInteger
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedInteger').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedInteger').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedInteger').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedInteger').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedLength').value is SVGAnimatedLength
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedLength').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedLength').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedLength').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedLength').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedLengthList').value is SVGAnimatedLengthList
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedLengthList').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedLengthList').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedLengthList').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedLengthList').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedNumber').value is SVGAnimatedNumber
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedNumber').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedNumber').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedNumber').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedNumber').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedNumberList').value is SVGAnimatedNumberList
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedNumberList').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedNumberList').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedNumberList').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedNumberList').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedPreserveAspectRatio').value is SVGAnimatedPreserveAspectRatio
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedPreserveAspectRatio').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedPreserveAspectRatio').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedPreserveAspectRatio').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedPreserveAspectRatio').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedRect').value is SVGAnimatedRect
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedRect').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedRect').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedRect').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedRect').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedString').value is SVGAnimatedString
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedString').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedString').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedString').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedString').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedTransformList').value is SVGAnimatedTransformList
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedTransformList').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedTransformList').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedTransformList').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimatedTransformList').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimationElement').value is SVGAnimationElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimationElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimationElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimationElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGAnimationElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGCircleElement').value is SVGCircleElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGCircleElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGCircleElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGCircleElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGCircleElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGClipPathElement').value is SVGClipPathElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGClipPathElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGClipPathElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGClipPathElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGClipPathElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGColor').value is SVGColor
+PASS Object.getOwnPropertyDescriptor(global, 'SVGColor').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGColor').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGColor').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGColor').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGComponentTransferFunctionElement').value is SVGComponentTransferFunctionElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGComponentTransferFunctionElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGComponentTransferFunctionElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGComponentTransferFunctionElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGComponentTransferFunctionElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGCursorElement').value is SVGCursorElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGCursorElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGCursorElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGCursorElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGCursorElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGDefsElement').value is SVGDefsElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGDefsElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGDefsElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGDefsElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGDefsElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGDescElement').value is SVGDescElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGDescElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGDescElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGDescElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGDescElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGDocument').value is SVGDocument
+PASS Object.getOwnPropertyDescriptor(global, 'SVGDocument').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGDocument').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGDocument').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGDocument').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGElement').value is SVGElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGEllipseElement').value is SVGEllipseElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGEllipseElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGEllipseElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGEllipseElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGEllipseElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGException').value is SVGException
+PASS Object.getOwnPropertyDescriptor(global, 'SVGException').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGException').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGException').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGException').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEBlendElement').value is SVGFEBlendElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEBlendElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEBlendElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEBlendElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEBlendElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEColorMatrixElement').value is SVGFEColorMatrixElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEColorMatrixElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEColorMatrixElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEColorMatrixElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEColorMatrixElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEComponentTransferElement').value is SVGFEComponentTransferElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEComponentTransferElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEComponentTransferElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEComponentTransferElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEComponentTransferElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFECompositeElement').value is SVGFECompositeElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFECompositeElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFECompositeElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFECompositeElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFECompositeElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEConvolveMatrixElement').value is SVGFEConvolveMatrixElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEConvolveMatrixElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEConvolveMatrixElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEConvolveMatrixElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEConvolveMatrixElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEDiffuseLightingElement').value is SVGFEDiffuseLightingElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEDiffuseLightingElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEDiffuseLightingElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEDiffuseLightingElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEDiffuseLightingElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEDisplacementMapElement').value is SVGFEDisplacementMapElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEDisplacementMapElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEDisplacementMapElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEDisplacementMapElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEDisplacementMapElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEDistantLightElement').value is SVGFEDistantLightElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEDistantLightElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEDistantLightElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEDistantLightElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEDistantLightElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEDropShadowElement').value is SVGFEDropShadowElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEDropShadowElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEDropShadowElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEDropShadowElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEDropShadowElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEFloodElement').value is SVGFEFloodElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEFloodElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEFloodElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEFloodElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEFloodElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEFuncAElement').value is SVGFEFuncAElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEFuncAElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEFuncAElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEFuncAElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEFuncAElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEFuncBElement').value is SVGFEFuncBElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEFuncBElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEFuncBElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEFuncBElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEFuncBElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEFuncGElement').value is SVGFEFuncGElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEFuncGElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEFuncGElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEFuncGElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEFuncGElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEFuncRElement').value is SVGFEFuncRElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEFuncRElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEFuncRElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEFuncRElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEFuncRElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEGaussianBlurElement').value is SVGFEGaussianBlurElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEGaussianBlurElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEGaussianBlurElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEGaussianBlurElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEGaussianBlurElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEImageElement').value is SVGFEImageElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEImageElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEImageElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEImageElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEImageElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEMergeElement').value is SVGFEMergeElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEMergeElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEMergeElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEMergeElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEMergeElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEMergeNodeElement').value is SVGFEMergeNodeElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEMergeNodeElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEMergeNodeElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEMergeNodeElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEMergeNodeElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEMorphologyElement').value is SVGFEMorphologyElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEMorphologyElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEMorphologyElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEMorphologyElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEMorphologyElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEOffsetElement').value is SVGFEOffsetElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEOffsetElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEOffsetElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEOffsetElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEOffsetElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEPointLightElement').value is SVGFEPointLightElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEPointLightElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEPointLightElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEPointLightElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFEPointLightElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFESpecularLightingElement').value is SVGFESpecularLightingElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFESpecularLightingElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFESpecularLightingElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFESpecularLightingElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFESpecularLightingElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFESpotLightElement').value is SVGFESpotLightElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFESpotLightElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFESpotLightElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFESpotLightElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFESpotLightElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFETileElement').value is SVGFETileElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFETileElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFETileElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFETileElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFETileElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFETurbulenceElement').value is SVGFETurbulenceElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFETurbulenceElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFETurbulenceElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFETurbulenceElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFETurbulenceElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFilterElement').value is SVGFilterElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFilterElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFilterElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFilterElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFilterElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontElement').value is SVGFontElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontFaceElement').value is SVGFontFaceElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontFaceElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontFaceElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontFaceElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontFaceElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontFaceFormatElement').value is SVGFontFaceFormatElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontFaceFormatElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontFaceFormatElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontFaceFormatElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontFaceFormatElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontFaceNameElement').value is SVGFontFaceNameElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontFaceNameElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontFaceNameElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontFaceNameElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontFaceNameElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontFaceSrcElement').value is SVGFontFaceSrcElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontFaceSrcElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontFaceSrcElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontFaceSrcElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontFaceSrcElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontFaceUriElement').value is SVGFontFaceUriElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontFaceUriElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontFaceUriElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontFaceUriElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGFontFaceUriElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGForeignObjectElement').value is SVGForeignObjectElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGForeignObjectElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGForeignObjectElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGForeignObjectElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGForeignObjectElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGGElement').value is SVGGElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGGElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGGElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGGElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGGElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGGlyphElement').value is SVGGlyphElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGGlyphElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGGlyphElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGGlyphElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGGlyphElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGGlyphRefElement').value is SVGGlyphRefElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGGlyphRefElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGGlyphRefElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGGlyphRefElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGGlyphRefElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGGradientElement').value is SVGGradientElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGGradientElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGGradientElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGGradientElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGGradientElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGGraphicsElement').value is SVGGraphicsElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGGraphicsElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGGraphicsElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGGraphicsElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGGraphicsElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGHKernElement').value is SVGHKernElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGHKernElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGHKernElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGHKernElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGHKernElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGImageElement').value is SVGImageElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGImageElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGImageElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGImageElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGImageElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGLength').value is SVGLength
+PASS Object.getOwnPropertyDescriptor(global, 'SVGLength').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGLength').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGLength').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGLength').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGLengthList').value is SVGLengthList
+PASS Object.getOwnPropertyDescriptor(global, 'SVGLengthList').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGLengthList').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGLengthList').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGLengthList').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGLineElement').value is SVGLineElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGLineElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGLineElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGLineElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGLineElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGLinearGradientElement').value is SVGLinearGradientElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGLinearGradientElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGLinearGradientElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGLinearGradientElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGLinearGradientElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMPathElement').value is SVGMPathElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMPathElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMPathElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMPathElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMPathElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMarkerElement').value is SVGMarkerElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMarkerElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMarkerElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMarkerElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMarkerElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMaskElement').value is SVGMaskElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMaskElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMaskElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMaskElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMaskElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMatrix').value is SVGMatrix
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMatrix').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMatrix').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMatrix').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMatrix').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMetadataElement').value is SVGMetadataElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMetadataElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMetadataElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMetadataElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMetadataElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMissingGlyphElement').value is SVGMissingGlyphElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMissingGlyphElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMissingGlyphElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMissingGlyphElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGMissingGlyphElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGNumber').value is SVGNumber
+PASS Object.getOwnPropertyDescriptor(global, 'SVGNumber').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGNumber').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGNumber').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGNumber').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGNumberList').value is SVGNumberList
+PASS Object.getOwnPropertyDescriptor(global, 'SVGNumberList').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGNumberList').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGNumberList').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGNumberList').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPaint').value is SVGPaint
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPaint').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPaint').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPaint').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPaint').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathElement').value is SVGPathElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSeg').value is SVGPathSeg
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSeg').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSeg').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSeg').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSeg').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegArcAbs').value is SVGPathSegArcAbs
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegArcAbs').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegArcAbs').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegArcAbs').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegArcAbs').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegArcRel').value is SVGPathSegArcRel
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegArcRel').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegArcRel').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegArcRel').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegArcRel').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegClosePath').value is SVGPathSegClosePath
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegClosePath').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegClosePath').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegClosePath').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegClosePath').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoCubicAbs').value is SVGPathSegCurvetoCubicAbs
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoCubicAbs').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoCubicAbs').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoCubicAbs').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoCubicAbs').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoCubicRel').value is SVGPathSegCurvetoCubicRel
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoCubicRel').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoCubicRel').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoCubicRel').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoCubicRel').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoCubicSmoothAbs').value is SVGPathSegCurvetoCubicSmoothAbs
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoCubicSmoothAbs').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoCubicSmoothAbs').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoCubicSmoothAbs').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoCubicSmoothAbs').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoCubicSmoothRel').value is SVGPathSegCurvetoCubicSmoothRel
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoCubicSmoothRel').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoCubicSmoothRel').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoCubicSmoothRel').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoCubicSmoothRel').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoQuadraticAbs').value is SVGPathSegCurvetoQuadraticAbs
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoQuadraticAbs').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoQuadraticAbs').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoQuadraticAbs').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoQuadraticAbs').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoQuadraticRel').value is SVGPathSegCurvetoQuadraticRel
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoQuadraticRel').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoQuadraticRel').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoQuadraticRel').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoQuadraticRel').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoQuadraticSmoothAbs').value is SVGPathSegCurvetoQuadraticSmoothAbs
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoQuadraticSmoothAbs').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoQuadraticSmoothAbs').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoQuadraticSmoothAbs').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoQuadraticSmoothAbs').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoQuadraticSmoothRel').value is SVGPathSegCurvetoQuadraticSmoothRel
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoQuadraticSmoothRel').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoQuadraticSmoothRel').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoQuadraticSmoothRel').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegCurvetoQuadraticSmoothRel').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoAbs').value is SVGPathSegLinetoAbs
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoAbs').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoAbs').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoAbs').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoAbs').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoHorizontalAbs').value is SVGPathSegLinetoHorizontalAbs
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoHorizontalAbs').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoHorizontalAbs').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoHorizontalAbs').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoHorizontalAbs').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoHorizontalRel').value is SVGPathSegLinetoHorizontalRel
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoHorizontalRel').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoHorizontalRel').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoHorizontalRel').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoHorizontalRel').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoRel').value is SVGPathSegLinetoRel
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoRel').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoRel').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoRel').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoRel').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoVerticalAbs').value is SVGPathSegLinetoVerticalAbs
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoVerticalAbs').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoVerticalAbs').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoVerticalAbs').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoVerticalAbs').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoVerticalRel').value is SVGPathSegLinetoVerticalRel
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoVerticalRel').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoVerticalRel').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoVerticalRel').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegLinetoVerticalRel').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegList').value is SVGPathSegList
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegList').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegList').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegList').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegList').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegMovetoAbs').value is SVGPathSegMovetoAbs
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegMovetoAbs').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegMovetoAbs').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegMovetoAbs').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegMovetoAbs').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegMovetoRel').value is SVGPathSegMovetoRel
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegMovetoRel').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegMovetoRel').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegMovetoRel').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPathSegMovetoRel').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPatternElement').value is SVGPatternElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPatternElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPatternElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPatternElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPatternElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPoint').value is SVGPoint
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPoint').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPoint').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPoint').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPoint').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPointList').value is SVGPointList
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPointList').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPointList').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPointList').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPointList').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPolygonElement').value is SVGPolygonElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPolygonElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPolygonElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPolygonElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPolygonElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPolylineElement').value is SVGPolylineElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPolylineElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPolylineElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPolylineElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPolylineElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPreserveAspectRatio').value is SVGPreserveAspectRatio
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPreserveAspectRatio').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPreserveAspectRatio').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPreserveAspectRatio').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGPreserveAspectRatio').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGRadialGradientElement').value is SVGRadialGradientElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGRadialGradientElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGRadialGradientElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGRadialGradientElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGRadialGradientElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGRect').value is SVGRect
+PASS Object.getOwnPropertyDescriptor(global, 'SVGRect').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGRect').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGRect').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGRect').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGRectElement').value is SVGRectElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGRectElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGRectElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGRectElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGRectElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGRenderingIntent').value is SVGRenderingIntent
+PASS Object.getOwnPropertyDescriptor(global, 'SVGRenderingIntent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGRenderingIntent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGRenderingIntent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGRenderingIntent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGSVGElement').value is SVGSVGElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGSVGElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGSVGElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGSVGElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGSVGElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGScriptElement').value is SVGScriptElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGScriptElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGScriptElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGScriptElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGScriptElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGSetElement').value is SVGSetElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGSetElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGSetElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGSetElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGSetElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGStopElement').value is SVGStopElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGStopElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGStopElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGStopElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGStopElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGStringList').value is SVGStringList
+PASS Object.getOwnPropertyDescriptor(global, 'SVGStringList').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGStringList').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGStringList').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGStringList').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGStyleElement').value is SVGStyleElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGStyleElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGStyleElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGStyleElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGStyleElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGSwitchElement').value is SVGSwitchElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGSwitchElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGSwitchElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGSwitchElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGSwitchElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGSymbolElement').value is SVGSymbolElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGSymbolElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGSymbolElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGSymbolElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGSymbolElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTRefElement').value is SVGTRefElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTRefElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTRefElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTRefElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTRefElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTSpanElement').value is SVGTSpanElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTSpanElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTSpanElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTSpanElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTSpanElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTextContentElement').value is SVGTextContentElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTextContentElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTextContentElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTextContentElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTextContentElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTextElement').value is SVGTextElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTextElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTextElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTextElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTextElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTextPathElement').value is SVGTextPathElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTextPathElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTextPathElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTextPathElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTextPathElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTextPositioningElement').value is SVGTextPositioningElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTextPositioningElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTextPositioningElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTextPositioningElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTextPositioningElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTitleElement').value is SVGTitleElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTitleElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTitleElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTitleElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTitleElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTransform').value is SVGTransform
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTransform').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTransform').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTransform').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTransform').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTransformList').value is SVGTransformList
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTransformList').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTransformList').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTransformList').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGTransformList').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGUnitTypes').value is SVGUnitTypes
+PASS Object.getOwnPropertyDescriptor(global, 'SVGUnitTypes').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGUnitTypes').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGUnitTypes').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGUnitTypes').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGUseElement').value is SVGUseElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGUseElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGUseElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGUseElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGUseElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGVKernElement').value is SVGVKernElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGVKernElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGVKernElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGVKernElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGVKernElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGViewElement').value is SVGViewElement
+PASS Object.getOwnPropertyDescriptor(global, 'SVGViewElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGViewElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGViewElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGViewElement').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGViewSpec').value is SVGViewSpec
+PASS Object.getOwnPropertyDescriptor(global, 'SVGViewSpec').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGViewSpec').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGViewSpec').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGViewSpec').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SVGZoomEvent').value is SVGZoomEvent
+PASS Object.getOwnPropertyDescriptor(global, 'SVGZoomEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGZoomEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGZoomEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SVGZoomEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Screen').value is Screen
+PASS Object.getOwnPropertyDescriptor(global, 'Screen').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Screen').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Screen').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Screen').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'ScriptProcessorNode').value is ScriptProcessorNode
+PASS Object.getOwnPropertyDescriptor(global, 'ScriptProcessorNode').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ScriptProcessorNode').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ScriptProcessorNode').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'ScriptProcessorNode').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Selection').value is Selection
+PASS Object.getOwnPropertyDescriptor(global, 'Selection').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Selection').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Selection').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Selection').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SpeechSynthesisEvent').value is SpeechSynthesisEvent
+PASS Object.getOwnPropertyDescriptor(global, 'SpeechSynthesisEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SpeechSynthesisEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SpeechSynthesisEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SpeechSynthesisEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'SpeechSynthesisUtterance').value is SpeechSynthesisUtterance
+PASS Object.getOwnPropertyDescriptor(global, 'SpeechSynthesisUtterance').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SpeechSynthesisUtterance').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'SpeechSynthesisUtterance').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'SpeechSynthesisUtterance').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Storage').value is Storage
+PASS Object.getOwnPropertyDescriptor(global, 'Storage').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Storage').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Storage').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Storage').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'StorageEvent').value is StorageEvent
+PASS Object.getOwnPropertyDescriptor(global, 'StorageEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'StorageEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'StorageEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'StorageEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'StyleSheet').value is StyleSheet
+PASS Object.getOwnPropertyDescriptor(global, 'StyleSheet').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'StyleSheet').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'StyleSheet').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'StyleSheet').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'StyleSheetList').value is StyleSheetList
+PASS Object.getOwnPropertyDescriptor(global, 'StyleSheetList').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'StyleSheetList').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'StyleSheetList').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'StyleSheetList').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Text').value is Text
+PASS Object.getOwnPropertyDescriptor(global, 'Text').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Text').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Text').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Text').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'TextEvent').value is TextEvent
+PASS Object.getOwnPropertyDescriptor(global, 'TextEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'TextEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'TextEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'TextEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'TextMetrics').value is TextMetrics
+PASS Object.getOwnPropertyDescriptor(global, 'TextMetrics').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'TextMetrics').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'TextMetrics').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'TextMetrics').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'TextTrack').value is TextTrack
+PASS Object.getOwnPropertyDescriptor(global, 'TextTrack').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'TextTrack').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'TextTrack').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'TextTrack').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'TextTrackCue').value is TextTrackCue
+PASS Object.getOwnPropertyDescriptor(global, 'TextTrackCue').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'TextTrackCue').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'TextTrackCue').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'TextTrackCue').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'TextTrackCueList').value is TextTrackCueList
+PASS Object.getOwnPropertyDescriptor(global, 'TextTrackCueList').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'TextTrackCueList').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'TextTrackCueList').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'TextTrackCueList').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'TextTrackList').value is TextTrackList
+PASS Object.getOwnPropertyDescriptor(global, 'TextTrackList').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'TextTrackList').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'TextTrackList').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'TextTrackList').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'TimeRanges').value is TimeRanges
+PASS Object.getOwnPropertyDescriptor(global, 'TimeRanges').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'TimeRanges').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'TimeRanges').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'TimeRanges').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'TrackEvent').value is TrackEvent
+PASS Object.getOwnPropertyDescriptor(global, 'TrackEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'TrackEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'TrackEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'TrackEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'TransitionEvent').value is TransitionEvent
+PASS Object.getOwnPropertyDescriptor(global, 'TransitionEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'TransitionEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'TransitionEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'TransitionEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'TreeWalker').value is TreeWalker
+PASS Object.getOwnPropertyDescriptor(global, 'TreeWalker').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'TreeWalker').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'TreeWalker').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'TreeWalker').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'UIEvent').value is UIEvent
+PASS Object.getOwnPropertyDescriptor(global, 'UIEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'UIEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'UIEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'UIEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'UIRequestEvent').value is UIRequestEvent
+PASS Object.getOwnPropertyDescriptor(global, 'UIRequestEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'UIRequestEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'UIRequestEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'UIRequestEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'URL').value is URL
+PASS Object.getOwnPropertyDescriptor(global, 'URL').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'URL').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'URL').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'URL').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'UserMessageHandler').value is UserMessageHandler
+PASS Object.getOwnPropertyDescriptor(global, 'UserMessageHandler').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'UserMessageHandler').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'UserMessageHandler').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'UserMessageHandler').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'UserMessageHandlersNamespace').value is UserMessageHandlersNamespace
+PASS Object.getOwnPropertyDescriptor(global, 'UserMessageHandlersNamespace').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'UserMessageHandlersNamespace').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'UserMessageHandlersNamespace').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'UserMessageHandlersNamespace').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'VTTCue').value is VTTCue
+PASS Object.getOwnPropertyDescriptor(global, 'VTTCue').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'VTTCue').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'VTTCue').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'VTTCue').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'VTTRegion').value is VTTRegion
+PASS Object.getOwnPropertyDescriptor(global, 'VTTRegion').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'VTTRegion').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'VTTRegion').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'VTTRegion').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WaveShaperNode').value is WaveShaperNode
+PASS Object.getOwnPropertyDescriptor(global, 'WaveShaperNode').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WaveShaperNode').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WaveShaperNode').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WaveShaperNode').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebGL2RenderingContext').value is WebGL2RenderingContext
+PASS Object.getOwnPropertyDescriptor(global, 'WebGL2RenderingContext').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGL2RenderingContext').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGL2RenderingContext').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGL2RenderingContext').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLActiveInfo').value is WebGLActiveInfo
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLActiveInfo').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLActiveInfo').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLActiveInfo').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLActiveInfo').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLBuffer').value is WebGLBuffer
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLBuffer').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLBuffer').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLBuffer').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLBuffer').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLContextEvent').value is WebGLContextEvent
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLContextEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLContextEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLContextEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLContextEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLFramebuffer').value is WebGLFramebuffer
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLFramebuffer').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLFramebuffer').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLFramebuffer').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLFramebuffer').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLProgram').value is WebGLProgram
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLProgram').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLProgram').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLProgram').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLProgram').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLQuery').value is WebGLQuery
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLQuery').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLQuery').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLQuery').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLQuery').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLRenderbuffer').value is WebGLRenderbuffer
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLRenderbuffer').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLRenderbuffer').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLRenderbuffer').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLRenderbuffer').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLRenderingContext').value is WebGLRenderingContext
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLRenderingContext').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLRenderingContext').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLRenderingContext').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLRenderingContext').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLSampler').value is WebGLSampler
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLSampler').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLSampler').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLSampler').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLSampler').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLShader').value is WebGLShader
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLShader').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLShader').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLShader').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLShader').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLShaderPrecisionFormat').value is WebGLShaderPrecisionFormat
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLShaderPrecisionFormat').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLShaderPrecisionFormat').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLShaderPrecisionFormat').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLShaderPrecisionFormat').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLSync').value is WebGLSync
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLSync').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLSync').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLSync').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLSync').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLTexture').value is WebGLTexture
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLTexture').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLTexture').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLTexture').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLTexture').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLTransformFeedback').value is WebGLTransformFeedback
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLTransformFeedback').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLTransformFeedback').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLTransformFeedback').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLTransformFeedback').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLUniformLocation').value is WebGLUniformLocation
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLUniformLocation').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLUniformLocation').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLUniformLocation').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLUniformLocation').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLVertexArrayObject').value is WebGLVertexArrayObject
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLVertexArrayObject').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLVertexArrayObject').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLVertexArrayObject').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebGLVertexArrayObject').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').value is WebKitAnimationEvent
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').value is WebKitCSSFilterValue
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').value is WebKitCSSMatrix
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSRegionRule').value is WebKitCSSRegionRule
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSRegionRule').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSRegionRule').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSRegionRule').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSRegionRule').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSTransformValue').value is WebKitCSSTransformValue
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSTransformValue').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSTransformValue').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSTransformValue').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSTransformValue').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').value is WebKitDataCue
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitMediaKeyError').value is WebKitMediaKeyError
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitMediaKeyError').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitMediaKeyError').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitMediaKeyError').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitMediaKeyError').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitMediaKeyMessageEvent').value is WebKitMediaKeyMessageEvent
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitMediaKeyMessageEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitMediaKeyMessageEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitMediaKeyMessageEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitMediaKeyMessageEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitMediaKeySession').value is WebKitMediaKeySession
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitMediaKeySession').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitMediaKeySession').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitMediaKeySession').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitMediaKeySession').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitMediaKeys').value is WebKitMediaKeys
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitMediaKeys').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitMediaKeys').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitMediaKeys').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitMediaKeys').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitMutationObserver').value is WebKitMutationObserver
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitMutationObserver').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitMutationObserver').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitMutationObserver').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitMutationObserver').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitNamespace').value is WebKitNamespace
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitNamespace').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitNamespace').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitNamespace').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitNamespace').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitPoint').value is WebKitPoint
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitPoint').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitPoint').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitPoint').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitPoint').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitTransitionEvent').value is WebKitTransitionEvent
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitTransitionEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitTransitionEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitTransitionEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitTransitionEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WebSocket').value is WebSocket
+PASS Object.getOwnPropertyDescriptor(global, 'WebSocket').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebSocket').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebSocket').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebSocket').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'WheelEvent').value is WheelEvent
+PASS Object.getOwnPropertyDescriptor(global, 'WheelEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WheelEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WheelEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WheelEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Window').value is Window
+PASS Object.getOwnPropertyDescriptor(global, 'Window').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Window').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Window').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Window').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Worker').value is Worker
+PASS Object.getOwnPropertyDescriptor(global, 'Worker').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Worker').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Worker').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Worker').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'XMLDocument').value is XMLDocument
+PASS Object.getOwnPropertyDescriptor(global, 'XMLDocument').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'XMLDocument').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'XMLDocument').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'XMLDocument').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequest').value is XMLHttpRequest
+PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequest').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequest').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequest').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequest').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequestException').value is XMLHttpRequestException
+PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequestException').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequestException').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequestException').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequestException').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequestProgressEvent').value is XMLHttpRequestProgressEvent
+PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequestProgressEvent').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequestProgressEvent').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequestProgressEvent').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequestProgressEvent').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequestUpload').value is XMLHttpRequestUpload
+PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequestUpload').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequestUpload').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequestUpload').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequestUpload').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'XMLSerializer').value is XMLSerializer
+PASS Object.getOwnPropertyDescriptor(global, 'XMLSerializer').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'XMLSerializer').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'XMLSerializer').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'XMLSerializer').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'XPathEvaluator').value is XPathEvaluator
+PASS Object.getOwnPropertyDescriptor(global, 'XPathEvaluator').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'XPathEvaluator').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'XPathEvaluator').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'XPathEvaluator').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'XPathException').value is XPathException
+PASS Object.getOwnPropertyDescriptor(global, 'XPathException').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'XPathException').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'XPathException').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'XPathException').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'XPathExpression').value is XPathExpression
+PASS Object.getOwnPropertyDescriptor(global, 'XPathExpression').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'XPathExpression').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'XPathExpression').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'XPathExpression').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'XPathResult').value is XPathResult
+PASS Object.getOwnPropertyDescriptor(global, 'XPathResult').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'XPathResult').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'XPathResult').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'XPathResult').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'XSLTProcessor').value is XSLTProcessor
+PASS Object.getOwnPropertyDescriptor(global, 'XSLTProcessor').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'XSLTProcessor').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'XSLTProcessor').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'XSLTProcessor').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'webkitAudioContext').value is webkitAudioContext
+PASS Object.getOwnPropertyDescriptor(global, 'webkitAudioContext').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'webkitAudioContext').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'webkitAudioContext').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'webkitAudioContext').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'webkitAudioPannerNode').value is webkitAudioPannerNode
+PASS Object.getOwnPropertyDescriptor(global, 'webkitAudioPannerNode').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'webkitAudioPannerNode').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'webkitAudioPannerNode').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'webkitAudioPannerNode').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'webkitOfflineAudioContext').value is webkitOfflineAudioContext
+PASS Object.getOwnPropertyDescriptor(global, 'webkitOfflineAudioContext').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'webkitOfflineAudioContext').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'webkitOfflineAudioContext').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'webkitOfflineAudioContext').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'webkitURL').value is webkitURL
+PASS Object.getOwnPropertyDescriptor(global, 'webkitURL').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'webkitURL').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'webkitURL').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'webkitURL').configurable is true
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
index 0cda4e3..2e0ebd7 100644 (file)
@@ -242,6 +242,10 @@ http/tests/security/no-indexeddb-from-sandbox.html [ Skip ]
 crypto/subtle/rsa-indexeddb.html [ Skip ]
 fast/history/page-cache-indexed-closed-db.html [ Skip ]
 fast/history/page-cache-indexed-opened-db.html [ Skip ]
+
+# But since it is disabled at runtime, we should make sure it is correctly disabled
+storage/indexeddb/properties-disabled-at-runtime.html [ Pass ]
+
 fast/history/page-cache-webdatabase-no-transaction-db.html [ Skip ]
 fast/history/page-cache-webdatabase-pending-transaction.html [ Skip ]
 
index 52e72db..bd69cf9 100644 (file)
@@ -678,6 +678,9 @@ fast/events/drag-display-none-element.html
 # Skip tests in fast/text/shaping
 fast/text/shaping
 
+# WebKit2 should always have IndexedDB enabled
+storage/indexeddb/properties-disabled-at-runtime.html [ Skip ]
+
 ### END OF (4) Features that are not supported in WebKit2 and likely never will be
 ########################################
 
diff --git a/LayoutTests/storage/indexeddb/properties-disabled-at-runtime-expected.txt b/LayoutTests/storage/indexeddb/properties-disabled-at-runtime-expected.txt
new file mode 100644 (file)
index 0000000..f3301aa
--- /dev/null
@@ -0,0 +1,37 @@
+ALERT: undefined
+ALERT: 1
+ALERT: undefined
+ALERT: 2
+ALERT: undefined
+ALERT: 3
+ALERT: undefined
+ALERT: 4
+ALERT: undefined
+ALERT: 5
+ALERT: undefined
+ALERT: 6
+ALERT: undefined
+ALERT: 7
+ALERT: undefined
+ALERT: 8
+ALERT: undefined
+ALERT: 9
+ALERT: undefined
+ALERT: 10
+ALERT: undefined
+ALERT: 11
+ALERT: undefined
+ALERT: 12
+ALERT: undefined
+ALERT: 13
+ALERT: undefined
+ALERT: 14
+ALERT: undefined
+ALERT: 15
+ALERT: undefined
+ALERT: 16
+ALERT: undefined
+ALERT: 17
+ALERT: undefined
+ALERT: 18
+This test makes sure objects/properties related to IndexedDatabase are both undefined and read/write when the feature is disabled at runtime.
diff --git a/LayoutTests/storage/indexeddb/properties-disabled-at-runtime.html b/LayoutTests/storage/indexeddb/properties-disabled-at-runtime.html
new file mode 100644 (file)
index 0000000..c31001d
--- /dev/null
@@ -0,0 +1,81 @@
+<script>
+if (window.testRunner)
+    testRunner.dumpAsText();
+
+var counter = 1;
+
+alert(window.indexedDB);
+window.indexedDB = counter++; 
+alert(window.indexedDB);
+
+alert(window.webkitIndexedDB);
+window.webkitIndexedDB = counter++; 
+alert(window.webkitIndexedDB);
+
+alert(window.IDBCursorConstructor);
+window.IDBCursorConstructor = counter++; 
+alert(window.IDBCursorConstructor);
+
+alert(window.IDBDatabaseConstructor);
+window.IDBDatabaseConstructor = counter++; 
+alert(window.IDBDatabaseConstructor);
+
+alert(window.IDBFactoryConstructor);
+window.IDBFactoryConstructor = counter++; 
+alert(window.IDBFactoryConstructor);
+
+alert(window.IDBIndexConstructor);
+window.IDBIndexConstructor = counter++; 
+alert(window.IDBIndexConstructor);
+
+alert(window.IDBKeyRangeConstructor);
+window.IDBKeyRangeConstructor = counter++; 
+alert(window.IDBKeyRangeConstructor);
+
+alert(window.IDBObjectStoreConstructor);
+window.IDBObjectStoreConstructor = counter++; 
+alert(window.IDBObjectStoreConstructor);
+
+alert(window.IDBRequestConstructor);
+window.IDBRequestConstructor = counter++; 
+alert(window.IDBRequestConstructor);
+
+alert(window.IDBTransactionConstructor);
+window.IDBTransactionConstructor = counter++; 
+alert(window.IDBTransactionConstructor);
+
+alert(window.webkitIDBCursorConstructor);
+window.webkitIDBCursorConstructor = counter++; 
+alert(window.webkitIDBCursorConstructor);
+
+alert(window.webkitIDBDatabaseConstructor);
+window.webkitIDBDatabaseConstructor = counter++; 
+alert(window.webkitIDBDatabaseConstructor);
+
+alert(window.webkitIDBFactoryConstructor);
+window.webkitIDBFactoryConstructor = counter++; 
+alert(window.webkitIDBFactoryConstructor);
+
+alert(window.webkitIDBIndexConstructor);
+window.webkitIDBIndexConstructor = counter++; 
+alert(window.webkitIDBIndexConstructor);
+
+alert(window.webkitIDBKeyRangeConstructor);
+window.webkitIDBKeyRangeConstructor = counter++; 
+alert(window.webkitIDBKeyRangeConstructor);
+
+alert(window.webkitIDBObjectStoreConstructor);
+window.webkitIDBObjectStoreConstructor = counter++; 
+alert(window.webkitIDBObjectStoreConstructor);
+
+alert(window.webkitIDBRequestConstructor);
+window.webkitIDBRequestConstructor = counter++; 
+alert(window.webkitIDBRequestConstructor);
+
+alert(window.webkitIDBTransactionConstructor);
+window.webkitIDBTransactionConstructor = counter++; 
+alert(window.webkitIDBTransactionConstructor);
+</script>
+<body>
+This test makes sure objects/properties related to IndexedDatabase are both undefined and read/write when the feature is disabled at runtime.
+</body>
index 60d5232..17e6ae7 100644 (file)
@@ -1,3 +1,12 @@
+2015-06-08  Brady Eidson  <beidson@apple.com>
+
+        Completely remove all IDB properties/constructors when it is disabled at runtime.
+        rdar://problem/18429374 and https://bugs.webkit.org/show_bug.cgi?id=137034
+
+        Reviewed by Geoffrey Garen.
+
+        * runtime/CommonIdentifiers.h:
+
 2015-06-06  Mark Lam  <mark.lam@apple.com>
 
         Returned Exception* values need to be initialized to nullptr when no exceptions are thrown.
index 4d6c5da..8dabe0c 100644 (file)
     macro(id) \
     macro(ignoreCase) \
     macro(index) \
+    macro(indexedDB) \
     macro(inferredName) \
     macro(input) \
     macro(instructionCount) \
     macro(valueOf) \
     macro(values) \
     macro(webkit) \
+    macro(webkitIndexedDB) \
     macro(window) \
     macro(writable)
 
index 8620334..9bce818 100644 (file)
@@ -1,3 +1,35 @@
+2015-06-08  Brady Eidson  <beidson@apple.com>
+
+        Completely remove all IDB properties/constructors when it is disabled at runtime.
+        rdar://problem/18429374 and https://bugs.webkit.org/show_bug.cgi?id=137034
+
+        Reviewed by Geoffrey Garen.
+
+        Test: storage/indexeddb/properties-disabled-at-runtime.html
+
+        - Make constructors all runtime enabled.
+        - Remove autogeneration of the window.(webkit)indexedDB accessors.
+        - Add manual overrides for the (webkit)indexedDB accessors at runtime.
+        
+        * Modules/indexeddb/DOMWindowIndexedDatabase.idl:
+        * Modules/indexeddb/IDBAny.idl:
+        * Modules/indexeddb/IDBCursor.idl:
+        * Modules/indexeddb/IDBCursorWithValue.idl:
+        * Modules/indexeddb/IDBDatabase.idl:
+        * Modules/indexeddb/IDBFactory.idl:
+        * Modules/indexeddb/IDBIndex.idl:
+        * Modules/indexeddb/IDBKeyRange.idl:
+        * Modules/indexeddb/IDBObjectStore.idl:
+        * Modules/indexeddb/IDBOpenDBRequest.idl:
+        * Modules/indexeddb/IDBRequest.idl:
+        * Modules/indexeddb/IDBTransaction.idl:
+        * Modules/indexeddb/IDBVersionChangeEvent.idl:
+        * page/DOMWindow.idl:
+
+        * bindings/js/JSDOMWindowCustom.cpp:
+        (WebCore::jsDOMWindowIndexedDB):
+        (WebCore::JSDOMWindow::getOwnPropertySlot):
+
 2015-06-08  Michael Catanzaro  <mcatanzaro@igalia.com>
 
         [SOUP] Performs DNS prefetch when a proxy is configured (information leak)
index 2c2795e..d1b0203 100644 (file)
@@ -27,8 +27,6 @@
 [
     Conditional=INDEXED_DATABASE,
 ] partial interface DOMWindow {
-    [ImplementedAs=indexedDB] readonly attribute IDBFactory webkitIndexedDB;
-
-    readonly attribute IDBFactory indexedDB;
+    // This space is intentionally left blank.
 };
 
index 49111b4..24eed79 100644 (file)
@@ -27,6 +27,7 @@
     NoInterfaceObject,
     Conditional=INDEXED_DATABASE,
     CustomToJSObject,
+    EnabledAtRuntime=IndexedDB,
 ] interface IDBAny {
     // This space is intentionally left blank.
 };
index 983dbf0..a507121 100644 (file)
@@ -25,6 +25,7 @@
 
 [
     Conditional=INDEXED_DATABASE,
+    EnabledAtRuntime=IndexedDB,
 ] interface IDBCursor {
     readonly attribute IDBAny source;
     readonly attribute DOMString direction;
index e0e9b14..246dc06 100644 (file)
@@ -25,6 +25,7 @@
 
 [
     Conditional=INDEXED_DATABASE,
+    EnabledAtRuntime=IndexedDB,
 ] interface IDBCursorWithValue : IDBCursor {
     readonly attribute any value;
 };
index b786dc2..ed98fed 100644 (file)
@@ -30,6 +30,7 @@
     EventTarget,
     JSGenerateToJSObject,
     JSGenerateToNativeObject,
+    EnabledAtRuntime=IndexedDB,
 ] interface IDBDatabase : EventTarget {
     readonly attribute DOMString name;
     readonly attribute unsigned long long version;
index a144808..8527322 100644 (file)
@@ -26,6 +26,7 @@
 [
     Conditional=INDEXED_DATABASE,
     ImplementationLacksVTable,
+    EnabledAtRuntime=IndexedDB,
 ] interface IDBFactory {
     [CallWith=ScriptExecutionContext, RaisesException] IDBOpenDBRequest open(DOMString name, [EnforceRange] optional unsigned long long version);
     [CallWith=ScriptExecutionContext, RaisesException] IDBOpenDBRequest deleteDatabase(DOMString name);
index 9e35c37..c75be70 100644 (file)
@@ -26,6 +26,7 @@
 [
     Conditional=INDEXED_DATABASE,
     ImplementationLacksVTable,
+    EnabledAtRuntime=IndexedDB,
 ] interface IDBIndex {
     readonly attribute DOMString name;
     readonly attribute IDBObjectStore objectStore;
index 77d16ed..f0600ff 100644 (file)
@@ -26,6 +26,7 @@
 [
     Conditional=INDEXED_DATABASE,
     ImplementationLacksVTable,
+    EnabledAtRuntime=IndexedDB,
 ] interface IDBKeyRange {
     [ImplementedAs=lowerValue,CallWith=ScriptExecutionContext] readonly attribute any lower;
     [ImplementedAs=upperValue,CallWith=ScriptExecutionContext] readonly attribute any upper;
index 6834937..fdfca8a 100644 (file)
@@ -26,6 +26,7 @@
 [
     Conditional=INDEXED_DATABASE,
     ImplementationLacksVTable,
+    EnabledAtRuntime=IndexedDB,
 ] interface IDBObjectStore {
     [TreatReturnedNullStringAs=Null] readonly attribute DOMString name;
     [ImplementedAs=keyPathAny] readonly attribute IDBAny keyPath;
index 02de6c8..59a6601 100644 (file)
@@ -27,7 +27,8 @@
     Conditional=INDEXED_DATABASE,
     EventTarget,
     JSGenerateToJSObject,
-    JSGenerateToNativeObject
+    JSGenerateToNativeObject,
+    EnabledAtRuntime=IndexedDB,
 ] interface IDBOpenDBRequest : IDBRequest {
     attribute EventHandler onblocked;
     attribute EventHandler onupgradeneeded;
index 5606232..ef6e2b6 100644 (file)
@@ -29,6 +29,7 @@
 
 [
     Conditional=INDEXED_DATABASE,
+    EnabledAtRuntime=IndexedDB,
     ActiveDOMObject,
     EventTarget,
     JSGenerateToJSObject,
index 60d26c4..eb62871 100644 (file)
@@ -30,6 +30,7 @@
     EventTarget,
     JSGenerateToJSObject,
     JSGenerateToNativeObject,
+    EnabledAtRuntime=IndexedDB,
 ] interface IDBTransaction : EventTarget {
     readonly attribute DOMString mode;
     readonly attribute IDBDatabase db;
index 99fbdc7..3349724 100644 (file)
@@ -25,6 +25,7 @@
 
 [
     Conditional=INDEXED_DATABASE,
+    EnabledAtRuntime=IndexedDB,
 ] interface IDBVersionChangeEvent : Event {
     readonly attribute unsigned long long oldVersion;
     readonly attribute unsigned long long? newVersion;
index 0b137b4..97d1f38 100644 (file)
@@ -21,6 +21,7 @@
 #include "config.h"
 #include "JSDOMWindowCustom.h"
 
+#include "DOMWindowIndexedDatabase.h"
 #include "Frame.h"
 #include "HTMLCollection.h"
 #include "HTMLDocument.h"
 #include "JSHTMLAudioElement.h"
 #include "JSHTMLCollection.h"
 #include "JSHTMLOptionElement.h"
+#include "JSIDBFactory.h"
 #include "JSImageConstructor.h"
 #include "JSMessagePortCustom.h"
 #include "JSWorker.h"
 #include "Location.h"
+#include "RuntimeEnabledFeatures.h"
 #include "ScheduledAction.h"
 #include "Settings.h"
 
@@ -99,6 +102,23 @@ static EncodedJSValue jsDOMWindowWebKit(ExecState* exec, JSObject*, EncodedJSVal
 }
 #endif
 
+#if ENABLE(INDEXED_DATABASE)
+static EncodedJSValue jsDOMWindowIndexedDB(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
+{
+    UNUSED_PARAM(exec);
+    UNUSED_PARAM(slotBase);
+    UNUSED_PARAM(thisValue);
+    auto* castedThis = toJSDOMWindow(JSValue::decode(thisValue));
+    if (!RuntimeEnabledFeatures::sharedFeatures().indexedDBEnabled())
+        return JSValue::encode(jsUndefined());
+    if (!BindingSecurity::shouldAllowAccessToDOMWindow(exec, castedThis->impl()))
+        return JSValue::encode(jsUndefined());
+    auto& impl = castedThis->impl();
+    JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(DOMWindowIndexedDatabase::indexedDB(&impl)));
+    return JSValue::encode(result);
+}
+#endif
+
 bool JSDOMWindow::getOwnPropertySlot(JSObject* object, ExecState* exec, PropertyName propertyName, PropertySlot& slot)
 {
     JSDOMWindow* thisObject = jsCast<JSDOMWindow*>(object);
@@ -168,6 +188,18 @@ bool JSDOMWindow::getOwnPropertySlot(JSObject* object, ExecState* exec, Property
         }
     }
 
+#if ENABLE(INDEXED_DATABASE)
+    // FIXME: With generated JS bindings built on static property tables there is no way to
+    // completely remove a generated property at runtime.
+    // So to completely disable IndexedDB at runtime we have to not generate these accessors
+    // and have to handle them specially here.
+    // Once https://webkit.org/b/145669 is resolved, they can once again be auto generated.
+    if (RuntimeEnabledFeatures::sharedFeatures().indexedDBEnabled() && (propertyName == exec->propertyNames().indexedDB || propertyName == exec->propertyNames().webkitIndexedDB)) {
+        slot.setCustom(thisObject, allowsAccess ? DontDelete | ReadOnly | CustomAccessor : ReadOnly | DontDelete | DontEnum, jsDOMWindowIndexedDB);
+        return true;
+    }
+#endif
+
     const HashTableValue* entry = JSDOMWindow::info()->staticPropHashTable->entry(propertyName);
     if (entry) {
         slot.setCacheableCustom(thisObject, allowsAccess ? entry->attributes() : ReadOnly | DontDelete | DontEnum, entry->propertyGetter());
index e3a3256..3505af9 100644 (file)
 
     attribute DOMURLConstructor webkitURL; // FIXME: deprecate this.
     attribute MutationObserverConstructor WebKitMutationObserver; // FIXME: Add metrics to determine when we can remove this.
-    [Conditional=INDEXED_DATABASE] attribute IDBCursorConstructor webkitIDBCursor;
-    [Conditional=INDEXED_DATABASE] attribute IDBDatabaseConstructor webkitIDBDatabase;
-    [Conditional=INDEXED_DATABASE] attribute IDBFactoryConstructor webkitIDBFactory;
-    [Conditional=INDEXED_DATABASE] attribute IDBIndexConstructor webkitIDBIndex;
-    [Conditional=INDEXED_DATABASE] attribute IDBKeyRangeConstructor webkitIDBKeyRange;
-    [Conditional=INDEXED_DATABASE] attribute IDBObjectStoreConstructor webkitIDBObjectStore;
-    [Conditional=INDEXED_DATABASE] attribute IDBRequestConstructor webkitIDBRequest;
-    [Conditional=INDEXED_DATABASE] attribute IDBTransactionConstructor webkitIDBTransaction;
+    [Conditional=INDEXED_DATABASE, EnabledAtRuntime=IndexedDB] attribute IDBCursorConstructor webkitIDBCursor;
+    [Conditional=INDEXED_DATABASE, EnabledAtRuntime=IndexedDB] attribute IDBDatabaseConstructor webkitIDBDatabase;
+    [Conditional=INDEXED_DATABASE, EnabledAtRuntime=IndexedDB] attribute IDBFactoryConstructor webkitIDBFactory;
+    [Conditional=INDEXED_DATABASE, EnabledAtRuntime=IndexedDB] attribute IDBIndexConstructor webkitIDBIndex;
+    [Conditional=INDEXED_DATABASE, EnabledAtRuntime=IndexedDB] attribute IDBKeyRangeConstructor webkitIDBKeyRange;
+    [Conditional=INDEXED_DATABASE, EnabledAtRuntime=IndexedDB] attribute IDBObjectStoreConstructor webkitIDBObjectStore;
+    [Conditional=INDEXED_DATABASE, EnabledAtRuntime=IndexedDB] attribute IDBRequestConstructor webkitIDBRequest;
+    [Conditional=INDEXED_DATABASE, EnabledAtRuntime=IndexedDB] attribute IDBTransactionConstructor webkitIDBTransaction;
 #endif // defined(LANGUAGE_JAVASCRIPT)
 
 
index 56f4c82..f131c90 100644 (file)
@@ -1,3 +1,13 @@
+2015-06-08  Brady Eidson  <beidson@apple.com>
+
+        Completely remove all IDB properties/constructors when it is disabled at runtime.
+        rdar://problem/18429374 and https://bugs.webkit.org/show_bug.cgi?id=137034
+
+        Reviewed by Geoffrey Garen.
+
+        * WebProcess/WebProcess.cpp:
+        (WebKit::WebProcess::WebProcess): Enable IDB at runtime if it's enabled at compile time.
+
 2015-06-08  Michael Catanzaro  <mcatanzaro@igalia.com>
 
         [SOUP] Performs DNS prefetch when a proxy is configured (information leak)
index 8c06648..3c315f4 100644 (file)
@@ -86,6 +86,7 @@
 #include <WebCore/PageCache.h>
 #include <WebCore/PageGroup.h>
 #include <WebCore/ResourceHandle.h>
+#include <WebCore/RuntimeEnabledFeatures.h>
 #include <WebCore/SchemeRegistry.h>
 #include <WebCore/SecurityOrigin.h>
 #include <WebCore/Settings.h>
@@ -203,6 +204,10 @@ WebProcess::WebProcess()
     addSupplement<WebMediaKeyStorageManager>();
 #endif
     m_plugInAutoStartOriginHashes.add(SessionID::defaultSessionID(), HashMap<unsigned, double>());
+
+#if ENABLE(INDEXED_DATABASE)
+    RuntimeEnabledFeatures::sharedFeatures().setWebkitIndexedDBEnabled(true);
+#endif
 }
 
 void WebProcess::initializeProcess(const ChildProcessInitializationParameters& parameters)