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

Side by Side Diff: content/child/shared_memory_data_consumer_handle_unittest.cc

Issue 2172183003: Return unique_ptr<WebDataConsumerHandle::Reader> directly from obtainReader (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@gmock_cxx11
Patch Set: rebase Created 4 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
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 "content/child/shared_memory_data_consumer_handle.h" 5 #include "content/child/shared_memory_data_consumer_handle.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <string.h> 8 #include <string.h>
9 9
10 #include <string> 10 #include <string>
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 const base::Closure& on_done) 139 const base::Closure& on_done)
140 : handle_(std::move(handle)), 140 : handle_(std::move(handle)),
141 main_message_loop_(main_message_loop), 141 main_message_loop_(main_message_loop),
142 on_done_(on_done) {} 142 on_done_(on_done) {}
143 143
144 const std::string& result() const { return result_; } 144 const std::string& result() const { return result_; }
145 145
146 void ReadData() { 146 void ReadData() {
147 if (!client_) { 147 if (!client_) {
148 client_.reset(new ClientImpl(this)); 148 client_.reset(new ClientImpl(this));
149 reader_ = handle_->ObtainReader(client_.get()); 149 reader_ = handle_->obtainReader(client_.get());
150 } 150 }
151 151
152 Result rv = kOk; 152 Result rv = kOk;
153 size_t read_size = 0; 153 size_t read_size = 0;
154 154
155 while (true) { 155 while (true) {
156 char buffer[16]; 156 char buffer[16];
157 rv = reader_->read(&buffer, sizeof(buffer), kNone, &read_size); 157 rv = reader_->read(&buffer, sizeof(buffer), kNone, &read_size);
158 if (rv != kOk) 158 if (rv != kOk)
159 break; 159 break;
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 void RunPostedTasks() { 215 void RunPostedTasks() {
216 base::RunLoop run_loop; 216 base::RunLoop run_loop;
217 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, 217 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
218 run_loop.QuitClosure()); 218 run_loop.QuitClosure());
219 run_loop.Run(); 219 run_loop.Run();
220 } 220 }
221 221
222 TEST_P(SharedMemoryDataConsumerHandleTest, ReadFromEmpty) { 222 TEST_P(SharedMemoryDataConsumerHandleTest, ReadFromEmpty) {
223 char buffer[4]; 223 char buffer[4];
224 size_t read = 88; 224 size_t read = 88;
225 auto reader = handle_->ObtainReader(nullptr); 225 auto reader = handle_->obtainReader(nullptr);
226 Result result = reader->read(buffer, 4, kNone, &read); 226 Result result = reader->read(buffer, 4, kNone, &read);
227 227
228 EXPECT_EQ(kShouldWait, result); 228 EXPECT_EQ(kShouldWait, result);
229 EXPECT_EQ(0u, read); 229 EXPECT_EQ(0u, read);
230 } 230 }
231 231
232 TEST_P(SharedMemoryDataConsumerHandleTest, AutoClose) { 232 TEST_P(SharedMemoryDataConsumerHandleTest, AutoClose) {
233 char buffer[4]; 233 char buffer[4];
234 size_t read = 88; 234 size_t read = 88;
235 235
236 writer_.reset(); 236 writer_.reset();
237 auto reader = handle_->ObtainReader(nullptr); 237 auto reader = handle_->obtainReader(nullptr);
238 Result result = reader->read(buffer, 4, kNone, &read); 238 Result result = reader->read(buffer, 4, kNone, &read);
239 239
240 EXPECT_EQ(kDone, result); 240 EXPECT_EQ(kDone, result);
241 EXPECT_EQ(0u, read); 241 EXPECT_EQ(0u, read);
242 } 242 }
243 243
244 TEST_P(SharedMemoryDataConsumerHandleTest, ReadSimple) { 244 TEST_P(SharedMemoryDataConsumerHandleTest, ReadSimple) {
245 writer_->AddData(NewFixedData("hello")); 245 writer_->AddData(NewFixedData("hello"));
246 246
247 char buffer[4] = {}; 247 char buffer[4] = {};
248 size_t read = 88; 248 size_t read = 88;
249 auto reader = handle_->ObtainReader(nullptr); 249 auto reader = handle_->obtainReader(nullptr);
250 Result result = reader->read(buffer, 3, kNone, &read); 250 Result result = reader->read(buffer, 3, kNone, &read);
251 251
252 EXPECT_EQ(kOk, result); 252 EXPECT_EQ(kOk, result);
253 EXPECT_EQ(3u, read); 253 EXPECT_EQ(3u, read);
254 EXPECT_STREQ("hel", buffer); 254 EXPECT_STREQ("hel", buffer);
255 255
256 result = reader->read(buffer, 3, kNone, &read); 256 result = reader->read(buffer, 3, kNone, &read);
257 EXPECT_EQ(kOk, result); 257 EXPECT_EQ(kOk, result);
258 EXPECT_EQ(2u, read); 258 EXPECT_EQ(2u, read);
259 EXPECT_STREQ("lol", buffer); 259 EXPECT_STREQ("lol", buffer);
260 260
261 result = reader->read(buffer, 3, kNone, &read); 261 result = reader->read(buffer, 3, kNone, &read);
262 EXPECT_EQ(kShouldWait, result); 262 EXPECT_EQ(kShouldWait, result);
263 EXPECT_EQ(0u, read); 263 EXPECT_EQ(0u, read);
264 264
265 writer_->Close(); 265 writer_->Close();
266 266
267 result = reader->read(buffer, 3, kNone, &read); 267 result = reader->read(buffer, 3, kNone, &read);
268 EXPECT_EQ(kDone, result); 268 EXPECT_EQ(kDone, result);
269 EXPECT_EQ(0u, read); 269 EXPECT_EQ(0u, read);
270 } 270 }
271 271
272 TEST_P(SharedMemoryDataConsumerHandleTest, ReadAfterHandleIsGone) { 272 TEST_P(SharedMemoryDataConsumerHandleTest, ReadAfterHandleIsGone) {
273 writer_->AddData(NewFixedData("hello")); 273 writer_->AddData(NewFixedData("hello"));
274 274
275 char buffer[8] = {}; 275 char buffer[8] = {};
276 size_t read = 88; 276 size_t read = 88;
277 auto reader = handle_->ObtainReader(nullptr); 277 auto reader = handle_->obtainReader(nullptr);
278 278
279 handle_.reset(); 279 handle_.reset();
280 280
281 Result result = reader->read(buffer, sizeof(buffer), kNone, &read); 281 Result result = reader->read(buffer, sizeof(buffer), kNone, &read);
282 282
283 EXPECT_EQ(kOk, result); 283 EXPECT_EQ(kOk, result);
284 EXPECT_EQ(5u, read); 284 EXPECT_EQ(5u, read);
285 EXPECT_STREQ("hello", buffer); 285 EXPECT_STREQ("hello", buffer);
286 286
287 result = reader->read(buffer, 3, kNone, &read); 287 result = reader->read(buffer, 3, kNone, &read);
288 EXPECT_EQ(kShouldWait, result); 288 EXPECT_EQ(kShouldWait, result);
289 EXPECT_EQ(0u, read); 289 EXPECT_EQ(0u, read);
290 290
291 writer_->Close(); 291 writer_->Close();
292 292
293 result = reader->read(buffer, 3, kNone, &read); 293 result = reader->read(buffer, 3, kNone, &read);
294 EXPECT_EQ(kDone, result); 294 EXPECT_EQ(kDone, result);
295 EXPECT_EQ(0u, read); 295 EXPECT_EQ(0u, read);
296 } 296 }
297 297
298 TEST_P(SharedMemoryDataConsumerHandleTest, ReObtainReader) { 298 TEST_P(SharedMemoryDataConsumerHandleTest, ReObtainReader) {
299 writer_->AddData(NewFixedData("hello")); 299 writer_->AddData(NewFixedData("hello"));
300 300
301 char buffer[4] = {}; 301 char buffer[4] = {};
302 size_t read = 88; 302 size_t read = 88;
303 auto reader = handle_->ObtainReader(nullptr); 303 auto reader = handle_->obtainReader(nullptr);
304 Result result = reader->read(buffer, 3, kNone, &read); 304 Result result = reader->read(buffer, 3, kNone, &read);
305 305
306 EXPECT_EQ(kOk, result); 306 EXPECT_EQ(kOk, result);
307 EXPECT_EQ(3u, read); 307 EXPECT_EQ(3u, read);
308 EXPECT_STREQ("hel", buffer); 308 EXPECT_STREQ("hel", buffer);
309 309
310 reader.reset(); 310 reader.reset();
311 reader = handle_->ObtainReader(nullptr); 311 reader = handle_->obtainReader(nullptr);
312 312
313 result = reader->read(buffer, 3, kNone, &read); 313 result = reader->read(buffer, 3, kNone, &read);
314 EXPECT_EQ(kOk, result); 314 EXPECT_EQ(kOk, result);
315 EXPECT_EQ(2u, read); 315 EXPECT_EQ(2u, read);
316 EXPECT_STREQ("lol", buffer); 316 EXPECT_STREQ("lol", buffer);
317 317
318 result = reader->read(buffer, 3, kNone, &read); 318 result = reader->read(buffer, 3, kNone, &read);
319 EXPECT_EQ(kShouldWait, result); 319 EXPECT_EQ(kShouldWait, result);
320 EXPECT_EQ(0u, read); 320 EXPECT_EQ(0u, read);
321 321
322 writer_->Close(); 322 writer_->Close();
323 323
324 result = reader->read(buffer, 3, kNone, &read); 324 result = reader->read(buffer, 3, kNone, &read);
325 EXPECT_EQ(kDone, result); 325 EXPECT_EQ(kDone, result);
326 EXPECT_EQ(0u, read); 326 EXPECT_EQ(0u, read);
327 } 327 }
328 328
329 TEST_P(SharedMemoryDataConsumerHandleTest, CloseBeforeReading) { 329 TEST_P(SharedMemoryDataConsumerHandleTest, CloseBeforeReading) {
330 writer_->AddData(NewFixedData("hello")); 330 writer_->AddData(NewFixedData("hello"));
331 writer_->Close(); 331 writer_->Close();
332 332
333 char buffer[20] = {}; 333 char buffer[20] = {};
334 size_t read = 88; 334 size_t read = 88;
335 auto reader = handle_->ObtainReader(nullptr); 335 auto reader = handle_->obtainReader(nullptr);
336 Result result = reader->read(buffer, sizeof(buffer), kNone, &read); 336 Result result = reader->read(buffer, sizeof(buffer), kNone, &read);
337 337
338 EXPECT_EQ(kOk, result); 338 EXPECT_EQ(kOk, result);
339 EXPECT_EQ(5u, read); 339 EXPECT_EQ(5u, read);
340 EXPECT_STREQ("hello", buffer); 340 EXPECT_STREQ("hello", buffer);
341 341
342 result = reader->read(buffer, sizeof(buffer), kNone, &read); 342 result = reader->read(buffer, sizeof(buffer), kNone, &read);
343 EXPECT_EQ(kDone, result); 343 EXPECT_EQ(kDone, result);
344 EXPECT_EQ(0u, read); 344 EXPECT_EQ(0u, read);
345 } 345 }
346 346
347 TEST_P(SharedMemoryDataConsumerHandleTest, CloseWithDataBeforeZeroRead) { 347 TEST_P(SharedMemoryDataConsumerHandleTest, CloseWithDataBeforeZeroRead) {
348 writer_->AddData(NewFixedData("hello")); 348 writer_->AddData(NewFixedData("hello"));
349 writer_->Close(); 349 writer_->Close();
350 350
351 size_t read = 88; 351 size_t read = 88;
352 auto reader = handle_->ObtainReader(nullptr); 352 auto reader = handle_->obtainReader(nullptr);
353 Result result = reader->read(nullptr, 0, kNone, &read); 353 Result result = reader->read(nullptr, 0, kNone, &read);
354 354
355 EXPECT_EQ(kOk, result); 355 EXPECT_EQ(kOk, result);
356 EXPECT_EQ(0u, read); 356 EXPECT_EQ(0u, read);
357 } 357 }
358 358
359 TEST_P(SharedMemoryDataConsumerHandleTest, CloseWithoutDataBeforeZeroRead) { 359 TEST_P(SharedMemoryDataConsumerHandleTest, CloseWithoutDataBeforeZeroRead) {
360 writer_->Close(); 360 writer_->Close();
361 361
362 size_t read = 88; 362 size_t read = 88;
363 auto reader = handle_->ObtainReader(nullptr); 363 auto reader = handle_->obtainReader(nullptr);
364 Result result = reader->read(nullptr, 0, kNone, &read); 364 Result result = reader->read(nullptr, 0, kNone, &read);
365 365
366 EXPECT_EQ(kDone, result); 366 EXPECT_EQ(kDone, result);
367 } 367 }
368 368
369 TEST_P(SharedMemoryDataConsumerHandleTest, AddMultipleData) { 369 TEST_P(SharedMemoryDataConsumerHandleTest, AddMultipleData) {
370 writer_->AddData(NewFixedData("Once ")); 370 writer_->AddData(NewFixedData("Once "));
371 writer_->AddData(NewFixedData("upon ")); 371 writer_->AddData(NewFixedData("upon "));
372 writer_->AddData(NewFixedData("a ")); 372 writer_->AddData(NewFixedData("a "));
373 writer_->AddData(NewFixedData("time ")); 373 writer_->AddData(NewFixedData("time "));
374 writer_->AddData(NewFixedData("there ")); 374 writer_->AddData(NewFixedData("there "));
375 writer_->AddData(NewFixedData("was ")); 375 writer_->AddData(NewFixedData("was "));
376 writer_->AddData(NewFixedData("a ")); 376 writer_->AddData(NewFixedData("a "));
377 writer_->Close(); 377 writer_->Close();
378 378
379 char buffer[20]; 379 char buffer[20];
380 size_t read; 380 size_t read;
381 Result result; 381 Result result;
382 382
383 auto reader = handle_->ObtainReader(nullptr); 383 auto reader = handle_->obtainReader(nullptr);
384 std::fill(&buffer[0], &buffer[arraysize(buffer)], 0); 384 std::fill(&buffer[0], &buffer[arraysize(buffer)], 0);
385 result = reader->read(buffer, 6, kNone, &read); 385 result = reader->read(buffer, 6, kNone, &read);
386 EXPECT_EQ(kOk, result); 386 EXPECT_EQ(kOk, result);
387 EXPECT_EQ(6u, read); 387 EXPECT_EQ(6u, read);
388 EXPECT_STREQ("Once u", buffer); 388 EXPECT_STREQ("Once u", buffer);
389 389
390 std::fill(&buffer[0], &buffer[arraysize(buffer)], 0); 390 std::fill(&buffer[0], &buffer[arraysize(buffer)], 0);
391 result = reader->read(buffer, 2, kNone, &read); 391 result = reader->read(buffer, 2, kNone, &read);
392 EXPECT_EQ(kOk, result); 392 EXPECT_EQ(kOk, result);
393 EXPECT_EQ(2u, read); 393 EXPECT_EQ(2u, read);
(...skipping 23 matching lines...) Expand all
417 } 417 }
418 418
419 TEST_P(SharedMemoryDataConsumerHandleTest, AddMultipleDataInteractively) { 419 TEST_P(SharedMemoryDataConsumerHandleTest, AddMultipleDataInteractively) {
420 writer_->AddData(NewFixedData("Once ")); 420 writer_->AddData(NewFixedData("Once "));
421 writer_->AddData(NewFixedData("upon ")); 421 writer_->AddData(NewFixedData("upon "));
422 422
423 char buffer[20]; 423 char buffer[20];
424 size_t read; 424 size_t read;
425 Result result; 425 Result result;
426 426
427 auto reader = handle_->ObtainReader(nullptr); 427 auto reader = handle_->obtainReader(nullptr);
428 std::fill(&buffer[0], &buffer[arraysize(buffer)], 0); 428 std::fill(&buffer[0], &buffer[arraysize(buffer)], 0);
429 result = reader->read(buffer, 6, kNone, &read); 429 result = reader->read(buffer, 6, kNone, &read);
430 EXPECT_EQ(kOk, result); 430 EXPECT_EQ(kOk, result);
431 EXPECT_EQ(6u, read); 431 EXPECT_EQ(6u, read);
432 EXPECT_STREQ("Once u", buffer); 432 EXPECT_STREQ("Once u", buffer);
433 433
434 std::fill(&buffer[0], &buffer[arraysize(buffer)], 0); 434 std::fill(&buffer[0], &buffer[arraysize(buffer)], 0);
435 result = reader->read(buffer, 2, kNone, &read); 435 result = reader->read(buffer, 2, kNone, &read);
436 EXPECT_EQ(kOk, result); 436 EXPECT_EQ(kOk, result);
437 EXPECT_EQ(2u, read); 437 EXPECT_EQ(2u, read);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
479 479
480 InSequence s; 480 InSequence s;
481 EXPECT_CALL(checkpoint, Call(0)); 481 EXPECT_CALL(checkpoint, Call(0));
482 EXPECT_CALL(checkpoint, Call(1)); 482 EXPECT_CALL(checkpoint, Call(1));
483 EXPECT_CALL(checkpoint, Call(2)); 483 EXPECT_CALL(checkpoint, Call(2));
484 EXPECT_CALL(checkpoint, Call(3)); 484 EXPECT_CALL(checkpoint, Call(3));
485 EXPECT_CALL(client_, didGetReadable()); 485 EXPECT_CALL(client_, didGetReadable());
486 EXPECT_CALL(checkpoint, Call(4)); 486 EXPECT_CALL(checkpoint, Call(4));
487 487
488 checkpoint.Call(0); 488 checkpoint.Call(0);
489 auto reader = handle_->ObtainReader(&client_); 489 auto reader = handle_->obtainReader(&client_);
490 checkpoint.Call(1); 490 checkpoint.Call(1);
491 RunPostedTasks(); 491 RunPostedTasks();
492 checkpoint.Call(2); 492 checkpoint.Call(2);
493 writer_->Close(); 493 writer_->Close();
494 checkpoint.Call(3); 494 checkpoint.Call(3);
495 RunPostedTasks(); 495 RunPostedTasks();
496 checkpoint.Call(4); 496 checkpoint.Call(4);
497 } 497 }
498 498
499 TEST_P(SharedMemoryDataConsumerHandleTest, RegisterClientWhenDataExists) { 499 TEST_P(SharedMemoryDataConsumerHandleTest, RegisterClientWhenDataExists) {
500 Checkpoint checkpoint; 500 Checkpoint checkpoint;
501 501
502 InSequence s; 502 InSequence s;
503 EXPECT_CALL(checkpoint, Call(0)); 503 EXPECT_CALL(checkpoint, Call(0));
504 EXPECT_CALL(checkpoint, Call(1)); 504 EXPECT_CALL(checkpoint, Call(1));
505 EXPECT_CALL(checkpoint, Call(2)); 505 EXPECT_CALL(checkpoint, Call(2));
506 EXPECT_CALL(client_, didGetReadable()); 506 EXPECT_CALL(client_, didGetReadable());
507 EXPECT_CALL(checkpoint, Call(3)); 507 EXPECT_CALL(checkpoint, Call(3));
508 508
509 checkpoint.Call(0); 509 checkpoint.Call(0);
510 writer_->AddData(NewFixedData("Once ")); 510 writer_->AddData(NewFixedData("Once "));
511 checkpoint.Call(1); 511 checkpoint.Call(1);
512 auto reader = handle_->ObtainReader(&client_); 512 auto reader = handle_->obtainReader(&client_);
513 checkpoint.Call(2); 513 checkpoint.Call(2);
514 RunPostedTasks(); 514 RunPostedTasks();
515 checkpoint.Call(3); 515 checkpoint.Call(3);
516 } 516 }
517 517
518 TEST_P(SharedMemoryDataConsumerHandleTest, AddDataWhenClientIsRegistered) { 518 TEST_P(SharedMemoryDataConsumerHandleTest, AddDataWhenClientIsRegistered) {
519 Checkpoint checkpoint; 519 Checkpoint checkpoint;
520 char buffer[20]; 520 char buffer[20];
521 Result result; 521 Result result;
522 size_t size; 522 size_t size;
523 523
524 InSequence s; 524 InSequence s;
525 EXPECT_CALL(checkpoint, Call(0)); 525 EXPECT_CALL(checkpoint, Call(0));
526 EXPECT_CALL(checkpoint, Call(1)); 526 EXPECT_CALL(checkpoint, Call(1));
527 EXPECT_CALL(client_, didGetReadable()); 527 EXPECT_CALL(client_, didGetReadable());
528 EXPECT_CALL(checkpoint, Call(2)); 528 EXPECT_CALL(checkpoint, Call(2));
529 EXPECT_CALL(checkpoint, Call(3)); 529 EXPECT_CALL(checkpoint, Call(3));
530 EXPECT_CALL(checkpoint, Call(4)); 530 EXPECT_CALL(checkpoint, Call(4));
531 EXPECT_CALL(client_, didGetReadable()); 531 EXPECT_CALL(client_, didGetReadable());
532 EXPECT_CALL(checkpoint, Call(5)); 532 EXPECT_CALL(checkpoint, Call(5));
533 533
534 checkpoint.Call(0); 534 checkpoint.Call(0);
535 auto reader = handle_->ObtainReader(&client_); 535 auto reader = handle_->obtainReader(&client_);
536 checkpoint.Call(1); 536 checkpoint.Call(1);
537 writer_->AddData(NewFixedData("Once ")); 537 writer_->AddData(NewFixedData("Once "));
538 checkpoint.Call(2); 538 checkpoint.Call(2);
539 writer_->AddData(NewFixedData("upon ")); 539 writer_->AddData(NewFixedData("upon "));
540 checkpoint.Call(3); 540 checkpoint.Call(3);
541 result = reader->read(buffer, sizeof(buffer), kNone, &size); 541 result = reader->read(buffer, sizeof(buffer), kNone, &size);
542 EXPECT_EQ(kOk, result); 542 EXPECT_EQ(kOk, result);
543 EXPECT_EQ(10u, size); 543 EXPECT_EQ(10u, size);
544 checkpoint.Call(4); 544 checkpoint.Call(4);
545 writer_->AddData(NewFixedData("a ")); 545 writer_->AddData(NewFixedData("a "));
546 checkpoint.Call(5); 546 checkpoint.Call(5);
547 } 547 }
548 548
549 TEST_P(SharedMemoryDataConsumerHandleTest, CloseWithClientAndData) { 549 TEST_P(SharedMemoryDataConsumerHandleTest, CloseWithClientAndData) {
550 Checkpoint checkpoint; 550 Checkpoint checkpoint;
551 551
552 InSequence s; 552 InSequence s;
553 EXPECT_CALL(checkpoint, Call(0)); 553 EXPECT_CALL(checkpoint, Call(0));
554 EXPECT_CALL(checkpoint, Call(1)); 554 EXPECT_CALL(checkpoint, Call(1));
555 EXPECT_CALL(client_, didGetReadable()); 555 EXPECT_CALL(client_, didGetReadable());
556 EXPECT_CALL(checkpoint, Call(2)); 556 EXPECT_CALL(checkpoint, Call(2));
557 EXPECT_CALL(checkpoint, Call(3)); 557 EXPECT_CALL(checkpoint, Call(3));
558 558
559 checkpoint.Call(0); 559 checkpoint.Call(0);
560 auto reader = handle_->ObtainReader(&client_); 560 auto reader = handle_->obtainReader(&client_);
561 checkpoint.Call(1); 561 checkpoint.Call(1);
562 writer_->AddData(NewFixedData("Once ")); 562 writer_->AddData(NewFixedData("Once "));
563 checkpoint.Call(2); 563 checkpoint.Call(2);
564 writer_->Close(); 564 writer_->Close();
565 checkpoint.Call(3); 565 checkpoint.Call(3);
566 } 566 }
567 567
568 TEST_P(SharedMemoryDataConsumerHandleTest, ReleaseReader) { 568 TEST_P(SharedMemoryDataConsumerHandleTest, ReleaseReader) {
569 Checkpoint checkpoint; 569 Checkpoint checkpoint;
570 570
571 InSequence s; 571 InSequence s;
572 EXPECT_CALL(checkpoint, Call(0)); 572 EXPECT_CALL(checkpoint, Call(0));
573 EXPECT_CALL(checkpoint, Call(1)); 573 EXPECT_CALL(checkpoint, Call(1));
574 EXPECT_CALL(checkpoint, Call(2)); 574 EXPECT_CALL(checkpoint, Call(2));
575 575
576 checkpoint.Call(0); 576 checkpoint.Call(0);
577 auto reader = handle_->ObtainReader(&client_); 577 auto reader = handle_->obtainReader(&client_);
578 checkpoint.Call(1); 578 checkpoint.Call(1);
579 reader.reset(); 579 reader.reset();
580 writer_->AddData(NewFixedData("Once ")); 580 writer_->AddData(NewFixedData("Once "));
581 checkpoint.Call(2); 581 checkpoint.Call(2);
582 } 582 }
583 583
584 TEST_P(SharedMemoryDataConsumerHandleTest, TwoPhaseReadShouldWait) { 584 TEST_P(SharedMemoryDataConsumerHandleTest, TwoPhaseReadShouldWait) {
585 Result result; 585 Result result;
586 const void* buffer = &result; 586 const void* buffer = &result;
587 size_t size = 99; 587 size_t size = 99;
588 588
589 auto reader = handle_->ObtainReader(nullptr); 589 auto reader = handle_->obtainReader(nullptr);
590 result = reader->beginRead(&buffer, kNone, &size); 590 result = reader->beginRead(&buffer, kNone, &size);
591 EXPECT_EQ(kShouldWait, result); 591 EXPECT_EQ(kShouldWait, result);
592 EXPECT_EQ(nullptr, buffer); 592 EXPECT_EQ(nullptr, buffer);
593 EXPECT_EQ(0u, size); 593 EXPECT_EQ(0u, size);
594 } 594 }
595 595
596 TEST_P(SharedMemoryDataConsumerHandleTest, TwoPhaseReadSimple) { 596 TEST_P(SharedMemoryDataConsumerHandleTest, TwoPhaseReadSimple) {
597 writer_->AddData(NewFixedData("Once ")); 597 writer_->AddData(NewFixedData("Once "));
598 598
599 Result result; 599 Result result;
600 const void* buffer = &result; 600 const void* buffer = &result;
601 size_t size = 99; 601 size_t size = 99;
602 602
603 auto reader = handle_->ObtainReader(nullptr); 603 auto reader = handle_->obtainReader(nullptr);
604 result = reader->beginRead(&buffer, kNone, &size); 604 result = reader->beginRead(&buffer, kNone, &size);
605 EXPECT_EQ(kOk, result); 605 EXPECT_EQ(kOk, result);
606 EXPECT_EQ(5u, size); 606 EXPECT_EQ(5u, size);
607 EXPECT_EQ("Once ", ToString(buffer, 5)); 607 EXPECT_EQ("Once ", ToString(buffer, 5));
608 608
609 reader->endRead(1); 609 reader->endRead(1);
610 610
611 result = reader->beginRead(&buffer, kNone, &size); 611 result = reader->beginRead(&buffer, kNone, &size);
612 EXPECT_EQ(kOk, result); 612 EXPECT_EQ(kOk, result);
613 EXPECT_EQ(4u, size); 613 EXPECT_EQ(4u, size);
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
664 EXPECT_CALL(checkpoint, Call(2)); 664 EXPECT_CALL(checkpoint, Call(2));
665 EXPECT_CALL(checkpoint, Call(3)); 665 EXPECT_CALL(checkpoint, Call(3));
666 EXPECT_CALL(*on_clear, Call()); 666 EXPECT_CALL(*on_clear, Call());
667 EXPECT_CALL(*on_clear, Destruct()); 667 EXPECT_CALL(*on_clear, Destruct());
668 EXPECT_CALL(checkpoint, Call(4)); 668 EXPECT_CALL(checkpoint, Call(4));
669 669
670 checkpoint.Call(0); 670 checkpoint.Call(0);
671 handle_.reset(new SharedMemoryDataConsumerHandle( 671 handle_.reset(new SharedMemoryDataConsumerHandle(
672 kApplyBackpressure, 672 kApplyBackpressure,
673 base::Bind(&DestructionTrackingFunction::Call, on_clear), &writer_)); 673 base::Bind(&DestructionTrackingFunction::Call, on_clear), &writer_));
674 auto reader = handle_->ObtainReader(nullptr); 674 auto reader = handle_->obtainReader(nullptr);
675 handle_.reset(); 675 handle_.reset();
676 on_clear = nullptr; 676 on_clear = nullptr;
677 checkpoint.Call(1); 677 checkpoint.Call(1);
678 RunPostedTasks(); 678 RunPostedTasks();
679 checkpoint.Call(2); 679 checkpoint.Call(2);
680 reader.reset(); 680 reader.reset();
681 checkpoint.Call(3); 681 checkpoint.Call(3);
682 RunPostedTasks(); 682 RunPostedTasks();
683 checkpoint.Call(4); 683 checkpoint.Call(4);
684 } 684 }
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
738 } 738 }
739 739
740 TEST_P(SharedMemoryDataConsumerHandleTest, TwoPhaseReadWithMultipleData) { 740 TEST_P(SharedMemoryDataConsumerHandleTest, TwoPhaseReadWithMultipleData) {
741 writer_->AddData(NewFixedData("Once ")); 741 writer_->AddData(NewFixedData("Once "));
742 writer_->AddData(NewFixedData("upon ")); 742 writer_->AddData(NewFixedData("upon "));
743 743
744 Result result; 744 Result result;
745 const void* buffer = &result; 745 const void* buffer = &result;
746 size_t size = 99; 746 size_t size = 99;
747 747
748 auto reader = handle_->ObtainReader(nullptr); 748 auto reader = handle_->obtainReader(nullptr);
749 result = reader->beginRead(&buffer, kNone, &size); 749 result = reader->beginRead(&buffer, kNone, &size);
750 EXPECT_EQ(kOk, result); 750 EXPECT_EQ(kOk, result);
751 EXPECT_EQ(5u, size); 751 EXPECT_EQ(5u, size);
752 EXPECT_EQ("Once ", ToString(buffer, 5)); 752 EXPECT_EQ("Once ", ToString(buffer, 5));
753 753
754 reader->endRead(1); 754 reader->endRead(1);
755 755
756 result = reader->beginRead(&buffer, kNone, &size); 756 result = reader->beginRead(&buffer, kNone, &size);
757 EXPECT_EQ(kOk, result); 757 EXPECT_EQ(kOk, result);
758 EXPECT_EQ(4u, size); 758 EXPECT_EQ(4u, size);
(...skipping 19 matching lines...) Expand all
778 EXPECT_EQ(kDone, result); 778 EXPECT_EQ(kDone, result);
779 EXPECT_EQ(0u, size); 779 EXPECT_EQ(0u, size);
780 EXPECT_EQ(nullptr, buffer); 780 EXPECT_EQ(nullptr, buffer);
781 } 781 }
782 782
783 TEST_P(SharedMemoryDataConsumerHandleTest, ErrorRead) { 783 TEST_P(SharedMemoryDataConsumerHandleTest, ErrorRead) {
784 Checkpoint checkpoint; 784 Checkpoint checkpoint;
785 Result result; 785 Result result;
786 char buffer[20] = {}; 786 char buffer[20] = {};
787 size_t read = 99; 787 size_t read = 99;
788 auto reader = handle_->ObtainReader(nullptr); 788 auto reader = handle_->obtainReader(nullptr);
789 789
790 writer_->Fail(); 790 writer_->Fail();
791 result = reader->read(buffer, sizeof(buffer), kNone, &read); 791 result = reader->read(buffer, sizeof(buffer), kNone, &read);
792 792
793 EXPECT_EQ(kUnexpectedError, result); 793 EXPECT_EQ(kUnexpectedError, result);
794 EXPECT_EQ(0u, read); 794 EXPECT_EQ(0u, read);
795 } 795 }
796 796
797 TEST_P(SharedMemoryDataConsumerHandleTest, ErrorTwoPhaseRead) { 797 TEST_P(SharedMemoryDataConsumerHandleTest, ErrorTwoPhaseRead) {
798 Result result; 798 Result result;
799 const void* pointer = &result; 799 const void* pointer = &result;
800 size_t size = 99; 800 size_t size = 99;
801 auto reader = handle_->ObtainReader(nullptr); 801 auto reader = handle_->obtainReader(nullptr);
802 802
803 writer_->Fail(); 803 writer_->Fail();
804 result = reader->beginRead(&pointer, kNone, &size); 804 result = reader->beginRead(&pointer, kNone, &size);
805 805
806 EXPECT_EQ(kUnexpectedError, result); 806 EXPECT_EQ(kUnexpectedError, result);
807 EXPECT_EQ(nullptr, pointer); 807 EXPECT_EQ(nullptr, pointer);
808 EXPECT_EQ(0u, size); 808 EXPECT_EQ(0u, size);
809 } 809 }
810 810
811 TEST_P(SharedMemoryDataConsumerHandleTest, FailWhileTwoPhaseReadIsInProgress) { 811 TEST_P(SharedMemoryDataConsumerHandleTest, FailWhileTwoPhaseReadIsInProgress) {
812 Result result; 812 Result result;
813 const void* pointer = nullptr; 813 const void* pointer = nullptr;
814 size_t size = 0; 814 size_t size = 0;
815 auto reader = handle_->ObtainReader(nullptr); 815 auto reader = handle_->obtainReader(nullptr);
816 816
817 writer_->AddData(NewFixedData("Once ")); 817 writer_->AddData(NewFixedData("Once "));
818 result = reader->beginRead(&pointer, kNone, &size); 818 result = reader->beginRead(&pointer, kNone, &size);
819 auto* buffer = static_cast<const char*>(pointer); 819 auto* buffer = static_cast<const char*>(pointer);
820 820
821 ASSERT_EQ(kOk, result); 821 ASSERT_EQ(kOk, result);
822 ASSERT_NE(nullptr, pointer); 822 ASSERT_NE(nullptr, pointer);
823 ASSERT_EQ(size, 5u); 823 ASSERT_EQ(size, 5u);
824 824
825 writer_->Fail(); 825 writer_->Fail();
(...skipping 15 matching lines...) Expand all
841 Checkpoint checkpoint; 841 Checkpoint checkpoint;
842 842
843 InSequence s; 843 InSequence s;
844 EXPECT_CALL(checkpoint, Call(0)); 844 EXPECT_CALL(checkpoint, Call(0));
845 EXPECT_CALL(checkpoint, Call(1)); 845 EXPECT_CALL(checkpoint, Call(1));
846 EXPECT_CALL(checkpoint, Call(2)); 846 EXPECT_CALL(checkpoint, Call(2));
847 EXPECT_CALL(client_, didGetReadable()); 847 EXPECT_CALL(client_, didGetReadable());
848 EXPECT_CALL(checkpoint, Call(3)); 848 EXPECT_CALL(checkpoint, Call(3));
849 849
850 checkpoint.Call(0); 850 checkpoint.Call(0);
851 auto reader = handle_->ObtainReader(&client_); 851 auto reader = handle_->obtainReader(&client_);
852 checkpoint.Call(1); 852 checkpoint.Call(1);
853 writer_->Fail(); 853 writer_->Fail();
854 checkpoint.Call(2); 854 checkpoint.Call(2);
855 RunPostedTasks(); 855 RunPostedTasks();
856 checkpoint.Call(3); 856 checkpoint.Call(3);
857 } 857 }
858 858
859 TEST_P(SharedMemoryDataConsumerHandleTest, FailWithClientAndData) { 859 TEST_P(SharedMemoryDataConsumerHandleTest, FailWithClientAndData) {
860 Checkpoint checkpoint; 860 Checkpoint checkpoint;
861 861
862 InSequence s; 862 InSequence s;
863 EXPECT_CALL(checkpoint, Call(0)); 863 EXPECT_CALL(checkpoint, Call(0));
864 EXPECT_CALL(checkpoint, Call(1)); 864 EXPECT_CALL(checkpoint, Call(1));
865 EXPECT_CALL(client_, didGetReadable()); 865 EXPECT_CALL(client_, didGetReadable());
866 EXPECT_CALL(checkpoint, Call(2)); 866 EXPECT_CALL(checkpoint, Call(2));
867 EXPECT_CALL(checkpoint, Call(3)); 867 EXPECT_CALL(checkpoint, Call(3));
868 EXPECT_CALL(client_, didGetReadable()); 868 EXPECT_CALL(client_, didGetReadable());
869 EXPECT_CALL(checkpoint, Call(4)); 869 EXPECT_CALL(checkpoint, Call(4));
870 870
871 checkpoint.Call(0); 871 checkpoint.Call(0);
872 auto reader = handle_->ObtainReader(&client_); 872 auto reader = handle_->obtainReader(&client_);
873 checkpoint.Call(1); 873 checkpoint.Call(1);
874 writer_->AddData(NewFixedData("Once ")); 874 writer_->AddData(NewFixedData("Once "));
875 checkpoint.Call(2); 875 checkpoint.Call(2);
876 writer_->Fail(); 876 writer_->Fail();
877 checkpoint.Call(3); 877 checkpoint.Call(3);
878 RunPostedTasks(); 878 RunPostedTasks();
879 checkpoint.Call(4); 879 checkpoint.Call(4);
880 } 880 }
881 881
882 TEST_P(SharedMemoryDataConsumerHandleTest, RecursiveErrorNotification) { 882 TEST_P(SharedMemoryDataConsumerHandleTest, RecursiveErrorNotification) {
883 Checkpoint checkpoint; 883 Checkpoint checkpoint;
884 884
885 InSequence s; 885 InSequence s;
886 EXPECT_CALL(checkpoint, Call(0)); 886 EXPECT_CALL(checkpoint, Call(0));
887 EXPECT_CALL(checkpoint, Call(1)); 887 EXPECT_CALL(checkpoint, Call(1));
888 EXPECT_CALL(client_, didGetReadable()) 888 EXPECT_CALL(client_, didGetReadable())
889 .WillOnce(Invoke(writer_.get(), &Writer::Fail)); 889 .WillOnce(Invoke(writer_.get(), &Writer::Fail));
890 EXPECT_CALL(checkpoint, Call(2)); 890 EXPECT_CALL(checkpoint, Call(2));
891 EXPECT_CALL(client_, didGetReadable()); 891 EXPECT_CALL(client_, didGetReadable());
892 EXPECT_CALL(checkpoint, Call(3)); 892 EXPECT_CALL(checkpoint, Call(3));
893 893
894 checkpoint.Call(0); 894 checkpoint.Call(0);
895 auto reader = handle_->ObtainReader(&client_); 895 auto reader = handle_->obtainReader(&client_);
896 checkpoint.Call(1); 896 checkpoint.Call(1);
897 writer_->AddData(NewFixedData("Once ")); 897 writer_->AddData(NewFixedData("Once "));
898 checkpoint.Call(2); 898 checkpoint.Call(2);
899 RunPostedTasks(); 899 RunPostedTasks();
900 checkpoint.Call(3); 900 checkpoint.Call(3);
901 } 901 }
902 902
903 TEST(SharedMemoryDataConsumerHandleBackpressureTest, Read) { 903 TEST(SharedMemoryDataConsumerHandleBackpressureTest, Read) {
904 base::MessageLoop loop; 904 base::MessageLoop loop;
905 char buffer[20]; 905 char buffer[20];
906 Result result; 906 Result result;
907 size_t size; 907 size_t size;
908 908
909 std::unique_ptr<Writer> writer; 909 std::unique_ptr<Writer> writer;
910 auto handle = base::WrapUnique( 910 auto handle = base::WrapUnique(
911 new SharedMemoryDataConsumerHandle(kApplyBackpressure, &writer)); 911 new SharedMemoryDataConsumerHandle(kApplyBackpressure, &writer));
912 scoped_refptr<Logger> logger(new Logger); 912 scoped_refptr<Logger> logger(new Logger);
913 writer->AddData( 913 writer->AddData(
914 base::WrapUnique(new LoggingFixedReceivedData("data1", "Once ", logger))); 914 base::WrapUnique(new LoggingFixedReceivedData("data1", "Once ", logger)));
915 writer->AddData( 915 writer->AddData(
916 base::WrapUnique(new LoggingFixedReceivedData("data2", "upon ", logger))); 916 base::WrapUnique(new LoggingFixedReceivedData("data2", "upon ", logger)));
917 writer->AddData( 917 writer->AddData(
918 base::WrapUnique(new LoggingFixedReceivedData("data3", "a ", logger))); 918 base::WrapUnique(new LoggingFixedReceivedData("data3", "a ", logger)));
919 writer->AddData( 919 writer->AddData(
920 base::WrapUnique(new LoggingFixedReceivedData("data4", "time ", logger))); 920 base::WrapUnique(new LoggingFixedReceivedData("data4", "time ", logger)));
921 921
922 auto reader = handle->ObtainReader(nullptr); 922 auto reader = handle->obtainReader(nullptr);
923 logger->Add("1"); 923 logger->Add("1");
924 result = reader->read(buffer, 2, kNone, &size); 924 result = reader->read(buffer, 2, kNone, &size);
925 EXPECT_EQ(kOk, result); 925 EXPECT_EQ(kOk, result);
926 EXPECT_EQ(2u, size); 926 EXPECT_EQ(2u, size);
927 logger->Add("2"); 927 logger->Add("2");
928 result = reader->read(buffer, 5, kNone, &size); 928 result = reader->read(buffer, 5, kNone, &size);
929 EXPECT_EQ(kOk, result); 929 EXPECT_EQ(kOk, result);
930 EXPECT_EQ(5u, size); 930 EXPECT_EQ(5u, size);
931 logger->Add("3"); 931 logger->Add("3");
932 result = reader->read(buffer, 6, kNone, &size); 932 result = reader->read(buffer, 6, kNone, &size);
(...skipping 22 matching lines...) Expand all
955 auto handle = base::WrapUnique( 955 auto handle = base::WrapUnique(
956 new SharedMemoryDataConsumerHandle(kApplyBackpressure, &writer)); 956 new SharedMemoryDataConsumerHandle(kApplyBackpressure, &writer));
957 scoped_refptr<Logger> logger(new Logger); 957 scoped_refptr<Logger> logger(new Logger);
958 writer->AddData( 958 writer->AddData(
959 base::WrapUnique(new LoggingFixedReceivedData("data1", "Once ", logger))); 959 base::WrapUnique(new LoggingFixedReceivedData("data1", "Once ", logger)));
960 writer->AddData( 960 writer->AddData(
961 base::WrapUnique(new LoggingFixedReceivedData("data2", "upon ", logger))); 961 base::WrapUnique(new LoggingFixedReceivedData("data2", "upon ", logger)));
962 writer->AddData( 962 writer->AddData(
963 base::WrapUnique(new LoggingFixedReceivedData("data3", "a ", logger))); 963 base::WrapUnique(new LoggingFixedReceivedData("data3", "a ", logger)));
964 964
965 auto reader = handle->ObtainReader(nullptr); 965 auto reader = handle->obtainReader(nullptr);
966 logger->Add("1"); 966 logger->Add("1");
967 result = reader->read(buffer, 2, kNone, &size); 967 result = reader->read(buffer, 2, kNone, &size);
968 EXPECT_EQ(kOk, result); 968 EXPECT_EQ(kOk, result);
969 EXPECT_EQ(2u, size); 969 EXPECT_EQ(2u, size);
970 logger->Add("2"); 970 logger->Add("2");
971 writer->Close(); 971 writer->Close();
972 logger->Add("3"); 972 logger->Add("3");
973 handle.reset(); 973 handle.reset();
974 reader.reset(); 974 reader.reset();
975 logger->Add("4"); 975 logger->Add("4");
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
1051 logger->log()); 1051 logger->log());
1052 } 1052 }
1053 1053
1054 INSTANTIATE_TEST_CASE_P(SharedMemoryDataConsumerHandleTest, 1054 INSTANTIATE_TEST_CASE_P(SharedMemoryDataConsumerHandleTest,
1055 SharedMemoryDataConsumerHandleTest, 1055 SharedMemoryDataConsumerHandleTest,
1056 ::testing::Values(kApplyBackpressure, 1056 ::testing::Values(kApplyBackpressure,
1057 kDoNotApplyBackpressure)); 1057 kDoNotApplyBackpressure));
1058 } // namespace 1058 } // namespace
1059 1059
1060 } // namespace content 1060 } // namespace content
OLDNEW
« no previous file with comments | « content/child/shared_memory_data_consumer_handle.cc ('k') | content/child/web_data_consumer_handle_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698