| OLD | NEW |
| 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 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 174 | 174 |
| 175 reader->closed(scriptState()).then(createCaptor(&onFulfilled), createCaptor(
&onRejected)); | 175 reader->closed(scriptState()).then(createCaptor(&onFulfilled), createCaptor(
&onRejected)); |
| 176 reader->releaseLock(exceptionState); | 176 reader->releaseLock(exceptionState); |
| 177 EXPECT_FALSE(reader->isActive()); | 177 EXPECT_FALSE(reader->isActive()); |
| 178 EXPECT_FALSE(exceptionState.hadException()); | 178 EXPECT_FALSE(exceptionState.hadException()); |
| 179 | 179 |
| 180 EXPECT_TRUE(onFulfilled.isNull()); | 180 EXPECT_TRUE(onFulfilled.isNull()); |
| 181 EXPECT_TRUE(onRejected.isNull()); | 181 EXPECT_TRUE(onRejected.isNull()); |
| 182 | 182 |
| 183 isolate()->RunMicrotasks(); | 183 isolate()->RunMicrotasks(); |
| 184 EXPECT_EQ("undefined", onFulfilled); | 184 EXPECT_TRUE(onFulfilled.isNull()); |
| 185 EXPECT_TRUE(onRejected.isNull()); | 185 EXPECT_EQ("AbortError: the reader is already released", onRejected); |
| 186 | 186 |
| 187 ReadableStreamReader* another = new ReadableStreamReader(executionContext(),
m_stream); | 187 ReadableStreamReader* another = new ReadableStreamReader(executionContext(),
m_stream); |
| 188 EXPECT_TRUE(another->isActive()); | 188 EXPECT_TRUE(another->isActive()); |
| 189 EXPECT_FALSE(reader->isActive()); | 189 EXPECT_FALSE(reader->isActive()); |
| 190 reader->releaseLock(exceptionState); | 190 reader->releaseLock(exceptionState); |
| 191 EXPECT_TRUE(another->isActive()); | 191 EXPECT_TRUE(another->isActive()); |
| 192 EXPECT_FALSE(reader->isActive()); | 192 EXPECT_FALSE(reader->isActive()); |
| 193 EXPECT_FALSE(exceptionState.hadException()); | 193 EXPECT_FALSE(exceptionState.hadException()); |
| 194 } | 194 } |
| 195 | 195 |
| 196 TEST_F(ReadableStreamReaderTest, ReadAfterRelease) | 196 TEST_F(ReadableStreamReaderTest, ReadAfterRelease) |
| 197 { | 197 { |
| 198 ScriptState::Scope scope(scriptState()); | 198 ScriptState::Scope scope(scriptState()); |
| 199 ExceptionState exceptionState(ExceptionState::ConstructionContext, "property
", "interface", scriptState()->context()->Global(), isolate()); | 199 ExceptionState exceptionState(ExceptionState::ConstructionContext, "property
", "interface", scriptState()->context()->Global(), isolate()); |
| 200 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(),
m_stream); | 200 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(),
m_stream); |
| 201 EXPECT_TRUE(reader->isActive()); | 201 EXPECT_TRUE(reader->isActive()); |
| 202 reader->releaseLock(exceptionState); | 202 reader->releaseLock(exceptionState); |
| 203 EXPECT_FALSE(exceptionState.hadException()); | 203 EXPECT_FALSE(exceptionState.hadException()); |
| 204 EXPECT_FALSE(reader->isActive()); | 204 EXPECT_FALSE(reader->isActive()); |
| 205 | 205 |
| 206 ReadResult result; | 206 ReadResult result; |
| 207 String onRejected; | 207 String onRejected; |
| 208 reader->read(scriptState()).then(createResultCaptor(&result), createCaptor(&
onRejected)); | 208 reader->read(scriptState()).then(createResultCaptor(&result), createCaptor(&
onRejected)); |
| 209 | 209 |
| 210 EXPECT_FALSE(result.isSet); | 210 EXPECT_FALSE(result.isSet); |
| 211 EXPECT_TRUE(onRejected.isNull()); | 211 EXPECT_TRUE(onRejected.isNull()); |
| 212 isolate()->RunMicrotasks(); | 212 isolate()->RunMicrotasks(); |
| 213 | 213 |
| 214 EXPECT_TRUE(result.isSet); | 214 EXPECT_FALSE(result.isSet); |
| 215 EXPECT_TRUE(result.isDone); | 215 EXPECT_EQ("TypeError: the reader is already released", onRejected); |
| 216 EXPECT_EQ("undefined", result.valueString); | |
| 217 EXPECT_TRUE(onRejected.isNull()); | |
| 218 EXPECT_FALSE(exceptionState.hadException()); | 216 EXPECT_FALSE(exceptionState.hadException()); |
| 219 } | 217 } |
| 220 | 218 |
| 221 TEST_F(ReadableStreamReaderTest, ReleaseShouldFailWhenCalledWhileReading) | 219 TEST_F(ReadableStreamReaderTest, ReleaseShouldFailWhenCalledWhileReading) |
| 222 { | 220 { |
| 223 ScriptState::Scope scope(scriptState()); | 221 ScriptState::Scope scope(scriptState()); |
| 224 ExceptionState exceptionState(ExceptionState::ConstructionContext, "property
", "interface", scriptState()->context()->Global(), isolate()); | 222 ExceptionState exceptionState(ExceptionState::ConstructionContext, "property
", "interface", scriptState()->context()->Global(), isolate()); |
| 225 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(),
m_stream); | 223 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(),
m_stream); |
| 226 EXPECT_TRUE(reader->isActive()); | 224 EXPECT_TRUE(reader->isActive()); |
| 227 reader->read(scriptState()); | 225 reader->read(scriptState()); |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 321 } | 319 } |
| 322 | 320 |
| 323 TEST_F(ReadableStreamReaderTest, ClosedReader) | 321 TEST_F(ReadableStreamReaderTest, ClosedReader) |
| 324 { | 322 { |
| 325 ScriptState::Scope scope(scriptState()); | 323 ScriptState::Scope scope(scriptState()); |
| 326 ExceptionState exceptionState(ExceptionState::ConstructionContext, "property
", "interface", scriptState()->context()->Global(), isolate()); | 324 ExceptionState exceptionState(ExceptionState::ConstructionContext, "property
", "interface", scriptState()->context()->Global(), isolate()); |
| 327 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(),
m_stream); | 325 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(),
m_stream); |
| 328 | 326 |
| 329 m_stream->close(); | 327 m_stream->close(); |
| 330 | 328 |
| 331 EXPECT_FALSE(reader->isActive()); | 329 EXPECT_TRUE(reader->isActive()); |
| 332 | 330 |
| 333 String onClosedFulfilled, onClosedRejected; | 331 String onClosedFulfilled, onClosedRejected; |
| 334 ReadResult result; | 332 ReadResult result; |
| 335 String onReadRejected; | 333 String onReadRejected; |
| 336 isolate()->RunMicrotasks(); | 334 isolate()->RunMicrotasks(); |
| 337 reader->closed(scriptState()).then(createCaptor(&onClosedFulfilled), createC
aptor(&onClosedRejected)); | 335 reader->closed(scriptState()).then(createCaptor(&onClosedFulfilled), createC
aptor(&onClosedRejected)); |
| 338 reader->read(scriptState()).then(createResultCaptor(&result), createCaptor(&
onReadRejected)); | 336 reader->read(scriptState()).then(createResultCaptor(&result), createCaptor(&
onReadRejected)); |
| 339 EXPECT_TRUE(onClosedFulfilled.isNull()); | 337 EXPECT_TRUE(onClosedFulfilled.isNull()); |
| 340 EXPECT_TRUE(onClosedRejected.isNull()); | 338 EXPECT_TRUE(onClosedRejected.isNull()); |
| 341 EXPECT_FALSE(result.isSet); | 339 EXPECT_FALSE(result.isSet); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 353 | 351 |
| 354 TEST_F(ReadableStreamReaderTest, ErroredReader) | 352 TEST_F(ReadableStreamReaderTest, ErroredReader) |
| 355 { | 353 { |
| 356 ScriptState::Scope scope(scriptState()); | 354 ScriptState::Scope scope(scriptState()); |
| 357 ExceptionState exceptionState(ExceptionState::ConstructionContext, "property
", "interface", scriptState()->context()->Global(), isolate()); | 355 ExceptionState exceptionState(ExceptionState::ConstructionContext, "property
", "interface", scriptState()->context()->Global(), isolate()); |
| 358 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(),
m_stream); | 356 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(),
m_stream); |
| 359 | 357 |
| 360 m_stream->error(DOMException::create(SyntaxError, "some error")); | 358 m_stream->error(DOMException::create(SyntaxError, "some error")); |
| 361 | 359 |
| 362 EXPECT_EQ(ReadableStream::Errored, m_stream->stateInternal()); | 360 EXPECT_EQ(ReadableStream::Errored, m_stream->stateInternal()); |
| 363 EXPECT_FALSE(reader->isActive()); | 361 EXPECT_TRUE(reader->isActive()); |
| 364 | 362 |
| 365 String onClosedFulfilled, onClosedRejected; | 363 String onClosedFulfilled, onClosedRejected; |
| 366 String onReadFulfilled, onReadRejected; | 364 String onReadFulfilled, onReadRejected; |
| 367 isolate()->RunMicrotasks(); | 365 isolate()->RunMicrotasks(); |
| 368 reader->closed(scriptState()).then(createCaptor(&onClosedFulfilled), createC
aptor(&onClosedRejected)); | 366 reader->closed(scriptState()).then(createCaptor(&onClosedFulfilled), createC
aptor(&onClosedRejected)); |
| 369 reader->read(scriptState()).then(createCaptor(&onReadFulfilled), createCapto
r(&onReadRejected)); | 367 reader->read(scriptState()).then(createCaptor(&onReadFulfilled), createCapto
r(&onReadRejected)); |
| 370 EXPECT_TRUE(onClosedFulfilled.isNull()); | 368 EXPECT_TRUE(onClosedFulfilled.isNull()); |
| 371 EXPECT_TRUE(onClosedRejected.isNull()); | 369 EXPECT_TRUE(onClosedRejected.isNull()); |
| 372 EXPECT_TRUE(onReadFulfilled.isNull()); | 370 EXPECT_TRUE(onReadFulfilled.isNull()); |
| 373 EXPECT_TRUE(onReadRejected.isNull()); | 371 EXPECT_TRUE(onReadRejected.isNull()); |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 463 reader->read(scriptState()).then(createResultCaptor(&result), createCaptor(&
onRejected)); | 461 reader->read(scriptState()).then(createResultCaptor(&result), createCaptor(&
onRejected)); |
| 464 reader->read(scriptState()).then(createResultCaptor(&result2), createCaptor(
&onRejected2)); | 462 reader->read(scriptState()).then(createResultCaptor(&result2), createCaptor(
&onRejected2)); |
| 465 | 463 |
| 466 isolate()->RunMicrotasks(); | 464 isolate()->RunMicrotasks(); |
| 467 EXPECT_FALSE(result.isSet); | 465 EXPECT_FALSE(result.isSet); |
| 468 EXPECT_TRUE(onRejected.isNull()); | 466 EXPECT_TRUE(onRejected.isNull()); |
| 469 EXPECT_FALSE(result2.isSet); | 467 EXPECT_FALSE(result2.isSet); |
| 470 EXPECT_TRUE(onRejected2.isNull()); | 468 EXPECT_TRUE(onRejected2.isNull()); |
| 471 | 469 |
| 472 reader->cancel(scriptState(), ScriptValue(scriptState(), v8::Undefined(isola
te()))); | 470 reader->cancel(scriptState(), ScriptValue(scriptState(), v8::Undefined(isola
te()))); |
| 473 EXPECT_FALSE(reader->isActive()); | 471 EXPECT_TRUE(reader->isActive()); |
| 474 EXPECT_FALSE(result.isSet); | 472 EXPECT_FALSE(result.isSet); |
| 475 EXPECT_TRUE(onRejected.isNull()); | 473 EXPECT_TRUE(onRejected.isNull()); |
| 476 EXPECT_FALSE(result2.isSet); | 474 EXPECT_FALSE(result2.isSet); |
| 477 EXPECT_TRUE(onRejected2.isNull()); | 475 EXPECT_TRUE(onRejected2.isNull()); |
| 478 | 476 |
| 479 isolate()->RunMicrotasks(); | 477 isolate()->RunMicrotasks(); |
| 480 | 478 |
| 481 EXPECT_TRUE(result.isSet); | 479 EXPECT_TRUE(result.isSet); |
| 482 EXPECT_TRUE(result.isDone); | 480 EXPECT_TRUE(result.isDone); |
| 483 EXPECT_EQ("undefined", result.valueString); | 481 EXPECT_EQ("undefined", result.valueString); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 500 | 498 |
| 501 String onFulfilled, onRejected; | 499 String onFulfilled, onRejected; |
| 502 reader->cancel(scriptState(), ScriptValue(scriptState(), v8::Undefined(isola
te()))).then(createCaptor(&onFulfilled), createCaptor(&onRejected)); | 500 reader->cancel(scriptState(), ScriptValue(scriptState(), v8::Undefined(isola
te()))).then(createCaptor(&onFulfilled), createCaptor(&onRejected)); |
| 503 EXPECT_EQ(ReadableStream::Readable, m_stream->stateInternal()); | 501 EXPECT_EQ(ReadableStream::Readable, m_stream->stateInternal()); |
| 504 | 502 |
| 505 EXPECT_TRUE(onFulfilled.isNull()); | 503 EXPECT_TRUE(onFulfilled.isNull()); |
| 506 EXPECT_TRUE(onRejected.isNull()); | 504 EXPECT_TRUE(onRejected.isNull()); |
| 507 | 505 |
| 508 isolate()->RunMicrotasks(); | 506 isolate()->RunMicrotasks(); |
| 509 | 507 |
| 510 EXPECT_EQ("undefined", onFulfilled); | 508 EXPECT_TRUE(onFulfilled.isNull()); |
| 511 EXPECT_TRUE(onRejected.isNull()); | 509 EXPECT_EQ("TypeError: the reader is already released", onRejected); |
| 512 EXPECT_EQ(ReadableStream::Readable, m_stream->stateInternal()); | 510 EXPECT_EQ(ReadableStream::Readable, m_stream->stateInternal()); |
| 513 EXPECT_FALSE(exceptionState.hadException()); | 511 EXPECT_FALSE(exceptionState.hadException()); |
| 514 } | 512 } |
| 515 | 513 |
| 516 TEST_F(ReadableStreamReaderTest, Cancel) | 514 TEST_F(ReadableStreamReaderTest, Cancel) |
| 517 { | 515 { |
| 518 ScriptState::Scope scope(scriptState()); | 516 ScriptState::Scope scope(scriptState()); |
| 519 ExceptionState exceptionState(ExceptionState::ConstructionContext, "property
", "interface", scriptState()->context()->Global(), isolate()); | 517 ExceptionState exceptionState(ExceptionState::ConstructionContext, "property
", "interface", scriptState()->context()->Global(), isolate()); |
| 520 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(),
m_stream); | 518 ReadableStreamReader* reader = new ReadableStreamReader(executionContext(),
m_stream); |
| 521 EXPECT_EQ(ReadableStream::Readable, m_stream->stateInternal()); | 519 EXPECT_EQ(ReadableStream::Readable, m_stream->stateInternal()); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 579 | 577 |
| 580 isolate()->RunMicrotasks(); | 578 isolate()->RunMicrotasks(); |
| 581 EXPECT_TRUE(onFulfilled.isNull()); | 579 EXPECT_TRUE(onFulfilled.isNull()); |
| 582 EXPECT_EQ("SyntaxError: some error", onRejected); | 580 EXPECT_EQ("SyntaxError: some error", onRejected); |
| 583 EXPECT_FALSE(exceptionState.hadException()); | 581 EXPECT_FALSE(exceptionState.hadException()); |
| 584 } | 582 } |
| 585 | 583 |
| 586 } // namespace | 584 } // namespace |
| 587 | 585 |
| 588 } // namespace blink | 586 } // namespace blink |
| OLD | NEW |