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

Side by Side Diff: chrome/browser/android/ntp/most_visited_sites_bridge.cc

Issue 1919823002: Update MostVisitedSites observer interface. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: iMove move to .cc. Created 4 years, 8 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
OLDNEW
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());
Bernhard Bauer 2016/04/26 14:29:58 Why are we not doing that for |whitelist_icon_path
sfiera 2016/04/26 14:42:26 It looks like here I was just moving the old code
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());
Bernhard Bauer 2016/04/26 14:29:58 Why emplace_back here, but push_back above?
sfiera 2016/04/26 14:42:26 ...but here I wrote it myself. So, the inefficien
Bernhard Bauer 2016/04/26 14:50:49 :-D To be fair, the old code was written before e
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698