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" |
(...skipping 18 matching lines...) Expand all Loading... |
29 using base::android::ScopedJavaGlobalRef; | 29 using base::android::ScopedJavaGlobalRef; |
30 using base::android::ScopedJavaLocalRef; | 30 using base::android::ScopedJavaLocalRef; |
31 using base::android::ToJavaArrayOfStrings; | 31 using base::android::ToJavaArrayOfStrings; |
32 using base::android::ToJavaIntArray; | 32 using base::android::ToJavaIntArray; |
33 using ntp_tiles::MostVisitedSites; | 33 using ntp_tiles::MostVisitedSites; |
34 using ntp_tiles::TileSource; | 34 using ntp_tiles::TileSource; |
35 using ntp_tiles::NTPTilesVector; | 35 using ntp_tiles::NTPTilesVector; |
36 using ntp_tiles::TileVisualType; | 36 using ntp_tiles::TileVisualType; |
37 using ntp_tiles::metrics::TileImpression; | 37 using ntp_tiles::metrics::TileImpression; |
38 | 38 |
| 39 namespace { |
| 40 |
| 41 class JavaHomePageClient : public MostVisitedSites::HomePageClient { |
| 42 public: |
| 43 JavaHomePageClient(JNIEnv* env, const JavaParamRef<jobject>& obj); |
| 44 |
| 45 bool IsHomePageEnabled() const override; |
| 46 bool IsNewTabPageUsedAsHomePage() const override; |
| 47 GURL GetHomepageUrl() const override; |
| 48 |
| 49 private: |
| 50 ScopedJavaGlobalRef<jobject> client_; |
| 51 |
| 52 DISALLOW_COPY_AND_ASSIGN(JavaHomePageClient); |
| 53 }; |
| 54 |
| 55 JavaHomePageClient::JavaHomePageClient(JNIEnv* env, |
| 56 const JavaParamRef<jobject>& obj) |
| 57 : client_(env, obj) {} |
| 58 |
| 59 bool JavaHomePageClient::IsHomePageEnabled() const { |
| 60 return Java_HomePageClient_isHomePageEnabled(AttachCurrentThread(), client_); |
| 61 } |
| 62 |
| 63 bool JavaHomePageClient::IsNewTabPageUsedAsHomePage() const { |
| 64 return Java_HomePageClient_isNewTabPageUsedAsHomePage(AttachCurrentThread(), |
| 65 client_); |
| 66 } |
| 67 |
| 68 GURL JavaHomePageClient::GetHomepageUrl() const { |
| 69 base::android::ScopedJavaLocalRef<jstring> url = |
| 70 Java_HomePageClient_getHomePageUrl(AttachCurrentThread(), client_); |
| 71 if (url.is_null()) { |
| 72 return GURL(); |
| 73 } |
| 74 return GURL(ConvertJavaStringToUTF8(url)); |
| 75 } |
| 76 |
| 77 } // namespace |
| 78 |
39 class MostVisitedSitesBridge::JavaObserver : public MostVisitedSites::Observer { | 79 class MostVisitedSitesBridge::JavaObserver : public MostVisitedSites::Observer { |
40 public: | 80 public: |
41 JavaObserver(JNIEnv* env, const JavaParamRef<jobject>& obj); | 81 JavaObserver(JNIEnv* env, const JavaParamRef<jobject>& obj); |
42 | 82 |
43 void OnMostVisitedURLsAvailable(const NTPTilesVector& tiles) override; | 83 void OnMostVisitedURLsAvailable(const NTPTilesVector& tiles) override; |
44 | 84 |
45 void OnIconMadeAvailable(const GURL& site_url) override; | 85 void OnIconMadeAvailable(const GURL& site_url) override; |
46 | 86 |
47 private: | 87 private: |
48 ScopedJavaGlobalRef<jobject> observer_; | 88 ScopedJavaGlobalRef<jobject> observer_; |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
104 | 144 |
105 void MostVisitedSitesBridge::SetObserver( | 145 void MostVisitedSitesBridge::SetObserver( |
106 JNIEnv* env, | 146 JNIEnv* env, |
107 const JavaParamRef<jobject>& obj, | 147 const JavaParamRef<jobject>& obj, |
108 const JavaParamRef<jobject>& j_observer, | 148 const JavaParamRef<jobject>& j_observer, |
109 jint num_sites) { | 149 jint num_sites) { |
110 java_observer_.reset(new JavaObserver(env, j_observer)); | 150 java_observer_.reset(new JavaObserver(env, j_observer)); |
111 most_visited_->SetMostVisitedURLsObserver(java_observer_.get(), num_sites); | 151 most_visited_->SetMostVisitedURLsObserver(java_observer_.get(), num_sites); |
112 } | 152 } |
113 | 153 |
| 154 void MostVisitedSitesBridge::SetHomePageClient( |
| 155 JNIEnv* env, |
| 156 const base::android::JavaParamRef<jobject>& obj, |
| 157 const base::android::JavaParamRef<jobject>& j_client) { |
| 158 most_visited_->SetHomePageClient( |
| 159 base::MakeUnique<JavaHomePageClient>(env, j_client)); |
| 160 } |
| 161 |
114 void MostVisitedSitesBridge::AddOrRemoveBlacklistedUrl( | 162 void MostVisitedSitesBridge::AddOrRemoveBlacklistedUrl( |
115 JNIEnv* env, | 163 JNIEnv* env, |
116 const JavaParamRef<jobject>& obj, | 164 const JavaParamRef<jobject>& obj, |
117 const JavaParamRef<jstring>& j_url, | 165 const JavaParamRef<jstring>& j_url, |
118 jboolean add_url) { | 166 jboolean add_url) { |
119 GURL url(ConvertJavaStringToUTF8(env, j_url)); | 167 GURL url(ConvertJavaStringToUTF8(env, j_url)); |
120 most_visited_->AddOrRemoveBlacklistedUrl(url, add_url); | 168 most_visited_->AddOrRemoveBlacklistedUrl(url, add_url); |
121 } | 169 } |
122 | 170 |
123 void MostVisitedSitesBridge::RecordPageImpression( | 171 void MostVisitedSitesBridge::RecordPageImpression( |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
163 return RegisterNativesImpl(env); | 211 return RegisterNativesImpl(env); |
164 } | 212 } |
165 | 213 |
166 static jlong Init(JNIEnv* env, | 214 static jlong Init(JNIEnv* env, |
167 const JavaParamRef<jobject>& obj, | 215 const JavaParamRef<jobject>& obj, |
168 const JavaParamRef<jobject>& jprofile) { | 216 const JavaParamRef<jobject>& jprofile) { |
169 MostVisitedSitesBridge* most_visited_sites = | 217 MostVisitedSitesBridge* most_visited_sites = |
170 new MostVisitedSitesBridge(ProfileAndroid::FromProfileAndroid(jprofile)); | 218 new MostVisitedSitesBridge(ProfileAndroid::FromProfileAndroid(jprofile)); |
171 return reinterpret_cast<intptr_t>(most_visited_sites); | 219 return reinterpret_cast<intptr_t>(most_visited_sites); |
172 } | 220 } |
OLD | NEW |