Chromium Code Reviews| Index: components/search_provider_logos/animated_logo_tracker.cc |
| diff --git a/components/search_provider_logos/animated_logo_tracker.cc b/components/search_provider_logos/animated_logo_tracker.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..5ca77222d2e6e7f62ab55336777e6ff8b77e3f04 |
| --- /dev/null |
| +++ b/components/search_provider_logos/animated_logo_tracker.cc |
| @@ -0,0 +1,46 @@ |
| +// Copyright 2015 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "components/search_provider_logos/animated_logo_tracker.h" |
| +#include "net/url_request/url_fetcher.h" |
| +#include "net/url_request/url_request_context_getter.h" |
| +#include "net/url_request/url_request_status.h" |
| + |
| +namespace search_provider_logos { |
| + |
| +AnimatedLogoTracker::AnimatedLogoTracker( |
| + scoped_refptr<net::URLRequestContextGetter> request_context_getter) |
| + : request_context_getter_(request_context_getter) {} |
| + |
| +AnimatedLogoTracker::~AnimatedLogoTracker() { |
| + ReturnToIdle(); |
| +} |
| + |
| +void AnimatedLogoTracker::GetAnimatedLogo(const GURL& animated_logo_url, |
| + AnimatedLogoCallback listener) { |
| + DCHECK(!animated_logo_url.is_empty()); |
| + animated_logo_callback_ = listener; |
| + fetcher_ = |
|
newt (away)
2015/09/18 20:46:03
resetting fetcher_ will abort any currently in-pro
|
| + net::URLFetcher::Create(animated_logo_url, net::URLFetcher::GET, this); |
| + fetcher_->SetRequestContext(request_context_getter_.get()); |
| + fetcher_->Start(); |
| +} |
| + |
| +void AnimatedLogoTracker::ReturnToIdle() { |
| + fetcher_.reset(); |
| + animated_logo_callback_.Reset(); |
| +} |
| + |
| +void AnimatedLogoTracker::OnURLFetchComplete(const net::URLFetcher* source) { |
| + if (!source->GetStatus().is_success() || (source->GetResponseCode() != 200)) { |
| + ReturnToIdle(); |
| + return; |
| + } |
| + std::string raw_response; |
| + source->GetResponseAsString(&raw_response); |
| + animated_logo_callback_.Run(raw_response); |
| + ReturnToIdle(); |
| +} |
| + |
| +} // namespace search_provider_logos |