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

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 479 matching lines...) Expand 10 before | Expand all | Expand 10 after
490 void WebIntentPickerController::AddServiceToModel( 490 void WebIntentPickerController::AddServiceToModel(
491 const webkit_glue::WebIntentServiceData& service) { 491 const webkit_glue::WebIntentServiceData& service) {
492 FaviconService* favicon_service = GetFaviconService(tab_contents_); 492 FaviconService* favicon_service = GetFaviconService(tab_contents_);
493 493
494 picker_model_->AddInstalledService( 494 picker_model_->AddInstalledService(
495 service.title, 495 service.title,
496 service.service_url, 496 service.service_url,
497 service.disposition); 497 service.disposition);
498 498
499 pending_async_count_++; 499 pending_async_count_++;
500 FaviconService::Handle handle = favicon_service->GetFaviconForURL( 500 FaviconService::Handle handle = favicon_service->GetFaviconImageForURL(
501 tab_contents_->profile(), 501 tab_contents_->profile(),
502 service.service_url, 502 service.service_url,
503 history::FAVICON, 503 history::FAVICON,
504 gfx::kFaviconSize,
504 &favicon_consumer_, 505 &favicon_consumer_,
505 base::Bind( 506 base::Bind(
506 &WebIntentPickerController::OnFaviconDataAvailable, 507 &WebIntentPickerController::OnFaviconDataAvailable,
507 weak_ptr_factory_.GetWeakPtr())); 508 weak_ptr_factory_.GetWeakPtr()));
508 favicon_consumer_.SetClientData( 509 favicon_consumer_.SetClientData(
509 favicon_service, handle, picker_model_->GetInstalledServiceCount() - 1); 510 favicon_service, handle, picker_model_->GetInstalledServiceCount() - 1);
510 } 511 }
511 512
512 void WebIntentPickerController::OnWebIntentServicesAvailable( 513 void WebIntentPickerController::OnWebIntentServicesAvailable(
513 const std::vector<webkit_glue::WebIntentServiceData>& services) { 514 const std::vector<webkit_glue::WebIntentServiceData>& services) {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
567 InvokeService(*default_service); 568 InvokeService(*default_service);
568 return; 569 return;
569 } 570 }
570 } 571 }
571 572
572 OnPickerEvent(kPickerEventRegistryDataComplete); 573 OnPickerEvent(kPickerEventRegistryDataComplete);
573 OnIntentDataArrived(); 574 OnIntentDataArrived();
574 } 575 }
575 576
576 void WebIntentPickerController::OnFaviconDataAvailable( 577 void WebIntentPickerController::OnFaviconDataAvailable(
577 FaviconService::Handle handle, history::FaviconData favicon_data) { 578 FaviconService::Handle handle,
579 const history::FaviconImageResult& image_result) {
578 size_t index = favicon_consumer_.GetClientDataForCurrentRequest(); 580 size_t index = favicon_consumer_.GetClientDataForCurrentRequest();
579 if (favicon_data.is_valid()) { 581 if (!image_result.image.IsEmpty()) {
580 SkBitmap icon_bitmap; 582 picker_model_->UpdateFaviconAt(index, image_result.image);
581 583 return;
582 if (gfx::PNGCodec::Decode(favicon_data.image_data->front(),
583 favicon_data.image_data->size(),
584 &icon_bitmap)) {
585 gfx::Image icon_image(icon_bitmap);
586 picker_model_->UpdateFaviconAt(index, icon_image);
587 return;
588 }
589 } 584 }
590 585
591 AsyncOperationFinished(); 586 AsyncOperationFinished();
592 } 587 }
593 588
594 void WebIntentPickerController::OnCWSIntentServicesAvailable( 589 void WebIntentPickerController::OnCWSIntentServicesAvailable(
595 const CWSIntentsRegistry::IntentExtensionList& extensions) { 590 const CWSIntentsRegistry::IntentExtensionList& extensions) {
596 ExtensionServiceInterface* extension_service = 591 ExtensionServiceInterface* extension_service =
597 tab_contents_->profile()->GetExtensionService(); 592 tab_contents_->profile()->GetExtensionService();
598 593
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
934 picker_->SetActionString(GetIntentActionString( 929 picker_->SetActionString(GetIntentActionString(
935 UTF16ToUTF8(picker_model_->action()))); 930 UTF16ToUTF8(picker_model_->action())));
936 picker_shown_ = true; 931 picker_shown_ = true;
937 } 932 }
938 933
939 void WebIntentPickerController::ClosePicker() { 934 void WebIntentPickerController::ClosePicker() {
940 SetDialogState(kPickerHidden); 935 SetDialogState(kPickerHidden);
941 if (picker_) 936 if (picker_)
942 picker_->Close(); 937 picker_->Close();
943 } 938 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698