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

Side by Side Diff: chrome/browser/android/offline_pages/offline_page_request_job_unittest.cc

Issue 2362033002: Showing previews UI for Offline Previews (Closed)
Patch Set: typo Created 4 years, 2 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 "chrome/browser/android/offline_pages/offline_page_request_job.h" 5 #include "chrome/browser/android/offline_pages/offline_page_request_job.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/feature_list.h" 8 #include "base/feature_list.h"
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 232
233 void SimulateHasNetworkConnectivity(bool has_connectivity); 233 void SimulateHasNetworkConnectivity(bool has_connectivity);
234 void RunUntilIdle(); 234 void RunUntilIdle();
235 235
236 void InterceptRequest(const GURL& url, 236 void InterceptRequest(const GURL& url,
237 const std::string& method, 237 const std::string& method,
238 const std::string& extra_header_name, 238 const std::string& extra_header_name,
239 const std::string& extra_header_value, 239 const std::string& extra_header_value,
240 content::ResourceType resource_type); 240 content::ResourceType resource_type);
241 241
242 void VerifyInfo(bool should_use_offline, int64_t offline_id);
243
242 void ExpectAggregatedRequestResultHistogram( 244 void ExpectAggregatedRequestResultHistogram(
243 OfflinePageRequestJob::AggregatedRequestResult result); 245 OfflinePageRequestJob::AggregatedRequestResult result);
244 246
245 net::TestURLRequestContext* url_request_context() { 247 net::TestURLRequestContext* url_request_context() {
246 return test_url_request_context_.get(); 248 return test_url_request_context_.get();
247 } 249 }
248 Profile* profile() { return profile_; } 250 Profile* profile() { return profile_; }
249 OfflinePageTabHelper* offline_page_tab_helper() const { 251 OfflinePageTabHelper* offline_page_tab_helper() const {
250 return offline_page_tab_helper_; 252 return offline_page_tab_helper_;
251 } 253 }
(...skipping 13 matching lines...) Expand all
265 content::ResourceType resource_type); 267 content::ResourceType resource_type);
266 void ReadCompleted(int bytes_read); 268 void ReadCompleted(int bytes_read);
267 269
268 // Runs on IO thread. 270 // Runs on IO thread.
269 void InterceptRequestOnIO(const GURL& url, 271 void InterceptRequestOnIO(const GURL& url,
270 const std::string& method, 272 const std::string& method,
271 const std::string& extra_header_name, 273 const std::string& extra_header_name,
272 const std::string& extra_header_value, 274 const std::string& extra_header_value,
273 content::ResourceType resource_type); 275 content::ResourceType resource_type);
274 void ReadCompletedOnIO(int bytes_read); 276 void ReadCompletedOnIO(int bytes_read);
277 void VerifyInfoOnIO(bool should_use_offline, int64_t offline_id);
275 278
276 content::TestBrowserThreadBundle thread_bundle_; 279 content::TestBrowserThreadBundle thread_bundle_;
277 base::SimpleTestClock clock_; 280 base::SimpleTestClock clock_;
278 std::unique_ptr<TestNetworkChangeNotifier> network_change_notifier_; 281 std::unique_ptr<TestNetworkChangeNotifier> network_change_notifier_;
279 std::unique_ptr<net::TestURLRequestContext> test_url_request_context_; 282 std::unique_ptr<net::TestURLRequestContext> test_url_request_context_;
280 net::URLRequestJobFactoryImpl url_request_job_factory_; 283 net::URLRequestJobFactoryImpl url_request_job_factory_;
281 std::unique_ptr<net::URLRequestInterceptingJobFactory> 284 std::unique_ptr<net::URLRequestInterceptingJobFactory>
282 intercepting_job_factory_; 285 intercepting_job_factory_;
283 std::unique_ptr<TestURLRequestDelegate> url_request_delegate_; 286 std::unique_ptr<TestURLRequestDelegate> url_request_delegate_;
284 std::unique_ptr<TestPreviewsDecider> test_previews_decider_; 287 std::unique_ptr<TestPreviewsDecider> test_previews_decider_;
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
467 content::ResourceType resource_type) { 470 content::ResourceType resource_type) {
468 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 471 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
469 472
470 content::BrowserThread::PostTask( 473 content::BrowserThread::PostTask(
471 content::BrowserThread::IO, FROM_HERE, 474 content::BrowserThread::IO, FROM_HERE,
472 base::Bind(&OfflinePageRequestJobTest::InterceptRequestOnIO, 475 base::Bind(&OfflinePageRequestJobTest::InterceptRequestOnIO,
473 base::Unretained(this), url, method, extra_header_name, 476 base::Unretained(this), url, method, extra_header_name,
474 extra_header_value, resource_type)); 477 extra_header_value, resource_type));
475 } 478 }
476 479
480 void OfflinePageRequestJobTest::VerifyInfoOnIO(bool should_use_offline,
481 int64_t offline_id) {
482 DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
483 EXPECT_EQ(should_use_offline, !!LoadedOfflinePageInfo::GetInfo(*request_));
484 if (should_use_offline) {
485 EXPECT_EQ(
486 offline_id,
487 LoadedOfflinePageInfo::GetInfo(*request_)->offline_page()->offline_id);
488 }
489 }
490
491 void OfflinePageRequestJobTest::VerifyInfo(bool should_use_offline,
492 int64_t offline_id) {
493 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
494
495 content::BrowserThread::PostTask(
496 content::BrowserThread::IO, FROM_HERE,
497 base::Bind(&OfflinePageRequestJobTest::VerifyInfoOnIO,
498 base::Unretained(this), should_use_offline, offline_id));
499 }
500
477 void OfflinePageRequestJobTest::ReadCompletedOnIO(int bytes_read) { 501 void OfflinePageRequestJobTest::ReadCompletedOnIO(int bytes_read) {
478 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); 502 DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
479 503
480 content::BrowserThread::PostTask( 504 content::BrowserThread::PostTask(
481 content::BrowserThread::UI, FROM_HERE, 505 content::BrowserThread::UI, FROM_HERE,
482 base::Bind(&OfflinePageRequestJobTest::ReadCompleted, 506 base::Bind(&OfflinePageRequestJobTest::ReadCompleted,
483 base::Unretained(this), bytes_read)); 507 base::Unretained(this), bytes_read));
484 } 508 }
485 509
486 void OfflinePageRequestJobTest::ReadCompleted(int bytes_read) { 510 void OfflinePageRequestJobTest::ReadCompleted(int bytes_read) {
487 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 511 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
488 512
489 bytes_read_ = bytes_read; 513 bytes_read_ = bytes_read;
490 base::ThreadTaskRunnerHandle::Get()->PostTask( 514 base::ThreadTaskRunnerHandle::Get()->PostTask(
491 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure()); 515 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure());
492 } 516 }
493 517
494 TEST_F(OfflinePageRequestJobTest, FailedToCreateRequestJob) { 518 TEST_F(OfflinePageRequestJobTest, FailedToCreateRequestJob) {
495 SimulateHasNetworkConnectivity(false); 519 SimulateHasNetworkConnectivity(false);
496 520
497 // Must be http/https URL. 521 // Must be http/https URL.
498 InterceptRequest(GURL("ftp://host/doc"), "GET", "", "", 522 InterceptRequest(GURL("ftp://host/doc"), "GET", "", "",
499 content::RESOURCE_TYPE_MAIN_FRAME); 523 content::RESOURCE_TYPE_MAIN_FRAME);
500 base::RunLoop().Run(); 524 base::RunLoop().Run();
501 EXPECT_EQ(0, bytes_read()); 525 EXPECT_EQ(0, bytes_read());
502 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 526 VerifyInfo(false, 0);
527 base::RunLoop().RunUntilIdle();
503 528
504 InterceptRequest(GURL("file:///path/doc"), "GET", "", "", 529 InterceptRequest(GURL("file:///path/doc"), "GET", "", "",
505 content::RESOURCE_TYPE_MAIN_FRAME); 530 content::RESOURCE_TYPE_MAIN_FRAME);
506 base::RunLoop().Run(); 531 base::RunLoop().Run();
507 EXPECT_EQ(0, bytes_read()); 532 EXPECT_EQ(0, bytes_read());
508 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 533 VerifyInfo(false, 0);
534 base::RunLoop().RunUntilIdle();
509 535
510 // Must be GET method. 536 // Must be GET method.
511 InterceptRequest( 537 InterceptRequest(
512 kTestUrl, "POST", "", "", content::RESOURCE_TYPE_MAIN_FRAME); 538 kTestUrl, "POST", "", "", content::RESOURCE_TYPE_MAIN_FRAME);
513 base::RunLoop().Run(); 539 base::RunLoop().Run();
514 EXPECT_EQ(0, bytes_read()); 540 EXPECT_EQ(0, bytes_read());
515 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 541 VerifyInfo(false, 0);
542 base::RunLoop().RunUntilIdle();
516 543
517 InterceptRequest( 544 InterceptRequest(
518 kTestUrl, "HEAD", "", "", content::RESOURCE_TYPE_MAIN_FRAME); 545 kTestUrl, "HEAD", "", "", content::RESOURCE_TYPE_MAIN_FRAME);
519 base::RunLoop().Run(); 546 base::RunLoop().Run();
520 EXPECT_EQ(0, bytes_read()); 547 EXPECT_EQ(0, bytes_read());
521 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 548 VerifyInfo(false, 0);
549 base::RunLoop().RunUntilIdle();
522 550
523 // Must be main resource. 551 // Must be main resource.
524 InterceptRequest( 552 InterceptRequest(
525 kTestUrl, "POST", "", "", content::RESOURCE_TYPE_SUB_FRAME); 553 kTestUrl, "POST", "", "", content::RESOURCE_TYPE_SUB_FRAME);
526 base::RunLoop().Run(); 554 base::RunLoop().Run();
527 EXPECT_EQ(0, bytes_read()); 555 EXPECT_EQ(0, bytes_read());
528 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 556 VerifyInfo(false, 0);
557 base::RunLoop().RunUntilIdle();
529 558
530 InterceptRequest( 559 InterceptRequest(
531 kTestUrl, "POST", "", "", content::RESOURCE_TYPE_IMAGE); 560 kTestUrl, "POST", "", "", content::RESOURCE_TYPE_IMAGE);
532 base::RunLoop().Run(); 561 base::RunLoop().Run();
533 EXPECT_EQ(0, bytes_read()); 562 EXPECT_EQ(0, bytes_read());
534 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 563 VerifyInfo(false, 0);
564 base::RunLoop().RunUntilIdle();
535 } 565 }
536 566
537 TEST_F(OfflinePageRequestJobTest, LoadOfflinePageOnDisconnectedNetwork) { 567 TEST_F(OfflinePageRequestJobTest, LoadOfflinePageOnDisconnectedNetwork) {
538 SimulateHasNetworkConnectivity(false); 568 SimulateHasNetworkConnectivity(false);
539 569
540 InterceptRequest(kTestUrl, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME); 570 InterceptRequest(kTestUrl, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME);
541 base::RunLoop().Run(); 571 base::RunLoop().Run();
542 572
543 EXPECT_EQ(kTestFileSize2, bytes_read()); 573 EXPECT_EQ(kTestFileSize2, bytes_read());
544 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest()); 574 VerifyInfo(true, offline_id2());
545 EXPECT_EQ(offline_id2(), 575 base::RunLoop().RunUntilIdle();
546 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id); 576
547 ExpectAggregatedRequestResultHistogram( 577 ExpectAggregatedRequestResultHistogram(
548 OfflinePageRequestJob::AggregatedRequestResult:: 578 OfflinePageRequestJob::AggregatedRequestResult::
549 SHOW_OFFLINE_ON_DISCONNECTED_NETWORK); 579 SHOW_OFFLINE_ON_DISCONNECTED_NETWORK);
550 } 580 }
551 581
552 TEST_F(OfflinePageRequestJobTest, PageNotFoundOnDisconnectedNetwork) { 582 TEST_F(OfflinePageRequestJobTest, PageNotFoundOnDisconnectedNetwork) {
553 SimulateHasNetworkConnectivity(false); 583 SimulateHasNetworkConnectivity(false);
554 584
555 InterceptRequest(kTestUrl2, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME); 585 InterceptRequest(kTestUrl2, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME);
556 base::RunLoop().Run(); 586 base::RunLoop().Run();
557 587
558 EXPECT_EQ(0, bytes_read()); 588 EXPECT_EQ(0, bytes_read());
559 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 589 VerifyInfo(false, 0);
590 base::RunLoop().RunUntilIdle();
591
560 ExpectAggregatedRequestResultHistogram( 592 ExpectAggregatedRequestResultHistogram(
561 OfflinePageRequestJob::AggregatedRequestResult:: 593 OfflinePageRequestJob::AggregatedRequestResult::
562 PAGE_NOT_FOUND_ON_DISCONNECTED_NETWORK); 594 PAGE_NOT_FOUND_ON_DISCONNECTED_NETWORK);
563 } 595 }
564 596
565 TEST_F(OfflinePageRequestJobTest, LoadOfflinePageOnProhibitivelySlowNetwork) { 597 TEST_F(OfflinePageRequestJobTest, LoadOfflinePageOnProhibitivelySlowNetwork) {
566 SimulateHasNetworkConnectivity(true); 598 SimulateHasNetworkConnectivity(true);
567 599
568 test_previews_decider()->set_should_allow_preview(true); 600 test_previews_decider()->set_should_allow_preview(true);
569 601
570 InterceptRequest(kTestUrl, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME); 602 InterceptRequest(kTestUrl, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME);
571 base::RunLoop().Run(); 603 base::RunLoop().Run();
572 604
573 EXPECT_EQ(kTestFileSize2, bytes_read()); 605 EXPECT_EQ(kTestFileSize2, bytes_read());
574 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest()); 606 VerifyInfo(true, offline_id2());
575 EXPECT_EQ(offline_id2(), 607 base::RunLoop().RunUntilIdle();
576 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id); 608
577 ExpectAggregatedRequestResultHistogram( 609 ExpectAggregatedRequestResultHistogram(
578 OfflinePageRequestJob::AggregatedRequestResult:: 610 OfflinePageRequestJob::AggregatedRequestResult::
579 SHOW_OFFLINE_ON_PROHIBITIVELY_SLOW_NETWORK); 611 SHOW_OFFLINE_ON_PROHIBITIVELY_SLOW_NETWORK);
580 test_previews_decider()->set_should_allow_preview(false); 612 test_previews_decider()->set_should_allow_preview(false);
581 } 613 }
582 614
583 TEST_F(OfflinePageRequestJobTest, PageNotFoundOnProhibitivelySlowNetwork) { 615 TEST_F(OfflinePageRequestJobTest, PageNotFoundOnProhibitivelySlowNetwork) {
584 SimulateHasNetworkConnectivity(true); 616 SimulateHasNetworkConnectivity(true);
585 617
586 test_previews_decider()->set_should_allow_preview(true); 618 test_previews_decider()->set_should_allow_preview(true);
587 619
588 InterceptRequest(kTestUrl2, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME); 620 InterceptRequest(kTestUrl2, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME);
589 base::RunLoop().Run(); 621 base::RunLoop().Run();
590 622
591 EXPECT_EQ(0, bytes_read()); 623 EXPECT_EQ(0, bytes_read());
592 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 624 VerifyInfo(false, 0);
625 base::RunLoop().RunUntilIdle();
626
593 ExpectAggregatedRequestResultHistogram( 627 ExpectAggregatedRequestResultHistogram(
594 OfflinePageRequestJob::AggregatedRequestResult:: 628 OfflinePageRequestJob::AggregatedRequestResult::
595 PAGE_NOT_FOUND_ON_PROHIBITIVELY_SLOW_NETWORK); 629 PAGE_NOT_FOUND_ON_PROHIBITIVELY_SLOW_NETWORK);
596 test_previews_decider()->set_should_allow_preview(false); 630 test_previews_decider()->set_should_allow_preview(false);
597 } 631 }
598 632
599 TEST_F(OfflinePageRequestJobTest, LoadOfflinePageOnFlakyNetwork) { 633 TEST_F(OfflinePageRequestJobTest, LoadOfflinePageOnFlakyNetwork) {
600 SimulateHasNetworkConnectivity(true); 634 SimulateHasNetworkConnectivity(true);
601 635
602 // When custom offline header exists and contains "reason=error", it means 636 // When custom offline header exists and contains "reason=error", it means
603 // that net error is hit in last request due to flaky network. 637 // that net error is hit in last request due to flaky network.
604 InterceptRequest( 638 InterceptRequest(
605 kTestUrl, 639 kTestUrl,
606 "GET", 640 "GET",
607 kOfflinePageHeader, 641 kOfflinePageHeader,
608 std::string(kOfflinePageHeaderReasonKey) + "=" + 642 std::string(kOfflinePageHeaderReasonKey) + "=" +
609 kOfflinePageHeaderReasonValueDueToNetError, 643 kOfflinePageHeaderReasonValueDueToNetError,
610 content::RESOURCE_TYPE_MAIN_FRAME); 644 content::RESOURCE_TYPE_MAIN_FRAME);
611 base::RunLoop().Run(); 645 base::RunLoop().Run();
612 646
613 EXPECT_EQ(kTestFileSize2, bytes_read()); 647 EXPECT_EQ(kTestFileSize2, bytes_read());
614 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest()); 648 VerifyInfo(true, offline_id2());
615 EXPECT_EQ(offline_id2(), 649 base::RunLoop().RunUntilIdle();
616 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id); 650
617 ExpectAggregatedRequestResultHistogram( 651 ExpectAggregatedRequestResultHistogram(
618 OfflinePageRequestJob::AggregatedRequestResult:: 652 OfflinePageRequestJob::AggregatedRequestResult::
619 SHOW_OFFLINE_ON_FLAKY_NETWORK); 653 SHOW_OFFLINE_ON_FLAKY_NETWORK);
620 } 654 }
621 655
622 TEST_F(OfflinePageRequestJobTest, PageNotFoundOnFlakyNetwork) { 656 TEST_F(OfflinePageRequestJobTest, PageNotFoundOnFlakyNetwork) {
623 SimulateHasNetworkConnectivity(true); 657 SimulateHasNetworkConnectivity(true);
624 658
625 // When custom offline header exists and contains "reason=error", it means 659 // When custom offline header exists and contains "reason=error", it means
626 // that net error is hit in last request due to flaky network. 660 // that net error is hit in last request due to flaky network.
627 InterceptRequest( 661 InterceptRequest(
628 kTestUrl2, 662 kTestUrl2,
629 "GET", 663 "GET",
630 kOfflinePageHeader, 664 kOfflinePageHeader,
631 std::string(kOfflinePageHeaderReasonKey) + "=" + 665 std::string(kOfflinePageHeaderReasonKey) + "=" +
632 kOfflinePageHeaderReasonValueDueToNetError, 666 kOfflinePageHeaderReasonValueDueToNetError,
633 content::RESOURCE_TYPE_MAIN_FRAME); 667 content::RESOURCE_TYPE_MAIN_FRAME);
634 base::RunLoop().Run(); 668 base::RunLoop().Run();
635 669
636 EXPECT_EQ(0, bytes_read()); 670 EXPECT_EQ(0, bytes_read());
637 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 671 VerifyInfo(false, 0);
672 base::RunLoop().RunUntilIdle();
673
638 ExpectAggregatedRequestResultHistogram( 674 ExpectAggregatedRequestResultHistogram(
639 OfflinePageRequestJob::AggregatedRequestResult:: 675 OfflinePageRequestJob::AggregatedRequestResult::
640 PAGE_NOT_FOUND_ON_FLAKY_NETWORK); 676 PAGE_NOT_FOUND_ON_FLAKY_NETWORK);
641 } 677 }
642 678
643 TEST_F(OfflinePageRequestJobTest, ForceLoadOfflinePageOnConnectedNetwork) { 679 TEST_F(OfflinePageRequestJobTest, ForceLoadOfflinePageOnConnectedNetwork) {
644 SimulateHasNetworkConnectivity(true); 680 SimulateHasNetworkConnectivity(true);
645 681
646 // When custom offline header exists and contains value other than 682 // When custom offline header exists and contains value other than
647 // "reason=error", it means that offline page is forced to load. 683 // "reason=error", it means that offline page is forced to load.
648 InterceptRequest( 684 InterceptRequest(
649 kTestUrl, 685 kTestUrl,
650 "GET", 686 "GET",
651 kOfflinePageHeader, 687 kOfflinePageHeader,
652 std::string(kOfflinePageHeaderReasonKey) + "=download", 688 std::string(kOfflinePageHeaderReasonKey) + "=download",
653 content::RESOURCE_TYPE_MAIN_FRAME); 689 content::RESOURCE_TYPE_MAIN_FRAME);
654 base::RunLoop().Run(); 690 base::RunLoop().Run();
655 691
656 EXPECT_EQ(kTestFileSize2, bytes_read()); 692 EXPECT_EQ(kTestFileSize2, bytes_read());
657 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest()); 693 VerifyInfo(true, offline_id2());
658 EXPECT_EQ(offline_id2(), 694 base::RunLoop().RunUntilIdle();
659 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id); 695
660 ExpectAggregatedRequestResultHistogram( 696 ExpectAggregatedRequestResultHistogram(
661 OfflinePageRequestJob::AggregatedRequestResult:: 697 OfflinePageRequestJob::AggregatedRequestResult::
662 SHOW_OFFLINE_ON_CONNECTED_NETWORK); 698 SHOW_OFFLINE_ON_CONNECTED_NETWORK);
663 } 699 }
664 700
665 TEST_F(OfflinePageRequestJobTest, PageNotFoundOnConnectedNetwork) { 701 TEST_F(OfflinePageRequestJobTest, PageNotFoundOnConnectedNetwork) {
666 SimulateHasNetworkConnectivity(true); 702 SimulateHasNetworkConnectivity(true);
667 703
668 // When custom offline header exists and contains value other than 704 // When custom offline header exists and contains value other than
669 // "reason=error", it means that offline page is forced to load. 705 // "reason=error", it means that offline page is forced to load.
670 InterceptRequest( 706 InterceptRequest(
671 kTestUrl2, 707 kTestUrl2,
672 "GET", 708 "GET",
673 kOfflinePageHeader, 709 kOfflinePageHeader,
674 std::string(kOfflinePageHeaderReasonKey) + "=download", 710 std::string(kOfflinePageHeaderReasonKey) + "=download",
675 content::RESOURCE_TYPE_MAIN_FRAME); 711 content::RESOURCE_TYPE_MAIN_FRAME);
676 base::RunLoop().Run(); 712 base::RunLoop().Run();
677 713
678 EXPECT_EQ(0, bytes_read()); 714 EXPECT_EQ(0, bytes_read());
679 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 715 VerifyInfo(false, 0);
716 base::RunLoop().RunUntilIdle();
717
680 ExpectAggregatedRequestResultHistogram( 718 ExpectAggregatedRequestResultHistogram(
681 OfflinePageRequestJob::AggregatedRequestResult:: 719 OfflinePageRequestJob::AggregatedRequestResult::
682 PAGE_NOT_FOUND_ON_CONNECTED_NETWORK); 720 PAGE_NOT_FOUND_ON_CONNECTED_NETWORK);
683 } 721 }
684 722
685 TEST_F(OfflinePageRequestJobTest, DoNotLoadOfflinePageOnConnectedNetwork) { 723 TEST_F(OfflinePageRequestJobTest, DoNotLoadOfflinePageOnConnectedNetwork) {
686 SimulateHasNetworkConnectivity(true); 724 SimulateHasNetworkConnectivity(true);
687 725
688 InterceptRequest(kTestUrl, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME); 726 InterceptRequest(kTestUrl, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME);
689 base::RunLoop().Run(); 727 base::RunLoop().Run();
690 728
691 EXPECT_EQ(0, bytes_read()); 729 EXPECT_EQ(0, bytes_read());
692 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 730 VerifyInfo(false, 0);
731 base::RunLoop().RunUntilIdle();
693 } 732 }
694 733
695 TEST_F(OfflinePageRequestJobTest, LoadOfflinePageByOfflineID) { 734 TEST_F(OfflinePageRequestJobTest, LoadOfflinePageByOfflineID) {
696 SimulateHasNetworkConnectivity(true); 735 SimulateHasNetworkConnectivity(true);
697 736
698 InterceptRequest( 737 InterceptRequest(
699 kTestUrl, 738 kTestUrl,
700 "GET", 739 "GET",
701 kOfflinePageHeader, 740 kOfflinePageHeader,
702 std::string(kOfflinePageHeaderReasonKey) + "=download " + 741 std::string(kOfflinePageHeaderReasonKey) + "=download " +
703 kOfflinePageHeaderIDKey + "=" + base::Int64ToString(offline_id()), 742 kOfflinePageHeaderIDKey + "=" + base::Int64ToString(offline_id()),
704 content::RESOURCE_TYPE_MAIN_FRAME); 743 content::RESOURCE_TYPE_MAIN_FRAME);
705 base::RunLoop().Run(); 744 base::RunLoop().Run();
706 745
707 EXPECT_EQ(kTestFileSize, bytes_read()); 746 EXPECT_EQ(kTestFileSize, bytes_read());
708 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest()); 747 VerifyInfo(true, offline_id());
709 EXPECT_EQ(offline_id(), 748 base::RunLoop().RunUntilIdle();
710 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id); 749
711 ExpectAggregatedRequestResultHistogram( 750 ExpectAggregatedRequestResultHistogram(
712 OfflinePageRequestJob::AggregatedRequestResult:: 751 OfflinePageRequestJob::AggregatedRequestResult::
713 SHOW_OFFLINE_ON_CONNECTED_NETWORK); 752 SHOW_OFFLINE_ON_CONNECTED_NETWORK);
714 } 753 }
715 754
716 TEST_F(OfflinePageRequestJobTest, 755 TEST_F(OfflinePageRequestJobTest,
717 LoadOfflinePageByOfflineIDAndFallbackToOnlineURL) { 756 LoadOfflinePageByOfflineIDAndFallbackToOnlineURL) {
718 SimulateHasNetworkConnectivity(true); 757 SimulateHasNetworkConnectivity(true);
719 758
720 // The offline page found with specific offline ID does not match the passed 759 // The offline page found with specific offline ID does not match the passed
721 // online URL. Should fall back to find the offline page based on the online 760 // online URL. Should fall back to find the offline page based on the online
722 // URL. 761 // URL.
723 InterceptRequest( 762 InterceptRequest(
724 kTestUrl2, 763 kTestUrl2,
725 "GET", 764 "GET",
726 kOfflinePageHeader, 765 kOfflinePageHeader,
727 std::string(kOfflinePageHeaderReasonKey) + "=download " + 766 std::string(kOfflinePageHeaderReasonKey) + "=download " +
728 kOfflinePageHeaderIDKey + "=" + base::Int64ToString(offline_id()), 767 kOfflinePageHeaderIDKey + "=" + base::Int64ToString(offline_id()),
729 content::RESOURCE_TYPE_MAIN_FRAME); 768 content::RESOURCE_TYPE_MAIN_FRAME);
730 base::RunLoop().Run(); 769 base::RunLoop().Run();
731 770
732 EXPECT_EQ(0, bytes_read()); 771 EXPECT_EQ(0, bytes_read());
733 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 772 VerifyInfo(false, 0);
773 base::RunLoop().RunUntilIdle();
774
734 ExpectAggregatedRequestResultHistogram( 775 ExpectAggregatedRequestResultHistogram(
735 OfflinePageRequestJob::AggregatedRequestResult:: 776 OfflinePageRequestJob::AggregatedRequestResult::
736 PAGE_NOT_FOUND_ON_CONNECTED_NETWORK); 777 PAGE_NOT_FOUND_ON_CONNECTED_NETWORK);
737 } 778 }
738 779
739 } // namespace offline_pages 780 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698