Index: chrome/browser/enhanced_bookmarks/android/enhanced_bookmarks_bridge.cc |
diff --git a/chrome/browser/android/enhanced_bookmarks/enhanced_bookmarks_bridge.cc b/chrome/browser/enhanced_bookmarks/android/enhanced_bookmarks_bridge.cc |
similarity index 84% |
rename from chrome/browser/android/enhanced_bookmarks/enhanced_bookmarks_bridge.cc |
rename to chrome/browser/enhanced_bookmarks/android/enhanced_bookmarks_bridge.cc |
index 9c9f98f1f4126562e671dd964edd029bbcebcdf2..eadcae76c0445fef41133af2fa8a0302d15dfd04 100644 |
--- a/chrome/browser/android/enhanced_bookmarks/enhanced_bookmarks_bridge.cc |
+++ b/chrome/browser/enhanced_bookmarks/android/enhanced_bookmarks_bridge.cc |
@@ -2,12 +2,13 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "chrome/browser/android/enhanced_bookmarks/enhanced_bookmarks_bridge.h" |
+#include "chrome/browser/enhanced_bookmarks/android/enhanced_bookmarks_bridge.h" |
#include "base/android/jni_array.h" |
#include "base/android/jni_string.h" |
#include "base/prefs/pref_service.h" |
#include "chrome/browser/bookmarks/bookmark_model_factory.h" |
+#include "chrome/browser/enhanced_bookmarks/android/bookmark_image_service_factory.h" |
#include "chrome/browser/enhanced_bookmarks/chrome_bookmark_server_cluster_service.h" |
#include "chrome/browser/enhanced_bookmarks/chrome_bookmark_server_cluster_service_factory.h" |
#include "chrome/browser/enhanced_bookmarks/enhanced_bookmark_model_factory.h" |
@@ -20,18 +21,46 @@ |
#include "components/bookmarks/browser/bookmark_utils.h" |
#include "components/bookmarks/common/android/bookmark_id.h" |
#include "components/bookmarks/common/android/bookmark_type.h" |
+#include "components/enhanced_bookmarks/bookmark_image_service.h" |
#include "components/enhanced_bookmarks/enhanced_bookmark_model.h" |
+#include "components/enhanced_bookmarks/image_record.h" |
#include "components/signin/core/browser/signin_manager.h" |
#include "content/public/browser/browser_thread.h" |
#include "jni/EnhancedBookmarksBridge_jni.h" |
+#include "ui/gfx/android/java_bitmap.h" |
+#include "ui/gfx/image/image.h" |
using base::android::AttachCurrentThread; |
+using base::android::ScopedJavaGlobalRef; |
using bookmarks::android::JavaBookmarkIdCreateBookmarkId; |
using bookmarks::android::JavaBookmarkIdGetId; |
using bookmarks::android::JavaBookmarkIdGetType; |
using bookmarks::BookmarkNode; |
using bookmarks::BookmarkType; |
using content::BrowserThread; |
+using enhanced_bookmarks::ImageRecord; |
+ |
+namespace { |
+ |
+void Callback(ScopedJavaGlobalRef<jobject>* j_callback, |
+ const ImageRecord& image_record) { |
+ JNIEnv* env = base::android::AttachCurrentThread(); |
+ |
+ scoped_ptr<ScopedJavaGlobalRef<jobject> > j_callback_ptr(j_callback); |
+ ScopedJavaLocalRef<jstring> j_url = |
+ base::android::ConvertUTF8ToJavaString(env, image_record.url.spec()); |
+ |
+ SkBitmap bitmap = image_record.image.AsBitmap(); |
+ ScopedJavaLocalRef<jobject> j_bitmap; |
+ if (!bitmap.isNull()) { |
+ j_bitmap = gfx::ConvertToJavaBitmap(&bitmap); |
+ } |
+ |
+ enhanced_bookmarks::android::Java_SalientImageCallback_onSalientImageReady( |
+ env, j_callback_ptr->obj(), j_bitmap.Release(), j_url.Release()); |
+} |
+ |
+} // namespace |
namespace enhanced_bookmarks { |
namespace android { |
@@ -46,6 +75,8 @@ EnhancedBookmarksBridge::EnhancedBookmarksBridge(JNIEnv* env, |
cluster_service_ = |
ChromeBookmarkServerClusterServiceFactory::GetForBrowserContext(profile_); |
cluster_service_->AddObserver(this); |
+ bookmark_image_service_ = |
+ BookmarkImageServiceFactory::GetForBrowserContext(profile_); |
search_service_.reset(new BookmarkServerSearchService( |
profile_->GetRequestContext(), |
ProfileOAuth2TokenServiceFactory::GetForProfile(profile_), |
@@ -63,6 +94,20 @@ void EnhancedBookmarksBridge::Destroy(JNIEnv*, jobject) { |
delete this; |
} |
+void EnhancedBookmarksBridge::SalientImageForUrl(JNIEnv* env, |
+ jobject obj, |
+ jstring j_url, |
+ jobject j_callback) { |
+ DCHECK(j_callback); |
+ |
+ GURL url(base::android::ConvertJavaStringToUTF16(env, j_url)); |
+ scoped_ptr<ScopedJavaGlobalRef<jobject>> j_callback_ptr( |
+ new ScopedJavaGlobalRef<jobject>()); |
+ j_callback_ptr->Reset(env, j_callback); |
+ bookmark_image_service_->SalientImageForUrl( |
+ url, base::Bind(&Callback, j_callback_ptr.release())); |
+} |
+ |
ScopedJavaLocalRef<jstring> EnhancedBookmarksBridge::GetBookmarkDescription( |
JNIEnv* env, jobject obj, jlong id, jint type) { |
DCHECK(enhanced_bookmark_model_->loaded()); |
@@ -244,7 +289,7 @@ void EnhancedBookmarksBridge::OnChange(BookmarkServerService* service) { |
if (service == cluster_service_) { |
Java_EnhancedBookmarksBridge_onFiltersChanged(env, obj.obj()); |
- } else if (service == search_service_.get()){ |
+ } else if (service == search_service_.get()) { |
Java_EnhancedBookmarksBridge_onSearchResultReturned(env, obj.obj()); |
} |
} |