| 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 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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()) | 142 resolver->getExecutionContext()->isContextDestroyed()) |
| 143 return; | 143 return; |
| 144 resolver->resolve(S::take(resolver, std::move(result))); | 144 resolver->resolve(S::take(resolver, std::move(result))); |
| 145 } | 145 } |
| 146 }; | 146 }; |
| 147 template <typename T> | 147 template <typename T> |
| 148 class OnSuccess<CallbackPromiseAdapterTrivialWebTypeHolder<void>, T> | 148 class OnSuccess<CallbackPromiseAdapterTrivialWebTypeHolder<void>, T> |
| 149 : public Base<CallbackPromiseAdapterTrivialWebTypeHolder<void>, T> { | 149 : public Base<CallbackPromiseAdapterTrivialWebTypeHolder<void>, T> { |
| 150 public: | 150 public: |
| 151 explicit OnSuccess(ScriptPromiseResolver* resolver) | 151 explicit OnSuccess(ScriptPromiseResolver* resolver) |
| 152 : Base<CallbackPromiseAdapterTrivialWebTypeHolder<void>, T>(resolver) {} | 152 : Base<CallbackPromiseAdapterTrivialWebTypeHolder<void>, T>(resolver) {} |
| 153 void onSuccess() override { | 153 void onSuccess() override { |
| 154 ScriptPromiseResolver* resolver = this->resolver(); | 154 ScriptPromiseResolver* resolver = this->resolver(); |
| 155 if (!resolver->getExecutionContext() || | 155 if (!resolver->getExecutionContext() || |
| 156 resolver->getExecutionContext()->activeDOMObjectsAreStopped()) | 156 resolver->getExecutionContext()->isContextDestroyed()) |
| 157 return; | 157 return; |
| 158 resolver->resolve(); | 158 resolver->resolve(); |
| 159 } | 159 } |
| 160 }; | 160 }; |
| 161 template <typename S, typename T> | 161 template <typename S, typename T> |
| 162 class OnError : public OnSuccess<S, T> { | 162 class OnError : public OnSuccess<S, T> { |
| 163 public: | 163 public: |
| 164 explicit OnError(ScriptPromiseResolver* resolver) | 164 explicit OnError(ScriptPromiseResolver* resolver) |
| 165 : OnSuccess<S, T>(resolver) {} | 165 : OnSuccess<S, T>(resolver) {} |
| 166 void onError(typename T::WebType e) override { | 166 void onError(typename T::WebType e) override { |
| 167 ScriptPromiseResolver* resolver = this->resolver(); | 167 ScriptPromiseResolver* resolver = this->resolver(); |
| 168 if (!resolver->getExecutionContext() || | 168 if (!resolver->getExecutionContext() || |
| 169 resolver->getExecutionContext()->activeDOMObjectsAreStopped()) | 169 resolver->getExecutionContext()->isContextDestroyed()) |
| 170 return; | 170 return; |
| 171 ScriptState::Scope scope(resolver->getScriptState()); | 171 ScriptState::Scope scope(resolver->getScriptState()); |
| 172 resolver->reject(T::take(resolver, std::move(e))); | 172 resolver->reject(T::take(resolver, std::move(e))); |
| 173 } | 173 } |
| 174 }; | 174 }; |
| 175 template <typename S> | 175 template <typename S> |
| 176 class OnError<S, CallbackPromiseAdapterTrivialWebTypeHolder<void>> | 176 class OnError<S, CallbackPromiseAdapterTrivialWebTypeHolder<void>> |
| 177 : public OnSuccess<S, CallbackPromiseAdapterTrivialWebTypeHolder<void>> { | 177 : public OnSuccess<S, CallbackPromiseAdapterTrivialWebTypeHolder<void>> { |
| 178 public: | 178 public: |
| 179 explicit OnError(ScriptPromiseResolver* resolver) | 179 explicit OnError(ScriptPromiseResolver* resolver) |
| 180 : OnSuccess<S, CallbackPromiseAdapterTrivialWebTypeHolder<void>>( | 180 : OnSuccess<S, CallbackPromiseAdapterTrivialWebTypeHolder<void>>( |
| 181 resolver) {} | 181 resolver) {} |
| 182 void onError() override { | 182 void onError() override { |
| 183 ScriptPromiseResolver* resolver = this->resolver(); | 183 ScriptPromiseResolver* resolver = this->resolver(); |
| 184 if (!resolver->getExecutionContext() || | 184 if (!resolver->getExecutionContext() || |
| 185 resolver->getExecutionContext()->activeDOMObjectsAreStopped()) | 185 resolver->getExecutionContext()->isContextDestroyed()) |
| 186 return; | 186 return; |
| 187 resolver->reject(); | 187 resolver->reject(); |
| 188 } | 188 } |
| 189 }; | 189 }; |
| 190 | 190 |
| 191 public: | 191 public: |
| 192 template <typename S, typename T> | 192 template <typename S, typename T> |
| 193 class CallbackPromiseAdapter final | 193 class CallbackPromiseAdapter final |
| 194 : public OnError<WebTypeHolder<S>, WebTypeHolder<T>> { | 194 : public OnError<WebTypeHolder<S>, WebTypeHolder<T>> { |
| 195 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter); | 195 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter); |
| 196 | 196 |
| 197 public: | 197 public: |
| 198 explicit CallbackPromiseAdapter(ScriptPromiseResolver* resolver) | 198 explicit CallbackPromiseAdapter(ScriptPromiseResolver* resolver) |
| 199 : OnError<WebTypeHolder<S>, WebTypeHolder<T>>(resolver) {} | 199 : OnError<WebTypeHolder<S>, WebTypeHolder<T>>(resolver) {} |
| 200 }; | 200 }; |
| 201 }; | 201 }; |
| 202 | 202 |
| 203 } // namespace internal | 203 } // namespace internal |
| 204 | 204 |
| 205 template <typename S, typename T> | 205 template <typename S, typename T> |
| 206 using CallbackPromiseAdapter = | 206 using CallbackPromiseAdapter = |
| 207 internal::CallbackPromiseAdapterInternal::CallbackPromiseAdapter<S, T>; | 207 internal::CallbackPromiseAdapterInternal::CallbackPromiseAdapter<S, T>; |
| 208 | 208 |
| 209 } // namespace blink | 209 } // namespace blink |
| 210 | 210 |
| 211 #endif | 211 #endif |
| OLD | NEW |