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 "config.h" | 5 #include "config.h" |
6 #include "core/inspector/PromiseTracker.h" | 6 #include "core/inspector/PromiseTracker.h" |
7 | 7 |
8 #include "bindings/core/v8/ScopedPersistent.h" | 8 #include "bindings/core/v8/ScopedPersistent.h" |
9 #include "bindings/core/v8/ScriptCallStackFactory.h" | 9 #include "bindings/core/v8/ScriptCallStackFactory.h" |
10 #include "bindings/core/v8/ScriptState.h" | 10 #include "bindings/core/v8/ScriptState.h" |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
137 static PassOwnPtrWillBeRawPtr<PromiseDataWrapper> create(PromiseTracker::Pro
miseData* data, PromiseTracker* tracker) | 137 static PassOwnPtrWillBeRawPtr<PromiseDataWrapper> create(PromiseTracker::Pro
miseData* data, PromiseTracker* tracker) |
138 { | 138 { |
139 #if ENABLE(OILPAN) | 139 #if ENABLE(OILPAN) |
140 return new PromiseDataWrapper(data, tracker); | 140 return new PromiseDataWrapper(data, tracker); |
141 #else | 141 #else |
142 return adoptPtr(new PromiseDataWrapper(data->createWeakPtr(), tracker)); | 142 return adoptPtr(new PromiseDataWrapper(data->createWeakPtr(), tracker)); |
143 #endif | 143 #endif |
144 } | 144 } |
145 | 145 |
146 #if ENABLE(OILPAN) | 146 #if ENABLE(OILPAN) |
147 static void didRemovePromise(const v8::WeakCallbackData<v8::Object, Persiste
nt<PromiseDataWrapper> >& data) | 147 static void didRemovePromise(const v8::WeakCallbackData<v8::Object, Persiste
nt<PromiseDataWrapper>>& data) |
148 #else | 148 #else |
149 static void didRemovePromise(const v8::WeakCallbackData<v8::Object, PromiseD
ataWrapper>& data) | 149 static void didRemovePromise(const v8::WeakCallbackData<v8::Object, PromiseD
ataWrapper>& data) |
150 #endif | 150 #endif |
151 { | 151 { |
152 #if ENABLE(OILPAN) | 152 #if ENABLE(OILPAN) |
153 OwnPtr<Persistent<PromiseDataWrapper> > persistentWrapper = adoptPtr(dat
a.GetParameter()); | 153 OwnPtr<Persistent<PromiseDataWrapper>> persistentWrapper = adoptPtr(data
.GetParameter()); |
154 RawPtr<PromiseDataWrapper> wrapper = *persistentWrapper; | 154 RawPtr<PromiseDataWrapper> wrapper = *persistentWrapper; |
155 #else | 155 #else |
156 OwnPtr<PromiseDataWrapper> wrapper = adoptPtr(data.GetParameter()); | 156 OwnPtr<PromiseDataWrapper> wrapper = adoptPtr(data.GetParameter()); |
157 #endif | 157 #endif |
158 WeakPtrWillBeRawPtr<PromiseTracker::PromiseData> promiseData = wrapper->
m_data; | 158 WeakPtrWillBeRawPtr<PromiseTracker::PromiseData> promiseData = wrapper->
m_data; |
159 if (!promiseData || !wrapper->m_tracker) | 159 if (!promiseData || !wrapper->m_tracker) |
160 return; | 160 return; |
161 | 161 |
162 PromiseTracker::Listener* listener = wrapper->m_tracker->listener(); | 162 PromiseTracker::Listener* listener = wrapper->m_tracker->listener(); |
163 if (listener) | 163 if (listener) |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
264 vector = &m_promiseDataMap.add(promiseHash, PromiseDataVector()).storedV
alue->value; | 264 vector = &m_promiseDataMap.add(promiseHash, PromiseDataVector()).storedV
alue->value; |
265 } | 265 } |
266 | 266 |
267 // FIXME: Consider using the ScriptState's DOMWrapperWorld instead | 267 // FIXME: Consider using the ScriptState's DOMWrapperWorld instead |
268 // to handle the lifetime of PromiseDataWrapper, avoiding all this | 268 // to handle the lifetime of PromiseDataWrapper, avoiding all this |
269 // manual labor to achieve the same, with and without Oilpan. | 269 // manual labor to achieve the same, with and without Oilpan. |
270 int promiseId = circularSequentialId(); | 270 int promiseId = circularSequentialId(); |
271 RefPtrWillBeRawPtr<PromiseData> data = PromiseData::create(scriptState, prom
iseHash, promiseId, promise); | 271 RefPtrWillBeRawPtr<PromiseData> data = PromiseData::create(scriptState, prom
iseHash, promiseId, promise); |
272 OwnPtrWillBeRawPtr<PromiseDataWrapper> dataWrapper = PromiseDataWrapper::cre
ate(data.get(), this); | 272 OwnPtrWillBeRawPtr<PromiseDataWrapper> dataWrapper = PromiseDataWrapper::cre
ate(data.get(), this); |
273 #if ENABLE(OILPAN) | 273 #if ENABLE(OILPAN) |
274 OwnPtr<Persistent<PromiseDataWrapper> > wrapper = adoptPtr(new Persistent<Pr
omiseDataWrapper>(dataWrapper)); | 274 OwnPtr<Persistent<PromiseDataWrapper>> wrapper = adoptPtr(new Persistent<Pro
miseDataWrapper>(dataWrapper)); |
275 #else | 275 #else |
276 OwnPtr<PromiseDataWrapper> wrapper = dataWrapper.release(); | 276 OwnPtr<PromiseDataWrapper> wrapper = dataWrapper.release(); |
277 #endif | 277 #endif |
278 data->m_promise.setWeak(wrapper.leakPtr(), &PromiseDataWrapper::didRemovePro
mise); | 278 data->m_promise.setWeak(wrapper.leakPtr(), &PromiseDataWrapper::didRemovePro
mise); |
279 vector->append(data); | 279 vector->append(data); |
280 | 280 |
281 m_promiseIdToDataMap.set(promiseId, data); | 281 m_promiseIdToDataMap.set(promiseId, data); |
282 | 282 |
283 return data.release(); | 283 return data.release(); |
284 } | 284 } |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
319 if (stack && stack->size()) | 319 if (stack && stack->size()) |
320 data->m_settlementStack = stack; | 320 data->m_settlementStack = stack; |
321 } | 321 } |
322 } | 322 } |
323 } | 323 } |
324 | 324 |
325 if (m_listener) | 325 if (m_listener) |
326 m_listener->didUpdatePromise(eventType, data->toPromiseDetails()); | 326 m_listener->didUpdatePromise(eventType, data->toPromiseDetails()); |
327 } | 327 } |
328 | 328 |
329 PassRefPtr<Array<PromiseDetails> > PromiseTracker::promises() | 329 PassRefPtr<Array<PromiseDetails>> PromiseTracker::promises() |
330 { | 330 { |
331 ASSERT(isEnabled()); | 331 ASSERT(isEnabled()); |
332 RefPtr<Array<PromiseDetails> > result = Array<PromiseDetails>::create(); | 332 RefPtr<Array<PromiseDetails>> result = Array<PromiseDetails>::create(); |
333 for (auto& data : m_promiseDataMap) { | 333 for (auto& data : m_promiseDataMap) { |
334 PromiseDataVector* vector = &data.value; | 334 PromiseDataVector* vector = &data.value; |
335 for (size_t index = 0; index < vector->size(); ++index) | 335 for (size_t index = 0; index < vector->size(); ++index) |
336 result->addItem(vector->at(index)->toPromiseDetails()); | 336 result->addItem(vector->at(index)->toPromiseDetails()); |
337 } | 337 } |
338 return result.release(); | 338 return result.release(); |
339 } | 339 } |
340 | 340 |
341 ScriptValue PromiseTracker::promiseById(int promiseId) const | 341 ScriptValue PromiseTracker::promiseById(int promiseId) const |
342 { | 342 { |
343 ASSERT(isEnabled()); | 343 ASSERT(isEnabled()); |
344 | 344 |
345 PromiseIdToDataMap::const_iterator it = m_promiseIdToDataMap.find(promiseId)
; | 345 PromiseIdToDataMap::const_iterator it = m_promiseIdToDataMap.find(promiseId)
; |
346 if (it == m_promiseIdToDataMap.end()) | 346 if (it == m_promiseIdToDataMap.end()) |
347 return ScriptValue(); | 347 return ScriptValue(); |
348 RefPtrWillBeRawPtr<PromiseData> data = it->value; | 348 RefPtrWillBeRawPtr<PromiseData> data = it->value; |
349 ASSERT(data && data->m_promiseId == promiseId); | 349 ASSERT(data && data->m_promiseId == promiseId); |
350 ScriptState* scriptState = data->m_scriptState.get(); | 350 ScriptState* scriptState = data->m_scriptState.get(); |
351 v8::HandleScope scope(scriptState->isolate()); | 351 v8::HandleScope scope(scriptState->isolate()); |
352 return ScriptValue(scriptState, data->m_promise.newLocal(scriptState->isolat
e())); | 352 return ScriptValue(scriptState, data->m_promise.newLocal(scriptState->isolat
e())); |
353 } | 353 } |
354 | 354 |
355 } // namespace blink | 355 } // namespace blink |
OLD | NEW |