OLD | NEW |
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 "chrome/browser/ui/webui/favicon_source.h" | 5 #include "chrome/browser/ui/webui/favicon_source.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
9 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
10 #include "chrome/browser/favicon/favicon_service_factory.h" | 10 #include "chrome/browser/favicon/favicon_service_factory.h" |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 if (url.spec() == | 100 if (url.spec() == |
101 l10n_util::GetStringUTF8(history::kPrepopulatedPages[i].url_id)) { | 101 l10n_util::GetStringUTF8(history::kPrepopulatedPages[i].url_id)) { |
102 callback.Run( | 102 callback.Run( |
103 ResourceBundle::GetSharedInstance().LoadDataResourceBytesForScale( | 103 ResourceBundle::GetSharedInstance().LoadDataResourceBytesForScale( |
104 history::kPrepopulatedPages[i].favicon_id, | 104 history::kPrepopulatedPages[i].favicon_id, |
105 scale_factor)); | 105 scale_factor)); |
106 return; | 106 return; |
107 } | 107 } |
108 } | 108 } |
109 | 109 |
110 favicon_service->GetRawFaviconForURL( | 110 favicon_service->GetRawFaviconForPageURL( |
111 FaviconService::FaviconForURLParams(url, icon_types_, | 111 FaviconService::FaviconForPageURLParams( |
112 parsed.size_in_dip), | 112 url, icon_types_, parsed.size_in_dip), |
113 scale_factor, | 113 scale_factor, |
114 base::Bind(&FaviconSource::OnFaviconDataAvailable, | 114 base::Bind( |
115 base::Unretained(this), | 115 &FaviconSource::OnFaviconDataAvailable, |
116 IconRequest(callback, | 116 base::Unretained(this), |
117 url, | 117 IconRequest(callback, url, parsed.size_in_dip, scale_factor)), |
118 parsed.size_in_dip, | |
119 scale_factor)), | |
120 &cancelable_task_tracker_); | 118 &cancelable_task_tracker_); |
121 } | 119 } |
122 } | 120 } |
123 | 121 |
124 std::string FaviconSource::GetMimeType(const std::string&) const { | 122 std::string FaviconSource::GetMimeType(const std::string&) const { |
125 // We need to explicitly return a mime type, otherwise if the user tries to | 123 // We need to explicitly return a mime type, otherwise if the user tries to |
126 // drag the image they get no extension. | 124 // drag the image they get no extension. |
127 return "image/png"; | 125 return "image/png"; |
128 } | 126 } |
129 | 127 |
(...skipping 21 matching lines...) Expand all Loading... |
151 open_tabs->GetSyncedFaviconForPageURL(request.request_path.spec(), | 149 open_tabs->GetSyncedFaviconForPageURL(request.request_path.spec(), |
152 &response)) { | 150 &response)) { |
153 request.callback.Run(response.get()); | 151 request.callback.Run(response.get()); |
154 return true; | 152 return true; |
155 } | 153 } |
156 return false; | 154 return false; |
157 } | 155 } |
158 | 156 |
159 void FaviconSource::OnFaviconDataAvailable( | 157 void FaviconSource::OnFaviconDataAvailable( |
160 const IconRequest& request, | 158 const IconRequest& request, |
161 const favicon_base::FaviconBitmapResult& bitmap_result) { | 159 const favicon_base::FaviconRawBitmapResult& bitmap_result) { |
162 if (bitmap_result.is_valid()) { | 160 if (bitmap_result.is_valid()) { |
163 // Forward the data along to the networking system. | 161 // Forward the data along to the networking system. |
164 request.callback.Run(bitmap_result.bitmap_data.get()); | 162 request.callback.Run(bitmap_result.bitmap_data.get()); |
165 } else if (!HandleMissingResource(request)) { | 163 } else if (!HandleMissingResource(request)) { |
166 SendDefaultResponse(request); | 164 SendDefaultResponse(request); |
167 } | 165 } |
168 } | 166 } |
169 | 167 |
170 void FaviconSource::SendDefaultResponse( | 168 void FaviconSource::SendDefaultResponse( |
171 const content::URLDataSource::GotDataCallback& callback) { | 169 const content::URLDataSource::GotDataCallback& callback) { |
(...skipping 23 matching lines...) Expand all Loading... |
195 | 193 |
196 if (!default_favicon) { | 194 if (!default_favicon) { |
197 default_favicon = ResourceBundle::GetSharedInstance() | 195 default_favicon = ResourceBundle::GetSharedInstance() |
198 .LoadDataResourceBytesForScale(resource_id, | 196 .LoadDataResourceBytesForScale(resource_id, |
199 icon_request.scale_factor); | 197 icon_request.scale_factor); |
200 default_favicons_[favicon_index] = default_favicon; | 198 default_favicons_[favicon_index] = default_favicon; |
201 } | 199 } |
202 | 200 |
203 icon_request.callback.Run(default_favicon); | 201 icon_request.callback.Run(default_favicon); |
204 } | 202 } |
OLD | NEW |