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 |