Chromium Code Reviews| Index: Source/bindings/core/v8/CallbackPromiseAdapter.h |
| diff --git a/Source/bindings/core/v8/CallbackPromiseAdapter.h b/Source/bindings/core/v8/CallbackPromiseAdapter.h |
| index af0f1486dd757c1d3978b4b6de71929ce481c098..6b7244d799134886438796716a5338cd13d5e901 100644 |
| --- a/Source/bindings/core/v8/CallbackPromiseAdapter.h |
| +++ b/Source/bindings/core/v8/CallbackPromiseAdapter.h |
| @@ -108,6 +108,38 @@ private: |
| WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter); |
| }; |
| +template<typename T> |
| +class CallbackPromiseAdapter<void, T> FINAL : public blink::WebCallbacks<void, typename T::WebType> { |
| +public: |
| + CallbackPromiseAdapter(PassRefPtr<ScriptPromiseResolver> resolver) |
|
esprehn
2014/08/19 19:24:53
explicit
|
| + : m_resolver(resolver) |
| + { |
| + ASSERT(m_resolver); |
| + } |
| + virtual ~CallbackPromiseAdapter() { } |
| + |
| + virtual void onSuccess() OVERRIDE |
| + { |
| + if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped()) { |
| + return; |
| + } |
| + m_resolver->resolve(V8UndefinedType()); |
| + } |
| + |
| + virtual void onError(typename T::WebType* error) OVERRIDE |
| + { |
| + if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped()) { |
| + T::dispose(error); |
| + return; |
| + } |
| + m_resolver->reject(T::take(m_resolver.get(), error)); |
| + } |
| + |
| +private: |
| + RefPtr<ScriptPromiseResolver> m_resolver; |
| + WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter); |
| +}; |
| + |
| } // namespace blink |
| #endif |