| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 131 Persistent<ScriptPromiseResolver> m_resolver; | 131 Persistent<ScriptPromiseResolver> m_resolver; |
| 132 }; | 132 }; |
| 133 | 133 |
| 134 template <typename S, typename T> | 134 template <typename S, typename T> |
| 135 class OnSuccess : public Base<S, T> { | 135 class OnSuccess : public Base<S, T> { |
| 136 public: | 136 public: |
| 137 explicit OnSuccess(ScriptPromiseResolver* resolver) | 137 explicit OnSuccess(ScriptPromiseResolver* resolver) |
| 138 : Base<S, T>(resolver) {} | 138 : Base<S, T>(resolver) {} |
| 139 void onSuccess(typename S::WebType result) override { | 139 void onSuccess(typename S::WebType result) override { |
| 140 ScriptPromiseResolver* resolver = this->resolver(); | 140 ScriptPromiseResolver* resolver = this->resolver(); |
| 141 if (!resolver->getExecutionContext() || | 141 if (!resolver->getExecutionContext()) |
| 142 resolver->getExecutionContext()->activeDOMObjectsAreStopped()) | |
| 143 return; | 142 return; |
| 144 resolver->resolve(S::take(resolver, std::move(result))); | 143 resolver->resolve(S::take(resolver, std::move(result))); |
| 145 } | 144 } |
| 146 }; | 145 }; |
| 147 template <typename T> | 146 template <typename T> |
| 148 class OnSuccess<CallbackPromiseAdapterTrivialWebTypeHolder<void>, T> | 147 class OnSuccess<CallbackPromiseAdapterTrivialWebTypeHolder<void>, T> |
| 149 : public Base<CallbackPromiseAdapterTrivialWebTypeHolder<void>, T> { | 148 : public Base<CallbackPromiseAdapterTrivialWebTypeHolder<void>, T> { |
| 150 public: | 149 public: |
| 151 explicit OnSuccess(ScriptPromiseResolver* resolver) | 150 explicit OnSuccess(ScriptPromiseResolver* resolver) |
| 152 : Base<CallbackPromiseAdapterTrivialWebTypeHolder<void>, T>(resolver) {} | 151 : Base<CallbackPromiseAdapterTrivialWebTypeHolder<void>, T>(resolver) {} |
| 153 void onSuccess() override { | 152 void onSuccess() override { |
| 154 ScriptPromiseResolver* resolver = this->resolver(); | 153 ScriptPromiseResolver* resolver = this->resolver(); |
| 155 if (!resolver->getExecutionContext() || | 154 if (!resolver->getExecutionContext()) |
| 156 resolver->getExecutionContext()->activeDOMObjectsAreStopped()) | |
| 157 return; | 155 return; |
| 158 resolver->resolve(); | 156 resolver->resolve(); |
| 159 } | 157 } |
| 160 }; | 158 }; |
| 161 template <typename S, typename T> | 159 template <typename S, typename T> |
| 162 class OnError : public OnSuccess<S, T> { | 160 class OnError : public OnSuccess<S, T> { |
| 163 public: | 161 public: |
| 164 explicit OnError(ScriptPromiseResolver* resolver) | 162 explicit OnError(ScriptPromiseResolver* resolver) |
| 165 : OnSuccess<S, T>(resolver) {} | 163 : OnSuccess<S, T>(resolver) {} |
| 166 void onError(typename T::WebType e) override { | 164 void onError(typename T::WebType e) override { |
| 167 ScriptPromiseResolver* resolver = this->resolver(); | 165 ScriptPromiseResolver* resolver = this->resolver(); |
| 168 if (!resolver->getExecutionContext() || | 166 if (!resolver->getExecutionContext()) |
| 169 resolver->getExecutionContext()->activeDOMObjectsAreStopped()) | |
| 170 return; | 167 return; |
| 171 ScriptState::Scope scope(resolver->getScriptState()); | 168 ScriptState::Scope scope(resolver->getScriptState()); |
| 172 resolver->reject(T::take(resolver, std::move(e))); | 169 resolver->reject(T::take(resolver, std::move(e))); |
| 173 } | 170 } |
| 174 }; | 171 }; |
| 175 template <typename S> | 172 template <typename S> |
| 176 class OnError<S, CallbackPromiseAdapterTrivialWebTypeHolder<void>> | 173 class OnError<S, CallbackPromiseAdapterTrivialWebTypeHolder<void>> |
| 177 : public OnSuccess<S, CallbackPromiseAdapterTrivialWebTypeHolder<void>> { | 174 : public OnSuccess<S, CallbackPromiseAdapterTrivialWebTypeHolder<void>> { |
| 178 public: | 175 public: |
| 179 explicit OnError(ScriptPromiseResolver* resolver) | 176 explicit OnError(ScriptPromiseResolver* resolver) |
| 180 : OnSuccess<S, CallbackPromiseAdapterTrivialWebTypeHolder<void>>( | 177 : OnSuccess<S, CallbackPromiseAdapterTrivialWebTypeHolder<void>>( |
| 181 resolver) {} | 178 resolver) {} |
| 182 void onError() override { | 179 void onError() override { |
| 183 ScriptPromiseResolver* resolver = this->resolver(); | 180 ScriptPromiseResolver* resolver = this->resolver(); |
| 184 if (!resolver->getExecutionContext() || | 181 if (!resolver->getExecutionContext()) |
| 185 resolver->getExecutionContext()->activeDOMObjectsAreStopped()) | |
| 186 return; | 182 return; |
| 187 resolver->reject(); | 183 resolver->reject(); |
| 188 } | 184 } |
| 189 }; | 185 }; |
| 190 | 186 |
| 191 public: | 187 public: |
| 192 template <typename S, typename T> | 188 template <typename S, typename T> |
| 193 class CallbackPromiseAdapter final | 189 class CallbackPromiseAdapter final |
| 194 : public OnError<WebTypeHolder<S>, WebTypeHolder<T>> { | 190 : public OnError<WebTypeHolder<S>, WebTypeHolder<T>> { |
| 195 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter); | 191 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter); |
| 196 | 192 |
| 197 public: | 193 public: |
| 198 explicit CallbackPromiseAdapter(ScriptPromiseResolver* resolver) | 194 explicit CallbackPromiseAdapter(ScriptPromiseResolver* resolver) |
| 199 : OnError<WebTypeHolder<S>, WebTypeHolder<T>>(resolver) {} | 195 : OnError<WebTypeHolder<S>, WebTypeHolder<T>>(resolver) {} |
| 200 }; | 196 }; |
| 201 }; | 197 }; |
| 202 | 198 |
| 203 } // namespace internal | 199 } // namespace internal |
| 204 | 200 |
| 205 template <typename S, typename T> | 201 template <typename S, typename T> |
| 206 using CallbackPromiseAdapter = | 202 using CallbackPromiseAdapter = |
| 207 internal::CallbackPromiseAdapterInternal::CallbackPromiseAdapter<S, T>; | 203 internal::CallbackPromiseAdapterInternal::CallbackPromiseAdapter<S, T>; |
| 208 | 204 |
| 209 } // namespace blink | 205 } // namespace blink |
| 210 | 206 |
| 211 #endif | 207 #endif |
| OLD | NEW |