| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/android/ntp/most_visited_sites_bridge.h" | 5 #include "chrome/browser/android/ntp/most_visited_sites_bridge.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/android/jni_android.h" | 9 #include "base/android/jni_android.h" |
| 10 #include "base/android/jni_array.h" | 10 #include "base/android/jni_array.h" |
| 11 #include "base/android/jni_string.h" | 11 #include "base/android/jni_string.h" |
| 12 #include "base/android/scoped_java_ref.h" | 12 #include "base/android/scoped_java_ref.h" |
| 13 #include "base/bind.h" | 13 #include "base/bind.h" |
| 14 #include "base/callback.h" | 14 #include "base/callback.h" |
| 15 #include "chrome/browser/android/ntp/popular_sites.h" |
| 15 #include "chrome/browser/profiles/profile_android.h" | 16 #include "chrome/browser/profiles/profile_android.h" |
| 16 #include "jni/MostVisitedSites_jni.h" | 17 #include "jni/MostVisitedSites_jni.h" |
| 17 #include "ui/gfx/android/java_bitmap.h" | 18 #include "ui/gfx/android/java_bitmap.h" |
| 18 #include "url/gurl.h" | 19 #include "url/gurl.h" |
| 19 | 20 |
| 20 using base::android::AttachCurrentThread; | 21 using base::android::AttachCurrentThread; |
| 21 using base::android::ConvertJavaStringToUTF8; | 22 using base::android::ConvertJavaStringToUTF8; |
| 22 using base::android::ScopedJavaGlobalRef; | 23 using base::android::ScopedJavaGlobalRef; |
| 23 using base::android::ScopedJavaLocalRef; | 24 using base::android::ScopedJavaLocalRef; |
| 24 using base::android::ToJavaArrayOfStrings; | 25 using base::android::ToJavaArrayOfStrings; |
| 25 | 26 |
| 26 namespace { | 27 namespace { |
| 27 | 28 |
| 28 void CallJavaWithBitmap( | 29 void CallJavaWithBitmap( |
| 29 std::unique_ptr<ScopedJavaGlobalRef<jobject>> j_callback, | 30 std::unique_ptr<ScopedJavaGlobalRef<jobject>> j_callback, |
| 30 bool is_local_thumbnail, | 31 bool is_local_thumbnail, |
| 31 const SkBitmap* bitmap) { | 32 const SkBitmap* bitmap) { |
| 32 JNIEnv* env = AttachCurrentThread(); | 33 JNIEnv* env = AttachCurrentThread(); |
| 33 ScopedJavaLocalRef<jobject> j_bitmap; | 34 ScopedJavaLocalRef<jobject> j_bitmap; |
| 34 if (bitmap) | 35 if (bitmap) |
| 35 j_bitmap = gfx::ConvertToJavaBitmap(bitmap); | 36 j_bitmap = gfx::ConvertToJavaBitmap(bitmap); |
| 36 Java_ThumbnailCallback_onMostVisitedURLsThumbnailAvailable( | 37 Java_ThumbnailCallback_onMostVisitedURLsThumbnailAvailable( |
| 37 env, j_callback->obj(), j_bitmap.obj(), is_local_thumbnail); | 38 env, j_callback->obj(), j_bitmap.obj(), is_local_thumbnail); |
| 38 } | 39 } |
| 39 | 40 |
| 40 } // namespace | 41 } // namespace |
| 41 | 42 |
| 42 class MostVisitedSitesBridge::Observer | 43 class MostVisitedSitesBridge::Observer |
| 43 : public MostVisitedSitesObserver { | 44 : public MostVisitedSites::Observer { |
| 44 public: | 45 public: |
| 45 Observer(JNIEnv* env, const JavaParamRef<jobject>& obj); | 46 Observer(JNIEnv* env, const JavaParamRef<jobject>& obj); |
| 46 | 47 |
| 47 void OnMostVisitedURLsAvailable( | 48 void OnMostVisitedURLsAvailable( |
| 48 const std::vector<base::string16>& titles, | 49 const MostVisitedSites::SuggestionsVector& suggestions) override; |
| 49 const std::vector<std::string>& urls, | |
| 50 const std::vector<std::string>& whitelist_icon_paths) override; | |
| 51 | 50 |
| 52 void OnPopularURLsAvailable( | 51 void OnPopularURLsAvailable( |
| 53 const std::vector<std::string>& urls, | 52 const MostVisitedSites::PopularSitesVector& sites) override; |
| 54 const std::vector<std::string>& favicon_urls, | |
| 55 const std::vector<std::string>& large_icon_urls) override; | |
| 56 | 53 |
| 57 private: | 54 private: |
| 58 ScopedJavaGlobalRef<jobject> observer_; | 55 ScopedJavaGlobalRef<jobject> observer_; |
| 59 | 56 |
| 60 DISALLOW_COPY_AND_ASSIGN(Observer); | 57 DISALLOW_COPY_AND_ASSIGN(Observer); |
| 61 }; | 58 }; |
| 62 | 59 |
| 63 MostVisitedSitesBridge::Observer::Observer( | 60 MostVisitedSitesBridge::Observer::Observer( |
| 64 JNIEnv* env, const JavaParamRef<jobject>& obj) | 61 JNIEnv* env, const JavaParamRef<jobject>& obj) |
| 65 : observer_(env, obj) {} | 62 : observer_(env, obj) {} |
| 66 | 63 |
| 67 void MostVisitedSitesBridge::Observer::OnMostVisitedURLsAvailable( | 64 void MostVisitedSitesBridge::Observer::OnMostVisitedURLsAvailable( |
| 68 const std::vector<base::string16>& titles, | 65 const MostVisitedSites::SuggestionsVector& suggestions) { |
| 69 const std::vector<std::string>& urls, | |
| 70 const std::vector<std::string>& whitelist_icon_paths) { | |
| 71 JNIEnv* env = AttachCurrentThread(); | 66 JNIEnv* env = AttachCurrentThread(); |
| 72 DCHECK_EQ(titles.size(), urls.size()); | 67 std::vector<base::string16> titles; |
| 73 DCHECK_EQ(titles.size(), whitelist_icon_paths.size()); | 68 std::vector<std::string> urls; |
| 69 std::vector<std::string> whitelist_icon_paths; |
| 70 titles.reserve(suggestions.size()); |
| 71 urls.reserve(suggestions.size()); |
| 72 for (const auto& suggestion : suggestions) { |
| 73 titles.push_back(suggestion.title); |
| 74 urls.push_back(suggestion.url.spec()); |
| 75 whitelist_icon_paths.push_back(suggestion.whitelist_icon_path.value()); |
| 76 } |
| 74 Java_MostVisitedURLsObserver_onMostVisitedURLsAvailable( | 77 Java_MostVisitedURLsObserver_onMostVisitedURLsAvailable( |
| 75 env, observer_.obj(), ToJavaArrayOfStrings(env, titles).obj(), | 78 env, observer_.obj(), ToJavaArrayOfStrings(env, titles).obj(), |
| 76 ToJavaArrayOfStrings(env, urls).obj(), | 79 ToJavaArrayOfStrings(env, urls).obj(), |
| 77 ToJavaArrayOfStrings(env, whitelist_icon_paths).obj()); | 80 ToJavaArrayOfStrings(env, whitelist_icon_paths).obj()); |
| 78 } | 81 } |
| 79 | 82 |
| 80 void MostVisitedSitesBridge::Observer::OnPopularURLsAvailable( | 83 void MostVisitedSitesBridge::Observer::OnPopularURLsAvailable( |
| 81 const std::vector<std::string>& urls, | 84 const MostVisitedSites::PopularSitesVector& sites) { |
| 82 const std::vector<std::string>& favicon_urls, | |
| 83 const std::vector<std::string>& large_icon_urls) { | |
| 84 JNIEnv* env = AttachCurrentThread(); | 85 JNIEnv* env = AttachCurrentThread(); |
| 86 std::vector<std::string> urls; |
| 87 std::vector<std::string> favicon_urls; |
| 88 std::vector<std::string> large_icon_urls; |
| 89 for (const auto& site : sites) { |
| 90 urls.emplace_back(site.url.spec()); |
| 91 favicon_urls.emplace_back(site.favicon_url.spec()); |
| 92 large_icon_urls.emplace_back(site.large_icon_url.spec()); |
| 93 } |
| 85 Java_MostVisitedURLsObserver_onPopularURLsAvailable( | 94 Java_MostVisitedURLsObserver_onPopularURLsAvailable( |
| 86 env, observer_.obj(), ToJavaArrayOfStrings(env, urls).obj(), | 95 env, observer_.obj(), ToJavaArrayOfStrings(env, urls).obj(), |
| 87 ToJavaArrayOfStrings(env, favicon_urls).obj(), | 96 ToJavaArrayOfStrings(env, favicon_urls).obj(), |
| 88 ToJavaArrayOfStrings(env, large_icon_urls).obj()); | 97 ToJavaArrayOfStrings(env, large_icon_urls).obj()); |
| 89 } | 98 } |
| 90 | 99 |
| 91 MostVisitedSitesBridge::MostVisitedSitesBridge(Profile* profile) | 100 MostVisitedSitesBridge::MostVisitedSitesBridge(Profile* profile) |
| 92 : most_visited_(profile) {} | 101 : most_visited_(profile) {} |
| 93 | 102 |
| 94 MostVisitedSitesBridge::~MostVisitedSitesBridge() {} | 103 MostVisitedSitesBridge::~MostVisitedSitesBridge() {} |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 } | 160 } |
| 152 | 161 |
| 153 static jlong Init(JNIEnv* env, | 162 static jlong Init(JNIEnv* env, |
| 154 const JavaParamRef<jobject>& obj, | 163 const JavaParamRef<jobject>& obj, |
| 155 const JavaParamRef<jobject>& jprofile) { | 164 const JavaParamRef<jobject>& jprofile) { |
| 156 MostVisitedSitesBridge* most_visited_sites = | 165 MostVisitedSitesBridge* most_visited_sites = |
| 157 new MostVisitedSitesBridge( | 166 new MostVisitedSitesBridge( |
| 158 ProfileAndroid::FromProfileAndroid(jprofile)); | 167 ProfileAndroid::FromProfileAndroid(jprofile)); |
| 159 return reinterpret_cast<intptr_t>(most_visited_sites); | 168 return reinterpret_cast<intptr_t>(most_visited_sites); |
| 160 } | 169 } |
| OLD | NEW |