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

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

Issue 1278983003: Adding allocator annotations to blink classes and structs. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fixed patch conflict Created 5 years, 4 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/page/Page.h ('k') | Source/core/streams/ReadableStreamTest.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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/ReadableStreamReader.h" 6 #include "core/streams/ReadableStreamReader.h"
7 7
8 #include "bindings/core/v8/ExceptionState.h" 8 #include "bindings/core/v8/ExceptionState.h"
9 #include "bindings/core/v8/ScriptState.h" 9 #include "bindings/core/v8/ScriptState.h"
10 #include "bindings/core/v8/ToV8.h" 10 #include "bindings/core/v8/ToV8.h"
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 118
119 class PermissiveStrategy final : public StringStream::Strategy { 119 class PermissiveStrategy final : public StringStream::Strategy {
120 public: 120 public:
121 bool shouldApplyBackpressure(size_t, ReadableStream*) override { return fals e; } 121 bool shouldApplyBackpressure(size_t, ReadableStream*) override { return fals e; }
122 }; 122 };
123 123
124 class ReadableStreamReaderTest : public ::testing::Test { 124 class ReadableStreamReaderTest : public ::testing::Test {
125 public: 125 public:
126 ReadableStreamReaderTest() 126 ReadableStreamReaderTest()
127 : m_page(DummyPageHolder::create(IntSize(1, 1))) 127 : m_page(DummyPageHolder::create(IntSize(1, 1)))
128 , m_scope(scriptState())
129 , m_exceptionState(ExceptionState::ConstructionContext, "property", "int erface", scriptState()->context()->Global(), isolate())
130 , m_stream(new StringStream(new NoopUnderlyingSource, new PermissiveStra tegy)) 128 , m_stream(new StringStream(new NoopUnderlyingSource, new PermissiveStra tegy))
131 { 129 {
132 m_stream->didSourceStart(); 130 m_stream->didSourceStart();
133 } 131 }
134 132
135 ~ReadableStreamReaderTest() override 133 ~ReadableStreamReaderTest() override
136 { 134 {
137 EXPECT_FALSE(m_exceptionState.hadException());
138
139 // We need to call |error| in order to make 135 // We need to call |error| in order to make
140 // ActiveDOMObject::hasPendingActivity return false. 136 // ActiveDOMObject::hasPendingActivity return false.
141 m_stream->error(DOMException::create(AbortError, "done")); 137 m_stream->error(DOMException::create(AbortError, "done"));
142 } 138 }
143 139
144 ScriptState* scriptState() { return ScriptState::forMainWorld(m_page->docume nt().frame()); } 140 ScriptState* scriptState() { return ScriptState::forMainWorld(m_page->docume nt().frame()); }
145 v8::Isolate* isolate() { return scriptState()->isolate(); } 141 v8::Isolate* isolate() { return scriptState()->isolate(); }
146 ExecutionContext* executionContext() { return scriptState()->executionContex t(); } 142 ExecutionContext* executionContext() { return scriptState()->executionContex t(); }
147 143
148 v8::Local<v8::Function> createCaptor(String* value) 144 v8::Local<v8::Function> createCaptor(String* value)
149 { 145 {
150 return StringCapturingFunction::createFunction(scriptState(), value); 146 return StringCapturingFunction::createFunction(scriptState(), value);
151 } 147 }
152 148
153 v8::Local<v8::Function> createResultCaptor(ReadResult* value) 149 v8::Local<v8::Function> createResultCaptor(ReadResult* value)
154 { 150 {
155 return ReadResultCapturingFunction::createFunction(scriptState(), value) ; 151 return ReadResultCapturingFunction::createFunction(scriptState(), value) ;
156 } 152 }
157 153
158 OwnPtr<DummyPageHolder> m_page; 154 OwnPtr<DummyPageHolder> m_page;
159 ScriptState::Scope m_scope;
160 ExceptionState m_exceptionState;
161 Persistent<StringStream> m_stream; 155 Persistent<StringStream> m_stream;
162 }; 156 };
163 157
164 TEST_F(ReadableStreamReaderTest, Construct) 158 TEST_F(ReadableStreamReaderTest, Construct)
165 { 159 {
160 ScriptState::Scope scope(scriptState());
161 ExceptionState exceptionState(ExceptionState::ConstructionContext, "property ", "interface", scriptState()->context()->Global(), isolate());
166 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream); 162 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream);
167 EXPECT_TRUE(reader->isActive()); 163 EXPECT_TRUE(reader->isActive());
164 EXPECT_FALSE(exceptionState.hadException());
168 } 165 }
169 166
170 TEST_F(ReadableStreamReaderTest, Release) 167 TEST_F(ReadableStreamReaderTest, Release)
171 { 168 {
169 ScriptState::Scope scope(scriptState());
170 ExceptionState exceptionState(ExceptionState::ConstructionContext, "property ", "interface", scriptState()->context()->Global(), isolate());
172 String onFulfilled, onRejected; 171 String onFulfilled, onRejected;
173 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream); 172 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream);
174 EXPECT_TRUE(reader->isActive()); 173 EXPECT_TRUE(reader->isActive());
175 174
176 reader->closed(scriptState()).then(createCaptor(&onFulfilled), createCaptor( &onRejected)); 175 reader->closed(scriptState()).then(createCaptor(&onFulfilled), createCaptor( &onRejected));
177 reader->releaseLock(m_exceptionState); 176 reader->releaseLock(exceptionState);
178 EXPECT_FALSE(reader->isActive()); 177 EXPECT_FALSE(reader->isActive());
179 EXPECT_FALSE(m_exceptionState.hadException()); 178 EXPECT_FALSE(exceptionState.hadException());
180 179
181 EXPECT_TRUE(onFulfilled.isNull()); 180 EXPECT_TRUE(onFulfilled.isNull());
182 EXPECT_TRUE(onRejected.isNull()); 181 EXPECT_TRUE(onRejected.isNull());
183 182
184 isolate()->RunMicrotasks(); 183 isolate()->RunMicrotasks();
185 EXPECT_EQ("undefined", onFulfilled); 184 EXPECT_EQ("undefined", onFulfilled);
186 EXPECT_TRUE(onRejected.isNull()); 185 EXPECT_TRUE(onRejected.isNull());
187 186
188 ReadableStreamReader* another = new ReadableStreamReader(executionContext(), m_stream); 187 ReadableStreamReader* another = new ReadableStreamReader(executionContext(), m_stream);
189 EXPECT_TRUE(another->isActive()); 188 EXPECT_TRUE(another->isActive());
190 EXPECT_FALSE(reader->isActive()); 189 EXPECT_FALSE(reader->isActive());
191 reader->releaseLock(m_exceptionState); 190 reader->releaseLock(exceptionState);
192 EXPECT_TRUE(another->isActive()); 191 EXPECT_TRUE(another->isActive());
193 EXPECT_FALSE(reader->isActive()); 192 EXPECT_FALSE(reader->isActive());
194 EXPECT_FALSE(m_exceptionState.hadException()); 193 EXPECT_FALSE(exceptionState.hadException());
195 } 194 }
196 195
197 TEST_F(ReadableStreamReaderTest, ReadAfterRelease) 196 TEST_F(ReadableStreamReaderTest, ReadAfterRelease)
198 { 197 {
198 ScriptState::Scope scope(scriptState());
199 ExceptionState exceptionState(ExceptionState::ConstructionContext, "property ", "interface", scriptState()->context()->Global(), isolate());
199 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream); 200 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream);
200 EXPECT_TRUE(reader->isActive()); 201 EXPECT_TRUE(reader->isActive());
201 reader->releaseLock(m_exceptionState); 202 reader->releaseLock(exceptionState);
202 EXPECT_FALSE(m_exceptionState.hadException()); 203 EXPECT_FALSE(exceptionState.hadException());
203 EXPECT_FALSE(reader->isActive()); 204 EXPECT_FALSE(reader->isActive());
204 205
205 ReadResult result; 206 ReadResult result;
206 String onRejected; 207 String onRejected;
207 reader->read(scriptState()).then(createResultCaptor(&result), createCaptor(& onRejected)); 208 reader->read(scriptState()).then(createResultCaptor(&result), createCaptor(& onRejected));
208 209
209 EXPECT_FALSE(result.isSet); 210 EXPECT_FALSE(result.isSet);
210 EXPECT_TRUE(onRejected.isNull()); 211 EXPECT_TRUE(onRejected.isNull());
211 isolate()->RunMicrotasks(); 212 isolate()->RunMicrotasks();
212 213
213 EXPECT_TRUE(result.isSet); 214 EXPECT_TRUE(result.isSet);
214 EXPECT_TRUE(result.isDone); 215 EXPECT_TRUE(result.isDone);
215 EXPECT_EQ("undefined", result.valueString); 216 EXPECT_EQ("undefined", result.valueString);
216 EXPECT_TRUE(onRejected.isNull()); 217 EXPECT_TRUE(onRejected.isNull());
218 EXPECT_FALSE(exceptionState.hadException());
217 } 219 }
218 220
219 TEST_F(ReadableStreamReaderTest, ReleaseShouldFailWhenCalledWhileReading) 221 TEST_F(ReadableStreamReaderTest, ReleaseShouldFailWhenCalledWhileReading)
220 { 222 {
223 ScriptState::Scope scope(scriptState());
224 ExceptionState exceptionState(ExceptionState::ConstructionContext, "property ", "interface", scriptState()->context()->Global(), isolate());
221 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream); 225 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream);
222 EXPECT_TRUE(reader->isActive()); 226 EXPECT_TRUE(reader->isActive());
223 reader->read(scriptState()); 227 reader->read(scriptState());
224 228
225 reader->releaseLock(m_exceptionState); 229 reader->releaseLock(exceptionState);
226 EXPECT_TRUE(reader->isActive()); 230 EXPECT_TRUE(reader->isActive());
227 EXPECT_TRUE(m_exceptionState.hadException()); 231 EXPECT_TRUE(exceptionState.hadException());
228 m_exceptionState.clearException(); 232 exceptionState.clearException();
229 233
230 m_stream->enqueue("hello"); 234 m_stream->enqueue("hello");
231 reader->releaseLock(m_exceptionState); 235 reader->releaseLock(exceptionState);
232 EXPECT_FALSE(reader->isActive()); 236 EXPECT_FALSE(reader->isActive());
233 EXPECT_FALSE(m_exceptionState.hadException()); 237 EXPECT_FALSE(exceptionState.hadException());
234 } 238 }
235 239
236 TEST_F(ReadableStreamReaderTest, EnqueueThenRead) 240 TEST_F(ReadableStreamReaderTest, EnqueueThenRead)
237 { 241 {
242 ScriptState::Scope scope(scriptState());
243 ExceptionState exceptionState(ExceptionState::ConstructionContext, "property ", "interface", scriptState()->context()->Global(), isolate());
238 m_stream->enqueue("hello"); 244 m_stream->enqueue("hello");
239 m_stream->enqueue("world"); 245 m_stream->enqueue("world");
240 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream); 246 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream);
241 EXPECT_EQ(ReadableStream::Readable, m_stream->stateInternal()); 247 EXPECT_EQ(ReadableStream::Readable, m_stream->stateInternal());
242 248
243 ReadResult result; 249 ReadResult result;
244 String onRejected; 250 String onRejected;
245 reader->read(scriptState()).then(createResultCaptor(&result), createCaptor(& onRejected)); 251 reader->read(scriptState()).then(createResultCaptor(&result), createCaptor(& onRejected));
246 252
247 EXPECT_FALSE(result.isSet); 253 EXPECT_FALSE(result.isSet);
(...skipping 12 matching lines...) Expand all
260 266
261 EXPECT_FALSE(result2.isSet); 267 EXPECT_FALSE(result2.isSet);
262 EXPECT_TRUE(onRejected2.isNull()); 268 EXPECT_TRUE(onRejected2.isNull());
263 269
264 isolate()->RunMicrotasks(); 270 isolate()->RunMicrotasks();
265 271
266 EXPECT_TRUE(result2.isSet); 272 EXPECT_TRUE(result2.isSet);
267 EXPECT_FALSE(result2.isDone); 273 EXPECT_FALSE(result2.isDone);
268 EXPECT_EQ("world", result2.valueString); 274 EXPECT_EQ("world", result2.valueString);
269 EXPECT_TRUE(onRejected2.isNull()); 275 EXPECT_TRUE(onRejected2.isNull());
276 EXPECT_FALSE(exceptionState.hadException());
270 } 277 }
271 278
272 TEST_F(ReadableStreamReaderTest, ReadThenEnqueue) 279 TEST_F(ReadableStreamReaderTest, ReadThenEnqueue)
273 { 280 {
281 ScriptState::Scope scope(scriptState());
282 ExceptionState exceptionState(ExceptionState::ConstructionContext, "property ", "interface", scriptState()->context()->Global(), isolate());
274 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream); 283 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream);
275 EXPECT_EQ(ReadableStream::Readable, m_stream->stateInternal()); 284 EXPECT_EQ(ReadableStream::Readable, m_stream->stateInternal());
276 285
277 ReadResult result, result2; 286 ReadResult result, result2;
278 String onRejected, onRejected2; 287 String onRejected, onRejected2;
279 reader->read(scriptState()).then(createResultCaptor(&result), createCaptor(& onRejected)); 288 reader->read(scriptState()).then(createResultCaptor(&result), createCaptor(& onRejected));
280 reader->read(scriptState()).then(createResultCaptor(&result2), createCaptor( &onRejected2)); 289 reader->read(scriptState()).then(createResultCaptor(&result2), createCaptor( &onRejected2));
281 290
282 EXPECT_FALSE(result.isSet); 291 EXPECT_FALSE(result.isSet);
283 EXPECT_TRUE(onRejected.isNull()); 292 EXPECT_TRUE(onRejected.isNull());
(...skipping 17 matching lines...) Expand all
301 EXPECT_FALSE(result2.isSet); 310 EXPECT_FALSE(result2.isSet);
302 EXPECT_TRUE(onRejected2.isNull()); 311 EXPECT_TRUE(onRejected2.isNull());
303 312
304 m_stream->enqueue("world"); 313 m_stream->enqueue("world");
305 isolate()->RunMicrotasks(); 314 isolate()->RunMicrotasks();
306 315
307 EXPECT_TRUE(result2.isSet); 316 EXPECT_TRUE(result2.isSet);
308 EXPECT_FALSE(result2.isDone); 317 EXPECT_FALSE(result2.isDone);
309 EXPECT_EQ("world", result2.valueString); 318 EXPECT_EQ("world", result2.valueString);
310 EXPECT_TRUE(onRejected2.isNull()); 319 EXPECT_TRUE(onRejected2.isNull());
320 EXPECT_FALSE(exceptionState.hadException());
311 } 321 }
312 322
313 TEST_F(ReadableStreamReaderTest, ClosedReader) 323 TEST_F(ReadableStreamReaderTest, ClosedReader)
314 { 324 {
325 ScriptState::Scope scope(scriptState());
326 ExceptionState exceptionState(ExceptionState::ConstructionContext, "property ", "interface", scriptState()->context()->Global(), isolate());
315 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream); 327 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream);
316 328
317 m_stream->close(); 329 m_stream->close();
318 330
319 EXPECT_FALSE(reader->isActive()); 331 EXPECT_FALSE(reader->isActive());
320 332
321 String onClosedFulfilled, onClosedRejected; 333 String onClosedFulfilled, onClosedRejected;
322 ReadResult result; 334 ReadResult result;
323 String onReadRejected; 335 String onReadRejected;
324 isolate()->RunMicrotasks(); 336 isolate()->RunMicrotasks();
325 reader->closed(scriptState()).then(createCaptor(&onClosedFulfilled), createC aptor(&onClosedRejected)); 337 reader->closed(scriptState()).then(createCaptor(&onClosedFulfilled), createC aptor(&onClosedRejected));
326 reader->read(scriptState()).then(createResultCaptor(&result), createCaptor(& onReadRejected)); 338 reader->read(scriptState()).then(createResultCaptor(&result), createCaptor(& onReadRejected));
327 EXPECT_TRUE(onClosedFulfilled.isNull()); 339 EXPECT_TRUE(onClosedFulfilled.isNull());
328 EXPECT_TRUE(onClosedRejected.isNull()); 340 EXPECT_TRUE(onClosedRejected.isNull());
329 EXPECT_FALSE(result.isSet); 341 EXPECT_FALSE(result.isSet);
330 EXPECT_TRUE(onReadRejected.isNull()); 342 EXPECT_TRUE(onReadRejected.isNull());
331 343
332 isolate()->RunMicrotasks(); 344 isolate()->RunMicrotasks();
333 EXPECT_EQ("undefined", onClosedFulfilled); 345 EXPECT_EQ("undefined", onClosedFulfilled);
334 EXPECT_TRUE(onClosedRejected.isNull()); 346 EXPECT_TRUE(onClosedRejected.isNull());
335 EXPECT_TRUE(result.isSet); 347 EXPECT_TRUE(result.isSet);
336 EXPECT_TRUE(result.isDone); 348 EXPECT_TRUE(result.isDone);
337 EXPECT_EQ("undefined", result.valueString); 349 EXPECT_EQ("undefined", result.valueString);
338 EXPECT_TRUE(onReadRejected.isNull()); 350 EXPECT_TRUE(onReadRejected.isNull());
351 EXPECT_FALSE(exceptionState.hadException());
339 } 352 }
340 353
341 TEST_F(ReadableStreamReaderTest, ErroredReader) 354 TEST_F(ReadableStreamReaderTest, ErroredReader)
342 { 355 {
356 ScriptState::Scope scope(scriptState());
357 ExceptionState exceptionState(ExceptionState::ConstructionContext, "property ", "interface", scriptState()->context()->Global(), isolate());
343 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream); 358 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream);
344 359
345 m_stream->error(DOMException::create(SyntaxError, "some error")); 360 m_stream->error(DOMException::create(SyntaxError, "some error"));
346 361
347 EXPECT_EQ(ReadableStream::Errored, m_stream->stateInternal()); 362 EXPECT_EQ(ReadableStream::Errored, m_stream->stateInternal());
348 EXPECT_FALSE(reader->isActive()); 363 EXPECT_FALSE(reader->isActive());
349 364
350 String onClosedFulfilled, onClosedRejected; 365 String onClosedFulfilled, onClosedRejected;
351 String onReadFulfilled, onReadRejected; 366 String onReadFulfilled, onReadRejected;
352 isolate()->RunMicrotasks(); 367 isolate()->RunMicrotasks();
353 reader->closed(scriptState()).then(createCaptor(&onClosedFulfilled), createC aptor(&onClosedRejected)); 368 reader->closed(scriptState()).then(createCaptor(&onClosedFulfilled), createC aptor(&onClosedRejected));
354 reader->read(scriptState()).then(createCaptor(&onReadFulfilled), createCapto r(&onReadRejected)); 369 reader->read(scriptState()).then(createCaptor(&onReadFulfilled), createCapto r(&onReadRejected));
355 EXPECT_TRUE(onClosedFulfilled.isNull()); 370 EXPECT_TRUE(onClosedFulfilled.isNull());
356 EXPECT_TRUE(onClosedRejected.isNull()); 371 EXPECT_TRUE(onClosedRejected.isNull());
357 EXPECT_TRUE(onReadFulfilled.isNull()); 372 EXPECT_TRUE(onReadFulfilled.isNull());
358 EXPECT_TRUE(onReadRejected.isNull()); 373 EXPECT_TRUE(onReadRejected.isNull());
359 374
360 isolate()->RunMicrotasks(); 375 isolate()->RunMicrotasks();
361 EXPECT_TRUE(onClosedFulfilled.isNull()); 376 EXPECT_TRUE(onClosedFulfilled.isNull());
362 EXPECT_EQ("SyntaxError: some error", onClosedRejected); 377 EXPECT_EQ("SyntaxError: some error", onClosedRejected);
363 EXPECT_TRUE(onReadFulfilled.isNull()); 378 EXPECT_TRUE(onReadFulfilled.isNull());
364 EXPECT_EQ("SyntaxError: some error", onReadRejected); 379 EXPECT_EQ("SyntaxError: some error", onReadRejected);
380 EXPECT_FALSE(exceptionState.hadException());
365 } 381 }
366 382
367 TEST_F(ReadableStreamReaderTest, PendingReadsShouldBeResolvedWhenClosed) 383 TEST_F(ReadableStreamReaderTest, PendingReadsShouldBeResolvedWhenClosed)
368 { 384 {
385 ScriptState::Scope scope(scriptState());
386 ExceptionState exceptionState(ExceptionState::ConstructionContext, "property ", "interface", scriptState()->context()->Global(), isolate());
369 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream); 387 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream);
370 EXPECT_EQ(ReadableStream::Readable, m_stream->stateInternal()); 388 EXPECT_EQ(ReadableStream::Readable, m_stream->stateInternal());
371 389
372 ReadResult result, result2; 390 ReadResult result, result2;
373 String onRejected, onRejected2; 391 String onRejected, onRejected2;
374 reader->read(scriptState()).then(createResultCaptor(&result), createCaptor(& onRejected)); 392 reader->read(scriptState()).then(createResultCaptor(&result), createCaptor(& onRejected));
375 reader->read(scriptState()).then(createResultCaptor(&result2), createCaptor( &onRejected2)); 393 reader->read(scriptState()).then(createResultCaptor(&result2), createCaptor( &onRejected2));
376 394
377 isolate()->RunMicrotasks(); 395 isolate()->RunMicrotasks();
378 EXPECT_FALSE(result.isSet); 396 EXPECT_FALSE(result.isSet);
(...skipping 11 matching lines...) Expand all
390 408
391 EXPECT_TRUE(result.isSet); 409 EXPECT_TRUE(result.isSet);
392 EXPECT_TRUE(result.isDone); 410 EXPECT_TRUE(result.isDone);
393 EXPECT_EQ("undefined", result.valueString); 411 EXPECT_EQ("undefined", result.valueString);
394 EXPECT_TRUE(onRejected.isNull()); 412 EXPECT_TRUE(onRejected.isNull());
395 413
396 EXPECT_TRUE(result2.isSet); 414 EXPECT_TRUE(result2.isSet);
397 EXPECT_TRUE(result2.isDone); 415 EXPECT_TRUE(result2.isDone);
398 EXPECT_EQ("undefined", result2.valueString); 416 EXPECT_EQ("undefined", result2.valueString);
399 EXPECT_TRUE(onRejected2.isNull()); 417 EXPECT_TRUE(onRejected2.isNull());
418 EXPECT_FALSE(exceptionState.hadException());
400 } 419 }
401 420
402 TEST_F(ReadableStreamReaderTest, PendingReadsShouldBeRejectedWhenErrored) 421 TEST_F(ReadableStreamReaderTest, PendingReadsShouldBeRejectedWhenErrored)
403 { 422 {
423 ScriptState::Scope scope(scriptState());
424 ExceptionState exceptionState(ExceptionState::ConstructionContext, "property ", "interface", scriptState()->context()->Global(), isolate());
404 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream); 425 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream);
405 EXPECT_EQ(ReadableStream::Readable, m_stream->stateInternal()); 426 EXPECT_EQ(ReadableStream::Readable, m_stream->stateInternal());
406 427
407 String onFulfilled, onFulfilled2; 428 String onFulfilled, onFulfilled2;
408 String onRejected, onRejected2; 429 String onRejected, onRejected2;
409 reader->read(scriptState()).then(createCaptor(&onFulfilled), createCaptor(&o nRejected)); 430 reader->read(scriptState()).then(createCaptor(&onFulfilled), createCaptor(&o nRejected));
410 reader->read(scriptState()).then(createCaptor(&onFulfilled2), createCaptor(& onRejected2)); 431 reader->read(scriptState()).then(createCaptor(&onFulfilled2), createCaptor(& onRejected2));
411 432
412 isolate()->RunMicrotasks(); 433 isolate()->RunMicrotasks();
413 EXPECT_TRUE(onFulfilled.isNull()); 434 EXPECT_TRUE(onFulfilled.isNull());
414 EXPECT_TRUE(onRejected.isNull()); 435 EXPECT_TRUE(onRejected.isNull());
415 EXPECT_TRUE(onFulfilled2.isNull()); 436 EXPECT_TRUE(onFulfilled2.isNull());
416 EXPECT_TRUE(onRejected2.isNull()); 437 EXPECT_TRUE(onRejected2.isNull());
417 438
418 m_stream->error(DOMException::create(SyntaxError, "some error")); 439 m_stream->error(DOMException::create(SyntaxError, "some error"));
419 EXPECT_TRUE(onFulfilled.isNull()); 440 EXPECT_TRUE(onFulfilled.isNull());
420 EXPECT_TRUE(onRejected.isNull()); 441 EXPECT_TRUE(onRejected.isNull());
421 EXPECT_TRUE(onFulfilled2.isNull()); 442 EXPECT_TRUE(onFulfilled2.isNull());
422 EXPECT_TRUE(onRejected2.isNull()); 443 EXPECT_TRUE(onRejected2.isNull());
423 444
424 isolate()->RunMicrotasks(); 445 isolate()->RunMicrotasks();
425 446
426 EXPECT_TRUE(onFulfilled.isNull()); 447 EXPECT_TRUE(onFulfilled.isNull());
427 EXPECT_EQ(onRejected, "SyntaxError: some error"); 448 EXPECT_EQ(onRejected, "SyntaxError: some error");
428 EXPECT_TRUE(onFulfilled2.isNull()); 449 EXPECT_TRUE(onFulfilled2.isNull());
429 EXPECT_EQ(onRejected2, "SyntaxError: some error"); 450 EXPECT_EQ(onRejected2, "SyntaxError: some error");
451 EXPECT_FALSE(exceptionState.hadException());
430 } 452 }
431 453
432 TEST_F(ReadableStreamReaderTest, PendingReadsShouldBeResolvedWhenCanceled) 454 TEST_F(ReadableStreamReaderTest, PendingReadsShouldBeResolvedWhenCanceled)
433 { 455 {
456 ScriptState::Scope scope(scriptState());
457 ExceptionState exceptionState(ExceptionState::ConstructionContext, "property ", "interface", scriptState()->context()->Global(), isolate());
434 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream); 458 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream);
435 EXPECT_EQ(ReadableStream::Readable, m_stream->stateInternal()); 459 EXPECT_EQ(ReadableStream::Readable, m_stream->stateInternal());
436 460
437 ReadResult result, result2; 461 ReadResult result, result2;
438 String onRejected, onRejected2; 462 String onRejected, onRejected2;
439 reader->read(scriptState()).then(createResultCaptor(&result), createCaptor(& onRejected)); 463 reader->read(scriptState()).then(createResultCaptor(&result), createCaptor(& onRejected));
440 reader->read(scriptState()).then(createResultCaptor(&result2), createCaptor( &onRejected2)); 464 reader->read(scriptState()).then(createResultCaptor(&result2), createCaptor( &onRejected2));
441 465
442 isolate()->RunMicrotasks(); 466 isolate()->RunMicrotasks();
443 EXPECT_FALSE(result.isSet); 467 EXPECT_FALSE(result.isSet);
(...skipping 12 matching lines...) Expand all
456 480
457 EXPECT_TRUE(result.isSet); 481 EXPECT_TRUE(result.isSet);
458 EXPECT_TRUE(result.isDone); 482 EXPECT_TRUE(result.isDone);
459 EXPECT_EQ("undefined", result.valueString); 483 EXPECT_EQ("undefined", result.valueString);
460 EXPECT_TRUE(onRejected.isNull()); 484 EXPECT_TRUE(onRejected.isNull());
461 485
462 EXPECT_TRUE(result2.isSet); 486 EXPECT_TRUE(result2.isSet);
463 EXPECT_TRUE(result2.isDone); 487 EXPECT_TRUE(result2.isDone);
464 EXPECT_EQ("undefined", result2.valueString); 488 EXPECT_EQ("undefined", result2.valueString);
465 EXPECT_TRUE(onRejected2.isNull()); 489 EXPECT_TRUE(onRejected2.isNull());
490 EXPECT_FALSE(exceptionState.hadException());
466 } 491 }
467 492
468 TEST_F(ReadableStreamReaderTest, CancelShouldNotWorkWhenNotActive) 493 TEST_F(ReadableStreamReaderTest, CancelShouldNotWorkWhenNotActive)
469 { 494 {
495 ScriptState::Scope scope(scriptState());
496 ExceptionState exceptionState(ExceptionState::ConstructionContext, "property ", "interface", scriptState()->context()->Global(), isolate());
470 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream); 497 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream);
471 reader->releaseLock(m_exceptionState); 498 reader->releaseLock(exceptionState);
472 EXPECT_FALSE(reader->isActive()); 499 EXPECT_FALSE(reader->isActive());
473 500
474 String onFulfilled, onRejected; 501 String onFulfilled, onRejected;
475 reader->cancel(scriptState(), ScriptValue(scriptState(), v8::Undefined(isola te()))).then(createCaptor(&onFulfilled), createCaptor(&onRejected)); 502 reader->cancel(scriptState(), ScriptValue(scriptState(), v8::Undefined(isola te()))).then(createCaptor(&onFulfilled), createCaptor(&onRejected));
476 EXPECT_EQ(ReadableStream::Readable, m_stream->stateInternal()); 503 EXPECT_EQ(ReadableStream::Readable, m_stream->stateInternal());
477 504
478 EXPECT_TRUE(onFulfilled.isNull()); 505 EXPECT_TRUE(onFulfilled.isNull());
479 EXPECT_TRUE(onRejected.isNull()); 506 EXPECT_TRUE(onRejected.isNull());
480 507
481 isolate()->RunMicrotasks(); 508 isolate()->RunMicrotasks();
482 509
483 EXPECT_EQ("undefined", onFulfilled); 510 EXPECT_EQ("undefined", onFulfilled);
484 EXPECT_TRUE(onRejected.isNull()); 511 EXPECT_TRUE(onRejected.isNull());
485 EXPECT_EQ(ReadableStream::Readable, m_stream->stateInternal()); 512 EXPECT_EQ(ReadableStream::Readable, m_stream->stateInternal());
513 EXPECT_FALSE(exceptionState.hadException());
486 } 514 }
487 515
488 TEST_F(ReadableStreamReaderTest, Cancel) 516 TEST_F(ReadableStreamReaderTest, Cancel)
489 { 517 {
518 ScriptState::Scope scope(scriptState());
519 ExceptionState exceptionState(ExceptionState::ConstructionContext, "property ", "interface", scriptState()->context()->Global(), isolate());
490 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream); 520 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream);
491 EXPECT_EQ(ReadableStream::Readable, m_stream->stateInternal()); 521 EXPECT_EQ(ReadableStream::Readable, m_stream->stateInternal());
492 522
493 String onClosedFulfilled, onClosedRejected; 523 String onClosedFulfilled, onClosedRejected;
494 String onCancelFulfilled, onCancelRejected; 524 String onCancelFulfilled, onCancelRejected;
495 reader->closed(scriptState()).then(createCaptor(&onClosedFulfilled), createC aptor(&onClosedRejected)); 525 reader->closed(scriptState()).then(createCaptor(&onClosedFulfilled), createC aptor(&onClosedRejected));
496 reader->cancel(scriptState(), ScriptValue(scriptState(), v8::Undefined(isola te()))).then(createCaptor(&onCancelFulfilled), createCaptor(&onCancelRejected)); 526 reader->cancel(scriptState(), ScriptValue(scriptState(), v8::Undefined(isola te()))).then(createCaptor(&onCancelFulfilled), createCaptor(&onCancelRejected));
497 527
498 EXPECT_EQ(ReadableStream::Closed, m_stream->stateInternal()); 528 EXPECT_EQ(ReadableStream::Closed, m_stream->stateInternal());
499 EXPECT_TRUE(onClosedFulfilled.isNull()); 529 EXPECT_TRUE(onClosedFulfilled.isNull());
500 EXPECT_TRUE(onClosedRejected.isNull()); 530 EXPECT_TRUE(onClosedRejected.isNull());
501 EXPECT_TRUE(onCancelFulfilled.isNull()); 531 EXPECT_TRUE(onCancelFulfilled.isNull());
502 EXPECT_TRUE(onCancelRejected.isNull()); 532 EXPECT_TRUE(onCancelRejected.isNull());
503 533
504 isolate()->RunMicrotasks(); 534 isolate()->RunMicrotasks();
505 EXPECT_EQ("undefined", onClosedFulfilled); 535 EXPECT_EQ("undefined", onClosedFulfilled);
506 EXPECT_TRUE(onClosedRejected.isNull()); 536 EXPECT_TRUE(onClosedRejected.isNull());
507 EXPECT_EQ("undefined", onCancelFulfilled); 537 EXPECT_EQ("undefined", onCancelFulfilled);
508 EXPECT_TRUE(onCancelRejected.isNull()); 538 EXPECT_TRUE(onCancelRejected.isNull());
539 EXPECT_FALSE(exceptionState.hadException());
509 } 540 }
510 541
511 TEST_F(ReadableStreamReaderTest, Close) 542 TEST_F(ReadableStreamReaderTest, Close)
512 { 543 {
544 ScriptState::Scope scope(scriptState());
545 ExceptionState exceptionState(ExceptionState::ConstructionContext, "property ", "interface", scriptState()->context()->Global(), isolate());
513 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream); 546 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream);
514 EXPECT_EQ(ReadableStream::Readable, m_stream->stateInternal()); 547 EXPECT_EQ(ReadableStream::Readable, m_stream->stateInternal());
515 548
516 String onFulfilled, onRejected; 549 String onFulfilled, onRejected;
517 reader->closed(scriptState()).then(createCaptor(&onFulfilled), createCaptor( &onRejected)); 550 reader->closed(scriptState()).then(createCaptor(&onFulfilled), createCaptor( &onRejected));
518 551
519 m_stream->close(); 552 m_stream->close();
520 553
521 EXPECT_EQ(ReadableStream::Closed, m_stream->stateInternal()); 554 EXPECT_EQ(ReadableStream::Closed, m_stream->stateInternal());
522 EXPECT_TRUE(onFulfilled.isNull()); 555 EXPECT_TRUE(onFulfilled.isNull());
523 EXPECT_TRUE(onRejected.isNull()); 556 EXPECT_TRUE(onRejected.isNull());
524 557
525 isolate()->RunMicrotasks(); 558 isolate()->RunMicrotasks();
526 EXPECT_EQ("undefined", onFulfilled); 559 EXPECT_EQ("undefined", onFulfilled);
527 EXPECT_TRUE(onRejected.isNull()); 560 EXPECT_TRUE(onRejected.isNull());
561 EXPECT_FALSE(exceptionState.hadException());
528 } 562 }
529 563
530 TEST_F(ReadableStreamReaderTest, Error) 564 TEST_F(ReadableStreamReaderTest, Error)
531 { 565 {
566 ScriptState::Scope scope(scriptState());
567 ExceptionState exceptionState(ExceptionState::ConstructionContext, "property ", "interface", scriptState()->context()->Global(), isolate());
532 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream); 568 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(), m_stream);
533 EXPECT_EQ(ReadableStream::Readable, m_stream->stateInternal()); 569 EXPECT_EQ(ReadableStream::Readable, m_stream->stateInternal());
534 570
535 String onFulfilled, onRejected; 571 String onFulfilled, onRejected;
536 reader->closed(scriptState()).then(createCaptor(&onFulfilled), createCaptor( &onRejected)); 572 reader->closed(scriptState()).then(createCaptor(&onFulfilled), createCaptor( &onRejected));
537 573
538 m_stream->error(DOMException::create(SyntaxError, "some error")); 574 m_stream->error(DOMException::create(SyntaxError, "some error"));
539 575
540 EXPECT_EQ(ReadableStream::Errored, m_stream->stateInternal()); 576 EXPECT_EQ(ReadableStream::Errored, m_stream->stateInternal());
541 EXPECT_TRUE(onFulfilled.isNull()); 577 EXPECT_TRUE(onFulfilled.isNull());
542 EXPECT_TRUE(onRejected.isNull()); 578 EXPECT_TRUE(onRejected.isNull());
543 579
544 isolate()->RunMicrotasks(); 580 isolate()->RunMicrotasks();
545 EXPECT_TRUE(onFulfilled.isNull()); 581 EXPECT_TRUE(onFulfilled.isNull());
546 EXPECT_EQ("SyntaxError: some error", onRejected); 582 EXPECT_EQ("SyntaxError: some error", onRejected);
583 EXPECT_FALSE(exceptionState.hadException());
547 } 584 }
548 585
549 } // namespace 586 } // namespace
550 587
551 } // namespace blink 588 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/page/Page.h ('k') | Source/core/streams/ReadableStreamTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698