Changeset 202302 in webkit
- Timestamp:
- Jun 21, 2016 4:21:14 PM (8 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r202301 r202302 1 2016-06-21 Jiewen Tan <jiewen_tan@apple.com> 2 3 Unreviewed, rolling out r200678. 4 5 This incompleted feature broke http://m.yahoo.co.jp. Roll it 6 out together with r200619. 7 8 Reverted changeset: 9 10 "Ensure DOM iterators remain done" 11 https://bugs.webkit.org/show_bug.cgi?id=157453 12 http://trac.webkit.org/changeset/200678 13 1 14 2016-06-21 Joseph Pecoraro <pecoraro@apple.com> 2 15 -
trunk/LayoutTests/fast/dom/nodeListIterator-expected.txt
r200678 r202302 10 10 PASS pair[1] is children[1] 11 11 PASS forEachContainer is nodeList 12 PASS forEachIndex is index 12 FAIL forEachIndex should be 0 (of type number). Was [object HTMLDivElement] (of type object). 13 13 PASS node is children[index++] 14 14 PASS forEachContainer is nodeList 15 PASS forEachIndex is index 15 FAIL forEachIndex should be 1 (of type number). Was [object HTMLOListElement] (of type object). 16 16 PASS node is children[index++] 17 17 PASS iterator.next().value is children[0] … … 24 24 PASS end.value is undefined 25 25 PASS pair.length is 2 26 PASS pair[0] is 0 26 FAIL pair[0] should be 0 (of type number). Was [object HTMLDivElement] (of type object). 27 27 PASS pair[1] is children[0] 28 28 PASS pair.length is 2 29 PASS pair[0] is 1 29 FAIL pair[0] should be 1 (of type number). Was [object HTMLOListElement] (of type object). 30 30 PASS pair[1] is children[1] 31 31 PASS end.done is true 32 32 PASS end.value is undefined 33 PASS end.done is true 34 PASS end.value is undefined 33 FAIL end.done should be true. Was false. 34 FAIL end.value should be undefined (of type undefined). Was [object HTMLParagraphElement],[object HTMLParagraphElement] (of type object). 35 35 PASS successfullyParsed is true 36 36 -
trunk/LayoutTests/fast/text/font-face-set-javascript-expected.txt
r200678 r202302 5 5 PASS item.done is false 6 6 PASS item.value.length is 2 7 PASS item.value[0] is 0 7 FAIL item.value[0] should be 0 (of type number). Was [object FontFace] (of type object). 8 8 PASS item.value[1] is fontFace1 9 9 PASS item.done is true -
trunk/Source/WebCore/ChangeLog
r202298 r202302 1 2016-06-21 Jiewen Tan <jiewen_tan@apple.com> 2 3 Unreviewed, rolling out r200678. 4 5 This incompleted feature broke http://m.yahoo.co.jp. Roll it 6 out together with r200619. 7 8 Reverted changeset: 9 10 "Ensure DOM iterators remain done" 11 https://bugs.webkit.org/show_bug.cgi?id=157453 12 http://trac.webkit.org/changeset/200678 13 1 14 2016-06-21 Anders Carlsson <andersca@apple.com> 2 15 -
trunk/Source/WebCore/bindings/js/JSDOMIterator.h
r200678 r202302 109 109 } 110 110 111 template<typename IteratorValue> typename std::enable_if<IteratorInspector<IteratorValue>::isMap, JSC::JSValue>::type112 asJS(JSC::ExecState&, IteratorValue&);113 template<typename IteratorValue> typename std::enable_if<IteratorInspector<IteratorValue>::isSet, JSC::JSValue>::type114 asJS(JSC::ExecState&, IteratorValue&);115 116 111 static void destroy(JSC::JSCell*); 117 112 118 Optional<typename DOMWrapped::Iterator>m_iterator;113 typename DOMWrapped::Iterator m_iterator; 119 114 IterationKind m_kind; 120 size_t m_index { 0 };121 115 }; 122 116 … … 136 130 } 137 131 138 template<typename JSWrapper> 139 template<typename IteratorValue> inline typename std::enable_if<IteratorInspector<IteratorValue>::isMap, JSC::JSValue>::type 140 JSDOMIterator<JSWrapper>::asJS(JSC::ExecState& state, IteratorValue& value) 141 { 142 ASSERT(value); 143 if (m_kind != IterationKind::KeyValue) 144 return toJS(&state, globalObject(), (m_kind == IterationKind::Key) ? value->key : value->value); 145 146 return jsPair(state, globalObject(), value->key, value->value); 147 } 148 149 template<typename JSWrapper> 150 template<typename IteratorValue> inline typename std::enable_if<IteratorInspector<IteratorValue>::isSet, JSC::JSValue>::type 151 JSDOMIterator<JSWrapper>::asJS(JSC::ExecState& state, IteratorValue& value) 152 { 153 ASSERT(value); 154 JSC::JSValue result = toJS(&state, globalObject(), *value); 155 if (m_kind != IterationKind::KeyValue) 132 template<typename IteratorValue> typename std::enable_if<IteratorInspector<IteratorValue>::isMap, JSC::JSValue>::type 133 toJS(JSC::ExecState& state, JSDOMGlobalObject* globalObject, IteratorValue& value, IterationKind kind) 134 { 135 ASSERT(value); 136 if (kind != IterationKind::KeyValue) 137 return toJS(&state, globalObject, (kind == IterationKind::Key) ? value->key : value->value); 138 139 return jsPair(state, globalObject, value->key, value->value); 140 } 141 142 template<typename IteratorValue> typename std::enable_if<IteratorInspector<IteratorValue>::isSet, JSC::JSValue>::type 143 toJS(JSC::ExecState& state, JSDOMGlobalObject* globalObject, IteratorValue& value, IterationKind kind) 144 { 145 ASSERT(value); 146 JSC::JSValue result = toJS(&state, globalObject, *value); 147 if (kind != IterationKind::KeyValue) 156 148 return result; 157 149 158 return jsPair(state, globalObject(), JSC::jsNumber(m_index++), result); 150 // FIXME: first pair value should be the index of result. 151 return jsPair(state, globalObject, result, result); 159 152 } 160 153 161 154 template<typename IteratorValue> typename std::enable_if<IteratorInspector<IteratorValue>::isMap, void>::type 162 appendForEachArguments(JSC::ExecState& state, JSDOMGlobalObject* globalObject, JSC::MarkedArgumentBuffer& arguments, IteratorValue& value , size_t&)155 appendForEachArguments(JSC::ExecState& state, JSDOMGlobalObject* globalObject, JSC::MarkedArgumentBuffer& arguments, IteratorValue& value) 163 156 { 164 157 ASSERT(value); … … 168 161 169 162 template<typename IteratorValue> typename std::enable_if<IteratorInspector<IteratorValue>::isSet, void>::type 170 appendForEachArguments(JSC::ExecState& state, JSDOMGlobalObject* globalObject, JSC::MarkedArgumentBuffer& arguments, IteratorValue& value , size_t& index)163 appendForEachArguments(JSC::ExecState& state, JSDOMGlobalObject* globalObject, JSC::MarkedArgumentBuffer& arguments, IteratorValue& value) 171 164 { 172 165 ASSERT(value); 173 166 JSC::JSValue argument = toJS(&state, globalObject, *value); 174 167 arguments.append(argument); 175 arguments.append( JSC::jsNumber(index++));168 arguments.append(argument); 176 169 } 177 170 … … 188 181 return throwVMTypeError(&state); 189 182 190 size_t index = 0;191 183 auto iterator = wrapper->wrapped().createIterator(); 192 184 while (auto value = iterator.next()) { 193 185 JSC::MarkedArgumentBuffer arguments; 194 appendForEachArguments(state, wrapper->globalObject(), arguments, value , index);186 appendForEachArguments(state, wrapper->globalObject(), arguments, value); 195 187 arguments.append(wrapper); 196 188 JSC::call(&state, state.argument(0), callType, callData, wrapper, arguments); … … 211 203 JSC::JSValue JSDOMIterator<JSWrapper>::next(JSC::ExecState& state) 212 204 { 213 if (m_iterator) { 214 auto iteratorValue = m_iterator->next(); 215 if (iteratorValue) 216 return createIteratorResultObject(&state, asJS(state, iteratorValue), false); 217 m_iterator = Nullopt; 218 } 219 return createIteratorResultObject(&state, JSC::jsUndefined(), true); 205 auto iteratorValue = m_iterator.next(); 206 if (!iteratorValue) 207 return createIteratorResultObject(&state, JSC::jsUndefined(), true); 208 return createIteratorResultObject(&state, toJS(state, globalObject(), iteratorValue, m_kind), false); 220 209 } 221 210
Note: See TracChangeset
for help on using the changeset viewer.