| Index: Source/bindings/v8/ScriptPromiseResolver.h
|
| diff --git a/Source/bindings/v8/ScriptPromiseResolver.h b/Source/bindings/v8/ScriptPromiseResolver.h
|
| index a4131babaf2de8f58507e433b80d720fad8075a4..f236b7b3adb7bc122cfac196ff3980bfa1409e70 100644
|
| --- a/Source/bindings/v8/ScriptPromiseResolver.h
|
| +++ b/Source/bindings/v8/ScriptPromiseResolver.h
|
| @@ -85,63 +85,88 @@ public:
|
| // is called.
|
| ScriptPromise promise();
|
|
|
| - // To use following template methods, T must be a DOM class.
|
| - template<typename T>
|
| - void resolve(T* value, v8::Handle<v8::Object> creationContext) { resolve(toV8NoInline(value, creationContext, m_isolate)); }
|
| - template<typename T>
|
| - void reject(T* value, v8::Handle<v8::Object> creationContext) { reject(toV8NoInline(value, creationContext, m_isolate)); }
|
| -
|
| - template<typename T>
|
| - void resolve(PassRefPtr<T> value, v8::Handle<v8::Object> creationContext) { resolve(value.get(), creationContext); }
|
| - template<typename T>
|
| - void resolve(RawPtr<T> value, v8::Handle<v8::Object> creationContext) { resolve(value.get(), creationContext); }
|
| - template<typename T>
|
| - void reject(PassRefPtr<T> value, v8::Handle<v8::Object> creationContext) { reject(value.get(), creationContext); }
|
| - template<typename T>
|
| - void reject(RawPtr<T> value, v8::Handle<v8::Object> creationContext) { reject(value.get(), creationContext); }
|
| -
|
| - template<typename T>
|
| - inline void resolve(T* value, ExecutionContext*);
|
| - template<typename T>
|
| - inline void reject(T* value, ExecutionContext*);
|
| -
|
| - template<typename T>
|
| - void resolve(PassRefPtr<T> value, ExecutionContext* context) { resolve(value.get(), context); }
|
| - template<typename T>
|
| - void resolve(RawPtr<T> value, ExecutionContext* context) { resolve(value.get(), context); }
|
| - template<typename T>
|
| - void reject(PassRefPtr<T> value, ExecutionContext* context) { reject(value.get(), context); }
|
| - template<typename T>
|
| - void reject(RawPtr<T> value, ExecutionContext* context) { reject(value.get(), context); }
|
| -
|
| - template<typename T>
|
| - inline void resolve(T* value);
|
| - template<typename T>
|
| - inline void reject(T* value);
|
| -
|
| - template<typename T, size_t inlineCapacity>
|
| - void resolve(const Vector<T, inlineCapacity>& iterator) { resolve(v8ArrayNoInline(iterator, m_isolate)); }
|
| - template<typename T, size_t inlineCapacity>
|
| - void reject(const Vector<T, inlineCapacity>& iterator) { reject(v8ArrayNoInline(iterator, m_isolate)); }
|
| -
|
| - template<typename T>
|
| - void resolve(PassRefPtr<T> value) { resolve(value.get()); }
|
| - template<typename T>
|
| - void resolve(RawPtr<T> value) { resolve(value.get()); }
|
| - template<typename T>
|
| - void reject(PassRefPtr<T> value) { reject(value.get()); }
|
| - template<typename T>
|
| - void reject(RawPtr<T> value) { reject(value.get()); }
|
| -
|
| - void resolve(ScriptValue);
|
| - void reject(ScriptValue);
|
| -
|
| - v8::Isolate* isolate() const { return m_isolate; }
|
| + template <typename T>
|
| + void resolve(T value)
|
| + {
|
| + ASSERT(m_isolate->InContext());
|
| + resolve(value, v8::Object::New(m_isolate));
|
| + }
|
| + template <typename T>
|
| + inline void reject(T value)
|
| + {
|
| + ASSERT(m_isolate->InContext());
|
| + reject(value, v8::Object::New(m_isolate));
|
| + }
|
| +
|
| + template <typename T>
|
| + inline void resolve(T value, ExecutionContext* context)
|
| + {
|
| + ASSERT(m_isolate->InContext());
|
| + resolve(toV8Value(value, context));
|
| + }
|
| + template <typename T>
|
| + inline void reject(T value, ExecutionContext* context)
|
| + {
|
| + ASSERT(m_isolate->InContext());
|
| + reject(toV8Value(value, context));
|
| + }
|
| + template <typename T>
|
| + inline void resolve(T value, v8::Handle<v8::Object> creationContext)
|
| + {
|
| + ASSERT(m_isolate->InContext());
|
| + resolve(toV8Value(value, creationContext));
|
| + }
|
| + template <typename T>
|
| + inline void reject(T value, v8::Handle<v8::Object> creationContext)
|
| + {
|
| + ASSERT(m_isolate->InContext());
|
| + reject(toV8Value(value, creationContext));
|
| + }
|
|
|
| void resolve(v8::Handle<v8::Value>);
|
| void reject(v8::Handle<v8::Value>);
|
|
|
| + v8::Isolate* isolate() const { return m_isolate; }
|
| +
|
| private:
|
| +
|
| + template <typename T, bool toV8ValueNeedsCreationContext>
|
| + struct ToV8ValueHelper;
|
| + template <typename T>
|
| + struct ToV8ValueHelper<T, true> {
|
| + static v8::Handle<v8::Value> toV8Value(const T& value, ExecutionContext* context, v8::Isolate* isolate)
|
| + {
|
| + v8::Handle<v8::Context> v8Context = toV8Context(context, DOMWrapperWorld::current(isolate));
|
| + return V8ValueTraits<T>::toV8Value(value, v8Context->Global(), isolate);
|
| + }
|
| + static v8::Handle<v8::Value> toV8Value(const T& value, v8::Handle<v8::Object> creationContext, v8::Isolate* isolate)
|
| + {
|
| + return V8ValueTraits<T>::toV8Value(value, creationContext, isolate);
|
| + }
|
| + };
|
| + template <typename T>
|
| + struct ToV8ValueHelper<T, false> {
|
| + static v8::Handle<v8::Value> toV8Value(const T& value, ExecutionContext*, v8::Isolate* isolate)
|
| + {
|
| + return V8ValueTraits<T>::toV8Value(value, isolate);
|
| + }
|
| + static v8::Handle<v8::Value> toV8Value(const T& value, v8::Handle<v8::Object>, v8::Isolate* isolate)
|
| + {
|
| + return V8ValueTraits<T>::toV8Value(value, isolate);
|
| + }
|
| + };
|
| +
|
| + template <typename T>
|
| + v8::Handle<v8::Value> toV8Value(const T& value, ExecutionContext* context)
|
| + {
|
| + return ToV8ValueHelper<T, V8ValueTraits<T>::toV8ValueNeedsCreationContext>::toV8Value(value, context, m_isolate);
|
| + }
|
| + template <typename T>
|
| + v8::Handle<v8::Value> toV8Value(const T& value, v8::Handle<v8::Object> creationContext)
|
| + {
|
| + return ToV8ValueHelper<T, V8ValueTraits<T>::toV8ValueNeedsCreationContext>::toV8Value(value, creationContext, m_isolate);
|
| + }
|
| +
|
| ScriptPromiseResolver(ExecutionContext*);
|
| ScriptPromiseResolver(v8::Isolate*);
|
|
|
| @@ -152,36 +177,6 @@ private:
|
| ScriptValue m_resolver;
|
| };
|
|
|
| -template<typename T>
|
| -void ScriptPromiseResolver::resolve(T* value, ExecutionContext* context)
|
| -{
|
| - ASSERT(m_isolate->InContext());
|
| - v8::Handle<v8::Context> v8Context = toV8Context(context, DOMWrapperWorld::current(m_isolate));
|
| - resolve(value, v8Context->Global());
|
| -}
|
| -
|
| -template<typename T>
|
| -void ScriptPromiseResolver::reject(T* value, ExecutionContext* context)
|
| -{
|
| - ASSERT(m_isolate->InContext());
|
| - v8::Handle<v8::Context> v8Context = toV8Context(context, DOMWrapperWorld::current(m_isolate));
|
| - reject(value, v8Context->Global());
|
| -}
|
| -
|
| -template<typename T>
|
| -void ScriptPromiseResolver::resolve(T* value)
|
| -{
|
| - ASSERT(m_isolate->InContext());
|
| - resolve(value, v8::Object::New(m_isolate));
|
| -}
|
| -
|
| -template<typename T>
|
| -void ScriptPromiseResolver::reject(T* value)
|
| -{
|
| - ASSERT(m_isolate->InContext());
|
| - reject(value, v8::Object::New(m_isolate));
|
| -}
|
| -
|
| } // namespace WebCore
|
|
|
|
|
|
|