| 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 "modules/fetch/ReadableStreamDataConsumerHandle.h" | 5 #include "modules/fetch/ReadableStreamDataConsumerHandle.h" |
| 6 | 6 |
| 7 #include "bindings/core/v8/ScriptState.h" | 7 #include "bindings/core/v8/ScriptState.h" |
| 8 #include "bindings/core/v8/V8BindingMacros.h" | 8 #include "bindings/core/v8/V8BindingMacros.h" |
| 9 #include "core/dom/Document.h" | 9 #include "core/dom/Document.h" |
| 10 #include "core/testing/DummyPageHolder.h" | 10 #include "core/testing/DummyPageHolder.h" |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 | 80 |
| 81 private: | 81 private: |
| 82 OwnPtr<DummyPageHolder> m_page; | 82 OwnPtr<DummyPageHolder> m_page; |
| 83 }; | 83 }; |
| 84 | 84 |
| 85 TEST_F(ReadableStreamDataConsumerHandleTest, Create) | 85 TEST_F(ReadableStreamDataConsumerHandleTest, Create) |
| 86 { | 86 { |
| 87 ScriptState::Scope scope(scriptState()); | 87 ScriptState::Scope scope(scriptState()); |
| 88 ScriptValue stream(scriptState(), evalWithPrintingError("new ReadableStream"
)); | 88 ScriptValue stream(scriptState(), evalWithPrintingError("new ReadableStream"
)); |
| 89 ASSERT_FALSE(stream.isEmpty()); | 89 ASSERT_FALSE(stream.isEmpty()); |
| 90 OwnPtr<ReadableStreamDataConsumerHandle> handle = ReadableStreamDataConsumer
Handle::create(scriptState(), stream.v8Value()); | 90 OwnPtr<ReadableStreamDataConsumerHandle> handle = ReadableStreamDataConsumer
Handle::create(scriptState(), stream); |
| 91 ASSERT_TRUE(handle); | 91 ASSERT_TRUE(handle); |
| 92 MockClient* client = MockClient::create(); | 92 MockClient* client = MockClient::create(); |
| 93 Checkpoint checkpoint; | 93 Checkpoint checkpoint; |
| 94 | 94 |
| 95 InSequence s; | 95 InSequence s; |
| 96 EXPECT_CALL(checkpoint, Call(1)); | 96 EXPECT_CALL(checkpoint, Call(1)); |
| 97 EXPECT_CALL(*client, didGetReadable()); | 97 EXPECT_CALL(*client, didGetReadable()); |
| 98 EXPECT_CALL(checkpoint, Call(2)); | 98 EXPECT_CALL(checkpoint, Call(2)); |
| 99 | 99 |
| 100 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(client
); | 100 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(client
); |
| 101 ASSERT_TRUE(reader); | 101 ASSERT_TRUE(reader); |
| 102 checkpoint.Call(1); | 102 checkpoint.Call(1); |
| 103 testing::runPendingTasks(); | 103 testing::runPendingTasks(); |
| 104 checkpoint.Call(2); | 104 checkpoint.Call(2); |
| 105 } | 105 } |
| 106 | 106 |
| 107 TEST_F(ReadableStreamDataConsumerHandleTest, EmptyStream) | 107 TEST_F(ReadableStreamDataConsumerHandleTest, EmptyStream) |
| 108 { | 108 { |
| 109 ScriptState::Scope scope(scriptState()); | 109 ScriptState::Scope scope(scriptState()); |
| 110 ScriptValue stream(scriptState(), evalWithPrintingError( | 110 ScriptValue stream(scriptState(), evalWithPrintingError( |
| 111 "new ReadableStream({start: c => c.close()})")); | 111 "new ReadableStream({start: c => c.close()})")); |
| 112 ASSERT_FALSE(stream.isEmpty()); | 112 ASSERT_FALSE(stream.isEmpty()); |
| 113 OwnPtr<ReadableStreamDataConsumerHandle> handle = ReadableStreamDataConsumer
Handle::create(scriptState(), stream.v8Value()); | 113 OwnPtr<ReadableStreamDataConsumerHandle> handle = ReadableStreamDataConsumer
Handle::create(scriptState(), stream); |
| 114 ASSERT_TRUE(handle); | 114 ASSERT_TRUE(handle); |
| 115 MockClient* client = MockClient::create(); | 115 MockClient* client = MockClient::create(); |
| 116 Checkpoint checkpoint; | 116 Checkpoint checkpoint; |
| 117 | 117 |
| 118 InSequence s; | 118 InSequence s; |
| 119 EXPECT_CALL(checkpoint, Call(1)); | 119 EXPECT_CALL(checkpoint, Call(1)); |
| 120 EXPECT_CALL(*client, didGetReadable()); | 120 EXPECT_CALL(*client, didGetReadable()); |
| 121 EXPECT_CALL(checkpoint, Call(2)); | 121 EXPECT_CALL(checkpoint, Call(2)); |
| 122 EXPECT_CALL(*client, didGetReadable()); | 122 EXPECT_CALL(*client, didGetReadable()); |
| 123 EXPECT_CALL(checkpoint, Call(3)); | 123 EXPECT_CALL(checkpoint, Call(3)); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 134 checkpoint.Call(3); | 134 checkpoint.Call(3); |
| 135 EXPECT_EQ(kDone, reader->read(&c, 1, kNone, &readBytes)); | 135 EXPECT_EQ(kDone, reader->read(&c, 1, kNone, &readBytes)); |
| 136 } | 136 } |
| 137 | 137 |
| 138 TEST_F(ReadableStreamDataConsumerHandleTest, ErroredStream) | 138 TEST_F(ReadableStreamDataConsumerHandleTest, ErroredStream) |
| 139 { | 139 { |
| 140 ScriptState::Scope scope(scriptState()); | 140 ScriptState::Scope scope(scriptState()); |
| 141 ScriptValue stream(scriptState(), evalWithPrintingError( | 141 ScriptValue stream(scriptState(), evalWithPrintingError( |
| 142 "new ReadableStream({start: c => c.error()})")); | 142 "new ReadableStream({start: c => c.error()})")); |
| 143 ASSERT_FALSE(stream.isEmpty()); | 143 ASSERT_FALSE(stream.isEmpty()); |
| 144 OwnPtr<ReadableStreamDataConsumerHandle> handle = ReadableStreamDataConsumer
Handle::create(scriptState(), stream.v8Value()); | 144 OwnPtr<ReadableStreamDataConsumerHandle> handle = ReadableStreamDataConsumer
Handle::create(scriptState(), stream); |
| 145 ASSERT_TRUE(handle); | 145 ASSERT_TRUE(handle); |
| 146 MockClient* client = MockClient::create(); | 146 MockClient* client = MockClient::create(); |
| 147 Checkpoint checkpoint; | 147 Checkpoint checkpoint; |
| 148 | 148 |
| 149 InSequence s; | 149 InSequence s; |
| 150 EXPECT_CALL(checkpoint, Call(1)); | 150 EXPECT_CALL(checkpoint, Call(1)); |
| 151 EXPECT_CALL(*client, didGetReadable()); | 151 EXPECT_CALL(*client, didGetReadable()); |
| 152 EXPECT_CALL(checkpoint, Call(2)); | 152 EXPECT_CALL(checkpoint, Call(2)); |
| 153 EXPECT_CALL(*client, didGetReadable()); | 153 EXPECT_CALL(*client, didGetReadable()); |
| 154 EXPECT_CALL(checkpoint, Call(3)); | 154 EXPECT_CALL(checkpoint, Call(3)); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 170 { | 170 { |
| 171 ScriptState::Scope scope(scriptState()); | 171 ScriptState::Scope scope(scriptState()); |
| 172 ScriptValue stream(scriptState(), evalWithPrintingError( | 172 ScriptValue stream(scriptState(), evalWithPrintingError( |
| 173 "var controller;" | 173 "var controller;" |
| 174 "var stream = new ReadableStream({start: c => controller = c});" | 174 "var stream = new ReadableStream({start: c => controller = c});" |
| 175 "controller.enqueue(new Uint8Array([0x43, 0x44, 0x45, 0x46]));" | 175 "controller.enqueue(new Uint8Array([0x43, 0x44, 0x45, 0x46]));" |
| 176 "controller.enqueue(new Uint8Array([0x47, 0x48, 0x49, 0x4a]));" | 176 "controller.enqueue(new Uint8Array([0x47, 0x48, 0x49, 0x4a]));" |
| 177 "controller.close();" | 177 "controller.close();" |
| 178 "stream")); | 178 "stream")); |
| 179 ASSERT_FALSE(stream.isEmpty()); | 179 ASSERT_FALSE(stream.isEmpty()); |
| 180 OwnPtr<ReadableStreamDataConsumerHandle> handle = ReadableStreamDataConsumer
Handle::create(scriptState(), stream.v8Value()); | 180 OwnPtr<ReadableStreamDataConsumerHandle> handle = ReadableStreamDataConsumer
Handle::create(scriptState(), stream); |
| 181 ASSERT_TRUE(handle); | 181 ASSERT_TRUE(handle); |
| 182 MockClient* client = MockClient::create(); | 182 MockClient* client = MockClient::create(); |
| 183 Checkpoint checkpoint; | 183 Checkpoint checkpoint; |
| 184 | 184 |
| 185 InSequence s; | 185 InSequence s; |
| 186 EXPECT_CALL(checkpoint, Call(1)); | 186 EXPECT_CALL(checkpoint, Call(1)); |
| 187 EXPECT_CALL(*client, didGetReadable()); | 187 EXPECT_CALL(*client, didGetReadable()); |
| 188 EXPECT_CALL(checkpoint, Call(2)); | 188 EXPECT_CALL(checkpoint, Call(2)); |
| 189 EXPECT_CALL(*client, didGetReadable()); | 189 EXPECT_CALL(*client, didGetReadable()); |
| 190 EXPECT_CALL(checkpoint, Call(3)); | 190 EXPECT_CALL(checkpoint, Call(3)); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 232 { | 232 { |
| 233 ScriptState::Scope scope(scriptState()); | 233 ScriptState::Scope scope(scriptState()); |
| 234 ScriptValue stream(scriptState(), evalWithPrintingError( | 234 ScriptValue stream(scriptState(), evalWithPrintingError( |
| 235 "var controller;" | 235 "var controller;" |
| 236 "var stream = new ReadableStream({start: c => controller = c});" | 236 "var stream = new ReadableStream({start: c => controller = c});" |
| 237 "controller.enqueue(new Uint8Array([0x43, 0x44, 0x45, 0x46]));" | 237 "controller.enqueue(new Uint8Array([0x43, 0x44, 0x45, 0x46]));" |
| 238 "controller.enqueue(new Uint8Array([0x47, 0x48, 0x49, 0x4a]));" | 238 "controller.enqueue(new Uint8Array([0x47, 0x48, 0x49, 0x4a]));" |
| 239 "controller.close();" | 239 "controller.close();" |
| 240 "stream")); | 240 "stream")); |
| 241 ASSERT_FALSE(stream.isEmpty()); | 241 ASSERT_FALSE(stream.isEmpty()); |
| 242 OwnPtr<ReadableStreamDataConsumerHandle> handle = ReadableStreamDataConsumer
Handle::create(scriptState(), stream.v8Value()); | 242 OwnPtr<ReadableStreamDataConsumerHandle> handle = ReadableStreamDataConsumer
Handle::create(scriptState(), stream); |
| 243 ASSERT_TRUE(handle); | 243 ASSERT_TRUE(handle); |
| 244 MockClient* client = MockClient::create(); | 244 MockClient* client = MockClient::create(); |
| 245 Checkpoint checkpoint; | 245 Checkpoint checkpoint; |
| 246 | 246 |
| 247 InSequence s; | 247 InSequence s; |
| 248 EXPECT_CALL(checkpoint, Call(1)); | 248 EXPECT_CALL(checkpoint, Call(1)); |
| 249 EXPECT_CALL(*client, didGetReadable()); | 249 EXPECT_CALL(*client, didGetReadable()); |
| 250 EXPECT_CALL(checkpoint, Call(2)); | 250 EXPECT_CALL(checkpoint, Call(2)); |
| 251 EXPECT_CALL(*client, didGetReadable()); | 251 EXPECT_CALL(*client, didGetReadable()); |
| 252 EXPECT_CALL(checkpoint, Call(3)); | 252 EXPECT_CALL(checkpoint, Call(3)); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 302 } | 302 } |
| 303 | 303 |
| 304 TEST_F(ReadableStreamDataConsumerHandleTest, LockedStream) | 304 TEST_F(ReadableStreamDataConsumerHandleTest, LockedStream) |
| 305 { | 305 { |
| 306 ScriptState::Scope scope(scriptState()); | 306 ScriptState::Scope scope(scriptState()); |
| 307 ScriptValue stream(scriptState(), evalWithPrintingError( | 307 ScriptValue stream(scriptState(), evalWithPrintingError( |
| 308 "var stream = new ReadableStream;" | 308 "var stream = new ReadableStream;" |
| 309 "stream.getReader();" | 309 "stream.getReader();" |
| 310 "stream")); | 310 "stream")); |
| 311 ASSERT_FALSE(stream.isEmpty()); | 311 ASSERT_FALSE(stream.isEmpty()); |
| 312 OwnPtr<ReadableStreamDataConsumerHandle> handle = ReadableStreamDataConsumer
Handle::create(scriptState(), stream.v8Value()); | 312 OwnPtr<ReadableStreamDataConsumerHandle> handle = ReadableStreamDataConsumer
Handle::create(scriptState(), stream); |
| 313 ASSERT_TRUE(handle); | 313 ASSERT_TRUE(handle); |
| 314 MockClient* client = MockClient::create(); | 314 MockClient* client = MockClient::create(); |
| 315 Checkpoint checkpoint; | 315 Checkpoint checkpoint; |
| 316 | 316 |
| 317 InSequence s; | 317 InSequence s; |
| 318 EXPECT_CALL(checkpoint, Call(1)); | 318 EXPECT_CALL(checkpoint, Call(1)); |
| 319 EXPECT_CALL(*client, didGetReadable()); | 319 EXPECT_CALL(*client, didGetReadable()); |
| 320 EXPECT_CALL(checkpoint, Call(2)); | 320 EXPECT_CALL(checkpoint, Call(2)); |
| 321 | 321 |
| 322 char c; | 322 char c; |
| 323 size_t readBytes; | 323 size_t readBytes; |
| 324 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(client
); | 324 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(client
); |
| 325 ASSERT_TRUE(reader); | 325 ASSERT_TRUE(reader); |
| 326 checkpoint.Call(1); | 326 checkpoint.Call(1); |
| 327 testing::runPendingTasks(); | 327 testing::runPendingTasks(); |
| 328 checkpoint.Call(2); | 328 checkpoint.Call(2); |
| 329 EXPECT_EQ(kUnexpectedError, reader->read(&c, 1, kNone, &readBytes)); | 329 EXPECT_EQ(kUnexpectedError, reader->read(&c, 1, kNone, &readBytes)); |
| 330 } | 330 } |
| 331 | 331 |
| 332 TEST_F(ReadableStreamDataConsumerHandleTest, EnqueueUndefined) | 332 TEST_F(ReadableStreamDataConsumerHandleTest, EnqueueUndefined) |
| 333 { | 333 { |
| 334 ScriptState::Scope scope(scriptState()); | 334 ScriptState::Scope scope(scriptState()); |
| 335 ScriptValue stream(scriptState(), evalWithPrintingError( | 335 ScriptValue stream(scriptState(), evalWithPrintingError( |
| 336 "var controller;" | 336 "var controller;" |
| 337 "var stream = new ReadableStream({start: c => controller = c});" | 337 "var stream = new ReadableStream({start: c => controller = c});" |
| 338 "controller.enqueue(undefined);" | 338 "controller.enqueue(undefined);" |
| 339 "controller.close();" | 339 "controller.close();" |
| 340 "stream")); | 340 "stream")); |
| 341 ASSERT_FALSE(stream.isEmpty()); | 341 ASSERT_FALSE(stream.isEmpty()); |
| 342 OwnPtr<ReadableStreamDataConsumerHandle> handle = ReadableStreamDataConsumer
Handle::create(scriptState(), stream.v8Value()); | 342 OwnPtr<ReadableStreamDataConsumerHandle> handle = ReadableStreamDataConsumer
Handle::create(scriptState(), stream); |
| 343 ASSERT_TRUE(handle); | 343 ASSERT_TRUE(handle); |
| 344 MockClient* client = MockClient::create(); | 344 MockClient* client = MockClient::create(); |
| 345 Checkpoint checkpoint; | 345 Checkpoint checkpoint; |
| 346 | 346 |
| 347 InSequence s; | 347 InSequence s; |
| 348 EXPECT_CALL(checkpoint, Call(1)); | 348 EXPECT_CALL(checkpoint, Call(1)); |
| 349 EXPECT_CALL(*client, didGetReadable()); | 349 EXPECT_CALL(*client, didGetReadable()); |
| 350 EXPECT_CALL(checkpoint, Call(2)); | 350 EXPECT_CALL(checkpoint, Call(2)); |
| 351 EXPECT_CALL(*client, didGetReadable()); | 351 EXPECT_CALL(*client, didGetReadable()); |
| 352 EXPECT_CALL(checkpoint, Call(3)); | 352 EXPECT_CALL(checkpoint, Call(3)); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 367 TEST_F(ReadableStreamDataConsumerHandleTest, EnqueueNull) | 367 TEST_F(ReadableStreamDataConsumerHandleTest, EnqueueNull) |
| 368 { | 368 { |
| 369 ScriptState::Scope scope(scriptState()); | 369 ScriptState::Scope scope(scriptState()); |
| 370 ScriptValue stream(scriptState(), evalWithPrintingError( | 370 ScriptValue stream(scriptState(), evalWithPrintingError( |
| 371 "var controller;" | 371 "var controller;" |
| 372 "var stream = new ReadableStream({start: c => controller = c});" | 372 "var stream = new ReadableStream({start: c => controller = c});" |
| 373 "controller.enqueue(null);" | 373 "controller.enqueue(null);" |
| 374 "controller.close();" | 374 "controller.close();" |
| 375 "stream")); | 375 "stream")); |
| 376 ASSERT_FALSE(stream.isEmpty()); | 376 ASSERT_FALSE(stream.isEmpty()); |
| 377 OwnPtr<ReadableStreamDataConsumerHandle> handle = ReadableStreamDataConsumer
Handle::create(scriptState(), stream.v8Value()); | 377 OwnPtr<ReadableStreamDataConsumerHandle> handle = ReadableStreamDataConsumer
Handle::create(scriptState(), stream); |
| 378 ASSERT_TRUE(handle); | 378 ASSERT_TRUE(handle); |
| 379 MockClient* client = MockClient::create(); | 379 MockClient* client = MockClient::create(); |
| 380 Checkpoint checkpoint; | 380 Checkpoint checkpoint; |
| 381 | 381 |
| 382 InSequence s; | 382 InSequence s; |
| 383 EXPECT_CALL(checkpoint, Call(1)); | 383 EXPECT_CALL(checkpoint, Call(1)); |
| 384 EXPECT_CALL(*client, didGetReadable()); | 384 EXPECT_CALL(*client, didGetReadable()); |
| 385 EXPECT_CALL(checkpoint, Call(2)); | 385 EXPECT_CALL(checkpoint, Call(2)); |
| 386 EXPECT_CALL(*client, didGetReadable()); | 386 EXPECT_CALL(*client, didGetReadable()); |
| 387 EXPECT_CALL(checkpoint, Call(3)); | 387 EXPECT_CALL(checkpoint, Call(3)); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 402 TEST_F(ReadableStreamDataConsumerHandleTest, EnqueueString) | 402 TEST_F(ReadableStreamDataConsumerHandleTest, EnqueueString) |
| 403 { | 403 { |
| 404 ScriptState::Scope scope(scriptState()); | 404 ScriptState::Scope scope(scriptState()); |
| 405 ScriptValue stream(scriptState(), evalWithPrintingError( | 405 ScriptValue stream(scriptState(), evalWithPrintingError( |
| 406 "var controller;" | 406 "var controller;" |
| 407 "var stream = new ReadableStream({start: c => controller = c});" | 407 "var stream = new ReadableStream({start: c => controller = c});" |
| 408 "controller.enqueue('hello');" | 408 "controller.enqueue('hello');" |
| 409 "controller.close();" | 409 "controller.close();" |
| 410 "stream")); | 410 "stream")); |
| 411 ASSERT_FALSE(stream.isEmpty()); | 411 ASSERT_FALSE(stream.isEmpty()); |
| 412 OwnPtr<ReadableStreamDataConsumerHandle> handle = ReadableStreamDataConsumer
Handle::create(scriptState(), stream.v8Value()); | 412 OwnPtr<ReadableStreamDataConsumerHandle> handle = ReadableStreamDataConsumer
Handle::create(scriptState(), stream); |
| 413 ASSERT_TRUE(handle); | 413 ASSERT_TRUE(handle); |
| 414 MockClient* client = MockClient::create(); | 414 MockClient* client = MockClient::create(); |
| 415 Checkpoint checkpoint; | 415 Checkpoint checkpoint; |
| 416 | 416 |
| 417 InSequence s; | 417 InSequence s; |
| 418 EXPECT_CALL(checkpoint, Call(1)); | 418 EXPECT_CALL(checkpoint, Call(1)); |
| 419 EXPECT_CALL(*client, didGetReadable()); | 419 EXPECT_CALL(*client, didGetReadable()); |
| 420 EXPECT_CALL(checkpoint, Call(2)); | 420 EXPECT_CALL(checkpoint, Call(2)); |
| 421 EXPECT_CALL(*client, didGetReadable()); | 421 EXPECT_CALL(*client, didGetReadable()); |
| 422 EXPECT_CALL(checkpoint, Call(3)); | 422 EXPECT_CALL(checkpoint, Call(3)); |
| 423 | 423 |
| 424 const void* buffer; | 424 const void* buffer; |
| 425 size_t available; | 425 size_t available; |
| 426 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(client
); | 426 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(client
); |
| 427 ASSERT_TRUE(reader); | 427 ASSERT_TRUE(reader); |
| 428 checkpoint.Call(1); | 428 checkpoint.Call(1); |
| 429 testing::runPendingTasks(); | 429 testing::runPendingTasks(); |
| 430 checkpoint.Call(2); | 430 checkpoint.Call(2); |
| 431 EXPECT_EQ(kShouldWait, reader->beginRead(&buffer, kNone, &available)); | 431 EXPECT_EQ(kShouldWait, reader->beginRead(&buffer, kNone, &available)); |
| 432 testing::runPendingTasks(); | 432 testing::runPendingTasks(); |
| 433 checkpoint.Call(3); | 433 checkpoint.Call(3); |
| 434 EXPECT_EQ(kUnexpectedError, reader->beginRead(&buffer, kNone, &available)); | 434 EXPECT_EQ(kUnexpectedError, reader->beginRead(&buffer, kNone, &available)); |
| 435 } | 435 } |
| 436 | 436 |
| 437 } // namespace | 437 } // namespace |
| 438 | 438 |
| 439 } // namespace blink | 439 } // namespace blink |
| 440 | 440 |
| OLD | NEW |