Changeset 196170 in webkit


Ignore:
Timestamp:
Feb 5, 2016 1:59:15 AM (8 years ago)
Author:
youenn.fablet@crf.canon.fr
Message:

Remove DOMWrapped parameter from JSKeyValueIterator
https://bugs.webkit.org/show_bug.cgi?id=153859

Reviewed by Sam Weinig.

No change in behavior.

Using std::declval to infer DOMWrapped from JSWrapper::wrapped.

  • bindings/js/JSFetchHeadersCustom.cpp:

(WebCore::JSFetchHeaders::entries):
(WebCore::JSFetchHeaders::keys):
(WebCore::JSFetchHeaders::values):

  • bindings/js/JSKeyValueIterator.h:

(WebCore::createIterator):
(WebCore::JSKeyValueIterator<JSWrapper>::destroy):
(WebCore::JSKeyValueIterator<JSWrapper>::next):
(WebCore::JSKeyValueIteratorPrototypeFunctionNext):
(WebCore::JSKeyValueIteratorPrototype<JSWrapper>::finishCreation):

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r196167 r196170  
     12016-02-05  Youenn Fablet  <youenn.fablet@crf.canon.fr>
     2
     3        Remove DOMWrapped parameter from JSKeyValueIterator
     4        https://bugs.webkit.org/show_bug.cgi?id=153859
     5
     6        Reviewed by Sam Weinig.
     7
     8        No change in behavior.
     9
     10        Using std::declval to infer DOMWrapped from JSWrapper::wrapped.
     11
     12        * bindings/js/JSFetchHeadersCustom.cpp:
     13        (WebCore::JSFetchHeaders::entries):
     14        (WebCore::JSFetchHeaders::keys):
     15        (WebCore::JSFetchHeaders::values):
     16        * bindings/js/JSKeyValueIterator.h:
     17        (WebCore::createIterator):
     18        (WebCore::JSKeyValueIterator<JSWrapper>::destroy):
     19        (WebCore::JSKeyValueIterator<JSWrapper>::next):
     20        (WebCore::JSKeyValueIteratorPrototypeFunctionNext):
     21        (WebCore::JSKeyValueIteratorPrototype<JSWrapper>::finishCreation):
     22
    1232016-02-05  Nan Wang  <n_wang@apple.com>
    224
  • trunk/Source/WebCore/bindings/js/JSFetchHeadersCustom.cpp

    r196128 r196170  
    3737
    3838// FIXME: Move this code to JSFetchHeaders.
    39 using FetchHeadersIterator = JSKeyValueIterator<JSFetchHeaders, FetchHeaders>;
    40 using FetchHeadersIteratorPrototype = JSKeyValueIteratorPrototype<JSFetchHeaders, FetchHeaders>;
     39using FetchHeadersIterator = JSKeyValueIterator<JSFetchHeaders>;
     40using FetchHeadersIteratorPrototype = JSKeyValueIteratorPrototype<JSFetchHeaders>;
    4141
    4242template<>
     
    4848JSC::JSValue JSFetchHeaders::entries(JSC::ExecState&)
    4949{
    50     return createIterator<JSFetchHeaders, FetchHeaders>(*globalObject(), *this, IterationKind::KeyValue);
     50    return createIterator<JSFetchHeaders>(*globalObject(), *this, IterationKind::KeyValue);
    5151}
    5252
    5353JSC::JSValue JSFetchHeaders::keys(JSC::ExecState&)
    5454{
    55     return createIterator<JSFetchHeaders, FetchHeaders>(*globalObject(), *this, IterationKind::Key);
     55    return createIterator<JSFetchHeaders>(*globalObject(), *this, IterationKind::Key);
    5656}
    5757
    5858JSC::JSValue JSFetchHeaders::values(JSC::ExecState&)
    5959{
    60     return createIterator<JSFetchHeaders, FetchHeaders>(*globalObject(), *this, IterationKind::Value);
     60    return createIterator<JSFetchHeaders>(*globalObject(), *this, IterationKind::Value);
    6161}
    6262
  • trunk/Source/WebCore/bindings/js/JSKeyValueIterator.h

    r196128 r196170  
    2929#include "JSDOMBinding.h"
    3030#include <runtime/JSDestructibleObject.h>
     31#include <type_traits>
    3132
    3233namespace WebCore {
    3334
    34 // FIXME: Update binding generator to allow getting DOMWrapped from JSWrapper.
    35 template<typename JSWrapper, typename DOMWrapped>
     35template<typename JSWrapper>
    3636class JSKeyValueIteratorPrototype : public JSC::JSNonFinalObject {
    3737public:
    38     typedef JSC::JSNonFinalObject Base;
     38    using DOMWrapped = typename std::remove_reference<decltype(std::declval<JSWrapper>().wrapped())>::type;
     39    using Base = JSC::JSNonFinalObject;
    3940
    4041    static JSKeyValueIteratorPrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
     
    6263enum class IterationKind { Key, Value, KeyValue };
    6364
    64 template<typename JSWrapper, typename DOMWrapped>
     65template<typename JSWrapper>
    6566class JSKeyValueIterator: public JSDOMObject {
    6667public:
    67     typedef JSDOMObject Base;
     68    using DOMWrapped = typename std::remove_reference<decltype(std::declval<JSWrapper>().wrapped())>::type;
     69    using Base = JSDOMObject;
    6870
    6971    DECLARE_INFO;
     
    8183    }
    8284
    83     static JSKeyValueIteratorPrototype<JSWrapper, DOMWrapped>* createPrototype(JSC::VM& vm, JSC::JSGlobalObject* globalObject)
     85    static JSKeyValueIteratorPrototype<JSWrapper>* createPrototype(JSC::VM& vm, JSC::JSGlobalObject* globalObject)
    8486    {
    85         return JSKeyValueIteratorPrototype<JSWrapper, DOMWrapped>::create(vm, globalObject,
    86             JSKeyValueIteratorPrototype<JSWrapper, DOMWrapped>::createStructure(vm, globalObject, globalObject->objectPrototype()));
     87        return JSKeyValueIteratorPrototype<JSWrapper>::create(vm, globalObject,
     88            JSKeyValueIteratorPrototype<JSWrapper>::createStructure(vm, globalObject, globalObject->objectPrototype()));
    8789    }
    8890
     
    103105};
    104106
    105 template<typename JSWrapper, typename DOMWrapped>
    106 JSKeyValueIterator<JSWrapper, DOMWrapped>* createIterator(JSDOMGlobalObject& globalObject, JSWrapper& wrapper, IterationKind kind)
     107template<typename JSWrapper>
     108JSKeyValueIterator<JSWrapper>* createIterator(JSDOMGlobalObject& globalObject, JSWrapper& wrapper, IterationKind kind)
    107109{
    108     return JSKeyValueIterator<JSWrapper, DOMWrapped>::create(globalObject.vm(), getDOMStructure<JSKeyValueIterator<JSWrapper, DOMWrapped>>(globalObject.vm(), globalObject), wrapper, kind);
     110    return JSKeyValueIterator<JSWrapper>::create(globalObject.vm(), getDOMStructure<JSKeyValueIterator<JSWrapper>>(globalObject.vm(), globalObject), wrapper, kind);
    109111}
    110112
    111 template<typename JSWrapper, typename DOMWrapped>
    112 void JSKeyValueIterator<JSWrapper, DOMWrapped>::destroy(JSCell* cell)
     113template<typename JSWrapper>
     114void JSKeyValueIterator<JSWrapper>::destroy(JSCell* cell)
    113115{
    114     JSKeyValueIterator<JSWrapper, DOMWrapped>* thisObject = JSC::jsCast<JSKeyValueIterator<JSWrapper, DOMWrapped>*>(cell);
    115     thisObject->JSKeyValueIterator<JSWrapper, DOMWrapped>::~JSKeyValueIterator();
     116    JSKeyValueIterator<JSWrapper>* thisObject = JSC::jsCast<JSKeyValueIterator<JSWrapper>*>(cell);
     117    thisObject->JSKeyValueIterator<JSWrapper>::~JSKeyValueIterator();
    116118}
    117119
    118 template<typename JSWrapper, typename DOMWrapped>
    119 bool JSKeyValueIterator<JSWrapper, DOMWrapped>::next(JSC::ExecState& state, JSC::JSValue& value)
     120template<typename JSWrapper>
     121bool JSKeyValueIterator<JSWrapper>::next(JSC::ExecState& state, JSC::JSValue& value)
    120122{
    121123    typename DOMWrapped::Iterator::Key nextKey;
     
    134136}
    135137
    136 template<typename JSWrapper, typename DOMWrapped>
    137 JSC::EncodedJSValue JSC_HOST_CALL JSKeyValueIteratorPrototype<JSWrapper, DOMWrapped>::next(JSC::ExecState* state)
     138template<typename JSWrapper>
     139JSC::EncodedJSValue JSC_HOST_CALL JSKeyValueIteratorPrototype<JSWrapper>::next(JSC::ExecState* state)
    138140{
    139     JSKeyValueIterator<JSWrapper, DOMWrapped>* iterator = JSC::jsDynamicCast<JSKeyValueIterator<JSWrapper, DOMWrapped>*>(state->thisValue());
     141    JSKeyValueIterator<JSWrapper>* iterator = JSC::jsDynamicCast<JSKeyValueIterator<JSWrapper>*>(state->thisValue());
    140142    if (!iterator)
    141143        return JSC::JSValue::encode(throwTypeError(state, ASCIILiteral("Cannot call next() on a non-Iterator object")));
     
    146148}
    147149
    148 template<typename JSWrapper, typename DOMWrapped>
    149 void JSKeyValueIteratorPrototype<JSWrapper, DOMWrapped>::finishCreation(JSC::VM& vm, JSC::JSGlobalObject* globalObject)
     150template<typename JSWrapper>
     151void JSKeyValueIteratorPrototype<JSWrapper>::finishCreation(JSC::VM& vm, JSC::JSGlobalObject* globalObject)
    150152{
    151153    Base::finishCreation(vm);
Note: See TracChangeset for help on using the changeset viewer.