diff options
-rw-r--r-- | chrome/browser/android/provider/chrome_browser_provider.cc | 22 | ||||
-rw-r--r-- | chrome/browser/android/provider/chrome_browser_provider.h | 1 |
2 files changed, 12 insertions, 11 deletions
diff --git a/chrome/browser/android/provider/chrome_browser_provider.cc b/chrome/browser/android/provider/chrome_browser_provider.cc index c3bd2d6..a62de40 100644 --- a/chrome/browser/android/provider/chrome_browser_provider.cc +++ b/chrome/browser/android/provider/chrome_browser_provider.cc @@ -650,10 +650,12 @@ class AsyncServiceRequest : protected BlockingUIThreadAsyncRequest { // Base class for all asynchronous blocking tasks that use the favicon service. class FaviconServiceTask : public AsyncServiceRequest<FaviconService> { public: - FaviconServiceTask(FaviconService* service, - base::CancelableTaskTracker* cancelable_tracker, + FaviconServiceTask(base::CancelableTaskTracker* cancelable_tracker, Profile* profile) - : AsyncServiceRequest<FaviconService>(service, cancelable_tracker), + : AsyncServiceRequest<FaviconService>( + FaviconServiceFactory::GetForProfile(profile, + Profile::EXPLICIT_ACCESS), + cancelable_tracker), profile_(profile) {} Profile* profile() const { return profile_; } @@ -667,15 +669,18 @@ class FaviconServiceTask : public AsyncServiceRequest<FaviconService> { // Retrieves the favicon or touch icon for a URL from the FaviconService. class BookmarkIconFetchTask : public FaviconServiceTask { public: - BookmarkIconFetchTask(FaviconService* favicon_service, - base::CancelableTaskTracker* cancelable_tracker, + BookmarkIconFetchTask(base::CancelableTaskTracker* cancelable_tracker, Profile* profile) - : FaviconServiceTask(favicon_service, cancelable_tracker, profile) {} + : FaviconServiceTask(cancelable_tracker, profile) {} favicon_base::FaviconRawBitmapResult Run(const GURL& url) { float max_scale = ui::GetScaleForScaleFactor( ResourceBundle::GetSharedInstance().GetMaxScaleFactor()); int desired_size_in_pixel = std::ceil(gfx::kFaviconSize * max_scale); + + if (service() == NULL) + return favicon_base::FaviconRawBitmapResult(); + RunAsyncRequestOnUIThreadBlocking( base::Bind(&FaviconService::GetRawFaviconForPageURL, base::Unretained(service()), @@ -1162,8 +1167,6 @@ ChromeBrowserProvider::ChromeBrowserProvider(JNIEnv* env, jobject obj) bookmark_model_ = BookmarkModelFactory::GetForProfile(profile_); top_sites_ = profile_->GetTopSites(); service_.reset(new AndroidHistoryProviderService(profile_)); - favicon_service_.reset(FaviconServiceFactory::GetForProfile(profile_, - Profile::EXPLICIT_ACCESS)); // Registers the notifications we are interested. bookmark_model_->AddObserver(this); @@ -1550,8 +1553,7 @@ ScopedJavaLocalRef<jbyteArray> ChromeBrowserProvider::GetFaviconOrTouchIcon( return ScopedJavaLocalRef<jbyteArray>(); GURL url = GURL(ConvertJavaStringToUTF16(env, jurl)); - BookmarkIconFetchTask favicon_task( - favicon_service_.get(), &cancelable_task_tracker_, profile_); + BookmarkIconFetchTask favicon_task(&cancelable_task_tracker_, profile_); favicon_base::FaviconRawBitmapResult bitmap_result = favicon_task.Run(url); if (!bitmap_result.is_valid() || !bitmap_result.bitmap_data.get()) diff --git a/chrome/browser/android/provider/chrome_browser_provider.h b/chrome/browser/android/provider/chrome_browser_provider.h index 13c65a4..f0e9661 100644 --- a/chrome/browser/android/provider/chrome_browser_provider.h +++ b/chrome/browser/android/provider/chrome_browser_provider.h @@ -209,7 +209,6 @@ class ChromeBrowserProvider : public BaseBookmarkModelObserver, history::TopSites* top_sites_; scoped_ptr<AndroidHistoryProviderService> service_; - scoped_ptr<FaviconService> favicon_service_; base::CancelableTaskTracker cancelable_task_tracker_; |