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

Side by Side Diff: Source/bindings/v8/ScriptPromiseResolverWithContext.h

Issue 303693005: Simplify Blink <-> V8 Microtask queue running protocol (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | Source/bindings/v8/ScriptPromiseResolverWithContext.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #ifndef ScriptPromiseResolverWithContext_h 5 #ifndef ScriptPromiseResolverWithContext_h
6 #define ScriptPromiseResolverWithContext_h 6 #define ScriptPromiseResolverWithContext_h
7 7
8 #include "bindings/v8/ScopedPersistent.h" 8 #include "bindings/v8/ScopedPersistent.h"
9 #include "bindings/v8/ScriptPromise.h" 9 #include "bindings/v8/ScriptPromise.h"
10 #include "bindings/v8/ScriptPromiseResolver.h" 10 #include "bindings/v8/ScriptPromiseResolver.h"
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 { 96 {
97 if (m_state != Pending || !executionContext() || executionContext()->act iveDOMObjectsAreStopped()) 97 if (m_state != Pending || !executionContext() || executionContext()->act iveDOMObjectsAreStopped())
98 return; 98 return;
99 m_state = newState; 99 m_state = newState;
100 // Retain this object until it is actually resolved or rejected. 100 // Retain this object until it is actually resolved or rejected.
101 // |deref| will be called in |clear|. 101 // |deref| will be called in |clear|.
102 ref(); 102 ref();
103 103
104 ScriptState::Scope scope(m_scriptState.get()); 104 ScriptState::Scope scope(m_scriptState.get());
105 m_value.set(m_scriptState->isolate(), toV8Value(value)); 105 m_value.set(m_scriptState->isolate(), toV8Value(value));
106 if (!executionContext()->activeDOMObjectsAreSuspended()) { 106 if (!executionContext()->activeDOMObjectsAreSuspended())
107 resolveOrRejectImmediately(); 107 resolveOrRejectImmediately();
108 // |this| can't be deleted here, so it is safe to call an instance
109 // method.
110 postRunMicrotasks();
111 }
112 } 108 }
113 109
114 void resolveOrRejectImmediately(); 110 void resolveOrRejectImmediately();
115 void postRunMicrotasks();
116 void onTimerFired(Timer<ScriptPromiseResolverWithContext>*); 111 void onTimerFired(Timer<ScriptPromiseResolverWithContext>*);
117 void clear(); 112 void clear();
118 113
119 ResolutionState m_state; 114 ResolutionState m_state;
120 const RefPtr<ScriptState> m_scriptState; 115 const RefPtr<ScriptState> m_scriptState;
121 Timer<ScriptPromiseResolverWithContext> m_timer; 116 Timer<ScriptPromiseResolverWithContext> m_timer;
122 RefPtr<ScriptPromiseResolver> m_resolver; 117 RefPtr<ScriptPromiseResolver> m_resolver;
123 ScopedPersistent<v8::Value> m_value; 118 ScopedPersistent<v8::Value> m_value;
124 }; 119 };
125 120
126 } // namespace WebCore 121 } // namespace WebCore
127 122
128 #endif // #ifndef ScriptPromiseResolverWithContext_h 123 #endif // #ifndef ScriptPromiseResolverWithContext_h
OLDNEW
« no previous file with comments | « no previous file | Source/bindings/v8/ScriptPromiseResolverWithContext.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698