Chromium Code Reviews| Index: chrome/browser/android/most_visited_sites.cc |
| diff --git a/chrome/browser/android/most_visited_sites.cc b/chrome/browser/android/most_visited_sites.cc |
| index 6fc326f7d9426cbad6c43d979ed6810d674a4b71..5b572fd686928ae33df638410397adb666505554 100644 |
| --- a/chrome/browser/android/most_visited_sites.cc |
| +++ b/chrome/browser/android/most_visited_sites.cc |
| @@ -4,6 +4,9 @@ |
| #include "chrome/browser/android/most_visited_sites.h" |
| +#include <string> |
| +#include <vector> |
| + |
| #include "base/android/jni_android.h" |
| #include "base/android/jni_array.h" |
| #include "base/android/jni_string.h" |
| @@ -11,7 +14,6 @@ |
| #include "base/strings/utf_string_conversions.h" |
| #include "base/time/time.h" |
| #include "chrome/browser/chrome_notification_types.h" |
| -#include "chrome/browser/history/history_types.h" |
| #include "chrome/browser/history/top_sites.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/browser/profiles/profile_android.h" |
| @@ -60,22 +62,6 @@ void ExtractMostVisitedTitlesAndURLs( |
| } |
| } |
| -void OnMostVisitedURLsAvailable( |
| - ScopedJavaGlobalRef<jobject>* j_observer, |
| - int num_sites, |
| - const history::MostVisitedURLList& visited_list) { |
| - std::vector<base::string16> titles; |
| - std::vector<std::string> urls; |
| - ExtractMostVisitedTitlesAndURLs(visited_list, &titles, &urls, num_sites); |
| - |
| - JNIEnv* env = AttachCurrentThread(); |
| - Java_MostVisitedURLsObserver_onMostVisitedURLsAvailable( |
| - env, |
| - j_observer->obj(), |
| - ToJavaArrayOfStrings(env, titles).obj(), |
| - ToJavaArrayOfStrings(env, urls).obj()); |
| -} |
| - |
| SkBitmap ExtractThumbnail(const base::RefCountedMemory& image_data) { |
| scoped_ptr<SkBitmap> image(gfx::JPEGCodec::Decode( |
| image_data.front(), |
| @@ -197,12 +183,32 @@ void MostVisitedSites::GetURLThumbnail(JNIEnv* env, |
| void MostVisitedSites::BlacklistUrl(JNIEnv* env, |
| jobject obj, |
| jstring j_url) { |
| - TopSites* top_sites = profile_->GetTopSites(); |
| - if (!top_sites) |
| - return; |
| - |
| std::string url_string = ConvertJavaStringToUTF8(env, j_url); |
| - top_sites->AddBlacklistedURL(GURL(url_string)); |
| + GURL url(url_string); |
|
Mathieu
2014/05/22 21:50:49
I guess you could move this in top_sites->AddBlack
manzagop (departed)
2014/05/23 15:20:02
Done.
|
| + |
| + switch (mv_source_) { |
| + case TOP_SITES: { |
| + TopSites* top_sites = profile_->GetTopSites(); |
| + if (top_sites) { |
| + top_sites->AddBlacklistedURL(url); |
| + } |
| + break; |
| + } |
| + |
| + case SUGGESTIONS_SERVICE: { |
| + SuggestionsService* suggestions_service = |
| + SuggestionsServiceFactory::GetForProfile(profile_); |
| + if (suggestions_service) { |
|
Mathieu
2014/05/22 21:50:49
Aren't we certain at this point that the service e
manzagop (departed)
2014/05/23 15:20:02
If services can't be turned off, then yes. Still,
|
| + suggestions_service->AddBlacklistedURL( |
| + url_string, |
|
Mathieu
2014/05/22 21:50:49
This should probably take a GURL as well.
manzagop (departed)
2014/05/23 15:20:02
Done.
|
| + base::Bind( |
| + &MostVisitedSites::OnSuggestionsProfileAvailable, |
| + weak_ptr_factory_.GetWeakPtr(), |
| + base::Owned(new ScopedJavaGlobalRef<jobject>(observer_)))); |
| + } |
| + break; |
| + } |
| + } |
| } |
| void MostVisitedSites::Observe(int type, |
| @@ -220,10 +226,8 @@ bool MostVisitedSites::Register(JNIEnv* env) { |
| } |
| void MostVisitedSites::QueryMostVisitedURLs() { |
| - SuggestionsServiceFactory* suggestions_service_factory = |
| - SuggestionsServiceFactory::GetInstance(); |
| SuggestionsService* suggestions_service = |
| - suggestions_service_factory->GetForProfile(profile_); |
| + SuggestionsServiceFactory::GetForProfile(profile_); |
| if (suggestions_service) { |
| // Suggestions service is enabled, initiate a query. |
| suggestions_service->FetchSuggestionsData( |
| @@ -243,12 +247,31 @@ void MostVisitedSites::InitiateTopSitesQuery() { |
| top_sites->GetMostVisitedURLs( |
| base::Bind( |
| - &OnMostVisitedURLsAvailable, |
| + &MostVisitedSites::OnMostVisitedURLsAvailable, |
| + weak_ptr_factory_.GetWeakPtr(), |
| base::Owned(new ScopedJavaGlobalRef<jobject>(observer_)), |
| num_sites_), |
| false); |
| } |
| +void MostVisitedSites::OnMostVisitedURLsAvailable( |
| + ScopedJavaGlobalRef<jobject>* j_observer, |
| + int num_sites, |
| + const history::MostVisitedURLList& visited_list) { |
| + std::vector<base::string16> titles; |
| + std::vector<std::string> urls; |
| + ExtractMostVisitedTitlesAndURLs(visited_list, &titles, &urls, num_sites); |
| + |
| + mv_source_ = TOP_SITES; |
| + |
| + JNIEnv* env = AttachCurrentThread(); |
| + Java_MostVisitedURLsObserver_onMostVisitedURLsAvailable( |
| + env, |
| + j_observer->obj(), |
| + ToJavaArrayOfStrings(env, titles).obj(), |
| + ToJavaArrayOfStrings(env, urls).obj()); |
| +} |
| + |
| void MostVisitedSites::OnSuggestionsProfileAvailable( |
| ScopedJavaGlobalRef<jobject>* j_observer, |
| const SuggestionsProfile& suggestions_profile) { |
| @@ -267,6 +290,8 @@ void MostVisitedSites::OnSuggestionsProfileAvailable( |
| urls.push_back(suggestion.url()); |
| } |
| + mv_source_ = SUGGESTIONS_SERVICE; |
| + |
| JNIEnv* env = AttachCurrentThread(); |
| Java_MostVisitedURLsObserver_onMostVisitedURLsAvailable( |
| env, |