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

Side by Side Diff: chrome/browser/net/sdch_browsertest.cc

Issue 2785493003: Disable SDCH by Default (Closed)
Patch Set: Clean up IOS compilation errors and remove from IOS OTR profile. Created 3 years, 8 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
« no previous file with comments | « no previous file | chrome/browser/profiles/off_the_record_profile_io_data.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 // End-to-end SDCH tests. Uses the embedded test server to return SDCH 5 // End-to-end SDCH tests. Uses the embedded test server to return SDCH
6 // results 6 // results
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 #include <utility> 10 #include <utility>
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 private: 299 private:
300 net::SdchManager* manager_; 300 net::SdchManager* manager_;
301 int fetch_count_; 301 int fetch_count_;
302 }; 302 };
303 303
304 class SdchBrowserTest : public InProcessBrowserTest, 304 class SdchBrowserTest : public InProcessBrowserTest,
305 public net::URLFetcherDelegate { 305 public net::URLFetcherDelegate {
306 public: 306 public:
307 static const char kTestHost[]; 307 static const char kTestHost[];
308 308
309 SdchBrowserTest() 309 SdchBrowserTest() : response_handler_(kTestHost) {}
310 : response_handler_(kTestHost),
311 url_request_context_getter_(NULL),
312 url_fetch_complete_(false),
313 waiting_(false) {}
314 310
315 // Helper functions for fetching data. 311 // Helper functions for fetching data.
316 312
317 void FetchUrlDetailed(GURL url, net::URLRequestContextGetter* getter) { 313 void FetchUrlDetailed(GURL url, net::URLRequestContextGetter* getter) {
318 url_fetch_complete_ = false; 314 url_fetch_complete_ = false;
319 fetcher_ = net::URLFetcher::Create(url, net::URLFetcher::GET, this); 315 fetcher_ = net::URLFetcher::Create(url, net::URLFetcher::GET, this);
320 fetcher_->SetRequestContext(getter); 316 fetcher_->SetRequestContext(getter);
321 fetcher_->Start(); 317 fetcher_->Start();
322 if (!url_fetch_complete_) { 318 if (!url_fetch_complete_) {
323 waiting_ = true; 319 waiting_ = true;
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 second_browser_ = new Browser(Browser::CreateParams(second_profile_, true)); 444 second_browser_ = new Browser(Browser::CreateParams(second_profile_, true));
449 if (!second_browser_) return false; 445 if (!second_browser_) return false;
450 446
451 chrome::AddSelectedTabWithURL(second_browser_, 447 chrome::AddSelectedTabWithURL(second_browser_,
452 GURL(url::kAboutBlankURL), 448 GURL(url::kAboutBlankURL),
453 ui::PAGE_TRANSITION_AUTO_TOPLEVEL); 449 ui::PAGE_TRANSITION_AUTO_TOPLEVEL);
454 content::WaitForLoadStop( 450 content::WaitForLoadStop(
455 second_browser_->tab_strip_model()->GetActiveWebContents()); 451 second_browser_->tab_strip_model()->GetActiveWebContents());
456 second_browser_->window()->Show(); 452 second_browser_->window()->Show();
457 453
458 content::BrowserThread::PostTask( 454 bool sdch_enabled = false;
455 base::RunLoop run_loop;
456 content::BrowserThread::PostTaskAndReply(
459 content::BrowserThread::IO, FROM_HERE, 457 content::BrowserThread::IO, FROM_HERE,
460 base::Bind(&SdchBrowserTest::SubscribeToSdchNotifications, 458 base::Bind(
461 base::Unretained(this), 459 &SdchBrowserTest::SubscribeToSdchNotifications,
462 base::RetainedRef( 460 base::Unretained(this),
463 second_browser_->profile()->GetRequestContext()))); 461 base::RetainedRef(second_browser_->profile()->GetRequestContext()),
462 &sdch_enabled_),
463 run_loop.QuitClosure());
464 run_loop.Run();
465 DCHECK(sdch_enabled);
464 466
465 return true; 467 return true;
466 } 468 }
467 469
468 bool SetupIncognitoBrowser() { 470 bool SetupIncognitoBrowser() {
469 incognito_browser_ = CreateIncognitoBrowser(); 471 incognito_browser_ = CreateIncognitoBrowser();
470 472
471 if (!incognito_browser_) 473 if (!incognito_browser_)
472 return false; 474 return false;
473 475
474 content::BrowserThread::PostTask( 476 bool sdch_enabled = false;
477 base::RunLoop run_loop;
478 content::BrowserThread::PostTaskAndReply(
475 content::BrowserThread::IO, FROM_HERE, 479 content::BrowserThread::IO, FROM_HERE,
476 base::Bind(&SdchBrowserTest::SubscribeToSdchNotifications, 480 base::Bind(&SdchBrowserTest::SubscribeToSdchNotifications,
477 base::Unretained(this), 481 base::Unretained(this),
478 base::RetainedRef( 482 base::RetainedRef(
479 incognito_browser_->profile()->GetRequestContext()))); 483 incognito_browser_->profile()->GetRequestContext()),
484 &sdch_enabled),
485 run_loop.QuitClosure());
486 run_loop.Run();
487 DCHECK(sdch_enabled);
480 488
481 return true; 489 return true;
482 } 490 }
483 491
484 Browser* second_browser() { return second_browser_; } 492 Browser* second_browser() { return second_browser_; }
485 Browser* incognito_browser() { return incognito_browser_; } 493 Browser* incognito_browser() { return incognito_browser_; }
486 494
487 // Server information and control. 495 // Server information and control.
488 496
489 void WaitAndGetTestVector(int num_requests, RequestVector* result) { 497 void WaitAndGetTestVector(int num_requests, RequestVector* result) {
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
566 // Confirm the request vector looks at this point as expected. 574 // Confirm the request vector looks at this point as expected.
567 WaitAndGetTestVector(4, &request_vector); 575 WaitAndGetTestVector(4, &request_vector);
568 EXPECT_EQ(4u, request_vector.size()); 576 EXPECT_EQ(4u, request_vector.size());
569 EXPECT_EQ(request_vector[2].relative_url, kDataURLPath); 577 EXPECT_EQ(request_vector[2].relative_url, kDataURLPath);
570 EXPECT_EQ(request_vector[3].relative_url, kDataURLPath); 578 EXPECT_EQ(request_vector[3].relative_url, kDataURLPath);
571 return (4u == request_vector.size() && 579 return (4u == request_vector.size() &&
572 request_vector[2].relative_url == kDataURLPath && 580 request_vector[2].relative_url == kDataURLPath &&
573 request_vector[3].relative_url == kDataURLPath); 581 request_vector[3].relative_url == kDataURLPath);
574 } 582 }
575 583
584 bool sdch_enabled() const { return sdch_enabled_; }
585
576 private: 586 private:
577 static void NukeSdchDictionariesOnIOThread( 587 static void NukeSdchDictionariesOnIOThread(
578 net::URLRequestContextGetter* context_getter) { 588 net::URLRequestContextGetter* context_getter) {
579 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); 589 DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
580 net::SdchManager* sdch_manager = 590 net::SdchManager* sdch_manager =
581 context_getter->GetURLRequestContext()->sdch_manager(); 591 context_getter->GetURLRequestContext()->sdch_manager();
582 DCHECK(sdch_manager); 592 DCHECK(sdch_manager);
583 sdch_manager->ClearData(); 593 sdch_manager->ClearData();
584 } 594 }
585 595
(...skipping 20 matching lines...) Expand all
606 #endif 616 #endif
607 } 617 }
608 618
609 void SetUpOnMainThread() override { 619 void SetUpOnMainThread() override {
610 test_server_.RegisterRequestHandler( 620 test_server_.RegisterRequestHandler(
611 base::Bind(&SdchResponseHandler::HandleRequest, 621 base::Bind(&SdchResponseHandler::HandleRequest,
612 base::Unretained(&response_handler_))); 622 base::Unretained(&response_handler_)));
613 CHECK(test_server_.Start()); 623 CHECK(test_server_.Start());
614 url_request_context_getter_ = browser()->profile()->GetRequestContext(); 624 url_request_context_getter_ = browser()->profile()->GetRequestContext();
615 625
616 content::BrowserThread::PostTask( 626 base::RunLoop run_loop;
627 content::BrowserThread::PostTaskAndReply(
617 content::BrowserThread::IO, FROM_HERE, 628 content::BrowserThread::IO, FROM_HERE,
618 base::Bind(&SdchBrowserTest::SubscribeToSdchNotifications, 629 base::Bind(&SdchBrowserTest::SubscribeToSdchNotifications,
619 base::Unretained(this), 630 base::Unretained(this),
620 base::RetainedRef(url_request_context_getter_))); 631 base::RetainedRef(url_request_context_getter_),
632 &sdch_enabled_),
633 run_loop.QuitClosure());
634 run_loop.Run();
621 } 635 }
622 636
623 void TearDownOnMainThread() override { 637 void TearDownOnMainThread() override {
624 CHECK(test_server_.ShutdownAndWaitUntilComplete()); 638 CHECK(test_server_.ShutdownAndWaitUntilComplete());
625 639
626 content::BrowserThread::PostTask( 640 content::BrowserThread::PostTask(
627 content::BrowserThread::IO, 641 content::BrowserThread::IO,
628 FROM_HERE, 642 FROM_HERE,
629 base::Bind(&SdchBrowserTest::UnsubscribeFromAllSdchNotifications, 643 base::Bind(&SdchBrowserTest::UnsubscribeFromAllSdchNotifications,
630 base::Unretained(this))); 644 base::Unretained(this)));
631 } 645 }
632 646
647 // Check if SDCH is enabled, and if so subscribe an observer to the
648 // SDCH manager on the URLRequestContext that was passed in.
633 void SubscribeToSdchNotifications( 649 void SubscribeToSdchNotifications(
634 net::URLRequestContextGetter* context_getter) { 650 net::URLRequestContextGetter* context_getter,
651 bool* sdch_enabled) {
635 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); 652 DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
636 653
637 net::SdchManager* manager = 654 net::SdchManager* manager =
638 context_getter->GetURLRequestContext()->sdch_manager(); 655 context_getter->GetURLRequestContext()->sdch_manager();
656 *sdch_enabled = !!manager;
657 if (!*sdch_enabled)
658 return;
659
639 DCHECK(observers_.end() == observers_.find(manager)); 660 DCHECK(observers_.end() == observers_.find(manager));
640 661
641 observers_[manager].Observe(manager); 662 observers_[manager].Observe(manager);
642 } 663 }
643 664
644 void UnsubscribeFromAllSdchNotifications() { 665 void UnsubscribeFromAllSdchNotifications() {
645 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); 666 DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
646 observers_.clear(); 667 observers_.clear();
647 } 668 }
648 669
649 // URLFetcherDelegate 670 // URLFetcherDelegate
650 void OnURLFetchComplete(const net::URLFetcher* source) override { 671 void OnURLFetchComplete(const net::URLFetcher* source) override {
651 url_fetch_complete_ = true; 672 url_fetch_complete_ = true;
652 if (waiting_) 673 if (waiting_)
653 base::MessageLoopForUI::current()->QuitWhenIdle(); 674 base::MessageLoopForUI::current()->QuitWhenIdle();
654 } 675 }
655 676
677 bool sdch_enabled_ = false;
656 SdchResponseHandler response_handler_; 678 SdchResponseHandler response_handler_;
657 net::EmbeddedTestServer test_server_; 679 net::EmbeddedTestServer test_server_;
658 scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_; 680 scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_ =
681 nullptr;
659 std::unique_ptr<net::URLFetcher> fetcher_; 682 std::unique_ptr<net::URLFetcher> fetcher_;
660 bool url_fetch_complete_; 683 bool url_fetch_complete_ = false;
661 bool waiting_; 684 bool waiting_ = false;
662 base::ScopedTempDir second_profile_data_dir_; 685 base::ScopedTempDir second_profile_data_dir_;
663 Profile* second_profile_; 686 Profile* second_profile_;
664 Browser* second_browser_; 687 Browser* second_browser_;
665 Browser* incognito_browser_; 688 Browser* incognito_browser_;
666 689
667 // IO Thread access only. 690 // IO Thread access only.
668 std::map<net::SdchManager*, TestSdchObserver> observers_; 691 std::map<net::SdchManager*, TestSdchObserver> observers_;
669 }; 692 };
670 693
671 const char SdchBrowserTest::kTestHost[] = "our.test.host.com"; 694 const char SdchBrowserTest::kTestHost[] = "our.test.host.com";
672 695
673 // Confirm that after getting a dictionary, calling the browsing 696 // Confirm that after getting a dictionary, calling the browsing
674 // data remover renders it unusable. Also (in calling 697 // data remover renders it unusable. Also (in calling
675 // ForceSdchDictionaryLoad()) servers as a smoke test for SDCH. 698 // ForceSdchDictionaryLoad()) servers as a smoke test for SDCH.
676 IN_PROC_BROWSER_TEST_F(SdchBrowserTest, BrowsingDataRemover) { 699 IN_PROC_BROWSER_TEST_F(SdchBrowserTest, BrowsingDataRemover) {
700 if (!sdch_enabled()) {
701 LOG(ERROR) << "SDCH disabled; not running test.";
702 return;
703 }
704
677 ASSERT_TRUE(ForceSdchDictionaryLoad(browser())); 705 ASSERT_TRUE(ForceSdchDictionaryLoad(browser()));
678 706
679 // Confirm browsing data remover without removing the cache leaves 707 // Confirm browsing data remover without removing the cache leaves
680 // SDCH alone. 708 // SDCH alone.
681 BrowsingDataRemoveAndWait(ChromeBrowsingDataRemoverDelegate::ALL_DATA_TYPES & 709 BrowsingDataRemoveAndWait(ChromeBrowsingDataRemoverDelegate::ALL_DATA_TYPES &
682 ~BrowsingDataRemover::DATA_TYPE_CACHE); 710 ~BrowsingDataRemover::DATA_TYPE_CACHE);
683 bool sdch_encoding_used = false; 711 bool sdch_encoding_used = false;
684 ASSERT_TRUE(GetData(&sdch_encoding_used)); 712 ASSERT_TRUE(GetData(&sdch_encoding_used));
685 EXPECT_TRUE(sdch_encoding_used); 713 EXPECT_TRUE(sdch_encoding_used);
686 714
687 // Confirm browsing data remover removing the cache clears SDCH state. 715 // Confirm browsing data remover removing the cache clears SDCH state.
688 BrowsingDataRemoveAndWait(BrowsingDataRemover::DATA_TYPE_CACHE); 716 BrowsingDataRemoveAndWait(BrowsingDataRemover::DATA_TYPE_CACHE);
689 sdch_encoding_used = false; 717 sdch_encoding_used = false;
690 ASSERT_TRUE(GetData(&sdch_encoding_used)); 718 ASSERT_TRUE(GetData(&sdch_encoding_used));
691 EXPECT_FALSE(sdch_encoding_used); 719 EXPECT_FALSE(sdch_encoding_used);
692 } 720 }
693 721
694 // Confirm dictionaries not visible in other profiles. 722 // Confirm dictionaries not visible in other profiles.
695 IN_PROC_BROWSER_TEST_F(SdchBrowserTest, Isolation) { 723 IN_PROC_BROWSER_TEST_F(SdchBrowserTest, Isolation) {
724 if (!sdch_enabled()) {
725 LOG(ERROR) << "SDCH disabled; not running test.";
726 return;
727 }
728
696 ASSERT_TRUE(ForceSdchDictionaryLoad(browser())); 729 ASSERT_TRUE(ForceSdchDictionaryLoad(browser()));
697 ASSERT_TRUE(SetupSecondBrowser()); 730 ASSERT_TRUE(SetupSecondBrowser());
698 ASSERT_TRUE(SetupIncognitoBrowser()); 731 ASSERT_TRUE(SetupIncognitoBrowser());
699 732
700 // Data fetches from incognito or separate profiles should not be SDCH 733 // Data fetches from incognito or separate profiles should not be SDCH
701 // encoded. 734 // encoded.
702 bool sdch_encoding_used = true; 735 bool sdch_encoding_used = true;
703 EXPECT_TRUE( 736 EXPECT_TRUE(
704 GetDataDetailed(incognito_browser()->profile()->GetRequestContext(), 737 GetDataDetailed(incognito_browser()->profile()->GetRequestContext(),
705 &sdch_encoding_used)); 738 &sdch_encoding_used));
706 EXPECT_FALSE(sdch_encoding_used); 739 EXPECT_FALSE(sdch_encoding_used);
707 740
708 sdch_encoding_used = true; 741 sdch_encoding_used = true;
709 EXPECT_TRUE(GetDataDetailed( 742 EXPECT_TRUE(GetDataDetailed(
710 second_browser()->profile()->GetRequestContext(), &sdch_encoding_used)); 743 second_browser()->profile()->GetRequestContext(), &sdch_encoding_used));
711 EXPECT_FALSE(sdch_encoding_used); 744 EXPECT_FALSE(sdch_encoding_used);
712 } 745 }
713 746
714 // Confirm a dictionary loaded in incognito isn't visible in the main profile. 747 // Confirm a dictionary loaded in incognito isn't visible in the main profile.
715 IN_PROC_BROWSER_TEST_F(SdchBrowserTest, ReverseIsolation) { 748 IN_PROC_BROWSER_TEST_F(SdchBrowserTest, ReverseIsolation) {
749 if (!sdch_enabled()) {
750 LOG(ERROR) << "SDCH disabled; not running test.";
751 return;
752 }
753
716 ASSERT_TRUE(SetupIncognitoBrowser()); 754 ASSERT_TRUE(SetupIncognitoBrowser());
717 ASSERT_TRUE(ForceSdchDictionaryLoad(incognito_browser())); 755 ASSERT_TRUE(ForceSdchDictionaryLoad(incognito_browser()));
718 756
719 // Data fetches on main browser should not be SDCH encoded. 757 // Data fetches on main browser should not be SDCH encoded.
720 bool sdch_encoding_used = true; 758 bool sdch_encoding_used = true;
721 ASSERT_TRUE(GetData(&sdch_encoding_used)); 759 ASSERT_TRUE(GetData(&sdch_encoding_used));
722 EXPECT_FALSE(sdch_encoding_used); 760 EXPECT_FALSE(sdch_encoding_used);
723 } 761 }
724 762
725 } // namespace 763 } // namespace
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/profiles/off_the_record_profile_io_data.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698