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

Side by Side Diff: third_party/WebKit/Source/core/loader/ThreadableLoaderTest.cpp

Issue 2146403004: ThreadableLoader::cancel should be called before loader destruction (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@onheap-threadable-loader-client-wrapper
Patch Set: fix Created 4 years, 5 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "core/loader/ThreadableLoader.h" 5 #include "core/loader/ThreadableLoader.h"
6 6
7 #include "core/dom/CrossThreadTask.h" 7 #include "core/dom/CrossThreadTask.h"
8 #include "core/fetch/MemoryCache.h" 8 #include "core/fetch/MemoryCache.h"
9 #include "core/fetch/ResourceLoaderOptions.h" 9 #include "core/fetch/ResourceLoaderOptions.h"
10 #include "core/loader/DocumentThreadableLoader.h" 10 #include "core/loader/DocumentThreadableLoader.h"
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 void onSetUp() override 133 void onSetUp() override
134 { 134 {
135 } 135 }
136 136
137 void onServeRequests() override 137 void onServeRequests() override
138 { 138 {
139 } 139 }
140 140
141 void onTearDown() override 141 void onTearDown() override
142 { 142 {
143 m_loader.reset(); 143 if (m_loader) {
144 m_loader->cancel();
145 m_loader.reset();
146 }
144 } 147 }
145 148
146 private: 149 private:
147 Document& document() { return m_dummyPageHolder->document(); } 150 Document& document() { return m_dummyPageHolder->document(); }
148 151
149 std::unique_ptr<DummyPageHolder> m_dummyPageHolder; 152 std::unique_ptr<DummyPageHolder> m_dummyPageHolder;
150 Checkpoint m_checkpoint; 153 Checkpoint m_checkpoint;
151 std::unique_ptr<DocumentThreadableLoader> m_loader; 154 std::unique_ptr<DocumentThreadableLoader> m_loader;
152 }; 155 };
153 156
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 EXPECT_CALL(checkpoint(), Call(2)).WillOnce(InvokeWithoutArgs(this, &Threada bleLoaderTest::cancelLoader)); 451 EXPECT_CALL(checkpoint(), Call(2)).WillOnce(InvokeWithoutArgs(this, &Threada bleLoaderTest::cancelLoader));
449 EXPECT_CALL(*client(), didFail(Truly(isCancellation))); 452 EXPECT_CALL(*client(), didFail(Truly(isCancellation)));
450 EXPECT_CALL(checkpoint(), Call(3)); 453 EXPECT_CALL(checkpoint(), Call(3));
451 454
452 startLoader(successURL()); 455 startLoader(successURL());
453 callCheckpoint(2); 456 callCheckpoint(2);
454 callCheckpoint(3); 457 callCheckpoint(3);
455 serveRequests(); 458 serveRequests();
456 } 459 }
457 460
458 TEST_P(ThreadableLoaderTest, ClearAfterStart)
hiroshige 2016/07/19 06:56:14 How about keeping these Clear.* tests by adding ca
yhirano 2016/07/19 08:05:04 Done.
459 {
460 InSequence s;
461 EXPECT_CALL(checkpoint(), Call(1));
462 createLoader();
463 callCheckpoint(1);
464
465 EXPECT_CALL(checkpoint(), Call(2)).WillOnce(InvokeWithoutArgs(this, &Threada bleLoaderTest::clearLoader));
466 EXPECT_CALL(checkpoint(), Call(3));
467
468 startLoader(successURL());
469 callCheckpoint(2);
470 callCheckpoint(3);
471 serveRequests();
472 }
473
474 TEST_P(ThreadableLoaderTest, CancelInDidReceiveResponse) 461 TEST_P(ThreadableLoaderTest, CancelInDidReceiveResponse)
475 { 462 {
476 InSequence s; 463 InSequence s;
477 EXPECT_CALL(checkpoint(), Call(1)); 464 EXPECT_CALL(checkpoint(), Call(1));
478 createLoader(); 465 createLoader();
479 callCheckpoint(1); 466 callCheckpoint(1);
480 467
481 EXPECT_CALL(checkpoint(), Call(2)); 468 EXPECT_CALL(checkpoint(), Call(2));
482 EXPECT_CALL(*client(), didReceiveResponseMock(_, _, _)).WillOnce(InvokeWitho utArgs(this, &ThreadableLoaderTest::cancelLoader)); 469 EXPECT_CALL(*client(), didReceiveResponseMock(_, _, _)).WillOnce(InvokeWitho utArgs(this, &ThreadableLoaderTest::cancelLoader));
483 EXPECT_CALL(*client(), didFail(Truly(isCancellation))); 470 EXPECT_CALL(*client(), didFail(Truly(isCancellation)));
484 471
485 startLoader(successURL()); 472 startLoader(successURL());
486 callCheckpoint(2); 473 callCheckpoint(2);
487 serveRequests(); 474 serveRequests();
488 } 475 }
489 476
490 TEST_P(ThreadableLoaderTest, ClearInDidReceiveResponse)
491 {
492 InSequence s;
493 EXPECT_CALL(checkpoint(), Call(1));
494 createLoader();
495 callCheckpoint(1);
496
497 EXPECT_CALL(checkpoint(), Call(2));
498 EXPECT_CALL(*client(), didReceiveResponseMock(_, _, _)).WillOnce(InvokeWitho utArgs(this, &ThreadableLoaderTest::clearLoader));
499
500 startLoader(successURL());
501 callCheckpoint(2);
502 serveRequests();
503 }
504
505 TEST_P(ThreadableLoaderTest, CancelInDidReceiveData) 477 TEST_P(ThreadableLoaderTest, CancelInDidReceiveData)
506 { 478 {
507 InSequence s; 479 InSequence s;
508 EXPECT_CALL(checkpoint(), Call(1)); 480 EXPECT_CALL(checkpoint(), Call(1));
509 createLoader(); 481 createLoader();
510 callCheckpoint(1); 482 callCheckpoint(1);
511 483
512 EXPECT_CALL(checkpoint(), Call(2)); 484 EXPECT_CALL(checkpoint(), Call(2));
513 EXPECT_CALL(*client(), didReceiveResponseMock(_, _, _)); 485 EXPECT_CALL(*client(), didReceiveResponseMock(_, _, _));
514 EXPECT_CALL(*client(), didReceiveData(_, _)).WillOnce(InvokeWithoutArgs(this , &ThreadableLoaderTest::cancelLoader)); 486 EXPECT_CALL(*client(), didReceiveData(_, _)).WillOnce(InvokeWithoutArgs(this , &ThreadableLoaderTest::cancelLoader));
515 EXPECT_CALL(*client(), didFail(Truly(isCancellation))); 487 EXPECT_CALL(*client(), didFail(Truly(isCancellation)));
516 488
517 startLoader(successURL()); 489 startLoader(successURL());
518 callCheckpoint(2); 490 callCheckpoint(2);
519 serveRequests(); 491 serveRequests();
520 } 492 }
521 493
522 TEST_P(ThreadableLoaderTest, ClearInDidReceiveData)
523 {
524 InSequence s;
525 EXPECT_CALL(checkpoint(), Call(1));
526 createLoader();
527 callCheckpoint(1);
528
529 EXPECT_CALL(checkpoint(), Call(2));
530 EXPECT_CALL(*client(), didReceiveResponseMock(_, _, _));
531 EXPECT_CALL(*client(), didReceiveData(_, _)).WillOnce(InvokeWithoutArgs(this , &ThreadableLoaderTest::clearLoader));
532
533 startLoader(successURL());
534 callCheckpoint(2);
535 serveRequests();
536 }
537
538 TEST_P(ThreadableLoaderTest, DidFinishLoading) 494 TEST_P(ThreadableLoaderTest, DidFinishLoading)
539 { 495 {
540 InSequence s; 496 InSequence s;
541 EXPECT_CALL(checkpoint(), Call(1)); 497 EXPECT_CALL(checkpoint(), Call(1));
542 createLoader(); 498 createLoader();
543 callCheckpoint(1); 499 callCheckpoint(1);
544 500
545 EXPECT_CALL(checkpoint(), Call(2)); 501 EXPECT_CALL(checkpoint(), Call(2));
546 EXPECT_CALL(*client(), didReceiveResponseMock(_, _, _)); 502 EXPECT_CALL(*client(), didReceiveResponseMock(_, _, _));
547 EXPECT_CALL(*client(), didReceiveData(StrEq("fox"), 4)); 503 EXPECT_CALL(*client(), didReceiveData(StrEq("fox"), 4));
(...skipping 16 matching lines...) Expand all
564 EXPECT_CALL(*client(), didReceiveResponseMock(_, _, _)); 520 EXPECT_CALL(*client(), didReceiveResponseMock(_, _, _));
565 EXPECT_CALL(*client(), didReceiveData(_, _)); 521 EXPECT_CALL(*client(), didReceiveData(_, _));
566 EXPECT_CALL(*client(), didReceiveResourceTiming(_)); 522 EXPECT_CALL(*client(), didReceiveResourceTiming(_));
567 EXPECT_CALL(*client(), didFinishLoading(_, _)).WillOnce(InvokeWithoutArgs(th is, &ThreadableLoaderTest::cancelLoader)); 523 EXPECT_CALL(*client(), didFinishLoading(_, _)).WillOnce(InvokeWithoutArgs(th is, &ThreadableLoaderTest::cancelLoader));
568 524
569 startLoader(successURL()); 525 startLoader(successURL());
570 callCheckpoint(2); 526 callCheckpoint(2);
571 serveRequests(); 527 serveRequests();
572 } 528 }
573 529
574 TEST_P(ThreadableLoaderTest, ClearInDidFinishLoading)
575 {
576 InSequence s;
577 EXPECT_CALL(checkpoint(), Call(1));
578 createLoader();
579 callCheckpoint(1);
580
581 EXPECT_CALL(checkpoint(), Call(2));
582 EXPECT_CALL(*client(), didReceiveResponseMock(_, _, _));
583 EXPECT_CALL(*client(), didReceiveData(_, _));
584 EXPECT_CALL(*client(), didReceiveResourceTiming(_));
585 EXPECT_CALL(*client(), didFinishLoading(_, _)).WillOnce(InvokeWithoutArgs(th is, &ThreadableLoaderTest::clearLoader));
586
587 startLoader(successURL());
588 callCheckpoint(2);
589 serveRequests();
590 }
591
592 TEST_P(ThreadableLoaderTest, DidFail) 530 TEST_P(ThreadableLoaderTest, DidFail)
593 { 531 {
594 InSequence s; 532 InSequence s;
595 EXPECT_CALL(checkpoint(), Call(1)); 533 EXPECT_CALL(checkpoint(), Call(1));
596 createLoader(); 534 createLoader();
597 callCheckpoint(1); 535 callCheckpoint(1);
598 536
599 EXPECT_CALL(checkpoint(), Call(2)); 537 EXPECT_CALL(checkpoint(), Call(2));
600 EXPECT_CALL(*client(), didReceiveResponseMock(_, _, _)); 538 EXPECT_CALL(*client(), didReceiveResponseMock(_, _, _));
601 EXPECT_CALL(*client(), didFail(Truly(isNotCancellation))); 539 EXPECT_CALL(*client(), didFail(Truly(isNotCancellation)));
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
822 EXPECT_CALL(*client(), didFailRedirectCheck()).WillOnce(InvokeWithoutArgs(th is, &ThreadableLoaderTest::clearLoader)); 760 EXPECT_CALL(*client(), didFailRedirectCheck()).WillOnce(InvokeWithoutArgs(th is, &ThreadableLoaderTest::clearLoader));
823 761
824 startLoader(redirectLoopURL()); 762 startLoader(redirectLoopURL());
825 callCheckpoint(2); 763 callCheckpoint(2);
826 serveRequests(); 764 serveRequests();
827 } 765 }
828 766
829 } // namespace 767 } // namespace
830 768
831 } // namespace blink 769 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698