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

Side by Side Diff: third_party/WebKit/Source/modules/fetch/ReadableStreamDataConsumerHandleTest.cpp

Issue 1167343002: Add methods for creating V8 extras-based ReadableStreams from C++ (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Don't modify UnderlyingSource.h, oops Created 4 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
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 "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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698