Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(195)

Side by Side Diff: third_party/WebKit/Source/bindings/core/v8/ScriptPromiseResolver.cpp

Issue 1857713004: DevTools: simplify the async instrumentation harness. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "bindings/core/v8/ScriptPromiseResolver.h" 5 #include "bindings/core/v8/ScriptPromiseResolver.h"
6 6
7 #include "core/inspector/InspectorInstrumentation.h"
8
7 namespace blink { 9 namespace blink {
8 10
9 ScriptPromiseResolver::ScriptPromiseResolver(ScriptState* scriptState) 11 ScriptPromiseResolver::ScriptPromiseResolver(ScriptState* scriptState)
10 : ActiveDOMObject(scriptState->getExecutionContext()) 12 : ActiveDOMObject(scriptState->getExecutionContext())
11 , m_state(Pending) 13 , m_state(Pending)
12 , m_scriptState(scriptState) 14 , m_scriptState(scriptState)
13 , m_timer(this, &ScriptPromiseResolver::onTimerFired) 15 , m_timer(this, &ScriptPromiseResolver::onTimerFired)
14 , m_resolver(scriptState) 16 , m_resolver(scriptState)
15 #if ENABLE(ASSERT) 17 #if ENABLE(ASSERT)
16 , m_isPromiseCalled(false) 18 , m_isPromiseCalled(false)
17 #endif 19 #endif
18 { 20 {
19 if (getExecutionContext()->activeDOMObjectsAreStopped()) { 21 if (getExecutionContext()->activeDOMObjectsAreStopped()) {
20 m_state = Detached; 22 m_state = Detached;
21 m_resolver.clear(); 23 m_resolver.clear();
22 } 24 }
25 InspectorInstrumentation::asyncTaskScheduled(getExecutionContext(), "Promise ", this);
23 } 26 }
24 27
25 void ScriptPromiseResolver::suspend() 28 void ScriptPromiseResolver::suspend()
26 { 29 {
27 m_timer.stop(); 30 m_timer.stop();
28 } 31 }
29 32
30 void ScriptPromiseResolver::resume() 33 void ScriptPromiseResolver::resume()
31 { 34 {
32 if (m_state == Resolving || m_state == Rejecting) 35 if (m_state == Resolving || m_state == Rejecting)
33 m_timer.startOneShot(0, BLINK_FROM_HERE); 36 m_timer.startOneShot(0, BLINK_FROM_HERE);
34 } 37 }
35 38
36 void ScriptPromiseResolver::detach() 39 void ScriptPromiseResolver::detach()
37 { 40 {
38 if (m_state == Detached) 41 if (m_state == Detached)
39 return; 42 return;
40 m_timer.stop(); 43 m_timer.stop();
41 m_state = Detached; 44 m_state = Detached;
42 m_resolver.clear(); 45 m_resolver.clear();
43 m_value.clear(); 46 m_value.clear();
44 m_keepAlive.clear(); 47 m_keepAlive.clear();
48 InspectorInstrumentation::asyncTaskCanceled(getExecutionContext(), this);
45 } 49 }
46 50
47 void ScriptPromiseResolver::keepAliveWhilePending() 51 void ScriptPromiseResolver::keepAliveWhilePending()
48 { 52 {
49 // keepAliveWhilePending() will be called twice if the resolver 53 // keepAliveWhilePending() will be called twice if the resolver
50 // is created in a suspended execution context and the resolver 54 // is created in a suspended execution context and the resolver
51 // is then resolved/rejected while in that suspended state. 55 // is then resolved/rejected while in that suspended state.
52 if (m_state == Detached || m_keepAlive) 56 if (m_state == Detached || m_keepAlive)
53 return; 57 return;
54 58
(...skipping 12 matching lines...) Expand all
67 71
68 ScriptState::Scope scope(m_scriptState.get()); 72 ScriptState::Scope scope(m_scriptState.get());
69 resolveOrRejectImmediately(); 73 resolveOrRejectImmediately();
70 } 74 }
71 75
72 void ScriptPromiseResolver::resolveOrRejectImmediately() 76 void ScriptPromiseResolver::resolveOrRejectImmediately()
73 { 77 {
74 ASSERT(!getExecutionContext()->activeDOMObjectsAreStopped()); 78 ASSERT(!getExecutionContext()->activeDOMObjectsAreStopped());
75 ASSERT(!getExecutionContext()->activeDOMObjectsAreSuspended()); 79 ASSERT(!getExecutionContext()->activeDOMObjectsAreSuspended());
76 { 80 {
81 InspectorInstrumentation::AsyncTask asyncTask(getExecutionContext(), thi s);
77 if (m_state == Resolving) { 82 if (m_state == Resolving) {
78 m_resolver.resolve(m_value.newLocal(m_scriptState->isolate())); 83 m_resolver.resolve(m_value.newLocal(m_scriptState->isolate()));
79 } else { 84 } else {
80 ASSERT(m_state == Rejecting); 85 ASSERT(m_state == Rejecting);
81 m_resolver.reject(m_value.newLocal(m_scriptState->isolate())); 86 m_resolver.reject(m_value.newLocal(m_scriptState->isolate()));
82 } 87 }
83 } 88 }
84 detach(); 89 detach();
85 } 90 }
86 91
87 DEFINE_TRACE(ScriptPromiseResolver) 92 DEFINE_TRACE(ScriptPromiseResolver)
88 { 93 {
89 ActiveDOMObject::trace(visitor); 94 ActiveDOMObject::trace(visitor);
90 } 95 }
91 96
92 } // namespace blink 97 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698