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

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

Issue 2572533002: Add ChromeMostVisitedSitesFactory (Closed)
Patch Set: Use factory for webui Created 4 years 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"
14 #include "base/callback.h"
15 #include "base/memory/ptr_util.h"
16 #include "chrome/browser/android/ntp/popular_sites.h"
17 #include "chrome/browser/browser_process.h" 13 #include "chrome/browser/browser_process.h"
18 #include "chrome/browser/favicon/favicon_service_factory.h" 14 #include "chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.h"
19 #include "chrome/browser/history/top_sites_factory.h"
20 #include "chrome/browser/profiles/profile.h" 15 #include "chrome/browser/profiles/profile.h"
21 #include "chrome/browser/profiles/profile_android.h" 16 #include "chrome/browser/profiles/profile_android.h"
22 #include "chrome/browser/search/suggestions/image_decoder_impl.h"
23 #include "chrome/browser/search/suggestions/suggestions_service_factory.h"
24 #include "chrome/browser/search_engines/template_url_service_factory.h"
25 #include "chrome/browser/supervised_user/supervised_user_service.h"
26 #include "chrome/browser/supervised_user/supervised_user_service_factory.h"
27 #include "chrome/browser/supervised_user/supervised_user_url_filter.h"
28 #include "chrome/browser/thumbnails/thumbnail_list_source.h" 17 #include "chrome/browser/thumbnails/thumbnail_list_source.h"
29 #include "components/history/core/browser/top_sites.h"
30 #include "components/image_fetcher/image_fetcher_impl.h"
31 #include "components/ntp_tiles/icon_cacher.h"
32 #include "components/ntp_tiles/metrics.h" 18 #include "components/ntp_tiles/metrics.h"
33 #include "components/ntp_tiles/popular_sites.h" 19 #include "components/ntp_tiles/most_visited_sites.h"
34 #include "components/rappor/rappor_service_impl.h" 20 #include "components/rappor/rappor_service_impl.h"
35 #include "components/safe_json/safe_json_parser.h"
36 #include "content/public/browser/browser_thread.h"
37 #include "content/public/browser/url_data_source.h"
38 #include "jni/MostVisitedSites_jni.h" 21 #include "jni/MostVisitedSites_jni.h"
39 #include "ui/gfx/android/java_bitmap.h" 22 #include "ui/gfx/android/java_bitmap.h"
40 #include "url/gurl.h"
41 23
42 using base::android::AttachCurrentThread; 24 using base::android::AttachCurrentThread;
43 using base::android::ConvertJavaStringToUTF8; 25 using base::android::ConvertJavaStringToUTF8;
44 using base::android::ConvertUTF8ToJavaString; 26 using base::android::ConvertUTF8ToJavaString;
45 using base::android::JavaParamRef; 27 using base::android::JavaParamRef;
46 using base::android::ScopedJavaGlobalRef; 28 using base::android::ScopedJavaGlobalRef;
47 using base::android::ScopedJavaLocalRef; 29 using base::android::ScopedJavaLocalRef;
48 using base::android::ToJavaArrayOfStrings; 30 using base::android::ToJavaArrayOfStrings;
49 using base::android::ToJavaIntArray; 31 using base::android::ToJavaIntArray;
50 using content::BrowserThread; 32 using ntp_tiles::MostVisitedSites;
33 using ntp_tiles::NTPTileSource;
34 using ntp_tiles::NTPTilesVector;
51 using ntp_tiles::metrics::MostVisitedTileType; 35 using ntp_tiles::metrics::MostVisitedTileType;
52 using ntp_tiles::metrics::TileImpression; 36 using ntp_tiles::metrics::TileImpression;
53 using ntp_tiles::MostVisitedSites;
54 using ntp_tiles::MostVisitedSitesSupervisor;
55 using ntp_tiles::NTPTileSource;
56 using suggestions::SuggestionsServiceFactory;
57
58 MostVisitedSitesBridge::SupervisorBridge::SupervisorBridge(Profile* profile)
59 : profile_(profile),
60 supervisor_observer_(nullptr),
61 register_observer_(this) {
62 register_observer_.Add(SupervisedUserServiceFactory::GetForProfile(profile_));
63 }
64
65 MostVisitedSitesBridge::SupervisorBridge::~SupervisorBridge() {}
66
67 void MostVisitedSitesBridge::SupervisorBridge::SetObserver(
68 Observer* new_observer) {
69 if (new_observer)
70 DCHECK(!supervisor_observer_);
71 else
72 DCHECK(supervisor_observer_);
73
74 supervisor_observer_ = new_observer;
75 }
76
77 bool MostVisitedSitesBridge::SupervisorBridge::IsBlocked(const GURL& url) {
78 SupervisedUserService* supervised_user_service =
79 SupervisedUserServiceFactory::GetForProfile(profile_);
80 auto* url_filter = supervised_user_service->GetURLFilterForUIThread();
81 return url_filter->GetFilteringBehaviorForURL(url) ==
82 SupervisedUserURLFilter::FilteringBehavior::BLOCK;
83 }
84
85 std::vector<MostVisitedSitesSupervisor::Whitelist>
86 MostVisitedSitesBridge::SupervisorBridge::whitelists() {
87 std::vector<MostVisitedSitesSupervisor::Whitelist> results;
88 SupervisedUserService* supervised_user_service =
89 SupervisedUserServiceFactory::GetForProfile(profile_);
90 for (const auto& whitelist : supervised_user_service->whitelists()) {
91 results.emplace_back(Whitelist{
92 whitelist->title(), whitelist->entry_point(),
93 whitelist->large_icon_path(),
94 });
95 }
96 return results;
97 }
98
99 bool MostVisitedSitesBridge::SupervisorBridge::IsChildProfile() {
100 return profile_->IsChild();
101 }
102
103 void MostVisitedSitesBridge::SupervisorBridge::OnURLFilterChanged() {
104 if (supervisor_observer_)
105 supervisor_observer_->OnBlockedSitesChanged();
106 }
107 37
108 class MostVisitedSitesBridge::JavaObserver : public MostVisitedSites::Observer { 38 class MostVisitedSitesBridge::JavaObserver : public MostVisitedSites::Observer {
109 public: 39 public:
110 JavaObserver(JNIEnv* env, const JavaParamRef<jobject>& obj); 40 JavaObserver(JNIEnv* env, const JavaParamRef<jobject>& obj);
111 41
112 void OnMostVisitedURLsAvailable(const NTPTilesVector& tiles) override; 42 void OnMostVisitedURLsAvailable(const NTPTilesVector& tiles) override;
113 43
114 void OnIconMadeAvailable(const GURL& site_url) override; 44 void OnIconMadeAvailable(const GURL& site_url) override;
115 45
116 private: 46 private:
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 } 80 }
151 81
152 void MostVisitedSitesBridge::JavaObserver::OnIconMadeAvailable( 82 void MostVisitedSitesBridge::JavaObserver::OnIconMadeAvailable(
153 const GURL& site_url) { 83 const GURL& site_url) {
154 JNIEnv* env = AttachCurrentThread(); 84 JNIEnv* env = AttachCurrentThread();
155 Java_MostVisitedURLsObserver_onIconMadeAvailable( 85 Java_MostVisitedURLsObserver_onIconMadeAvailable(
156 env, observer_, ConvertUTF8ToJavaString(env, site_url.spec())); 86 env, observer_, ConvertUTF8ToJavaString(env, site_url.spec()));
157 } 87 }
158 88
159 MostVisitedSitesBridge::MostVisitedSitesBridge(Profile* profile) 89 MostVisitedSitesBridge::MostVisitedSitesBridge(Profile* profile)
160 : supervisor_(profile), 90 : most_visited_(ChromeMostVisitedSitesFactory::NewForProfile(profile)) {
161 most_visited_(profile->GetPrefs(),
162 TopSitesFactory::GetForProfile(profile),
163 SuggestionsServiceFactory::GetForProfile(profile),
164 ChromePopularSites::NewForProfile(profile),
165 base::MakeUnique<ntp_tiles::IconCacher>(
166 FaviconServiceFactory::GetForProfile(
167 profile,
168 ServiceAccessType::IMPLICIT_ACCESS),
169 base::MakeUnique<image_fetcher::ImageFetcherImpl>(
170 base::MakeUnique<suggestions::ImageDecoderImpl>(),
171 profile->GetRequestContext())),
172 &supervisor_) {
173 // Register the thumbnails debugging page. 91 // Register the thumbnails debugging page.
174 // TODO(sfiera): find thumbnails a home. They don't belong here. 92 // TODO(sfiera): find thumbnails a home. They don't belong here.
175 content::URLDataSource::Add(profile, new ThumbnailListSource(profile)); 93 content::URLDataSource::Add(profile, new ThumbnailListSource(profile));
176 DCHECK(!profile->IsOffTheRecord()); 94 DCHECK(!profile->IsOffTheRecord());
177 } 95 }
178 96
179 MostVisitedSitesBridge::~MostVisitedSitesBridge() {} 97 MostVisitedSitesBridge::~MostVisitedSitesBridge() {}
180 98
181 void MostVisitedSitesBridge::Destroy( 99 void MostVisitedSitesBridge::Destroy(
182 JNIEnv* env, const JavaParamRef<jobject>& obj) { 100 JNIEnv* env, const JavaParamRef<jobject>& obj) {
183 delete this; 101 delete this;
184 } 102 }
185 103
186 void MostVisitedSitesBridge::SetMostVisitedURLsObserver( 104 void MostVisitedSitesBridge::SetMostVisitedURLsObserver(
187 JNIEnv* env, 105 JNIEnv* env,
188 const JavaParamRef<jobject>& obj, 106 const JavaParamRef<jobject>& obj,
189 const JavaParamRef<jobject>& j_observer, 107 const JavaParamRef<jobject>& j_observer,
190 jint num_sites) { 108 jint num_sites) {
191 java_observer_.reset(new JavaObserver(env, j_observer)); 109 java_observer_.reset(new JavaObserver(env, j_observer));
192 most_visited_.SetMostVisitedURLsObserver(java_observer_.get(), num_sites); 110 most_visited_->SetMostVisitedURLsObserver(java_observer_.get(), num_sites);
193 } 111 }
194 112
195 void MostVisitedSitesBridge::AddOrRemoveBlacklistedUrl( 113 void MostVisitedSitesBridge::AddOrRemoveBlacklistedUrl(
196 JNIEnv* env, 114 JNIEnv* env,
197 const JavaParamRef<jobject>& obj, 115 const JavaParamRef<jobject>& obj,
198 const JavaParamRef<jstring>& j_url, 116 const JavaParamRef<jstring>& j_url,
199 jboolean add_url) { 117 jboolean add_url) {
200 GURL url(ConvertJavaStringToUTF8(env, j_url)); 118 GURL url(ConvertJavaStringToUTF8(env, j_url));
201 most_visited_.AddOrRemoveBlacklistedUrl(url, add_url); 119 most_visited_->AddOrRemoveBlacklistedUrl(url, add_url);
202 } 120 }
203 121
204 void MostVisitedSitesBridge::RecordPageImpression( 122 void MostVisitedSitesBridge::RecordPageImpression(
205 JNIEnv* env, 123 JNIEnv* env,
206 const JavaParamRef<jobject>& obj, 124 const JavaParamRef<jobject>& obj,
207 const JavaParamRef<jintArray>& jtile_types, 125 const JavaParamRef<jintArray>& jtile_types,
208 const JavaParamRef<jintArray>& jsources, 126 const JavaParamRef<jintArray>& jsources,
209 const JavaParamRef<jobjectArray>& jtile_urls) { 127 const JavaParamRef<jobjectArray>& jtile_urls) {
210 std::vector<int> int_sources; 128 std::vector<int> int_sources;
211 base::android::JavaIntArrayToIntVector(env, jsources, &int_sources); 129 base::android::JavaIntArrayToIntVector(env, jsources, &int_sources);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 } 165 }
248 166
249 static jlong Init(JNIEnv* env, 167 static jlong Init(JNIEnv* env,
250 const JavaParamRef<jobject>& obj, 168 const JavaParamRef<jobject>& obj,
251 const JavaParamRef<jobject>& jprofile) { 169 const JavaParamRef<jobject>& jprofile) {
252 MostVisitedSitesBridge* most_visited_sites = 170 MostVisitedSitesBridge* most_visited_sites =
253 new MostVisitedSitesBridge( 171 new MostVisitedSitesBridge(
254 ProfileAndroid::FromProfileAndroid(jprofile)); 172 ProfileAndroid::FromProfileAndroid(jprofile));
255 return reinterpret_cast<intptr_t>(most_visited_sites); 173 return reinterpret_cast<intptr_t>(most_visited_sites);
256 } 174 }
OLDNEW
« no previous file with comments | « chrome/browser/android/ntp/most_visited_sites_bridge.h ('k') | chrome/browser/android/ntp/popular_sites.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698