| 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 |