| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "platform/v8_inspector/PromiseTracker.h" | 5 #include "platform/v8_inspector/PromiseTracker.h" |
| 6 | 6 |
| 7 #include "platform/v8_inspector/V8DebuggerAgentImpl.h" | 7 #include "platform/v8_inspector/V8DebuggerAgentImpl.h" |
| 8 #include "platform/v8_inspector/V8StackTraceImpl.h" | 8 #include "platform/v8_inspector/V8StackTraceImpl.h" |
| 9 #include "wtf/CurrentTime.h" | 9 #include "wtf/CurrentTime.h" |
| 10 #include "wtf/PassOwnPtr.h" | 10 #include "wtf/PassOwnPtr.h" |
| 11 | 11 |
| 12 using blink::protocol::TypeBuilder::Array; | 12 using namespace blink::protocol; |
| 13 using blink::protocol::TypeBuilder::Runtime::CallFrame; | |
| 14 using blink::protocol::TypeBuilder::Debugger::PromiseDetails; | |
| 15 | 13 |
| 16 namespace blink { | 14 namespace blink { |
| 17 | 15 |
| 18 class PromiseTracker::PromiseWrapper { | 16 class PromiseTracker::PromiseWrapper { |
| 19 public: | 17 public: |
| 20 PromiseWrapper(PromiseTracker* tracker, int id, v8::Local<v8::Object> promis
e) | 18 PromiseWrapper(PromiseTracker* tracker, int id, v8::Local<v8::Object> promis
e) |
| 21 : m_tracker(tracker) | 19 : m_tracker(tracker) |
| 22 , m_id(id) | 20 , m_id(id) |
| 23 , m_promise(tracker->m_isolate, promise) { } | 21 , m_promise(tracker->m_isolate, promise) { } |
| 24 | 22 |
| 25 ~PromiseWrapper() | 23 ~PromiseWrapper() |
| 26 { | 24 { |
| 27 RefPtr<PromiseDetails> promiseDetails = PromiseDetails::create().setId(m
_id); | 25 OwnPtr<Debugger::PromiseDetails> promiseDetails = Debugger::PromiseDetai
ls::create().setId(m_id).build(); |
| 28 m_tracker->m_agent->didUpdatePromise(protocol::Frontend::Debugger::Event
Type::Gc, promiseDetails.release()); | 26 m_tracker->m_agent->didUpdatePromise(Debugger::PromiseUpdated::EventType
Enum::Gc, promiseDetails.release()); |
| 29 } | 27 } |
| 30 | 28 |
| 31 private: | 29 private: |
| 32 friend class PromiseTracker; | 30 friend class PromiseTracker; |
| 33 | 31 |
| 34 PromiseTracker* m_tracker; | 32 PromiseTracker* m_tracker; |
| 35 int m_id; | 33 int m_id; |
| 36 v8::Global<v8::Object> m_promise; | 34 v8::Global<v8::Object> m_promise; |
| 37 }; | 35 }; |
| 38 | 36 |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 103 } | 101 } |
| 104 | 102 |
| 105 void PromiseTracker::didReceiveV8PromiseEvent(v8::Local<v8::Context> context, v8
::Local<v8::Object> promise, v8::Local<v8::Value> parentPromise, int status) | 103 void PromiseTracker::didReceiveV8PromiseEvent(v8::Local<v8::Context> context, v8
::Local<v8::Object> promise, v8::Local<v8::Value> parentPromise, int status) |
| 106 { | 104 { |
| 107 ASSERT(isEnabled()); | 105 ASSERT(isEnabled()); |
| 108 ASSERT(!context.IsEmpty()); | 106 ASSERT(!context.IsEmpty()); |
| 109 | 107 |
| 110 bool isNewPromise = false; | 108 bool isNewPromise = false; |
| 111 int id = promiseId(promise, &isNewPromise); | 109 int id = promiseId(promise, &isNewPromise); |
| 112 | 110 |
| 113 protocol::Frontend::Debugger::EventType::Enum eventType = isNewPromise ? pro
tocol::Frontend::Debugger::EventType::New : protocol::Frontend::Debugger::EventT
ype::Update; | 111 String eventType = isNewPromise ? Debugger::PromiseUpdated::EventTypeEnum::N
ew : Debugger::PromiseUpdated::EventTypeEnum::Update; |
| 114 | 112 |
| 115 PromiseDetails::Status::Enum promiseStatus; | 113 String promiseStatus; |
| 116 switch (status) { | 114 switch (status) { |
| 117 case 0: | 115 case 0: |
| 118 promiseStatus = PromiseDetails::Status::Pending; | 116 promiseStatus = Debugger::PromiseDetails::StatusEnum::Pending; |
| 119 break; | 117 break; |
| 120 case 1: | 118 case 1: |
| 121 promiseStatus = PromiseDetails::Status::Resolved; | 119 promiseStatus = Debugger::PromiseDetails::StatusEnum::Resolved; |
| 122 break; | 120 break; |
| 123 default: | 121 default: |
| 124 promiseStatus = PromiseDetails::Status::Rejected; | 122 promiseStatus = Debugger::PromiseDetails::StatusEnum::Rejected; |
| 125 }; | 123 }; |
| 126 RefPtr<PromiseDetails> promiseDetails = PromiseDetails::create().setId(id); | 124 OwnPtr<Debugger::PromiseDetails> promiseDetails = Debugger::PromiseDetails::
create().setId(id).setStatus(promiseStatus).build(); |
| 127 promiseDetails->setStatus(promiseStatus); | |
| 128 | 125 |
| 129 if (!parentPromise.IsEmpty() && parentPromise->IsObject()) { | 126 if (!parentPromise.IsEmpty() && parentPromise->IsObject()) { |
| 130 v8::Local<v8::Object> handle = parentPromise->ToObject(context->GetIsola
te()); | 127 v8::Local<v8::Object> handle = parentPromise->ToObject(context->GetIsola
te()); |
| 131 bool parentIsNewPromise = false; | 128 bool parentIsNewPromise = false; |
| 132 int parentPromiseId = promiseId(handle, &parentIsNewPromise); | 129 int parentPromiseId = promiseId(handle, &parentIsNewPromise); |
| 133 promiseDetails->setParentId(parentPromiseId); | 130 promiseDetails->setParentId(parentPromiseId); |
| 134 } else { | 131 } else { |
| 135 if (!status) { | 132 if (!status) { |
| 136 if (isNewPromise) { | 133 if (isNewPromise) { |
| 137 promiseDetails->setCreationTime(currentTimeMS()); | 134 promiseDetails->setCreationTime(currentTimeMS()); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 153 } | 150 } |
| 154 | 151 |
| 155 v8::Local<v8::Object> PromiseTracker::promiseById(int promiseId) | 152 v8::Local<v8::Object> PromiseTracker::promiseById(int promiseId) |
| 156 { | 153 { |
| 157 ASSERT(isEnabled()); | 154 ASSERT(isEnabled()); |
| 158 PromiseWrapper* wrapper = m_idToPromise.get(promiseId); | 155 PromiseWrapper* wrapper = m_idToPromise.get(promiseId); |
| 159 return wrapper ? wrapper->m_promise.Get(m_isolate) : v8::Local<v8::Object>()
; | 156 return wrapper ? wrapper->m_promise.Get(m_isolate) : v8::Local<v8::Object>()
; |
| 160 } | 157 } |
| 161 | 158 |
| 162 } // namespace blink | 159 } // namespace blink |
| OLD | NEW |