Index: chrome/browser/ui/intents/web_intent_picker_controller.cc |
diff --git a/chrome/browser/ui/intents/web_intent_picker_controller.cc b/chrome/browser/ui/intents/web_intent_picker_controller.cc |
index d25caabe711c34cc9a0c7910dd728cdeea68b612..44a63502ba50db041e7b6f4858c3e09ac314f2d8 100644 |
--- a/chrome/browser/ui/intents/web_intent_picker_controller.cc |
+++ b/chrome/browser/ui/intents/web_intent_picker_controller.cc |
@@ -16,8 +16,6 @@ |
#include "chrome/browser/extensions/extension_service.h" |
#include "chrome/browser/extensions/platform_app_launcher.h" |
#include "chrome/browser/extensions/webstore_installer.h" |
-#include "chrome/browser/favicon/favicon_service.h" |
-#include "chrome/browser/favicon/favicon_service_factory.h" |
#include "chrome/browser/intents/cws_intents_registry_factory.h" |
#include "chrome/browser/intents/default_web_intent_service.h" |
#include "chrome/browser/intents/intent_service_host.h" |
@@ -33,6 +31,7 @@ |
#include "chrome/browser/ui/browser_tabstrip.h" |
#include "chrome/browser/ui/browser_window.h" |
#include "chrome/browser/ui/constrained_window_tab_helper.h" |
+#include "chrome/browser/ui/intents/web_intent_icon_loader.h" |
#include "chrome/browser/ui/intents/web_intent_picker.h" |
#include "chrome/browser/ui/intents/web_intent_picker_model.h" |
#include "chrome/browser/ui/tab_contents/tab_contents.h" |
@@ -65,13 +64,6 @@ const int kMaxHiddenSetupTimeMs = 200; |
// Minimum amount of time to show waiting dialog, if it is shown. |
const int kMinThrobberDisplayTimeMs = 800; |
- |
-// Gets the favicon service for the specified profile. |
-FaviconService* GetFaviconService(Profile* profile) { |
- return FaviconServiceFactory::GetForProfile(profile, |
- Profile::EXPLICIT_ACCESS); |
-} |
- |
// Gets the web intents registry for the specified profile. |
WebIntentsRegistry* GetWebIntentsRegistry(Profile* profile) { |
return WebIntentsRegistryFactory::GetForProfile(profile); |
@@ -113,7 +105,6 @@ void URLFetcherTrampoline::OnURLFetchComplete( |
delete source; |
delete this; |
} |
- |
class SourceWindowObserver : content::WebContentsObserver { |
public: |
SourceWindowObserver(content::WebContents* web_contents, |
@@ -187,6 +178,7 @@ WebIntentPickerController::WebIntentPickerController( |
source_intents_dispatcher_(NULL), |
intents_dispatcher_(NULL), |
service_tab_(NULL), |
+ icon_loader_(NULL), |
ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)), |
ALLOW_THIS_IN_INITIALIZER_LIST(timer_factory_(this)), |
ALLOW_THIS_IN_INITIALIZER_LIST(dispatcher_factory_(this)) { |
@@ -194,6 +186,8 @@ WebIntentPickerController::WebIntentPickerController( |
#if defined(TOOLKIT_VIEWS) |
cancelled_ = true; |
#endif |
+ icon_loader_.reset( |
+ new web_intents::IconLoader(profile_, picker_model_.get())); |
} |
WebIntentPickerController::~WebIntentPickerController() { |
@@ -613,26 +607,13 @@ void WebIntentPickerController::OnSendReturnMessage( |
void WebIntentPickerController::AddServiceToModel( |
const webkit_glue::WebIntentServiceData& service) { |
- FaviconService* favicon_service = GetFaviconService(profile_); |
picker_model_->AddInstalledService( |
service.title, |
service.service_url, |
service.disposition); |
- pending_async_count_++; |
- FaviconService::Handle handle = favicon_service->GetFaviconImageForURL( |
- FaviconService::FaviconForURLParams( |
- profile_, |
- service.service_url, |
- history::FAVICON, |
- gfx::kFaviconSize, |
- &favicon_consumer_), |
- base::Bind( |
- &WebIntentPickerController::OnFaviconDataAvailable, |
- weak_ptr_factory_.GetWeakPtr())); |
- favicon_consumer_.SetClientData( |
- favicon_service, handle, picker_model_->GetInstalledServiceCount() - 1); |
+ icon_loader_->LoadFavicon(service.service_url); |
} |
void WebIntentPickerController::OnWebIntentServicesAvailable( |
@@ -697,18 +678,6 @@ void WebIntentPickerController::RegistryCallsCompleted() { |
OnIntentDataArrived(); |
} |
-void WebIntentPickerController::OnFaviconDataAvailable( |
- FaviconService::Handle handle, |
- const history::FaviconImageResult& image_result) { |
- size_t index = favicon_consumer_.GetClientDataForCurrentRequest(); |
- if (!image_result.image.IsEmpty()) { |
- picker_model_->UpdateFaviconAt(index, image_result.image); |
- return; |
- } |
- |
- AsyncOperationFinished(); |
-} |
- |
void WebIntentPickerController::OnCWSIntentServicesAvailable( |
const CWSIntentsRegistry::IntentExtensionList& extensions) { |
ExtensionServiceInterface* extension_service = |
@@ -812,7 +781,11 @@ void WebIntentPickerController::Reset() { |
pending_cws_request_ = false; |
// Reset picker. |
+ icon_loader_.reset(); |
picker_model_.reset(new WebIntentPickerModel()); |
+ icon_loader_.reset( |
+ new web_intents::IconLoader(profile_, picker_model_.get())); |
+ |
picker_shown_ = false; |
DCHECK(web_contents_); |