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

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

Issue 360733005: Poll CanPredictNetworkActions in Predictor class. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 6 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <time.h> 5 #include <time.h>
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <sstream> 8 #include <sstream>
9 #include <string> 9 #include <string>
10 10
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 content::TestBrowserThread ui_thread_; 121 content::TestBrowserThread ui_thread_;
122 content::TestBrowserThread io_thread_; 122 content::TestBrowserThread io_thread_;
123 123
124 protected: 124 protected:
125 scoped_ptr<net::MockCachingHostResolver> host_resolver_; 125 scoped_ptr<net::MockCachingHostResolver> host_resolver_;
126 }; 126 };
127 127
128 //------------------------------------------------------------------------------ 128 //------------------------------------------------------------------------------
129 129
130 TEST_F(PredictorTest, StartupShutdownTest) { 130 TEST_F(PredictorTest, StartupShutdownTest) {
131 Predictor testing_master(true); 131 Predictor testing_master(true, true);
132 testing_master.Shutdown(); 132 testing_master.Shutdown();
133 } 133 }
134 134
135 135
136 TEST_F(PredictorTest, ShutdownWhenResolutionIsPendingTest) { 136 TEST_F(PredictorTest, ShutdownWhenResolutionIsPendingTest) {
137 scoped_ptr<net::HostResolver> host_resolver(new net::HangingHostResolver()); 137 scoped_ptr<net::HostResolver> host_resolver(new net::HangingHostResolver());
138 138
139 Predictor testing_master(true); 139 Predictor testing_master(true, true);
140 testing_master.SetHostResolver(host_resolver.get()); 140 testing_master.SetHostResolver(host_resolver.get());
141 141
142 GURL localhost("http://localhost:80"); 142 GURL localhost("http://localhost:80");
143 UrlList names; 143 UrlList names;
144 names.push_back(localhost); 144 names.push_back(localhost);
145 145
146 testing_master.ResolveList(names, UrlInfo::PAGE_SCAN_MOTIVATED); 146 testing_master.ResolveList(names, UrlInfo::PAGE_SCAN_MOTIVATED);
147 147
148 base::MessageLoop::current()->PostDelayedTask( 148 base::MessageLoop::current()->PostDelayedTask(
149 FROM_HERE, 149 FROM_HERE,
150 base::MessageLoop::QuitClosure(), 150 base::MessageLoop::QuitClosure(),
151 base::TimeDelta::FromMilliseconds(500)); 151 base::TimeDelta::FromMilliseconds(500));
152 base::MessageLoop::current()->Run(); 152 base::MessageLoop::current()->Run();
153 153
154 EXPECT_FALSE(testing_master.WasFound(localhost)); 154 EXPECT_FALSE(testing_master.WasFound(localhost));
155 155
156 testing_master.Shutdown(); 156 testing_master.Shutdown();
157 157
158 // Clean up after ourselves. 158 // Clean up after ourselves.
159 base::MessageLoop::current()->RunUntilIdle(); 159 base::MessageLoop::current()->RunUntilIdle();
160 } 160 }
161 161
162 TEST_F(PredictorTest, SingleLookupTest) { 162 TEST_F(PredictorTest, SingleLookupTest) {
163 Predictor testing_master(true); 163 Predictor testing_master(true, true);
164 testing_master.SetHostResolver(host_resolver_.get()); 164 testing_master.SetHostResolver(host_resolver_.get());
165 165
166 GURL goog("http://www.google.com:80"); 166 GURL goog("http://www.google.com:80");
167 167
168 UrlList names; 168 UrlList names;
169 names.push_back(goog); 169 names.push_back(goog);
170 170
171 // Try to flood the predictor with many concurrent requests. 171 // Try to flood the predictor with many concurrent requests.
172 for (int i = 0; i < 10; i++) 172 for (int i = 0; i < 10; i++)
173 testing_master.ResolveList(names, UrlInfo::PAGE_SCAN_MOTIVATED); 173 testing_master.ResolveList(names, UrlInfo::PAGE_SCAN_MOTIVATED);
174 174
175 WaitForResolution(&testing_master, names); 175 WaitForResolution(&testing_master, names);
176 176
177 EXPECT_TRUE(testing_master.WasFound(goog)); 177 EXPECT_TRUE(testing_master.WasFound(goog));
178 178
179 base::MessageLoop::current()->RunUntilIdle(); 179 base::MessageLoop::current()->RunUntilIdle();
180 180
181 EXPECT_GT(testing_master.peak_pending_lookups(), names.size() / 2); 181 EXPECT_GT(testing_master.peak_pending_lookups(), names.size() / 2);
182 EXPECT_LE(testing_master.peak_pending_lookups(), names.size()); 182 EXPECT_LE(testing_master.peak_pending_lookups(), names.size());
183 EXPECT_LE(testing_master.peak_pending_lookups(), 183 EXPECT_LE(testing_master.peak_pending_lookups(),
184 testing_master.max_concurrent_dns_lookups()); 184 testing_master.max_concurrent_dns_lookups());
185 185
186 testing_master.Shutdown(); 186 testing_master.Shutdown();
187 } 187 }
188 188
189 TEST_F(PredictorTest, ConcurrentLookupTest) { 189 TEST_F(PredictorTest, ConcurrentLookupTest) {
190 host_resolver_->rules()->AddSimulatedFailure("*.notfound"); 190 host_resolver_->rules()->AddSimulatedFailure("*.notfound");
191 191
192 Predictor testing_master(true); 192 Predictor testing_master(true, true);
193 testing_master.SetHostResolver(host_resolver_.get()); 193 testing_master.SetHostResolver(host_resolver_.get());
194 194
195 GURL goog("http://www.google.com:80"), 195 GURL goog("http://www.google.com:80"),
196 goog2("http://gmail.google.com.com:80"), 196 goog2("http://gmail.google.com.com:80"),
197 goog3("http://mail.google.com:80"), 197 goog3("http://mail.google.com:80"),
198 goog4("http://gmail.com:80"); 198 goog4("http://gmail.com:80");
199 GURL bad1("http://bad1.notfound:80"), 199 GURL bad1("http://bad1.notfound:80"),
200 bad2("http://bad2.notfound:80"); 200 bad2("http://bad2.notfound:80");
201 201
202 UrlList names; 202 UrlList names;
(...skipping 26 matching lines...) Expand all
229 EXPECT_LE(testing_master.peak_pending_lookups(), names.size()); 229 EXPECT_LE(testing_master.peak_pending_lookups(), names.size());
230 EXPECT_LE(testing_master.peak_pending_lookups(), 230 EXPECT_LE(testing_master.peak_pending_lookups(),
231 testing_master.max_concurrent_dns_lookups()); 231 testing_master.max_concurrent_dns_lookups());
232 232
233 testing_master.Shutdown(); 233 testing_master.Shutdown();
234 } 234 }
235 235
236 TEST_F(PredictorTest, MassiveConcurrentLookupTest) { 236 TEST_F(PredictorTest, MassiveConcurrentLookupTest) {
237 host_resolver_->rules()->AddSimulatedFailure("*.notfound"); 237 host_resolver_->rules()->AddSimulatedFailure("*.notfound");
238 238
239 Predictor testing_master(true); 239 Predictor testing_master(true, true);
240 testing_master.SetHostResolver(host_resolver_.get()); 240 testing_master.SetHostResolver(host_resolver_.get());
241 241
242 UrlList names; 242 UrlList names;
243 for (int i = 0; i < 100; i++) 243 for (int i = 0; i < 100; i++)
244 names.push_back(GURL( 244 names.push_back(GURL(
245 "http://host" + base::IntToString(i) + ".notfound:80")); 245 "http://host" + base::IntToString(i) + ".notfound:80"));
246 246
247 // Try to flood the predictor with many concurrent requests. 247 // Try to flood the predictor with many concurrent requests.
248 for (int i = 0; i < 10; i++) 248 for (int i = 0; i < 10; i++)
249 testing_master.ResolveList(names, UrlInfo::PAGE_SCAN_MOTIVATED); 249 testing_master.ResolveList(names, UrlInfo::PAGE_SCAN_MOTIVATED);
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 return true; 353 return true;
354 } 354 }
355 } 355 }
356 return false; 356 return false;
357 } 357 }
358 358
359 //------------------------------------------------------------------------------ 359 //------------------------------------------------------------------------------
360 360
361 // Make sure nil referral lists really have no entries, and no latency listed. 361 // Make sure nil referral lists really have no entries, and no latency listed.
362 TEST_F(PredictorTest, ReferrerSerializationNilTest) { 362 TEST_F(PredictorTest, ReferrerSerializationNilTest) {
363 Predictor predictor(true); 363 Predictor predictor(true, true);
364 predictor.SetHostResolver(host_resolver_.get()); 364 predictor.SetHostResolver(host_resolver_.get());
365 365
366 scoped_ptr<base::ListValue> referral_list(NewEmptySerializationList()); 366 scoped_ptr<base::ListValue> referral_list(NewEmptySerializationList());
367 predictor.SerializeReferrers(referral_list.get()); 367 predictor.SerializeReferrers(referral_list.get());
368 EXPECT_EQ(1U, referral_list->GetSize()); 368 EXPECT_EQ(1U, referral_list->GetSize());
369 EXPECT_FALSE(GetDataFromSerialization( 369 EXPECT_FALSE(GetDataFromSerialization(
370 GURL("http://a.com:79"), GURL("http://b.com:78"), 370 GURL("http://a.com:79"), GURL("http://b.com:78"),
371 *referral_list.get(), NULL)); 371 *referral_list.get(), NULL));
372 372
373 predictor.Shutdown(); 373 predictor.Shutdown();
374 } 374 }
375 375
376 // Make sure that when a serialization list includes a value, that it can be 376 // Make sure that when a serialization list includes a value, that it can be
377 // deserialized into the database, and can be extracted back out via 377 // deserialized into the database, and can be extracted back out via
378 // serialization without being changed. 378 // serialization without being changed.
379 TEST_F(PredictorTest, ReferrerSerializationSingleReferrerTest) { 379 TEST_F(PredictorTest, ReferrerSerializationSingleReferrerTest) {
380 Predictor predictor(true); 380 Predictor predictor(true, true);
381 predictor.SetHostResolver(host_resolver_.get()); 381 predictor.SetHostResolver(host_resolver_.get());
382 const GURL motivation_url("http://www.google.com:91"); 382 const GURL motivation_url("http://www.google.com:91");
383 const GURL subresource_url("http://icons.google.com:90"); 383 const GURL subresource_url("http://icons.google.com:90");
384 const double kUseRate = 23.4; 384 const double kUseRate = 23.4;
385 scoped_ptr<base::ListValue> referral_list(NewEmptySerializationList()); 385 scoped_ptr<base::ListValue> referral_list(NewEmptySerializationList());
386 386
387 AddToSerializedList(motivation_url, subresource_url, 387 AddToSerializedList(motivation_url, subresource_url,
388 kUseRate, referral_list.get()); 388 kUseRate, referral_list.get());
389 389
390 predictor.DeserializeReferrers(*referral_list.get()); 390 predictor.DeserializeReferrers(*referral_list.get());
391 391
392 base::ListValue recovered_referral_list; 392 base::ListValue recovered_referral_list;
393 predictor.SerializeReferrers(&recovered_referral_list); 393 predictor.SerializeReferrers(&recovered_referral_list);
394 EXPECT_EQ(2U, recovered_referral_list.GetSize()); 394 EXPECT_EQ(2U, recovered_referral_list.GetSize());
395 double rate; 395 double rate;
396 EXPECT_TRUE(GetDataFromSerialization( 396 EXPECT_TRUE(GetDataFromSerialization(
397 motivation_url, subresource_url, recovered_referral_list, &rate)); 397 motivation_url, subresource_url, recovered_referral_list, &rate));
398 EXPECT_EQ(rate, kUseRate); 398 EXPECT_EQ(rate, kUseRate);
399 399
400 predictor.Shutdown(); 400 predictor.Shutdown();
401 } 401 }
402 402
403 // Check that GetHtmlReferrerLists() doesn't crash when given duplicated 403 // Check that GetHtmlReferrerLists() doesn't crash when given duplicated
404 // domains for referring URL, and that it sorts the results in the 404 // domains for referring URL, and that it sorts the results in the
405 // correct order. 405 // correct order.
406 TEST_F(PredictorTest, GetHtmlReferrerLists) { 406 TEST_F(PredictorTest, GetHtmlReferrerLists) {
407 Predictor predictor(true); 407 Predictor predictor(true, true);
408 predictor.SetHostResolver(host_resolver_.get()); 408 predictor.SetHostResolver(host_resolver_.get());
409 const double kUseRate = 23.4; 409 const double kUseRate = 23.4;
410 scoped_ptr<base::ListValue> referral_list(NewEmptySerializationList()); 410 scoped_ptr<base::ListValue> referral_list(NewEmptySerializationList());
411 411
412 AddToSerializedList( 412 AddToSerializedList(
413 GURL("http://d.google.com/x1"), 413 GURL("http://d.google.com/x1"),
414 GURL("http://foo.com/"), 414 GURL("http://foo.com/"),
415 kUseRate, referral_list.get()); 415 kUseRate, referral_list.get());
416 416
417 // Duplicated hostname (d.google.com). This should not cause any crashes 417 // Duplicated hostname (d.google.com). This should not cause any crashes
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 double espilon_ratio = 1.01; \ 482 double espilon_ratio = 1.01; \
483 if ((a) < 0.) \ 483 if ((a) < 0.) \
484 espilon_ratio = 1 / espilon_ratio; \ 484 espilon_ratio = 1 / espilon_ratio; \
485 EXPECT_LT(a, espilon_ratio * (b)); \ 485 EXPECT_LT(a, espilon_ratio * (b)); \
486 EXPECT_GT((a) * espilon_ratio, b); \ 486 EXPECT_GT((a) * espilon_ratio, b); \
487 } while (0) 487 } while (0)
488 488
489 489
490 // Make sure the Trim() functionality works as expected. 490 // Make sure the Trim() functionality works as expected.
491 TEST_F(PredictorTest, ReferrerSerializationTrimTest) { 491 TEST_F(PredictorTest, ReferrerSerializationTrimTest) {
492 Predictor predictor(true); 492 Predictor predictor(true, true);
493 predictor.SetHostResolver(host_resolver_.get()); 493 predictor.SetHostResolver(host_resolver_.get());
494 GURL motivation_url("http://www.google.com:110"); 494 GURL motivation_url("http://www.google.com:110");
495 495
496 GURL icon_subresource_url("http://icons.google.com:111"); 496 GURL icon_subresource_url("http://icons.google.com:111");
497 const double kRateIcon = 16.0 * Predictor::kDiscardableExpectedValue; 497 const double kRateIcon = 16.0 * Predictor::kDiscardableExpectedValue;
498 GURL img_subresource_url("http://img.google.com:118"); 498 GURL img_subresource_url("http://img.google.com:118");
499 const double kRateImg = 8.0 * Predictor::kDiscardableExpectedValue; 499 const double kRateImg = 8.0 * Predictor::kDiscardableExpectedValue;
500 500
501 scoped_ptr<base::ListValue> referral_list(NewEmptySerializationList()); 501 scoped_ptr<base::ListValue> referral_list(NewEmptySerializationList());
502 AddToSerializedList( 502 AddToSerializedList(
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
671 EXPECT_NE(Predictor::CanonicalizeUrl(http), 671 EXPECT_NE(Predictor::CanonicalizeUrl(http),
672 Predictor::CanonicalizeUrl(https)); 672 Predictor::CanonicalizeUrl(https));
673 673
674 // Https works fine. 674 // Https works fine.
675 GURL long_https("https://host:999/path?query=value"); 675 GURL long_https("https://host:999/path?query=value");
676 EXPECT_EQ(Predictor::CanonicalizeUrl(long_https), 676 EXPECT_EQ(Predictor::CanonicalizeUrl(long_https),
677 long_https.GetWithEmptyPath()); 677 long_https.GetWithEmptyPath());
678 } 678 }
679 679
680 TEST_F(PredictorTest, DiscardPredictorResults) { 680 TEST_F(PredictorTest, DiscardPredictorResults) {
681 Predictor predictor(true); 681 Predictor predictor(true, true);
682 predictor.SetHostResolver(host_resolver_.get()); 682 predictor.SetHostResolver(host_resolver_.get());
683 base::ListValue referral_list; 683 base::ListValue referral_list;
684 predictor.SerializeReferrers(&referral_list); 684 predictor.SerializeReferrers(&referral_list);
685 EXPECT_EQ(1U, referral_list.GetSize()); 685 EXPECT_EQ(1U, referral_list.GetSize());
686 686
687 GURL host_1("http://test_1"); 687 GURL host_1("http://test_1");
688 GURL host_2("http://test_2"); 688 GURL host_2("http://test_2");
689 predictor.LearnFromNavigation(host_1, host_2); 689 predictor.LearnFromNavigation(host_1, host_2);
690 690
691 predictor.SerializeReferrers(&referral_list); 691 predictor.SerializeReferrers(&referral_list);
(...skipping 22 matching lines...) Expand all
714 // Tests that preconnects apply the HSTS list. 714 // Tests that preconnects apply the HSTS list.
715 TEST_F(PredictorTest, HSTSRedirect) { 715 TEST_F(PredictorTest, HSTSRedirect) {
716 const GURL kHttpUrl("http://example.com"); 716 const GURL kHttpUrl("http://example.com");
717 const GURL kHttpsUrl("https://example.com"); 717 const GURL kHttpsUrl("https://example.com");
718 718
719 const base::Time expiry = 719 const base::Time expiry =
720 base::Time::Now() + base::TimeDelta::FromSeconds(1000); 720 base::Time::Now() + base::TimeDelta::FromSeconds(1000);
721 net::TransportSecurityState state; 721 net::TransportSecurityState state;
722 state.AddHSTS(kHttpUrl.host(), expiry, false); 722 state.AddHSTS(kHttpUrl.host(), expiry, false);
723 723
724 Predictor predictor(true); 724 Predictor predictor(true, true);
725 TestPredictorObserver observer; 725 TestPredictorObserver observer;
726 predictor.SetObserver(&observer); 726 predictor.SetObserver(&observer);
727 predictor.SetTransportSecurityState(&state); 727 predictor.SetTransportSecurityState(&state);
728 728
729 predictor.PreconnectUrl(kHttpUrl, GURL(), UrlInfo::OMNIBOX_MOTIVATED, 2); 729 predictor.PreconnectUrl(kHttpUrl, GURL(), UrlInfo::OMNIBOX_MOTIVATED, 2);
730 ASSERT_EQ(1u, observer.preconnected_urls_.size()); 730 ASSERT_EQ(1u, observer.preconnected_urls_.size());
731 EXPECT_EQ(kHttpsUrl, observer.preconnected_urls_[0]); 731 EXPECT_EQ(kHttpsUrl, observer.preconnected_urls_[0]);
732 732
733 predictor.Shutdown(); 733 predictor.Shutdown();
734 } 734 }
735 735
736 // Tests that preconnecting a URL on the HSTS list preconnects the subresources 736 // Tests that preconnecting a URL on the HSTS list preconnects the subresources
737 // for the SSL version. 737 // for the SSL version.
738 TEST_F(PredictorTest, HSTSRedirectSubresources) { 738 TEST_F(PredictorTest, HSTSRedirectSubresources) {
739 const GURL kHttpUrl("http://example.com"); 739 const GURL kHttpUrl("http://example.com");
740 const GURL kHttpsUrl("https://example.com"); 740 const GURL kHttpsUrl("https://example.com");
741 const GURL kSubresourceUrl("https://images.example.com"); 741 const GURL kSubresourceUrl("https://images.example.com");
742 const double kUseRate = 23.4; 742 const double kUseRate = 23.4;
743 743
744 const base::Time expiry = 744 const base::Time expiry =
745 base::Time::Now() + base::TimeDelta::FromSeconds(1000); 745 base::Time::Now() + base::TimeDelta::FromSeconds(1000);
746 net::TransportSecurityState state; 746 net::TransportSecurityState state;
747 state.AddHSTS(kHttpUrl.host(), expiry, false); 747 state.AddHSTS(kHttpUrl.host(), expiry, false);
748 748
749 Predictor predictor(true); 749 Predictor predictor(true, true);
750 TestPredictorObserver observer; 750 TestPredictorObserver observer;
751 predictor.SetObserver(&observer); 751 predictor.SetObserver(&observer);
752 predictor.SetTransportSecurityState(&state); 752 predictor.SetTransportSecurityState(&state);
753 753
754 scoped_ptr<base::ListValue> referral_list(NewEmptySerializationList()); 754 scoped_ptr<base::ListValue> referral_list(NewEmptySerializationList());
755 AddToSerializedList( 755 AddToSerializedList(
756 kHttpsUrl, kSubresourceUrl, kUseRate, referral_list.get()); 756 kHttpsUrl, kSubresourceUrl, kUseRate, referral_list.get());
757 predictor.DeserializeReferrers(*referral_list.get()); 757 predictor.DeserializeReferrers(*referral_list.get());
758 758
759 predictor.PreconnectUrlAndSubresources(kHttpUrl, GURL()); 759 predictor.PreconnectUrlAndSubresources(kHttpUrl, GURL());
(...skipping 28 matching lines...) Expand all
788 ++would_proxy_count_; 788 ++would_proxy_count_;
789 return would_proxy_; 789 return would_proxy_;
790 } 790 }
791 791
792 bool would_proxy_; 792 bool would_proxy_;
793 int advise_count_; 793 int advise_count_;
794 int would_proxy_count_; 794 int would_proxy_count_;
795 }; 795 };
796 796
797 TEST_F(PredictorTest, SingleLookupTestWithDisabledAdvisor) { 797 TEST_F(PredictorTest, SingleLookupTestWithDisabledAdvisor) {
798 Predictor testing_master(true); 798 Predictor testing_master(true, true);
799 TestProxyAdvisor* advisor = new TestProxyAdvisor(); 799 TestProxyAdvisor* advisor = new TestProxyAdvisor();
800 testing_master.SetHostResolver(host_resolver_.get()); 800 testing_master.SetHostResolver(host_resolver_.get());
801 testing_master.proxy_advisor_.reset(advisor); 801 testing_master.proxy_advisor_.reset(advisor);
802 802
803 GURL goog("http://www.google.com:80"); 803 GURL goog("http://www.google.com:80");
804 804
805 advisor->would_proxy_ = false; 805 advisor->would_proxy_ = false;
806 806
807 UrlList names; 807 UrlList names;
808 names.push_back(goog); 808 names.push_back(goog);
809 testing_master.ResolveList(names, UrlInfo::PAGE_SCAN_MOTIVATED); 809 testing_master.ResolveList(names, UrlInfo::PAGE_SCAN_MOTIVATED);
810 810
811 WaitForResolution(&testing_master, names); 811 WaitForResolution(&testing_master, names);
812 EXPECT_TRUE(testing_master.WasFound(goog)); 812 EXPECT_TRUE(testing_master.WasFound(goog));
813 EXPECT_EQ(advisor->would_proxy_count_, 1); 813 EXPECT_EQ(advisor->would_proxy_count_, 1);
814 EXPECT_EQ(advisor->advise_count_, 1); 814 EXPECT_EQ(advisor->advise_count_, 1);
815 815
816 base::MessageLoop::current()->RunUntilIdle(); 816 base::MessageLoop::current()->RunUntilIdle();
817 817
818 testing_master.Shutdown(); 818 testing_master.Shutdown();
819 } 819 }
820 820
821 TEST_F(PredictorTest, SingleLookupTestWithEnabledAdvisor) { 821 TEST_F(PredictorTest, SingleLookupTestWithEnabledAdvisor) {
822 Predictor testing_master(true); 822 Predictor testing_master(true, true);
823 testing_master.SetHostResolver(host_resolver_.get()); 823 testing_master.SetHostResolver(host_resolver_.get());
824 TestProxyAdvisor* advisor = new TestProxyAdvisor(); 824 TestProxyAdvisor* advisor = new TestProxyAdvisor();
825 testing_master.proxy_advisor_.reset(advisor); 825 testing_master.proxy_advisor_.reset(advisor);
826 826
827 GURL goog("http://www.google.com:80"); 827 GURL goog("http://www.google.com:80");
828 828
829 advisor->would_proxy_ = true; 829 advisor->would_proxy_ = true;
830 830
831 UrlList names; 831 UrlList names;
832 names.push_back(goog); 832 names.push_back(goog);
833 833
834 testing_master.ResolveList(names, UrlInfo::PAGE_SCAN_MOTIVATED); 834 testing_master.ResolveList(names, UrlInfo::PAGE_SCAN_MOTIVATED);
835 835
836 // Attempt to resolve a few times. 836 // Attempt to resolve a few times.
837 WaitForResolutionWithLimit(&testing_master, names, 10); 837 WaitForResolutionWithLimit(&testing_master, names, 10);
838 838
839 // Because the advisor indicated that the url would be proxied, 839 // Because the advisor indicated that the url would be proxied,
840 // no resolution should have occurred. 840 // no resolution should have occurred.
841 EXPECT_FALSE(testing_master.WasFound(goog)); 841 EXPECT_FALSE(testing_master.WasFound(goog));
842 EXPECT_EQ(advisor->would_proxy_count_, 1); 842 EXPECT_EQ(advisor->would_proxy_count_, 1);
843 EXPECT_EQ(advisor->advise_count_, 1); 843 EXPECT_EQ(advisor->advise_count_, 1);
844 844
845 base::MessageLoop::current()->RunUntilIdle(); 845 base::MessageLoop::current()->RunUntilIdle();
846 846
847 testing_master.Shutdown(); 847 testing_master.Shutdown();
848 } 848 }
849 849
850 TEST_F(PredictorTest, TestSimplePreconnectAdvisor) { 850 TEST_F(PredictorTest, TestSimplePreconnectAdvisor) {
851 Predictor testing_master(true); 851 Predictor testing_master(true, true);
852 testing_master.SetHostResolver(host_resolver_.get()); 852 testing_master.SetHostResolver(host_resolver_.get());
853 TestProxyAdvisor* advisor = new TestProxyAdvisor(); 853 TestProxyAdvisor* advisor = new TestProxyAdvisor();
854 testing_master.proxy_advisor_.reset(advisor); 854 testing_master.proxy_advisor_.reset(advisor);
855 855
856 GURL goog("http://www.google.com:80"); 856 GURL goog("http://www.google.com:80");
857 857
858 testing_master.PreconnectUrl(goog, goog, UrlInfo::OMNIBOX_MOTIVATED, 2); 858 testing_master.PreconnectUrl(goog, goog, UrlInfo::OMNIBOX_MOTIVATED, 2);
859 859
860 EXPECT_EQ(advisor->would_proxy_count_, 0); 860 EXPECT_EQ(advisor->would_proxy_count_, 0);
861 EXPECT_EQ(advisor->advise_count_, 1); 861 EXPECT_EQ(advisor->advise_count_, 1);
862 862
863 testing_master.Shutdown(); 863 testing_master.Shutdown();
864 } 864 }
865 865
866 #endif // defined(OS_ANDROID) || defined(OS_IOS) 866 #endif // defined(OS_ANDROID) || defined(OS_IOS)
867 867
868 } // namespace chrome_browser_net 868 } // namespace chrome_browser_net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698