Changeset 203235 in webkit
- Timestamp:
- Jul 14, 2016 12:32:24 PM (8 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/imported/w3c/ChangeLog
r203221 r203235 1 2016-07-14 Youenn Fablet <youenn@apple.com> 2 3 DOMIterators should be assigned a correct prototype 4 https://bugs.webkit.org/show_bug.cgi?id=159115 5 6 Reviewed by Chris Dumez. 7 8 * web-platform-tests/fetch/api/headers/headers-basic.html: Updating test (changes to be upstreamed to w3c wpt repo) 9 1 10 2016-07-14 Youenn Fablet <youenn@apple.com> 2 11 -
trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/headers-basic.html
r198888 r203235 121 121 }; 122 122 var sortedHeaderDict = {}; 123 var headerValues = []; 123 124 var sortedHeaderKeys = Object.keys(headerEntriesDict).map(function(value) { 124 125 sortedHeaderDict[value.toLowerCase()] = headerEntriesDict[value]; 126 headerValues.push(headerEntriesDict[value]); 125 127 return value.toLowerCase(); 126 128 }).sort(); 127 129 130 var iteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([].values())); 131 function checkIteratorProperties(iterator) { 132 var prototype = Object.getPrototypeOf(iterator); 133 assert_equals(Object.getPrototypeOf(prototype), iteratorPrototype); 134 135 var descriptor = Object.getOwnPropertyDescriptor(prototype, "next"); 136 assert_true(descriptor.configurable, "configurable"); 137 assert_true(descriptor.enumerable, "enumerable"); 138 assert_true(descriptor.writable, "writable"); 139 } 140 128 141 test(function() { 129 142 var headers = new Headers(headerEntriesDict); 130 143 var actual = headers.keys(); 144 checkIteratorProperties(actual); 145 131 146 sortedHeaderKeys.forEach(function(key) { 132 147 entry = actual.next(); … … 136 151 assert_true(actual.next().done); 137 152 assert_true(actual.next().done); 153 154 for (key of headers.keys()) 155 assert_true(sortedHeaderKeys.indexOf(key) != -1); 138 156 }, "Check keys method"); 139 157 … … 141 159 var headers = new Headers(headerEntriesDict); 142 160 var actual = headers.values(); 161 checkIteratorProperties(actual); 143 162 144 163 sortedHeaderKeys.forEach(function(key) { … … 149 168 assert_true(actual.next().done); 150 169 assert_true(actual.next().done); 170 171 for (value of headers.values()) 172 assert_true(headerValues.indexOf(value) != -1); 151 173 }, "Check values method"); 152 174 … … 154 176 var headers = new Headers(headerEntriesDict); 155 177 var actual = headers.entries(); 178 checkIteratorProperties(actual); 156 179 157 180 sortedHeaderKeys.forEach(function(key) { … … 163 186 assert_true(actual.next().done); 164 187 assert_true(actual.next().done); 188 189 for (entry of headers.entries()) 190 assert_equals(entry[1], sortedHeaderDict[entry[0]]); 165 191 }, "Check entries method"); 166 192 -
trunk/Source/WebCore/ChangeLog
r203234 r203235 1 2016-07-14 Youenn Fablet <youenn@apple.com> 2 3 DOMIterators should be assigned a correct prototype 4 https://bugs.webkit.org/show_bug.cgi?id=159115 5 6 Reviewed by Chris Dumez. 7 8 Default iterator object internal prototype property is the Iterator prototype as defined in 9 http://heycam.github.io/webidl/#dfn-iterator-prototype-object. 10 Linking DOMIterator prototype to IteratorPrototype. 11 This allows adding @@iterator property to the result of entries, keys and values methods. 12 This in turns allow doing for-of loops on them. 13 14 Covered by updated test. 15 16 * ForwardingHeaders/runtime/IteratorPrototype.h: Added. 17 * bindings/js/JSDOMIterator.h: Setting correct prototype and marking next prototype property as enumerable. 18 1 19 2016-07-14 Youenn Fablet <youenn@apple.com> 2 20 -
trunk/Source/WebCore/bindings/js/JSDOMIterator.h
r203234 r203235 28 28 29 29 #include "JSDOMBinding.h" 30 #include <runtime/IteratorPrototype.h> 30 31 #include <runtime/JSDestructibleObject.h> 31 32 #include <type_traits> … … 98 99 { 99 100 return JSDOMIteratorPrototype<JSWrapper>::create(vm, globalObject, 100 JSDOMIteratorPrototype<JSWrapper>::createStructure(vm, globalObject, globalObject-> objectPrototype()));101 JSDOMIteratorPrototype<JSWrapper>::createStructure(vm, globalObject, globalObject->iteratorPrototype())); 101 102 } 102 103 … … 239 240 ASSERT(inherits(info())); 240 241 241 JSC_NATIVE_INTRINSIC_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->next, next, JSC::DontEnum, 0, JSC::NoIntrinsic);242 JSC_NATIVE_INTRINSIC_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->next, next, 0, 0, JSC::NoIntrinsic); 242 243 } 243 244
Note: See TracChangeset
for help on using the changeset viewer.