| 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 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 // - onSuccess and onError take ownership of the given WebType instance. | 74 // - onSuccess and onError take ownership of the given WebType instance. |
| 75 template<typename S, typename T> | 75 template<typename S, typename T> |
| 76 class CallbackPromiseAdapter final : public WebCallbacks<typename S::WebType, ty
pename T::WebType> { | 76 class CallbackPromiseAdapter final : public WebCallbacks<typename S::WebType, ty
pename T::WebType> { |
| 77 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter); | 77 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter); |
| 78 public: | 78 public: |
| 79 explicit CallbackPromiseAdapter(PassRefPtrWillBeRawPtr<ScriptPromiseResolver
> resolver) | 79 explicit CallbackPromiseAdapter(PassRefPtrWillBeRawPtr<ScriptPromiseResolver
> resolver) |
| 80 : m_resolver(resolver) | 80 : m_resolver(resolver) |
| 81 { | 81 { |
| 82 ASSERT(m_resolver); | 82 ASSERT(m_resolver); |
| 83 } | 83 } |
| 84 virtual ~CallbackPromiseAdapter() { } | 84 ~CallbackPromiseAdapter() override { } |
| 85 | 85 |
| 86 // Takes ownership of |result|. | 86 // Takes ownership of |result|. |
| 87 virtual void onSuccess(typename S::WebType* result) override | 87 void onSuccess(typename S::WebType* result) override |
| 88 { | 88 { |
| 89 OwnPtr<typename S::WebType> ownPtr = adoptPtr(result); | 89 OwnPtr<typename S::WebType> ownPtr = adoptPtr(result); |
| 90 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 90 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) |
| 91 return; | 91 return; |
| 92 if (!result) { | 92 if (!result) { |
| 93 m_resolver->resolve(v8::Null(m_resolver->scriptState()->isolate())); | 93 m_resolver->resolve(v8::Null(m_resolver->scriptState()->isolate())); |
| 94 return; | 94 return; |
| 95 } | 95 } |
| 96 m_resolver->resolve(S::take(m_resolver.get(), ownPtr.release())); | 96 m_resolver->resolve(S::take(m_resolver.get(), ownPtr.release())); |
| 97 } | 97 } |
| 98 | 98 |
| 99 // Takes ownership of |error|. | 99 // Takes ownership of |error|. |
| 100 virtual void onError(typename T::WebType* error) override | 100 void onError(typename T::WebType* error) override |
| 101 { | 101 { |
| 102 OwnPtr<typename T::WebType> ownPtr = adoptPtr(error); | 102 OwnPtr<typename T::WebType> ownPtr = adoptPtr(error); |
| 103 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 103 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) |
| 104 return; | 104 return; |
| 105 m_resolver->reject(T::take(m_resolver.get(), ownPtr.release())); | 105 m_resolver->reject(T::take(m_resolver.get(), ownPtr.release())); |
| 106 } | 106 } |
| 107 | 107 |
| 108 private: | 108 private: |
| 109 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver; | 109 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver; |
| 110 }; | 110 }; |
| 111 | 111 |
| 112 template<typename T> | 112 template<typename T> |
| 113 class CallbackPromiseAdapter<void, T> final : public WebCallbacks<void, typename
T::WebType> { | 113 class CallbackPromiseAdapter<void, T> final : public WebCallbacks<void, typename
T::WebType> { |
| 114 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter); | 114 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter); |
| 115 public: | 115 public: |
| 116 explicit CallbackPromiseAdapter(PassRefPtrWillBeRawPtr<ScriptPromiseResolver
> resolver) | 116 explicit CallbackPromiseAdapter(PassRefPtrWillBeRawPtr<ScriptPromiseResolver
> resolver) |
| 117 : m_resolver(resolver) | 117 : m_resolver(resolver) |
| 118 { | 118 { |
| 119 ASSERT(m_resolver); | 119 ASSERT(m_resolver); |
| 120 } | 120 } |
| 121 virtual ~CallbackPromiseAdapter() { } | 121 ~CallbackPromiseAdapter() override { } |
| 122 | 122 |
| 123 virtual void onSuccess() override | 123 void onSuccess() override |
| 124 { | 124 { |
| 125 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 125 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) |
| 126 return; | 126 return; |
| 127 m_resolver->resolve(); | 127 m_resolver->resolve(); |
| 128 } | 128 } |
| 129 | 129 |
| 130 // Takes ownership of |error|. | 130 // Takes ownership of |error|. |
| 131 virtual void onError(typename T::WebType* error) override | 131 void onError(typename T::WebType* error) override |
| 132 { | 132 { |
| 133 OwnPtr<typename T::WebType> ownPtr = adoptPtr(error); | 133 OwnPtr<typename T::WebType> ownPtr = adoptPtr(error); |
| 134 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 134 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) |
| 135 return; | 135 return; |
| 136 m_resolver->reject(T::take(m_resolver.get(), ownPtr.release())); | 136 m_resolver->reject(T::take(m_resolver.get(), ownPtr.release())); |
| 137 } | 137 } |
| 138 | 138 |
| 139 private: | 139 private: |
| 140 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver; | 140 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver; |
| 141 }; | 141 }; |
| 142 | 142 |
| 143 template<typename S> | 143 template<typename S> |
| 144 class CallbackPromiseAdapter<S, void> final : public WebCallbacks<typename S::We
bType, void> { | 144 class CallbackPromiseAdapter<S, void> final : public WebCallbacks<typename S::We
bType, void> { |
| 145 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter); | 145 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter); |
| 146 public: | 146 public: |
| 147 explicit CallbackPromiseAdapter(PassRefPtrWillBeRawPtr<ScriptPromiseResolver
> resolver) | 147 explicit CallbackPromiseAdapter(PassRefPtrWillBeRawPtr<ScriptPromiseResolver
> resolver) |
| 148 : m_resolver(resolver) | 148 : m_resolver(resolver) |
| 149 { | 149 { |
| 150 ASSERT(m_resolver); | 150 ASSERT(m_resolver); |
| 151 } | 151 } |
| 152 virtual ~CallbackPromiseAdapter() { } | 152 ~CallbackPromiseAdapter() override { } |
| 153 | 153 |
| 154 // Takes ownership of |result|. | 154 // Takes ownership of |result|. |
| 155 virtual void onSuccess(typename S::WebType* result) override | 155 void onSuccess(typename S::WebType* result) override |
| 156 { | 156 { |
| 157 OwnPtr<typename S::WebType> ownPtr = adoptPtr(result); | 157 OwnPtr<typename S::WebType> ownPtr = adoptPtr(result); |
| 158 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 158 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) |
| 159 return; | 159 return; |
| 160 m_resolver->resolve(S::take(m_resolver.get(), ownPtr.release())); | 160 m_resolver->resolve(S::take(m_resolver.get(), ownPtr.release())); |
| 161 } | 161 } |
| 162 | 162 |
| 163 virtual void onError() override | 163 void onError() override |
| 164 { | 164 { |
| 165 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 165 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) |
| 166 return; | 166 return; |
| 167 m_resolver->reject(); | 167 m_resolver->reject(); |
| 168 } | 168 } |
| 169 | 169 |
| 170 private: | 170 private: |
| 171 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver; | 171 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver; |
| 172 }; | 172 }; |
| 173 | 173 |
| 174 template<typename T> | 174 template<typename T> |
| 175 class CallbackPromiseAdapter<bool, T> final : public WebCallbacks<bool, typename
T::WebType> { | 175 class CallbackPromiseAdapter<bool, T> final : public WebCallbacks<bool, typename
T::WebType> { |
| 176 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter); | 176 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter); |
| 177 public: | 177 public: |
| 178 explicit CallbackPromiseAdapter(PassRefPtrWillBeRawPtr<ScriptPromiseResolver
> resolver) | 178 explicit CallbackPromiseAdapter(PassRefPtrWillBeRawPtr<ScriptPromiseResolver
> resolver) |
| 179 : m_resolver(resolver) | 179 : m_resolver(resolver) |
| 180 { | 180 { |
| 181 ASSERT(m_resolver); | 181 ASSERT(m_resolver); |
| 182 } | 182 } |
| 183 virtual ~CallbackPromiseAdapter() { } | 183 ~CallbackPromiseAdapter() override { } |
| 184 | 184 |
| 185 // TODO(nhiroki): onSuccess should take ownership of a bool object for | 185 // TODO(nhiroki): onSuccess should take ownership of a bool object for |
| 186 // consistency. (http://crbug.com/493531) | 186 // consistency. (http://crbug.com/493531) |
| 187 virtual void onSuccess(bool* result) override | 187 void onSuccess(bool* result) override |
| 188 { | 188 { |
| 189 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 189 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) |
| 190 return; | 190 return; |
| 191 m_resolver->resolve(*result); | 191 m_resolver->resolve(*result); |
| 192 } | 192 } |
| 193 | 193 |
| 194 // Takes ownership of |error|. | 194 // Takes ownership of |error|. |
| 195 virtual void onError(typename T::WebType* error) override | 195 void onError(typename T::WebType* error) override |
| 196 { | 196 { |
| 197 OwnPtr<typename T::WebType> ownPtr = adoptPtr(error); | 197 OwnPtr<typename T::WebType> ownPtr = adoptPtr(error); |
| 198 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 198 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) |
| 199 return; | 199 return; |
| 200 m_resolver->reject(T::take(m_resolver.get(), ownPtr.release())); | 200 m_resolver->reject(T::take(m_resolver.get(), ownPtr.release())); |
| 201 } | 201 } |
| 202 | 202 |
| 203 private: | 203 private: |
| 204 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver; | 204 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver; |
| 205 }; | 205 }; |
| 206 | 206 |
| 207 template<> | 207 template<> |
| 208 class CallbackPromiseAdapter<void, void> final : public WebCallbacks<void, void>
{ | 208 class CallbackPromiseAdapter<void, void> final : public WebCallbacks<void, void>
{ |
| 209 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter); | 209 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter); |
| 210 public: | 210 public: |
| 211 explicit CallbackPromiseAdapter(PassRefPtrWillBeRawPtr<ScriptPromiseResolver
> resolver) | 211 explicit CallbackPromiseAdapter(PassRefPtrWillBeRawPtr<ScriptPromiseResolver
> resolver) |
| 212 : m_resolver(resolver) | 212 : m_resolver(resolver) |
| 213 { | 213 { |
| 214 ASSERT(m_resolver); | 214 ASSERT(m_resolver); |
| 215 } | 215 } |
| 216 virtual ~CallbackPromiseAdapter() { } | 216 ~CallbackPromiseAdapter() override { } |
| 217 | 217 |
| 218 virtual void onSuccess() override | 218 void onSuccess() override |
| 219 { | 219 { |
| 220 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 220 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) |
| 221 return; | 221 return; |
| 222 m_resolver->resolve(); | 222 m_resolver->resolve(); |
| 223 } | 223 } |
| 224 | 224 |
| 225 virtual void onError() override | 225 void onError() override |
| 226 { | 226 { |
| 227 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 227 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) |
| 228 return; | 228 return; |
| 229 m_resolver->reject(); | 229 m_resolver->reject(); |
| 230 } | 230 } |
| 231 | 231 |
| 232 private: | 232 private: |
| 233 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver; | 233 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver; |
| 234 }; | 234 }; |
| 235 | 235 |
| 236 template<> | 236 template<> |
| 237 class CallbackPromiseAdapter<bool, void> final : public WebCallbacks<bool, void>
{ | 237 class CallbackPromiseAdapter<bool, void> final : public WebCallbacks<bool, void>
{ |
| 238 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter); | 238 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter); |
| 239 public: | 239 public: |
| 240 explicit CallbackPromiseAdapter(PassRefPtrWillBeRawPtr<ScriptPromiseResolver
> resolver) | 240 explicit CallbackPromiseAdapter(PassRefPtrWillBeRawPtr<ScriptPromiseResolver
> resolver) |
| 241 : m_resolver(resolver) | 241 : m_resolver(resolver) |
| 242 { | 242 { |
| 243 ASSERT(m_resolver); | 243 ASSERT(m_resolver); |
| 244 } | 244 } |
| 245 virtual ~CallbackPromiseAdapter() { } | 245 ~CallbackPromiseAdapter() override { } |
| 246 | 246 |
| 247 // TODO(nhiroki): onSuccess should take ownership of a bool object for | 247 // TODO(nhiroki): onSuccess should take ownership of a bool object for |
| 248 // consistency. (http://crbug.com/493531) | 248 // consistency. (http://crbug.com/493531) |
| 249 virtual void onSuccess(bool* result) override | 249 void onSuccess(bool* result) override |
| 250 { | 250 { |
| 251 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 251 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) |
| 252 return; | 252 return; |
| 253 m_resolver->resolve(*result); | 253 m_resolver->resolve(*result); |
| 254 } | 254 } |
| 255 | 255 |
| 256 virtual void onError() override | 256 void onError() override |
| 257 { | 257 { |
| 258 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 258 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) |
| 259 return; | 259 return; |
| 260 m_resolver->reject(); | 260 m_resolver->reject(); |
| 261 } | 261 } |
| 262 | 262 |
| 263 private: | 263 private: |
| 264 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver; | 264 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver; |
| 265 }; | 265 }; |
| 266 | 266 |
| 267 } // namespace blink | 267 } // namespace blink |
| 268 | 268 |
| 269 #endif | 269 #endif |
| OLD | NEW |