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

Side by Side Diff: chrome/browser/ui/intents/web_intent_picker_controller.cc

Issue 10870022: Change FaviconData to be able to return data for multiple bitmaps for same icon URL (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 3 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 "chrome/browser/ui/intents/web_intent_picker_controller.h" 5 #include "chrome/browser/ui/intents/web_intent_picker_controller.h"
6 6
7 #include <vector> 7 #include <vector>
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 486 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 void WebIntentPickerController::AddServiceToModel( 497 void WebIntentPickerController::AddServiceToModel(
498 const webkit_glue::WebIntentServiceData& service) { 498 const webkit_glue::WebIntentServiceData& service) {
499 FaviconService* favicon_service = GetFaviconService(tab_contents_); 499 FaviconService* favicon_service = GetFaviconService(tab_contents_);
500 500
501 picker_model_->AddInstalledService( 501 picker_model_->AddInstalledService(
502 service.title, 502 service.title,
503 service.service_url, 503 service.service_url,
504 service.disposition); 504 service.disposition);
505 505
506 pending_async_count_++; 506 pending_async_count_++;
507 FaviconService::Handle handle = favicon_service->GetFaviconForURL( 507 FaviconService::Handle handle = favicon_service->GetFaviconImageForURL(
508 tab_contents_->profile(), 508 tab_contents_->profile(),
509 service.service_url, 509 service.service_url,
510 history::FAVICON, 510 history::FAVICON,
511 gfx::kFaviconSize,
511 &favicon_consumer_, 512 &favicon_consumer_,
512 base::Bind( 513 base::Bind(
513 &WebIntentPickerController::OnFaviconDataAvailable, 514 &WebIntentPickerController::OnFaviconDataAvailable,
514 weak_ptr_factory_.GetWeakPtr())); 515 weak_ptr_factory_.GetWeakPtr()));
515 favicon_consumer_.SetClientData( 516 favicon_consumer_.SetClientData(
516 favicon_service, handle, picker_model_->GetInstalledServiceCount() - 1); 517 favicon_service, handle, picker_model_->GetInstalledServiceCount() - 1);
517 } 518 }
518 519
519 void WebIntentPickerController::OnWebIntentServicesAvailable( 520 void WebIntentPickerController::OnWebIntentServicesAvailable(
520 const std::vector<webkit_glue::WebIntentServiceData>& services) { 521 const std::vector<webkit_glue::WebIntentServiceData>& services) {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
574 InvokeService(*default_service); 575 InvokeService(*default_service);
575 return; 576 return;
576 } 577 }
577 } 578 }
578 579
579 OnPickerEvent(kPickerEventRegistryDataComplete); 580 OnPickerEvent(kPickerEventRegistryDataComplete);
580 OnIntentDataArrived(); 581 OnIntentDataArrived();
581 } 582 }
582 583
583 void WebIntentPickerController::OnFaviconDataAvailable( 584 void WebIntentPickerController::OnFaviconDataAvailable(
584 FaviconService::Handle handle, history::FaviconData favicon_data) { 585 FaviconService::Handle handle,
586 const history::FaviconImageResult& image_result) {
585 size_t index = favicon_consumer_.GetClientDataForCurrentRequest(); 587 size_t index = favicon_consumer_.GetClientDataForCurrentRequest();
586 if (favicon_data.is_valid()) { 588 if (!image_result.image.IsEmpty()) {
587 SkBitmap icon_bitmap; 589 picker_model_->UpdateFaviconAt(index, image_result.image);
588 590 return;
589 if (gfx::PNGCodec::Decode(favicon_data.image_data->front(),
590 favicon_data.image_data->size(),
591 &icon_bitmap)) {
592 gfx::Image icon_image(icon_bitmap);
593 picker_model_->UpdateFaviconAt(index, icon_image);
594 return;
595 }
596 } 591 }
597 592
598 AsyncOperationFinished(); 593 AsyncOperationFinished();
599 } 594 }
600 595
601 void WebIntentPickerController::OnCWSIntentServicesAvailable( 596 void WebIntentPickerController::OnCWSIntentServicesAvailable(
602 const CWSIntentsRegistry::IntentExtensionList& extensions) { 597 const CWSIntentsRegistry::IntentExtensionList& extensions) {
603 ExtensionServiceInterface* extension_service = 598 ExtensionServiceInterface* extension_service =
604 tab_contents_->profile()->GetExtensionService(); 599 tab_contents_->profile()->GetExtensionService();
605 600
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after
942 picker_->SetActionString(GetIntentActionString( 937 picker_->SetActionString(GetIntentActionString(
943 UTF16ToUTF8(picker_model_->action()))); 938 UTF16ToUTF8(picker_model_->action())));
944 picker_shown_ = true; 939 picker_shown_ = true;
945 } 940 }
946 941
947 void WebIntentPickerController::ClosePicker() { 942 void WebIntentPickerController::ClosePicker() {
948 SetDialogState(kPickerHidden); 943 SetDialogState(kPickerHidden);
949 if (picker_) 944 if (picker_)
950 picker_->Close(); 945 picker_->Close();
951 } 946 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698