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/enhanced_bookmarks/android/enhanced_bookmarks_bridge.cc

Issue 899653003: [Enhanced Bookmark]Upstream image fetching code in android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: reverted change in bookmark_image_service Created 5 years, 10 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/enhanced_bookmarks/enhanced_bookmarks_bridge.h" 5 #include "chrome/browser/enhanced_bookmarks/android/enhanced_bookmarks_bridge.h"
6 6
7 #include "base/android/jni_array.h" 7 #include "base/android/jni_array.h"
8 #include "base/android/jni_string.h" 8 #include "base/android/jni_string.h"
9 #include "base/prefs/pref_service.h" 9 #include "base/prefs/pref_service.h"
10 #include "chrome/browser/bookmarks/bookmark_model_factory.h" 10 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
11 #include "chrome/browser/enhanced_bookmarks/android/bookmark_image_service_facto ry.h"
11 #include "chrome/browser/enhanced_bookmarks/chrome_bookmark_server_cluster_servi ce.h" 12 #include "chrome/browser/enhanced_bookmarks/chrome_bookmark_server_cluster_servi ce.h"
12 #include "chrome/browser/enhanced_bookmarks/chrome_bookmark_server_cluster_servi ce_factory.h" 13 #include "chrome/browser/enhanced_bookmarks/chrome_bookmark_server_cluster_servi ce_factory.h"
13 #include "chrome/browser/enhanced_bookmarks/enhanced_bookmark_model_factory.h" 14 #include "chrome/browser/enhanced_bookmarks/enhanced_bookmark_model_factory.h"
14 #include "chrome/browser/profiles/profile_android.h" 15 #include "chrome/browser/profiles/profile_android.h"
15 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h" 16 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
16 #include "chrome/browser/signin/signin_manager_factory.h" 17 #include "chrome/browser/signin/signin_manager_factory.h"
17 #include "chrome/common/chrome_version_info.h" 18 #include "chrome/common/chrome_version_info.h"
18 #include "chrome/common/pref_names.h" 19 #include "chrome/common/pref_names.h"
19 #include "components/bookmarks/browser/bookmark_model.h" 20 #include "components/bookmarks/browser/bookmark_model.h"
20 #include "components/bookmarks/browser/bookmark_utils.h" 21 #include "components/bookmarks/browser/bookmark_utils.h"
21 #include "components/bookmarks/common/android/bookmark_id.h" 22 #include "components/bookmarks/common/android/bookmark_id.h"
22 #include "components/bookmarks/common/android/bookmark_type.h" 23 #include "components/bookmarks/common/android/bookmark_type.h"
24 #include "components/enhanced_bookmarks/bookmark_image_service.h"
23 #include "components/enhanced_bookmarks/enhanced_bookmark_model.h" 25 #include "components/enhanced_bookmarks/enhanced_bookmark_model.h"
26 #include "components/enhanced_bookmarks/image_record.h"
24 #include "components/signin/core/browser/signin_manager.h" 27 #include "components/signin/core/browser/signin_manager.h"
25 #include "content/public/browser/browser_thread.h" 28 #include "content/public/browser/browser_thread.h"
26 #include "jni/EnhancedBookmarksBridge_jni.h" 29 #include "jni/EnhancedBookmarksBridge_jni.h"
30 #include "ui/gfx/android/java_bitmap.h"
31 #include "ui/gfx/image/image.h"
27 32
28 using base::android::AttachCurrentThread; 33 using base::android::AttachCurrentThread;
34 using base::android::ScopedJavaGlobalRef;
29 using bookmarks::android::JavaBookmarkIdCreateBookmarkId; 35 using bookmarks::android::JavaBookmarkIdCreateBookmarkId;
30 using bookmarks::android::JavaBookmarkIdGetId; 36 using bookmarks::android::JavaBookmarkIdGetId;
31 using bookmarks::android::JavaBookmarkIdGetType; 37 using bookmarks::android::JavaBookmarkIdGetType;
32 using bookmarks::BookmarkType; 38 using bookmarks::BookmarkType;
33 using content::BrowserThread; 39 using content::BrowserThread;
40 using enhanced_bookmarks::ImageRecord;
41
42 namespace {
43
44 void Callback(ScopedJavaGlobalRef<jobject>* j_callback,
45 const ImageRecord& image_record) {
46 JNIEnv* env = base::android::AttachCurrentThread();
47
48 scoped_ptr<ScopedJavaGlobalRef<jobject> > j_callback_ptr(j_callback);
49 ScopedJavaLocalRef<jstring> j_url =
50 base::android::ConvertUTF8ToJavaString(env, image_record.url.spec());
51
52 SkBitmap bitmap = image_record.image.AsBitmap();
53 ScopedJavaLocalRef<jobject> j_bitmap;
54 if (!bitmap.isNull()) {
55 j_bitmap = gfx::ConvertToJavaBitmap(&bitmap);
56 }
57
58 enhanced_bookmarks::android::Java_SalientImageCallback_onSalientImageReady(
59 env, j_callback_ptr->obj(), j_bitmap.Release(), j_url.Release());
60 }
61
62 } // namespace
34 63
35 namespace enhanced_bookmarks { 64 namespace enhanced_bookmarks {
36 namespace android { 65 namespace android {
37 66
38 EnhancedBookmarksBridge::EnhancedBookmarksBridge(JNIEnv* env, 67 EnhancedBookmarksBridge::EnhancedBookmarksBridge(JNIEnv* env,
39 jobject obj, 68 jobject obj,
40 Profile* profile) : weak_java_ref_(env, obj) { 69 Profile* profile) : weak_java_ref_(env, obj) {
41 profile_ = profile; 70 profile_ = profile;
42 enhanced_bookmark_model_ = 71 enhanced_bookmark_model_ =
43 EnhancedBookmarkModelFactory::GetForBrowserContext(profile_); 72 EnhancedBookmarkModelFactory::GetForBrowserContext(profile_);
44 enhanced_bookmark_model_->SetVersionSuffix(chrome::VersionInfo().OSType()); 73 enhanced_bookmark_model_->SetVersionSuffix(chrome::VersionInfo().OSType());
45 cluster_service_ = 74 cluster_service_ =
46 ChromeBookmarkServerClusterServiceFactory::GetForBrowserContext(profile_); 75 ChromeBookmarkServerClusterServiceFactory::GetForBrowserContext(profile_);
47 cluster_service_->AddObserver(this); 76 cluster_service_->AddObserver(this);
77 bookmark_image_service_ =
78 BookmarkImageServiceFactory::GetForBrowserContext(profile_);
48 search_service_.reset(new BookmarkServerSearchService( 79 search_service_.reset(new BookmarkServerSearchService(
49 profile_->GetRequestContext(), 80 profile_->GetRequestContext(),
50 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_), 81 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_),
51 SigninManagerFactory::GetForProfile(profile_), 82 SigninManagerFactory::GetForProfile(profile_),
52 EnhancedBookmarkModelFactory::GetForBrowserContext(profile_))); 83 EnhancedBookmarkModelFactory::GetForBrowserContext(profile_)));
53 search_service_->AddObserver(this); 84 search_service_->AddObserver(this);
54 } 85 }
55 86
56 EnhancedBookmarksBridge::~EnhancedBookmarksBridge() { 87 EnhancedBookmarksBridge::~EnhancedBookmarksBridge() {
57 cluster_service_->RemoveObserver(this); 88 cluster_service_->RemoveObserver(this);
58 search_service_->RemoveObserver(this); 89 search_service_->RemoveObserver(this);
59 } 90 }
60 91
61 void EnhancedBookmarksBridge::Destroy(JNIEnv*, jobject) { 92 void EnhancedBookmarksBridge::Destroy(JNIEnv*, jobject) {
62 delete this; 93 delete this;
63 } 94 }
64 95
96 void EnhancedBookmarksBridge::SalientImageForUrl(JNIEnv* env,
97 jobject obj,
98 jstring j_url,
99 jobject j_callback) {
100 DCHECK(j_callback);
101
102 GURL url(base::android::ConvertJavaStringToUTF16(env, j_url));
103 scoped_ptr<ScopedJavaGlobalRef<jobject>> j_callback_ptr(
104 new ScopedJavaGlobalRef<jobject>());
105 j_callback_ptr->Reset(env, j_callback);
106 bookmark_image_service_->SalientImageForUrl(
107 url, base::Bind(&Callback, j_callback_ptr.release()));
108 }
109
65 ScopedJavaLocalRef<jstring> EnhancedBookmarksBridge::GetBookmarkDescription( 110 ScopedJavaLocalRef<jstring> EnhancedBookmarksBridge::GetBookmarkDescription(
66 JNIEnv* env, jobject obj, jlong id, jint type) { 111 JNIEnv* env, jobject obj, jlong id, jint type) {
67 DCHECK(enhanced_bookmark_model_->loaded()); 112 DCHECK(enhanced_bookmark_model_->loaded());
68 if (type != BookmarkType::BOOKMARK_TYPE_NORMAL) { 113 if (type != BookmarkType::BOOKMARK_TYPE_NORMAL) {
69 return base::android::ConvertUTF8ToJavaString(env, std::string()); 114 return base::android::ConvertUTF8ToJavaString(env, std::string());
70 } 115 }
71 116
72 const BookmarkNode* node = bookmarks::GetBookmarkNodeByID( 117 const BookmarkNode* node = bookmarks::GetBookmarkNodeByID(
73 enhanced_bookmark_model_->bookmark_model(), static_cast<int64>(id)); 118 enhanced_bookmark_model_->bookmark_model(), static_cast<int64>(id));
74 119
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 void EnhancedBookmarksBridge::OnChange(BookmarkServerService* service) { 281 void EnhancedBookmarksBridge::OnChange(BookmarkServerService* service) {
237 DCHECK(enhanced_bookmark_model_->loaded()); 282 DCHECK(enhanced_bookmark_model_->loaded());
238 JNIEnv* env = AttachCurrentThread(); 283 JNIEnv* env = AttachCurrentThread();
239 284
240 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); 285 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env);
241 if (obj.is_null()) 286 if (obj.is_null())
242 return; 287 return;
243 288
244 if (service == cluster_service_) { 289 if (service == cluster_service_) {
245 Java_EnhancedBookmarksBridge_onFiltersChanged(env, obj.obj()); 290 Java_EnhancedBookmarksBridge_onFiltersChanged(env, obj.obj());
246 } else if (service == search_service_.get()){ 291 } else if (service == search_service_.get()) {
247 Java_EnhancedBookmarksBridge_onSearchResultReturned(env, obj.obj()); 292 Java_EnhancedBookmarksBridge_onSearchResultReturned(env, obj.obj());
248 } 293 }
249 } 294 }
250 295
251 bool EnhancedBookmarksBridge::IsEditable(const BookmarkNode* node) const { 296 bool EnhancedBookmarksBridge::IsEditable(const BookmarkNode* node) const {
252 if (!node || (node->type() != BookmarkNode::FOLDER && 297 if (!node || (node->type() != BookmarkNode::FOLDER &&
253 node->type() != BookmarkNode::URL)) { 298 node->type() != BookmarkNode::URL)) {
254 return false; 299 return false;
255 } 300 }
256 return profile_->GetPrefs()->GetBoolean( 301 return profile_->GetPrefs()->GetBoolean(
257 bookmarks::prefs::kEditBookmarksEnabled); 302 bookmarks::prefs::kEditBookmarksEnabled);
258 } 303 }
259 304
260 static jlong Init(JNIEnv* env, jobject obj, jobject j_profile) { 305 static jlong Init(JNIEnv* env, jobject obj, jobject j_profile) {
261 return reinterpret_cast<jlong>(new EnhancedBookmarksBridge( 306 return reinterpret_cast<jlong>(new EnhancedBookmarksBridge(
262 env, obj, ProfileAndroid::FromProfileAndroid(j_profile))); 307 env, obj, ProfileAndroid::FromProfileAndroid(j_profile)));
263 } 308 }
264 309
265 bool RegisterEnhancedBookmarksBridge(JNIEnv* env) { 310 bool RegisterEnhancedBookmarksBridge(JNIEnv* env) {
266 return RegisterNativesImpl(env); 311 return RegisterNativesImpl(env);
267 } 312 }
268 313
269 } // namespace android 314 } // namespace android
270 } // namespace enhanced_bookmarks 315 } // namespace enhanced_bookmarks
OLDNEW
« no previous file with comments | « chrome/browser/enhanced_bookmarks/android/enhanced_bookmarks_bridge.h ('k') | chrome/browser/ui/tab_helpers.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698