Title: [202302] trunk
Revision
202302
Author
[email protected]
Date
2016-06-21 16:21:14 -0700 (Tue, 21 Jun 2016)

Log 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

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (202301 => 202302)


--- trunk/LayoutTests/ChangeLog	2016-06-21 23:09:50 UTC (rev 202301)
+++ trunk/LayoutTests/ChangeLog	2016-06-21 23:21:14 UTC (rev 202302)
@@ -1,3 +1,16 @@
+2016-06-21  Jiewen Tan  <[email protected]>
+
+        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
+
 2016-06-21  Joseph Pecoraro  <[email protected]>
 
         Skip HeapSnapshot test on WebKit1. Shared VM skews the data.

Modified: trunk/LayoutTests/fast/dom/nodeListIterator-expected.txt (202301 => 202302)


--- trunk/LayoutTests/fast/dom/nodeListIterator-expected.txt	2016-06-21 23:09:50 UTC (rev 202301)
+++ trunk/LayoutTests/fast/dom/nodeListIterator-expected.txt	2016-06-21 23:21:14 UTC (rev 202302)
@@ -9,10 +9,10 @@
 PASS pair[0] is children[0]
 PASS pair[1] is children[1]
 PASS forEachContainer is nodeList
-PASS forEachIndex is index
+FAIL forEachIndex should be 0 (of type number). Was [object HTMLDivElement] (of type object).
 PASS node is children[index++]
 PASS forEachContainer is nodeList
-PASS forEachIndex is index
+FAIL forEachIndex should be 1 (of type number). Was [object HTMLOListElement] (of type object).
 PASS node is children[index++]
 PASS iterator.next().value is children[0]
 PASS iterator.next().value is children[1]
@@ -23,15 +23,15 @@
 PASS end.done is true
 PASS end.value is undefined
 PASS pair.length is 2
-PASS pair[0] is 0
+FAIL pair[0] should be 0 (of type number). Was [object HTMLDivElement] (of type object).
 PASS pair[1] is children[0]
 PASS pair.length is 2
-PASS pair[0] is 1
+FAIL pair[0] should be 1 (of type number). Was [object HTMLOListElement] (of type object).
 PASS pair[1] is children[1]
 PASS end.done is true
 PASS end.value is undefined
-PASS end.done is true
-PASS end.value is undefined
+FAIL end.done should be true. Was false.
+FAIL end.value should be undefined (of type undefined). Was [object HTMLParagraphElement],[object HTMLParagraphElement] (of type object).
 PASS successfullyParsed is true
 
 TEST COMPLETE

Modified: trunk/LayoutTests/fast/text/font-face-set-_javascript_-expected.txt (202301 => 202302)


--- trunk/LayoutTests/fast/text/font-face-set-_javascript_-expected.txt	2016-06-21 23:09:50 UTC (rev 202301)
+++ trunk/LayoutTests/fast/text/font-face-set-_javascript_-expected.txt	2016-06-21 23:21:14 UTC (rev 202302)
@@ -4,7 +4,7 @@
 PASS fontFaceSet.status is "loaded"
 PASS item.done is false
 PASS item.value.length is 2
-PASS item.value[0] is 0
+FAIL item.value[0] should be 0 (of type number). Was [object FontFace] (of type object).
 PASS item.value[1] is fontFace1
 PASS item.done is true
 PASS item.value is undefined

Modified: trunk/Source/WebCore/ChangeLog (202301 => 202302)


--- trunk/Source/WebCore/ChangeLog	2016-06-21 23:09:50 UTC (rev 202301)
+++ trunk/Source/WebCore/ChangeLog	2016-06-21 23:21:14 UTC (rev 202302)
@@ -1,3 +1,16 @@
+2016-06-21  Jiewen Tan  <[email protected]>
+
+        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
+
 2016-06-21  Anders Carlsson  <[email protected]>
 
         Begin moving the Apple Pay code to the open source repository

Modified: trunk/Source/WebCore/bindings/js/JSDOMIterator.h (202301 => 202302)


--- trunk/Source/WebCore/bindings/js/JSDOMIterator.h	2016-06-21 23:09:50 UTC (rev 202301)
+++ trunk/Source/WebCore/bindings/js/JSDOMIterator.h	2016-06-21 23:21:14 UTC (rev 202302)
@@ -108,16 +108,10 @@
     {
     }
 
-    template<typename IteratorValue> typename std::enable_if<IteratorInspector<IteratorValue>::isMap, JSC::JSValue>::type
-    asJS(JSC::ExecState&, IteratorValue&);
-    template<typename IteratorValue> typename std::enable_if<IteratorInspector<IteratorValue>::isSet, JSC::JSValue>::type
-    asJS(JSC::ExecState&, IteratorValue&);
-
     static void destroy(JSC::JSCell*);
 
-    Optional<typename DOMWrapped::Iterator> m_iterator;
+    typename DOMWrapped::Iterator m_iterator;
     IterationKind m_kind;
-    size_t m_index { 0 };
 };
 
 template<typename JSWrapper>
@@ -135,31 +129,30 @@
     return JSC::JSValue::encode(JSDOMIterator<JSWrapper>::create(globalObject.vm(), getDOMStructure<JSDOMIterator<JSWrapper>>(globalObject.vm(), globalObject), *wrapper, kind));
 }
 
-template<typename JSWrapper>
-template<typename IteratorValue> inline typename std::enable_if<IteratorInspector<IteratorValue>::isMap, JSC::JSValue>::type
-JSDOMIterator<JSWrapper>::asJS(JSC::ExecState& state, IteratorValue& value)
+template<typename IteratorValue> typename std::enable_if<IteratorInspector<IteratorValue>::isMap, JSC::JSValue>::type
+toJS(JSC::ExecState& state, JSDOMGlobalObject* globalObject, IteratorValue& value, IterationKind kind)
 {
     ASSERT(value);
-    if (m_kind != IterationKind::KeyValue)
-        return toJS(&state, globalObject(), (m_kind == IterationKind::Key) ? value->key : value->value);
+    if (kind != IterationKind::KeyValue)
+        return toJS(&state, globalObject, (kind == IterationKind::Key) ? value->key : value->value);
 
-    return jsPair(state, globalObject(), value->key, value->value);
+    return jsPair(state, globalObject, value->key, value->value);
 }
 
-template<typename JSWrapper>
-template<typename IteratorValue> inline typename std::enable_if<IteratorInspector<IteratorValue>::isSet, JSC::JSValue>::type
-JSDOMIterator<JSWrapper>::asJS(JSC::ExecState& state, IteratorValue& value)
+template<typename IteratorValue> typename std::enable_if<IteratorInspector<IteratorValue>::isSet, JSC::JSValue>::type
+toJS(JSC::ExecState& state, JSDOMGlobalObject* globalObject, IteratorValue& value, IterationKind kind)
 {
     ASSERT(value);
-    JSC::JSValue result = toJS(&state, globalObject(), *value);
-    if (m_kind != IterationKind::KeyValue)
+    JSC::JSValue result = toJS(&state, globalObject, *value);
+    if (kind != IterationKind::KeyValue)
         return result;
 
-    return jsPair(state, globalObject(), JSC::jsNumber(m_index++), result);
+    // FIXME: first pair value should be the index of result.
+    return jsPair(state, globalObject, result, result);
 }
 
 template<typename IteratorValue> typename std::enable_if<IteratorInspector<IteratorValue>::isMap, void>::type
-appendForEachArguments(JSC::ExecState& state, JSDOMGlobalObject* globalObject, JSC::MarkedArgumentBuffer& arguments, IteratorValue& value, size_t&)
+appendForEachArguments(JSC::ExecState& state, JSDOMGlobalObject* globalObject, JSC::MarkedArgumentBuffer& arguments, IteratorValue& value)
 {
     ASSERT(value);
     arguments.append(toJS(&state, globalObject, value->value));
@@ -167,12 +160,12 @@
 }
 
 template<typename IteratorValue> typename std::enable_if<IteratorInspector<IteratorValue>::isSet, void>::type
-appendForEachArguments(JSC::ExecState& state, JSDOMGlobalObject* globalObject, JSC::MarkedArgumentBuffer& arguments, IteratorValue& value, size_t& index)
+appendForEachArguments(JSC::ExecState& state, JSDOMGlobalObject* globalObject, JSC::MarkedArgumentBuffer& arguments, IteratorValue& value)
 {
     ASSERT(value);
     JSC::JSValue argument = toJS(&state, globalObject, *value);
     arguments.append(argument);
-    arguments.append(JSC::jsNumber(index++));
+    arguments.append(argument);
 }
 
 template<typename JSWrapper>
@@ -187,11 +180,10 @@
     if (callType == JSC::CallType::None)
         return throwVMTypeError(&state);
 
-    size_t index = 0;
     auto iterator = wrapper->wrapped().createIterator();
     while (auto value = iterator.next()) {
         JSC::MarkedArgumentBuffer arguments;
-        appendForEachArguments(state, wrapper->globalObject(), arguments, value, index);
+        appendForEachArguments(state, wrapper->globalObject(), arguments, value);
         arguments.append(wrapper);
         JSC::call(&state, state.argument(0), callType, callData, wrapper, arguments);
         if (state.hadException())
@@ -210,13 +202,10 @@
 template<typename JSWrapper>
 JSC::JSValue JSDOMIterator<JSWrapper>::next(JSC::ExecState& state)
 {
-    if (m_iterator) {
-        auto iteratorValue = m_iterator->next();
-        if (iteratorValue)
-            return createIteratorResultObject(&state, asJS(state, iteratorValue), false);
-        m_iterator = Nullopt;
-    }
-    return createIteratorResultObject(&state, JSC::jsUndefined(), true);
+    auto iteratorValue = m_iterator.next();
+    if (!iteratorValue)
+        return createIteratorResultObject(&state, JSC::jsUndefined(), true);
+    return createIteratorResultObject(&state, toJS(state, globalObject(), iteratorValue, m_kind), false);
 }
 
 template<typename JSWrapper>
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to