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

Side by Side Diff: chrome/browser/bitmap_fetcher/bitmap_fetcher_service.cc

Issue 2767893002: Remove ScopedVector from chrome/browser/. (Closed)
Patch Set: Address comments from zea@ 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
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 #include "chrome/browser/bitmap_fetcher/bitmap_fetcher_service.h" 5 #include "chrome/browser/bitmap_fetcher/bitmap_fetcher_service.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 } 64 }
65 65
66 BitmapFetcherService::BitmapFetcherService(content::BrowserContext* context) 66 BitmapFetcherService::BitmapFetcherService(content::BrowserContext* context)
67 : cache_(kMaxCacheEntries), current_request_id_(1), context_(context) { 67 : cache_(kMaxCacheEntries), current_request_id_(1), context_(context) {
68 } 68 }
69 69
70 BitmapFetcherService::~BitmapFetcherService() { 70 BitmapFetcherService::~BitmapFetcherService() {
71 } 71 }
72 72
73 void BitmapFetcherService::CancelRequest(int request_id) { 73 void BitmapFetcherService::CancelRequest(int request_id) {
74 ScopedVector<BitmapFetcherRequest>::iterator iter; 74 for (auto iter = requests_.begin(); iter != requests_.end(); ++iter) {
75 for (iter = requests_.begin(); iter != requests_.end(); ++iter) {
76 if ((*iter)->request_id() == request_id) { 75 if ((*iter)->request_id() == request_id) {
77 requests_.erase(iter); 76 requests_.erase(iter);
78 // Deliberately leave the associated fetcher running to populate cache. 77 // Deliberately leave the associated fetcher running to populate cache.
79 return; 78 return;
80 } 79 }
81 } 80 }
82 } 81 }
83 82
84 BitmapFetcherService::RequestId BitmapFetcherService::RequestImage( 83 BitmapFetcherService::RequestId BitmapFetcherService::RequestImage(
85 const GURL& url, 84 const GURL& url,
86 Observer* observer, 85 Observer* observer,
87 const net::NetworkTrafficAnnotationTag& traffic_annotation) { 86 const net::NetworkTrafficAnnotationTag& traffic_annotation) {
88 // Create a new request, assigning next available request ID. 87 // Create a new request, assigning next available request ID.
89 ++current_request_id_; 88 ++current_request_id_;
90 if (current_request_id_ == REQUEST_ID_INVALID) 89 if (current_request_id_ == REQUEST_ID_INVALID)
91 ++current_request_id_; 90 ++current_request_id_;
92 int request_id = current_request_id_; 91 int request_id = current_request_id_;
93 std::unique_ptr<BitmapFetcherRequest> request( 92 auto request = base::MakeUnique<BitmapFetcherRequest>(request_id, observer);
94 new BitmapFetcherRequest(request_id, observer));
95 93
96 // Reject invalid URLs. 94 // Reject invalid URLs.
97 if (!url.is_valid()) 95 if (!url.is_valid())
98 return REQUEST_ID_INVALID; 96 return REQUEST_ID_INVALID;
99 97
100 // Check for existing images first. 98 // Check for existing images first.
101 auto iter = cache_.Get(url); 99 auto iter = cache_.Get(url);
102 if (iter != cache_.end()) { 100 if (iter != cache_.end()) {
103 BitmapFetcherService::CacheEntry* entry = iter->second.get(); 101 BitmapFetcherService::CacheEntry* entry = iter->second.get();
104 request->NotifyImageChanged(entry->bitmap.get()); 102 request->NotifyImageChanged(entry->bitmap.get());
105 103
106 // There is no request ID associated with this - data is already delivered. 104 // There is no request ID associated with this - data is already delivered.
107 return REQUEST_ID_INVALID; 105 return REQUEST_ID_INVALID;
108 } 106 }
109 107
110 // Limit number of simultaneous in-flight requests. 108 // Limit number of simultaneous in-flight requests.
111 if (requests_.size() > kMaxRequests) 109 if (requests_.size() > kMaxRequests)
112 return REQUEST_ID_INVALID; 110 return REQUEST_ID_INVALID;
113 111
114 // Make sure there's a fetcher for this URL and attach to request. 112 // Make sure there's a fetcher for this URL and attach to request.
115 const chrome::BitmapFetcher* fetcher = 113 const chrome::BitmapFetcher* fetcher =
116 EnsureFetcherForUrl(url, traffic_annotation); 114 EnsureFetcherForUrl(url, traffic_annotation);
117 request->set_fetcher(fetcher); 115 request->set_fetcher(fetcher);
118 116
119 requests_.push_back(request.release()); 117 requests_.push_back(std::move(request));
120 return requests_.back()->request_id(); 118 return requests_.back()->request_id();
121 } 119 }
122 120
123 void BitmapFetcherService::Prefetch( 121 void BitmapFetcherService::Prefetch(
124 const GURL& url, 122 const GURL& url,
125 const net::NetworkTrafficAnnotationTag& traffic_annotation) { 123 const net::NetworkTrafficAnnotationTag& traffic_annotation) {
126 if (url.is_valid()) 124 if (url.is_valid())
127 EnsureFetcherForUrl(url, traffic_annotation); 125 EnsureFetcherForUrl(url, traffic_annotation);
128 } 126 }
129 127
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 DCHECK(it != active_fetchers_.end()); 173 DCHECK(it != active_fetchers_.end());
176 active_fetchers_.erase(it); 174 active_fetchers_.erase(it);
177 } 175 }
178 176
179 void BitmapFetcherService::OnFetchComplete(const GURL& url, 177 void BitmapFetcherService::OnFetchComplete(const GURL& url,
180 const SkBitmap* bitmap) { 178 const SkBitmap* bitmap) {
181 const chrome::BitmapFetcher* fetcher = FindFetcherForUrl(url); 179 const chrome::BitmapFetcher* fetcher = FindFetcherForUrl(url);
182 DCHECK(fetcher); 180 DCHECK(fetcher);
183 181
184 // Notify all attached requests of completion. 182 // Notify all attached requests of completion.
185 ScopedVector<BitmapFetcherRequest>::iterator iter = requests_.begin(); 183 auto iter = requests_.begin();
186 while (iter != requests_.end()) { 184 while (iter != requests_.end()) {
187 if ((*iter)->get_fetcher() == fetcher) { 185 if ((*iter)->get_fetcher() == fetcher) {
188 (*iter)->NotifyImageChanged(bitmap); 186 (*iter)->NotifyImageChanged(bitmap);
189 iter = requests_.erase(iter); 187 iter = requests_.erase(iter);
190 } else { 188 } else {
191 ++iter; 189 ++iter;
192 } 190 }
193 } 191 }
194 192
195 if (bitmap && !bitmap->isNull()) { 193 if (bitmap && !bitmap->isNull()) {
196 std::unique_ptr<CacheEntry> entry(new CacheEntry); 194 std::unique_ptr<CacheEntry> entry(new CacheEntry);
197 entry->bitmap.reset(new SkBitmap(*bitmap)); 195 entry->bitmap.reset(new SkBitmap(*bitmap));
198 cache_.Put(fetcher->url(), std::move(entry)); 196 cache_.Put(fetcher->url(), std::move(entry));
199 } 197 }
200 198
201 RemoveFetcher(fetcher); 199 RemoveFetcher(fetcher);
202 } 200 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698