| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "bindings/core/v8/RejectedPromises.h" | 5 #include "bindings/core/v8/RejectedPromises.h" |
| 6 | 6 |
| 7 #include "bindings/core/v8/ScopedPersistent.h" | 7 #include "bindings/core/v8/ScopedPersistent.h" |
| 8 #include "bindings/core/v8/ScriptState.h" | 8 #include "bindings/core/v8/ScriptState.h" |
| 9 #include "bindings/core/v8/ScriptValue.h" | 9 #include "bindings/core/v8/ScriptValue.h" |
| 10 #include "bindings/core/v8/V8Binding.h" | 10 #include "bindings/core/v8/V8Binding.h" |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 | 27 |
| 28 class RejectedPromises::Message final { | 28 class RejectedPromises::Message final { |
| 29 public: | 29 public: |
| 30 static std::unique_ptr<Message> create( | 30 static std::unique_ptr<Message> create( |
| 31 ScriptState* scriptState, | 31 ScriptState* scriptState, |
| 32 v8::Local<v8::Promise> promise, | 32 v8::Local<v8::Promise> promise, |
| 33 v8::Local<v8::Value> exception, | 33 v8::Local<v8::Value> exception, |
| 34 const String& errorMessage, | 34 const String& errorMessage, |
| 35 std::unique_ptr<SourceLocation> location, | 35 std::unique_ptr<SourceLocation> location, |
| 36 AccessControlStatus corsStatus) { | 36 AccessControlStatus corsStatus) { |
| 37 return wrapUnique(new Message(scriptState, promise, exception, errorMessage, | 37 return WTF::wrapUnique(new Message(scriptState, promise, exception, |
| 38 std::move(location), corsStatus)); | 38 errorMessage, std::move(location), |
| 39 corsStatus)); |
| 39 } | 40 } |
| 40 | 41 |
| 41 bool isCollected() { return m_collected || !m_scriptState->contextIsValid(); } | 42 bool isCollected() { return m_collected || !m_scriptState->contextIsValid(); } |
| 42 | 43 |
| 43 bool hasPromise(v8::Local<v8::Value> promise) { | 44 bool hasPromise(v8::Local<v8::Value> promise) { |
| 44 ScriptState::Scope scope(m_scriptState); | 45 ScriptState::Scope scope(m_scriptState); |
| 45 return promise == m_promise.newLocal(m_scriptState->isolate()); | 46 return promise == m_promise.newLocal(m_scriptState->isolate()); |
| 46 } | 47 } |
| 47 | 48 |
| 48 void report() { | 49 void report() { |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 208 | 209 |
| 209 // Then look it up in the reported errors. | 210 // Then look it up in the reported errors. |
| 210 for (size_t i = 0; i < m_reportedAsErrors.size(); ++i) { | 211 for (size_t i = 0; i < m_reportedAsErrors.size(); ++i) { |
| 211 std::unique_ptr<Message>& message = m_reportedAsErrors.at(i); | 212 std::unique_ptr<Message>& message = m_reportedAsErrors.at(i); |
| 212 if (!message->isCollected() && message->hasPromise(data.GetPromise())) { | 213 if (!message->isCollected() && message->hasPromise(data.GetPromise())) { |
| 213 message->makePromiseStrong(); | 214 message->makePromiseStrong(); |
| 214 Platform::current() | 215 Platform::current() |
| 215 ->currentThread() | 216 ->currentThread() |
| 216 ->scheduler() | 217 ->scheduler() |
| 217 ->timerTaskRunner() | 218 ->timerTaskRunner() |
| 218 ->postTask(BLINK_FROM_HERE, WTF::bind(&RejectedPromises::revokeNow, | 219 ->postTask(BLINK_FROM_HERE, |
| 219 RefPtr<RejectedPromises>(this), | 220 WTF::bind(&RejectedPromises::revokeNow, |
| 220 passed(std::move(message)))); | 221 RefPtr<RejectedPromises>(this), |
| 222 WTF::passed(std::move(message)))); |
| 221 m_reportedAsErrors.remove(i); | 223 m_reportedAsErrors.remove(i); |
| 222 return; | 224 return; |
| 223 } | 225 } |
| 224 } | 226 } |
| 225 } | 227 } |
| 226 | 228 |
| 227 std::unique_ptr<RejectedPromises::MessageQueue> | 229 std::unique_ptr<RejectedPromises::MessageQueue> |
| 228 RejectedPromises::createMessageQueue() { | 230 RejectedPromises::createMessageQueue() { |
| 229 return makeUnique<MessageQueue>(); | 231 return WTF::makeUnique<MessageQueue>(); |
| 230 } | 232 } |
| 231 | 233 |
| 232 void RejectedPromises::dispose() { | 234 void RejectedPromises::dispose() { |
| 233 if (m_queue.isEmpty()) | 235 if (m_queue.isEmpty()) |
| 234 return; | 236 return; |
| 235 | 237 |
| 236 std::unique_ptr<MessageQueue> queue = createMessageQueue(); | 238 std::unique_ptr<MessageQueue> queue = createMessageQueue(); |
| 237 queue->swap(m_queue); | 239 queue->swap(m_queue); |
| 238 processQueueNow(std::move(queue)); | 240 processQueueNow(std::move(queue)); |
| 239 } | 241 } |
| 240 | 242 |
| 241 void RejectedPromises::processQueue() { | 243 void RejectedPromises::processQueue() { |
| 242 if (m_queue.isEmpty()) | 244 if (m_queue.isEmpty()) |
| 243 return; | 245 return; |
| 244 | 246 |
| 245 std::unique_ptr<MessageQueue> queue = createMessageQueue(); | 247 std::unique_ptr<MessageQueue> queue = createMessageQueue(); |
| 246 queue->swap(m_queue); | 248 queue->swap(m_queue); |
| 247 Platform::current() | 249 Platform::current() |
| 248 ->currentThread() | 250 ->currentThread() |
| 249 ->scheduler() | 251 ->scheduler() |
| 250 ->timerTaskRunner() | 252 ->timerTaskRunner() |
| 251 ->postTask(BLINK_FROM_HERE, WTF::bind(&RejectedPromises::processQueueNow, | 253 ->postTask(BLINK_FROM_HERE, WTF::bind(&RejectedPromises::processQueueNow, |
| 252 PassRefPtr<RejectedPromises>(this), | 254 PassRefPtr<RejectedPromises>(this), |
| 253 passed(std::move(queue)))); | 255 WTF::passed(std::move(queue)))); |
| 254 } | 256 } |
| 255 | 257 |
| 256 void RejectedPromises::processQueueNow(std::unique_ptr<MessageQueue> queue) { | 258 void RejectedPromises::processQueueNow(std::unique_ptr<MessageQueue> queue) { |
| 257 // Remove collected handlers. | 259 // Remove collected handlers. |
| 258 for (size_t i = 0; i < m_reportedAsErrors.size();) { | 260 for (size_t i = 0; i < m_reportedAsErrors.size();) { |
| 259 if (m_reportedAsErrors.at(i)->isCollected()) | 261 if (m_reportedAsErrors.at(i)->isCollected()) |
| 260 m_reportedAsErrors.remove(i); | 262 m_reportedAsErrors.remove(i); |
| 261 else | 263 else |
| 262 ++i; | 264 ++i; |
| 263 } | 265 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 274 m_reportedAsErrors.remove(0, maxReportedHandlersPendingResolution / 10); | 276 m_reportedAsErrors.remove(0, maxReportedHandlersPendingResolution / 10); |
| 275 } | 277 } |
| 276 } | 278 } |
| 277 } | 279 } |
| 278 | 280 |
| 279 void RejectedPromises::revokeNow(std::unique_ptr<Message> message) { | 281 void RejectedPromises::revokeNow(std::unique_ptr<Message> message) { |
| 280 message->revoke(); | 282 message->revoke(); |
| 281 } | 283 } |
| 282 | 284 |
| 283 } // namespace blink | 285 } // namespace blink |
| OLD | NEW |