| OLD | NEW |
| 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 #include "components/search_provider_logos/logo_tracker.h" | 5 #include "components/search_provider_logos/logo_tracker.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/base64.h" | 9 #include "base/base64.h" |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 310 test_clock_(new base::SimpleTestClock()), | 310 test_clock_(new base::SimpleTestClock()), |
| 311 logo_cache_(new NiceMock<MockLogoCache>()), | 311 logo_cache_(new NiceMock<MockLogoCache>()), |
| 312 fake_url_fetcher_factory_(NULL) { | 312 fake_url_fetcher_factory_(NULL) { |
| 313 test_clock_->SetNow(base::Time::FromJsTime(GG_INT64_C(1388686828000))); | 313 test_clock_->SetNow(base::Time::FromJsTime(GG_INT64_C(1388686828000))); |
| 314 logo_tracker_ = new LogoTracker( | 314 logo_tracker_ = new LogoTracker( |
| 315 base::FilePath(), | 315 base::FilePath(), |
| 316 base::MessageLoopProxy::current(), | 316 base::MessageLoopProxy::current(), |
| 317 base::MessageLoopProxy::current(), | 317 base::MessageLoopProxy::current(), |
| 318 new net::TestURLRequestContextGetter(base::MessageLoopProxy::current()), | 318 new net::TestURLRequestContextGetter(base::MessageLoopProxy::current()), |
| 319 scoped_ptr<LogoDelegate>(new TestLogoDelegate())); | 319 scoped_ptr<LogoDelegate>(new TestLogoDelegate())); |
| 320 logo_tracker_->SetServerAPI(logo_url_, | 320 logo_tracker_->SetServerAPI(logo_url_, base::Bind(&GoogleParseLogoResponse), |
| 321 base::Bind(&GoogleParseLogoResponse), | 321 base::Bind(&GoogleAppendQueryparamsToLogoURL), |
| 322 base::Bind(&GoogleAppendFingerprintToLogoURL)); | 322 false); |
| 323 logo_tracker_->SetClockForTests(scoped_ptr<base::Clock>(test_clock_)); | 323 logo_tracker_->SetClockForTests(scoped_ptr<base::Clock>(test_clock_)); |
| 324 logo_tracker_->SetLogoCacheForTests(scoped_ptr<LogoCache>(logo_cache_)); | 324 logo_tracker_->SetLogoCacheForTests(scoped_ptr<LogoCache>(logo_cache_)); |
| 325 } | 325 } |
| 326 | 326 |
| 327 virtual void TearDown() { | 327 virtual void TearDown() { |
| 328 // logo_tracker_ owns logo_cache_, which gets destructed on the file thread | 328 // logo_tracker_ owns logo_cache_, which gets destructed on the file thread |
| 329 // after logo_tracker_'s destruction. Ensure that logo_cache_ is actually | 329 // after logo_tracker_'s destruction. Ensure that logo_cache_ is actually |
| 330 // destructed before the test ends to make gmock happy. | 330 // destructed before the test ends to make gmock happy. |
| 331 delete logo_tracker_; | 331 delete logo_tracker_; |
| 332 message_loop_->RunUntilIdle(); | 332 message_loop_->RunUntilIdle(); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 376 net::HttpStatusCode response_code) { | 376 net::HttpStatusCode response_code) { |
| 377 fake_url_fetcher_factory_.SetFakeResponse( | 377 fake_url_fetcher_factory_.SetFakeResponse( |
| 378 logo_url_, response, response_code, request_status); | 378 logo_url_, response, response_code, request_status); |
| 379 } | 379 } |
| 380 | 380 |
| 381 void LogoTrackerTest::SetServerResponseWhenFingerprint( | 381 void LogoTrackerTest::SetServerResponseWhenFingerprint( |
| 382 const std::string& fingerprint, | 382 const std::string& fingerprint, |
| 383 const std::string& response_when_fingerprint, | 383 const std::string& response_when_fingerprint, |
| 384 net::URLRequestStatus::Status request_status, | 384 net::URLRequestStatus::Status request_status, |
| 385 net::HttpStatusCode response_code) { | 385 net::HttpStatusCode response_code) { |
| 386 GURL url_with_fp = GoogleAppendFingerprintToLogoURL(logo_url_, fingerprint); | 386 GURL url_with_fp = |
| 387 GoogleAppendQueryparamsToLogoURL(logo_url_, fingerprint, false); |
| 387 fake_url_fetcher_factory_.SetFakeResponse( | 388 fake_url_fetcher_factory_.SetFakeResponse( |
| 388 url_with_fp, response_when_fingerprint, response_code, request_status); | 389 url_with_fp, response_when_fingerprint, response_code, request_status); |
| 389 } | 390 } |
| 390 | 391 |
| 391 void LogoTrackerTest::GetLogo() { | 392 void LogoTrackerTest::GetLogo() { |
| 392 logo_tracker_->GetLogo(&observer_); | 393 logo_tracker_->GetLogo(&observer_); |
| 393 base::RunLoop().RunUntilIdle(); | 394 base::RunLoop().RunUntilIdle(); |
| 394 } | 395 } |
| 395 | 396 |
| 396 // Tests ----------------------------------------------------------------------- | 397 // Tests ----------------------------------------------------------------------- |
| 397 | 398 |
| 398 TEST_F(LogoTrackerTest, FingerprintURLHasColon) { | 399 TEST_F(LogoTrackerTest, FingerprintURLHasColon) { |
| 399 GURL url_with_fp = GoogleAppendFingerprintToLogoURL( | 400 GURL url_with_fp = GoogleAppendQueryparamsToLogoURL( |
| 400 GURL("http://logourl.com/path"), "abc123"); | 401 GURL("http://logourl.com/path"), "abc123", false); |
| 401 EXPECT_EQ("http://logourl.com/path?async=es_dfp:abc123", url_with_fp.spec()); | 402 EXPECT_EQ("http://logourl.com/path?async=es_dfp:abc123", url_with_fp.spec()); |
| 402 | 403 |
| 403 url_with_fp = GoogleAppendFingerprintToLogoURL( | 404 url_with_fp = GoogleAppendQueryparamsToLogoURL( |
| 404 GURL("http://logourl.com/?a=b"), "cafe0"); | 405 GURL("http://logourl.com/?a=b"), "cafe0", false); |
| 405 EXPECT_EQ("http://logourl.com/?a=b&async=es_dfp:cafe0", url_with_fp.spec()); | 406 EXPECT_EQ("http://logourl.com/?a=b&async=es_dfp:cafe0", url_with_fp.spec()); |
| 406 } | 407 } |
| 407 | 408 |
| 409 TEST_F(LogoTrackerTest, CTAURLHasComma) { |
| 410 GURL url_with_fp = GoogleAppendQueryparamsToLogoURL( |
| 411 GURL("http://logourl.com/path"), "abc123", true); |
| 412 EXPECT_EQ("http://logourl.com/path?async=es_dfp:abc123,cta:1", |
| 413 url_with_fp.spec()); |
| 414 |
| 415 url_with_fp = GoogleAppendQueryparamsToLogoURL( |
| 416 GURL("http://logourl.com/?a=b"), "", true); |
| 417 EXPECT_EQ("http://logourl.com/?a=b&async=cta:1", url_with_fp.spec()); |
| 418 } |
| 419 |
| 408 TEST_F(LogoTrackerTest, DownloadAndCacheLogo) { | 420 TEST_F(LogoTrackerTest, DownloadAndCacheLogo) { |
| 409 Logo logo = GetSampleLogo(logo_url_, test_clock_->Now()); | 421 Logo logo = GetSampleLogo(logo_url_, test_clock_->Now()); |
| 410 SetServerResponse(ServerResponse(logo)); | 422 SetServerResponse(ServerResponse(logo)); |
| 411 logo_cache_->ExpectSetCachedLogo(&logo); | 423 logo_cache_->ExpectSetCachedLogo(&logo); |
| 412 observer_.ExpectFreshLogo(&logo); | 424 observer_.ExpectFreshLogo(&logo); |
| 413 GetLogo(); | 425 GetLogo(); |
| 414 } | 426 } |
| 415 | 427 |
| 416 TEST_F(LogoTrackerTest, EmptyCacheAndFailedDownload) { | 428 TEST_F(LogoTrackerTest, EmptyCacheAndFailedDownload) { |
| 417 EXPECT_CALL(*logo_cache_, UpdateCachedLogoMetadata(_)).Times(0); | 429 EXPECT_CALL(*logo_cache_, UpdateCachedLogoMetadata(_)).Times(0); |
| (...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 665 | 677 |
| 666 base::RunLoop().RunUntilIdle(); | 678 base::RunLoop().RunUntilIdle(); |
| 667 } | 679 } |
| 668 | 680 |
| 669 TEST_F(LogoTrackerTest, DeleteObserversWhenLogoURLChanged) { | 681 TEST_F(LogoTrackerTest, DeleteObserversWhenLogoURLChanged) { |
| 670 MockLogoObserver listener1; | 682 MockLogoObserver listener1; |
| 671 listener1.ExpectNoLogo(); | 683 listener1.ExpectNoLogo(); |
| 672 logo_tracker_->GetLogo(&listener1); | 684 logo_tracker_->GetLogo(&listener1); |
| 673 | 685 |
| 674 logo_url_ = GURL("http://example.com/new-logo-url"); | 686 logo_url_ = GURL("http://example.com/new-logo-url"); |
| 675 logo_tracker_->SetServerAPI(logo_url_, | 687 logo_tracker_->SetServerAPI(logo_url_, base::Bind(&GoogleParseLogoResponse), |
| 676 base::Bind(&GoogleParseLogoResponse), | 688 base::Bind(&GoogleAppendQueryparamsToLogoURL), |
| 677 base::Bind(&GoogleAppendFingerprintToLogoURL)); | 689 false); |
| 678 Logo logo = GetSampleLogo(logo_url_, test_clock_->Now()); | 690 Logo logo = GetSampleLogo(logo_url_, test_clock_->Now()); |
| 679 SetServerResponse(ServerResponse(logo)); | 691 SetServerResponse(ServerResponse(logo)); |
| 680 | 692 |
| 681 MockLogoObserver listener2; | 693 MockLogoObserver listener2; |
| 682 listener2.ExpectFreshLogo(&logo); | 694 listener2.ExpectFreshLogo(&logo); |
| 683 logo_tracker_->GetLogo(&listener2); | 695 logo_tracker_->GetLogo(&listener2); |
| 684 | 696 |
| 685 base::RunLoop().RunUntilIdle(); | 697 base::RunLoop().RunUntilIdle(); |
| 686 } | 698 } |
| 687 | 699 |
| 688 } // namespace | 700 } // namespace |
| 689 | 701 |
| 690 } // namespace search_provider_logos | 702 } // namespace search_provider_logos |
| OLD | NEW |