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 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
183 } | 183 } |
184 | 184 |
185 ASSERT(!derivedPromise.IsEmpty()); | 185 ASSERT(!derivedPromise.IsEmpty()); |
186 derivedPromises->Set(derivedPromises->Length(), derivedPromise); | 186 derivedPromises->Set(derivedPromises->Length(), derivedPromise); |
187 | 187 |
188 // Since they are treated as a tuple, | 188 // Since they are treated as a tuple, |
189 // we need to guaranteed that the length of these arrays are same. | 189 // we need to guaranteed that the length of these arrays are same. |
190 ASSERT(fulfillCallbacks->Length() == rejectCallbacks->Length() && rejectCall
backs->Length() == derivedPromises->Length()); | 190 ASSERT(fulfillCallbacks->Length() == rejectCallbacks->Length() && rejectCall
backs->Length() == derivedPromises->Length()); |
191 } | 191 } |
192 | 192 |
193 class CallHandlerTask : public ExecutionContextTask { | 193 class CallHandlerTask FINAL : public ExecutionContextTask { |
194 public: | 194 public: |
195 CallHandlerTask(v8::Handle<v8::Object> promise, v8::Handle<v8::Function> han
dler, v8::Handle<v8::Value> argument, v8::Isolate* isolate, ExecutionContext* co
ntext) | 195 CallHandlerTask(v8::Handle<v8::Object> promise, v8::Handle<v8::Function> han
dler, v8::Handle<v8::Value> argument, v8::Isolate* isolate, ExecutionContext* co
ntext) |
196 : m_promise(isolate, promise) | 196 : m_promise(isolate, promise) |
197 , m_handler(isolate, handler) | 197 , m_handler(isolate, handler) |
198 , m_argument(isolate, argument) | 198 , m_argument(isolate, argument) |
199 , m_requestState(context) | 199 , m_requestState(context) |
200 { | 200 { |
201 ASSERT(!m_promise.isEmpty()); | 201 ASSERT(!m_promise.isEmpty()); |
202 ASSERT(!m_handler.isEmpty()); | 202 ASSERT(!m_handler.isEmpty()); |
203 ASSERT(!m_argument.isEmpty()); | 203 ASSERT(!m_argument.isEmpty()); |
(...skipping 20 matching lines...) Expand all Loading... |
224 v8::Handle<v8::Value> info[] = { m_argument.newLocal(isolate) }; | 224 v8::Handle<v8::Value> info[] = { m_argument.newLocal(isolate) }; |
225 v8::TryCatch trycatch; | 225 v8::TryCatch trycatch; |
226 v8::Local<v8::Value> value = V8ScriptRunner::callFunction(m_handler.newLocal
(isolate), context, v8::Undefined(isolate), WTF_ARRAY_LENGTH(info), info, isolat
e); | 226 v8::Local<v8::Value> value = V8ScriptRunner::callFunction(m_handler.newLocal
(isolate), context, v8::Undefined(isolate), WTF_ARRAY_LENGTH(info), info, isolat
e); |
227 if (value.IsEmpty()) { | 227 if (value.IsEmpty()) { |
228 V8PromiseCustom::reject(m_promise.newLocal(isolate), trycatch.Exception(
), isolate); | 228 V8PromiseCustom::reject(m_promise.newLocal(isolate), trycatch.Exception(
), isolate); |
229 } else { | 229 } else { |
230 V8PromiseCustom::resolve(m_promise.newLocal(isolate), value, isolate); | 230 V8PromiseCustom::resolve(m_promise.newLocal(isolate), value, isolate); |
231 } | 231 } |
232 } | 232 } |
233 | 233 |
234 class UpdateDerivedTask : public ExecutionContextTask { | 234 class UpdateDerivedTask FINAL : public ExecutionContextTask { |
235 public: | 235 public: |
236 UpdateDerivedTask(v8::Handle<v8::Object> promise, v8::Handle<v8::Function> o
nFulfilled, v8::Handle<v8::Function> onRejected, v8::Handle<v8::Object> originat
orValueObject, v8::Isolate* isolate, ExecutionContext* context) | 236 UpdateDerivedTask(v8::Handle<v8::Object> promise, v8::Handle<v8::Function> o
nFulfilled, v8::Handle<v8::Function> onRejected, v8::Handle<v8::Object> originat
orValueObject, v8::Isolate* isolate, ExecutionContext* context) |
237 : m_promise(isolate, promise) | 237 : m_promise(isolate, promise) |
238 , m_onFulfilled(isolate, onFulfilled) | 238 , m_onFulfilled(isolate, onFulfilled) |
239 , m_onRejected(isolate, onRejected) | 239 , m_onRejected(isolate, onRejected) |
240 , m_originatorValueObject(isolate, originatorValueObject) | 240 , m_originatorValueObject(isolate, originatorValueObject) |
241 , m_requestState(context) | 241 , m_requestState(context) |
242 { | 242 { |
243 ASSERT(!m_promise.isEmpty()); | 243 ASSERT(!m_promise.isEmpty()); |
244 ASSERT(!m_originatorValueObject.isEmpty()); | 244 ASSERT(!m_originatorValueObject.isEmpty()); |
(...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
784 } | 784 } |
785 | 785 |
786 void V8PromiseCustom::callHandler(v8::Handle<v8::Object> promise, v8::Handle<v8:
:Function> handler, v8::Handle<v8::Value> argument, v8::Isolate* isolate) | 786 void V8PromiseCustom::callHandler(v8::Handle<v8::Object> promise, v8::Handle<v8:
:Function> handler, v8::Handle<v8::Value> argument, v8::Isolate* isolate) |
787 { | 787 { |
788 ExecutionContext* executionContext = getExecutionContext(); | 788 ExecutionContext* executionContext = getExecutionContext(); |
789 ASSERT(executionContext && executionContext->isContextThread()); | 789 ASSERT(executionContext && executionContext->isContextThread()); |
790 executionContext->postTask(adoptPtr(new CallHandlerTask(promise, handler, ar
gument, isolate, executionContext))); | 790 executionContext->postTask(adoptPtr(new CallHandlerTask(promise, handler, ar
gument, isolate, executionContext))); |
791 } | 791 } |
792 | 792 |
793 } // namespace WebCore | 793 } // namespace WebCore |
OLD | NEW |