Changeset 202302 in webkit


Ignore:
Timestamp:
Jun 21, 2016 4:21:14 PM (8 years ago)
Author:
jiewen_tan@apple.com
Message:

Unreviewed, rolling out r200678.

This incompleted feature broke http://m.yahoo.co.jp. Roll it
out together with r200619.

Reverted changeset:

"Ensure DOM iterators remain done"
https://bugs.webkit.org/show_bug.cgi?id=157453
http://trac.webkit.org/changeset/200678

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r202301 r202302  
     12016-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
    1142016-06-21  Joseph Pecoraro  <pecoraro@apple.com>
    215
  • trunk/LayoutTests/fast/dom/nodeListIterator-expected.txt

    r200678 r202302  
    1010PASS pair[1] is children[1]
    1111PASS forEachContainer is nodeList
    12 PASS forEachIndex is index
     12FAIL forEachIndex should be 0 (of type number). Was [object HTMLDivElement] (of type object).
    1313PASS node is children[index++]
    1414PASS forEachContainer is nodeList
    15 PASS forEachIndex is index
     15FAIL forEachIndex should be 1 (of type number). Was [object HTMLOListElement] (of type object).
    1616PASS node is children[index++]
    1717PASS iterator.next().value is children[0]
     
    2424PASS end.value is undefined
    2525PASS pair.length is 2
    26 PASS pair[0] is 0
     26FAIL pair[0] should be 0 (of type number). Was [object HTMLDivElement] (of type object).
    2727PASS pair[1] is children[0]
    2828PASS pair.length is 2
    29 PASS pair[0] is 1
     29FAIL pair[0] should be 1 (of type number). Was [object HTMLOListElement] (of type object).
    3030PASS pair[1] is children[1]
    3131PASS end.done is true
    3232PASS end.value is undefined
    33 PASS end.done is true
    34 PASS end.value is undefined
     33FAIL end.done should be true. Was false.
     34FAIL end.value should be undefined (of type undefined). Was [object HTMLParagraphElement],[object HTMLParagraphElement] (of type object).
    3535PASS successfullyParsed is true
    3636
  • trunk/LayoutTests/fast/text/font-face-set-javascript-expected.txt

    r200678 r202302  
    55PASS item.done is false
    66PASS item.value.length is 2
    7 PASS item.value[0] is 0
     7FAIL item.value[0] should be 0 (of type number). Was [object FontFace] (of type object).
    88PASS item.value[1] is fontFace1
    99PASS item.done is true
  • trunk/Source/WebCore/ChangeLog

    r202298 r202302  
     12016-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
    1142016-06-21  Anders Carlsson  <andersca@apple.com>
    215
  • trunk/Source/WebCore/bindings/js/JSDOMIterator.h

    r200678 r202302  
    109109    }
    110110
    111     template<typename IteratorValue> typename std::enable_if<IteratorInspector<IteratorValue>::isMap, JSC::JSValue>::type
    112     asJS(JSC::ExecState&, IteratorValue&);
    113     template<typename IteratorValue> typename std::enable_if<IteratorInspector<IteratorValue>::isSet, JSC::JSValue>::type
    114     asJS(JSC::ExecState&, IteratorValue&);
    115 
    116111    static void destroy(JSC::JSCell*);
    117112
    118     Optional<typename DOMWrapped::Iterator> m_iterator;
     113    typename DOMWrapped::Iterator m_iterator;
    119114    IterationKind m_kind;
    120     size_t m_index { 0 };
    121115};
    122116
     
    136130}
    137131
    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)
     132template<typename IteratorValue> typename std::enable_if<IteratorInspector<IteratorValue>::isMap, JSC::JSValue>::type
     133toJS(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
     142template<typename IteratorValue> typename std::enable_if<IteratorInspector<IteratorValue>::isSet, JSC::JSValue>::type
     143toJS(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)
    156148        return result;
    157149
    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);
    159152}
    160153
    161154template<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&)
     155appendForEachArguments(JSC::ExecState& state, JSDOMGlobalObject* globalObject, JSC::MarkedArgumentBuffer& arguments, IteratorValue& value)
    163156{
    164157    ASSERT(value);
     
    168161
    169162template<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)
     163appendForEachArguments(JSC::ExecState& state, JSDOMGlobalObject* globalObject, JSC::MarkedArgumentBuffer& arguments, IteratorValue& value)
    171164{
    172165    ASSERT(value);
    173166    JSC::JSValue argument = toJS(&state, globalObject, *value);
    174167    arguments.append(argument);
    175     arguments.append(JSC::jsNumber(index++));
     168    arguments.append(argument);
    176169}
    177170
     
    188181        return throwVMTypeError(&state);
    189182
    190     size_t index = 0;
    191183    auto iterator = wrapper->wrapped().createIterator();
    192184    while (auto value = iterator.next()) {
    193185        JSC::MarkedArgumentBuffer arguments;
    194         appendForEachArguments(state, wrapper->globalObject(), arguments, value, index);
     186        appendForEachArguments(state, wrapper->globalObject(), arguments, value);
    195187        arguments.append(wrapper);
    196188        JSC::call(&state, state.argument(0), callType, callData, wrapper, arguments);
     
    211203JSC::JSValue JSDOMIterator<JSWrapper>::next(JSC::ExecState& state)
    212204{
    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);
    220209}
    221210
Note: See TracChangeset for help on using the changeset viewer.