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

Side by Side Diff: chrome/browser/ui/toolbar/back_forward_menu_model.cc

Issue 10802066: Adds support for saving favicon size into history database. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 4 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 | Annotate | Revision Log
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 "build/build_config.h" 5 #include "build/build_config.h"
6 6
7 #include "chrome/browser/ui/toolbar/back_forward_menu_model.h" 7 #include "chrome/browser/ui/toolbar/back_forward_menu_model.h"
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 return; 246 return;
247 FaviconService::Handle handle = favicon_service->GetFaviconForURL( 247 FaviconService::Handle handle = favicon_service->GetFaviconForURL(
248 entry->GetURL(), history::FAVICON, &load_consumer_, 248 entry->GetURL(), history::FAVICON, &load_consumer_,
249 base::Bind(&BackForwardMenuModel::OnFavIconDataAvailable, 249 base::Bind(&BackForwardMenuModel::OnFavIconDataAvailable,
250 base::Unretained(this))); 250 base::Unretained(this)));
251 load_consumer_.SetClientData(favicon_service, handle, entry->GetUniqueID()); 251 load_consumer_.SetClientData(favicon_service, handle, entry->GetUniqueID());
252 } 252 }
253 253
254 void BackForwardMenuModel::OnFavIconDataAvailable( 254 void BackForwardMenuModel::OnFavIconDataAvailable(
255 FaviconService::Handle handle, 255 FaviconService::Handle handle,
256 history::FaviconData favicon) { 256 history::FaviconData favicon_data) {
257 if (favicon.is_valid()) { 257 if (favicon_data.is_valid()) {
258 int unique_id = load_consumer_.GetClientDataForCurrentRequest(); 258 int unique_id = load_consumer_.GetClientDataForCurrentRequest();
259 // Find the current model_index for the unique_id. 259 // Find the current model_index for the unique_id.
260 NavigationEntry* entry = NULL; 260 NavigationEntry* entry = NULL;
261 int model_index = -1; 261 int model_index = -1;
262 for (int i = 0; i < GetItemCount() - 1; i++) { 262 for (int i = 0; i < GetItemCount() - 1; i++) {
263 if (IsSeparator(i)) 263 if (IsSeparator(i))
264 continue; 264 continue;
265 if (GetNavigationEntry(i)->GetUniqueID() == unique_id) { 265 if (GetNavigationEntry(i)->GetUniqueID() == unique_id) {
266 model_index = i; 266 model_index = i;
267 entry = GetNavigationEntry(i); 267 entry = GetNavigationEntry(i);
268 break; 268 break;
269 } 269 }
270 } 270 }
271 271
272 if (!entry) 272 if (!entry)
273 // The NavigationEntry wasn't found, this can happen if the user 273 // The NavigationEntry wasn't found, this can happen if the user
274 // navigates to another page and a NavigatationEntry falls out of the 274 // navigates to another page and a NavigatationEntry falls out of the
275 // range of kMaxHistoryItems. 275 // range of kMaxHistoryItems.
276 return; 276 return;
277 277
278 // Now that we have a valid NavigationEntry, decode the favicon and assign 278 // Now that we have a valid NavigationEntry, decode the favicon and assign
279 // it to the NavigationEntry. 279 // it to the NavigationEntry.
280 const history::FaviconDataElement& element = favicon_data.elements[0];
280 SkBitmap fav_icon; 281 SkBitmap fav_icon;
281 if (gfx::PNGCodec::Decode(favicon.image_data->front(), 282 if (gfx::PNGCodec::Decode(element.bitmap_data->front(),
282 favicon.image_data->size(), 283 element.bitmap_data->size(),
283 &fav_icon)) { 284 &fav_icon)) {
284 entry->GetFavicon().valid = true; 285 entry->GetFavicon().valid = true;
285 entry->GetFavicon().url = favicon.icon_url; 286 entry->GetFavicon().url = element.icon_url;
286 if (fav_icon.empty()) 287 if (fav_icon.empty())
287 return; 288 return;
288 // TODO: Once the history service returns more representations, 289 // TODO: Once the history service returns more representations,
289 // use them all instead of having just the lodpi favicon. 290 // use them all instead of having just the lodpi favicon.
290 entry->GetFavicon().image = gfx::Image(fav_icon); 291 entry->GetFavicon().image = gfx::Image(fav_icon);
291 if (menu_model_delegate()) { 292 if (menu_model_delegate()) {
292 menu_model_delegate()->OnIconChanged(model_index); 293 menu_model_delegate()->OnIconChanged(model_index);
293 } 294 }
294 } 295 }
295 } 296 }
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 metric_string += "ForwardMenu_"; 471 metric_string += "ForwardMenu_";
471 else 472 else
472 metric_string += "BackMenu_"; 473 metric_string += "BackMenu_";
473 metric_string += action; 474 metric_string += action;
474 if (index != -1) { 475 if (index != -1) {
475 // +1 is for historical reasons (indices used to start at 1). 476 // +1 is for historical reasons (indices used to start at 1).
476 metric_string += base::IntToString(index + 1); 477 metric_string += base::IntToString(index + 1);
477 } 478 }
478 return metric_string; 479 return metric_string;
479 } 480 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698