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

Side by Side Diff: Source/core/streams/ReadableStream.cpp

Issue 795463006: Rename ReadableStream.wait() to ReadableStream.ready. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 11 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
« no previous file with comments | « Source/core/streams/ReadableStream.h ('k') | Source/core/streams/ReadableStream.idl » ('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 #include "config.h" 5 #include "config.h"
6 #include "core/streams/ReadableStream.h" 6 #include "core/streams/ReadableStream.h"
7 7
8 #include "bindings/core/v8/ExceptionState.h" 8 #include "bindings/core/v8/ExceptionState.h"
9 #include "bindings/core/v8/ScriptFunction.h" 9 #include "bindings/core/v8/ScriptFunction.h"
10 #include "bindings/core/v8/ScriptPromiseResolver.h" 10 #include "bindings/core/v8/ScriptPromiseResolver.h"
(...skipping 24 matching lines...) Expand all
35 35
36 } // namespace 36 } // namespace
37 37
38 ReadableStream::ReadableStream(ExecutionContext* executionContext, UnderlyingSou rce* source) 38 ReadableStream::ReadableStream(ExecutionContext* executionContext, UnderlyingSou rce* source)
39 : ActiveDOMObject(executionContext) 39 : ActiveDOMObject(executionContext)
40 , m_source(source) 40 , m_source(source)
41 , m_isStarted(false) 41 , m_isStarted(false)
42 , m_isDraining(false) 42 , m_isDraining(false)
43 , m_isPulling(false) 43 , m_isPulling(false)
44 , m_state(Waiting) 44 , m_state(Waiting)
45 , m_wait(new WaitPromise(executionContext, this, WaitPromise::Ready)) 45 , m_ready(new WaitPromise(executionContext, this, WaitPromise::Ready))
46 , m_closed(new ClosedPromise(executionContext, this, ClosedPromise::Closed)) 46 , m_closed(new ClosedPromise(executionContext, this, ClosedPromise::Closed))
47 { 47 {
48 suspendIfNeeded(); 48 suspendIfNeeded();
49 } 49 }
50 50
51 ReadableStream::~ReadableStream() 51 ReadableStream::~ReadableStream()
52 { 52 {
53 } 53 }
54 54
55 String ReadableStream::stateString() const 55 String ReadableStream::stateString() const
(...skipping 28 matching lines...) Expand all
84 m_isPulling = false; 84 m_isPulling = false;
85 85
86 bool shouldApplyBackpressure = this->shouldApplyBackpressure(); 86 bool shouldApplyBackpressure = this->shouldApplyBackpressure();
87 // this->shouldApplyBackpressure may call this->error(). 87 // this->shouldApplyBackpressure may call this->error().
88 if (m_state == Errored) 88 if (m_state == Errored)
89 return false; 89 return false;
90 90
91 if (m_state == Waiting) { 91 if (m_state == Waiting) {
92 // ReadableStream::hasPendingActivity return value gets false when 92 // ReadableStream::hasPendingActivity return value gets false when
93 // |m_state| is changed to Closed or Errored from Waiting or Readable. 93 // |m_state| is changed to Closed or Errored from Waiting or Readable.
94 // On the other hand, the wrappers should be kept alive when |m_wait| 94 // On the other hand, the wrappers should be kept alive when |m_ready|
95 // and |m_close| resolution and rejection are called. Hence we call 95 // and |m_close| resolution and rejection are called. Hence we call
96 // ScriptPromiseProperty::resolve and ScriptPromiseProperty::reject 96 // ScriptPromiseProperty::resolve and ScriptPromiseProperty::reject
97 // *before* changing state, no matter if the state change actually 97 // *before* changing state, no matter if the state change actually
98 // changes hasPendingActivity return value. 98 // changes hasPendingActivity return value.
99 m_wait->resolve(ToV8UndefinedGenerator()); 99 m_ready->resolve(ToV8UndefinedGenerator());
100 m_state = Readable; 100 m_state = Readable;
101 } 101 }
102 102
103 return !shouldApplyBackpressure; 103 return !shouldApplyBackpressure;
104 } 104 }
105 105
106 void ReadableStream::close() 106 void ReadableStream::close()
107 { 107 {
108 if (m_state == Waiting) { 108 if (m_state == Waiting) {
109 m_wait->resolve(ToV8UndefinedGenerator()); 109 m_ready->resolve(ToV8UndefinedGenerator());
110 m_closed->resolve(ToV8UndefinedGenerator()); 110 m_closed->resolve(ToV8UndefinedGenerator());
111 m_state = Closed; 111 m_state = Closed;
112 } else if (m_state == Readable) { 112 } else if (m_state == Readable) {
113 m_isDraining = true; 113 m_isDraining = true;
114 } 114 }
115 } 115 }
116 116
117 void ReadableStream::readPreliminaryCheck(ExceptionState& exceptionState) 117 void ReadableStream::readPreliminaryCheck(ExceptionState& exceptionState)
118 { 118 {
119 if (m_state == Waiting) { 119 if (m_state == Waiting) {
(...skipping 11 matching lines...) Expand all
131 } 131 }
132 132
133 void ReadableStream::readPostAction() 133 void ReadableStream::readPostAction()
134 { 134 {
135 ASSERT(m_state == Readable); 135 ASSERT(m_state == Readable);
136 if (isQueueEmpty()) { 136 if (isQueueEmpty()) {
137 if (m_isDraining) { 137 if (m_isDraining) {
138 m_closed->resolve(ToV8UndefinedGenerator()); 138 m_closed->resolve(ToV8UndefinedGenerator());
139 m_state = Closed; 139 m_state = Closed;
140 } else { 140 } else {
141 m_wait->reset(); 141 m_ready->reset();
142 m_state = Waiting; 142 m_state = Waiting;
143 } 143 }
144 } 144 }
145 callPullIfNeeded(); 145 callPullIfNeeded();
146 } 146 }
147 147
148 ScriptPromise ReadableStream::wait(ScriptState* scriptState) 148 ScriptPromise ReadableStream::ready(ScriptState* scriptState)
149 { 149 {
150 return m_wait->promise(scriptState->world()); 150 return m_ready->promise(scriptState->world());
151 } 151 }
152 152
153 ScriptPromise ReadableStream::cancel(ScriptState* scriptState, ScriptValue reaso n) 153 ScriptPromise ReadableStream::cancel(ScriptState* scriptState, ScriptValue reaso n)
154 { 154 {
155 if (m_state == Closed) 155 if (m_state == Closed)
156 return ScriptPromise::cast(scriptState, v8::Undefined(scriptState->isola te())); 156 return ScriptPromise::cast(scriptState, v8::Undefined(scriptState->isola te()));
157 if (m_state == Errored) 157 if (m_state == Errored)
158 return ScriptPromise::rejectWithDOMException(scriptState, m_exception); 158 return ScriptPromise::rejectWithDOMException(scriptState, m_exception);
159 159
160 ASSERT(m_state == Readable || m_state == Waiting); 160 ASSERT(m_state == Readable || m_state == Waiting);
161 if (m_state == Waiting) 161 if (m_state == Waiting)
162 m_wait->resolve(ToV8UndefinedGenerator()); 162 m_ready->resolve(ToV8UndefinedGenerator());
163 clearQueue(); 163 clearQueue();
164 m_closed->resolve(ToV8UndefinedGenerator()); 164 m_closed->resolve(ToV8UndefinedGenerator());
165 m_state = Closed; 165 m_state = Closed;
166 return m_source->cancelSource(scriptState, reason).then(ConstUndefined::crea te(scriptState)); 166 return m_source->cancelSource(scriptState, reason).then(ConstUndefined::crea te(scriptState));
167 } 167 }
168 168
169 ScriptPromise ReadableStream::closed(ScriptState* scriptState) 169 ScriptPromise ReadableStream::closed(ScriptState* scriptState)
170 { 170 {
171 return m_closed->promise(scriptState->world()); 171 return m_closed->promise(scriptState->world());
172 } 172 }
173 173
174 void ReadableStream::error(PassRefPtrWillBeRawPtr<DOMException> exception) 174 void ReadableStream::error(PassRefPtrWillBeRawPtr<DOMException> exception)
175 { 175 {
176 switch (m_state) { 176 switch (m_state) {
177 case Waiting: 177 case Waiting:
178 m_exception = exception; 178 m_exception = exception;
179 m_wait->reject(m_exception); 179 m_ready->reject(m_exception);
180 m_closed->reject(m_exception); 180 m_closed->reject(m_exception);
181 m_state = Errored; 181 m_state = Errored;
182 break; 182 break;
183 case Readable: 183 case Readable:
184 clearQueue(); 184 clearQueue();
185 m_exception = exception; 185 m_exception = exception;
186 m_wait->reset(); 186 m_ready->reset();
187 m_wait->reject(m_exception); 187 m_ready->reject(m_exception);
188 m_closed->reject(m_exception); 188 m_closed->reject(m_exception);
189 m_state = Errored; 189 m_state = Errored;
190 break; 190 break;
191 default: 191 default:
192 break; 192 break;
193 } 193 }
194 } 194 }
195 195
196 void ReadableStream::didSourceStart() 196 void ReadableStream::didSourceStart()
197 { 197 {
(...skipping 15 matching lines...) Expand all
213 } 213 }
214 214
215 bool ReadableStream::hasPendingActivity() const 215 bool ReadableStream::hasPendingActivity() const
216 { 216 {
217 return m_state == Waiting || m_state == Readable; 217 return m_state == Waiting || m_state == Readable;
218 } 218 }
219 219
220 void ReadableStream::trace(Visitor* visitor) 220 void ReadableStream::trace(Visitor* visitor)
221 { 221 {
222 visitor->trace(m_source); 222 visitor->trace(m_source);
223 visitor->trace(m_wait); 223 visitor->trace(m_ready);
224 visitor->trace(m_closed); 224 visitor->trace(m_closed);
225 visitor->trace(m_exception); 225 visitor->trace(m_exception);
226 } 226 }
227 227
228 } // namespace blink 228 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/streams/ReadableStream.h ('k') | Source/core/streams/ReadableStream.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698