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/favicon_helper.h" | 5 #include "chrome/browser/android/favicon_helper.h" |
6 | 6 |
7 #include <jni.h> | 7 #include <jni.h> |
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 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
50 if (!favicon_bitmap.isNull()) | 50 if (!favicon_bitmap.isNull()) |
51 j_favicon_bitmap = gfx::ConvertToJavaBitmap(&favicon_bitmap); | 51 j_favicon_bitmap = gfx::ConvertToJavaBitmap(&favicon_bitmap); |
52 | 52 |
53 // Call java side OnLocalFaviconAvailable method. | 53 // Call java side OnLocalFaviconAvailable method. |
54 Java_FaviconImageCallback_onFaviconAvailable(env, | 54 Java_FaviconImageCallback_onFaviconAvailable(env, |
55 j_favicon_image_callback->obj(), | 55 j_favicon_image_callback->obj(), |
56 j_favicon_bitmap.obj(), | 56 j_favicon_bitmap.obj(), |
57 j_icon_url.obj()); | 57 j_icon_url.obj()); |
58 } | 58 } |
59 | 59 |
60 void OnFaviconBitmapResultAvailable( | 60 void OnFaviconRawBitmapResultAvailable( |
61 ScopedJavaGlobalRef<jobject>* j_favicon_image_callback, | 61 ScopedJavaGlobalRef<jobject>* j_favicon_image_callback, |
62 const favicon_base::FaviconBitmapResult& favicon_bitmap_result) { | 62 const favicon_base::FaviconRawBitmapResult& favicon_bitmap_result) { |
63 JNIEnv* env = AttachCurrentThread(); | 63 JNIEnv* env = AttachCurrentThread(); |
64 | 64 |
65 // Convert favicon_image_result to java objects. | 65 // Convert favicon_image_result to java objects. |
66 ScopedJavaLocalRef<jstring> j_icon_url = | 66 ScopedJavaLocalRef<jstring> j_icon_url = |
67 ConvertUTF8ToJavaString(env, favicon_bitmap_result.icon_url.spec()); | 67 ConvertUTF8ToJavaString(env, favicon_bitmap_result.icon_url.spec()); |
68 | 68 |
69 SkBitmap favicon_bitmap; | 69 SkBitmap favicon_bitmap; |
70 if (favicon_bitmap_result.is_valid()) { | 70 if (favicon_bitmap_result.is_valid()) { |
71 gfx::PNGCodec::Decode(favicon_bitmap_result.bitmap_data->front(), | 71 gfx::PNGCodec::Decode(favicon_bitmap_result.bitmap_data->front(), |
72 favicon_bitmap_result.bitmap_data->size(), | 72 favicon_bitmap_result.bitmap_data->size(), |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 DCHECK(profile); | 109 DCHECK(profile); |
110 if (!profile) | 110 if (!profile) |
111 return false; | 111 return false; |
112 | 112 |
113 FaviconService* favicon_service = FaviconServiceFactory::GetForProfile( | 113 FaviconService* favicon_service = FaviconServiceFactory::GetForProfile( |
114 profile, Profile::EXPLICIT_ACCESS); | 114 profile, Profile::EXPLICIT_ACCESS); |
115 DCHECK(favicon_service); | 115 DCHECK(favicon_service); |
116 if (!favicon_service) | 116 if (!favicon_service) |
117 return false; | 117 return false; |
118 | 118 |
119 FaviconService::FaviconForURLParams params( | 119 FaviconService::FaviconForPageURLParams params( |
120 GURL(ConvertJavaStringToUTF16(env, j_page_url)), | 120 GURL(ConvertJavaStringToUTF16(env, j_page_url)), |
121 static_cast<int>(j_icon_types), | 121 static_cast<int>(j_icon_types), |
122 static_cast<int>(j_desired_size_in_dip)); | 122 static_cast<int>(j_desired_size_in_dip)); |
123 | 123 |
124 ScopedJavaGlobalRef<jobject>* j_scoped_favicon_callback = | 124 ScopedJavaGlobalRef<jobject>* j_scoped_favicon_callback = |
125 new ScopedJavaGlobalRef<jobject>(); | 125 new ScopedJavaGlobalRef<jobject>(); |
126 j_scoped_favicon_callback->Reset(env, j_favicon_image_callback); | 126 j_scoped_favicon_callback->Reset(env, j_favicon_image_callback); |
127 | 127 |
128 favicon_base::FaviconImageCallback callback_runner = base::Bind( | 128 favicon_base::FaviconImageCallback callback_runner = base::Bind( |
129 &OnLocalFaviconAvailable, base::Owned(j_scoped_favicon_callback)); | 129 &OnLocalFaviconAvailable, base::Owned(j_scoped_favicon_callback)); |
130 | 130 |
131 favicon_service->GetFaviconImageForURL( | 131 favicon_service->GetFaviconImageForPageURL( |
132 params, callback_runner, | 132 params, callback_runner, |
133 cancelable_task_tracker_.get()); | 133 cancelable_task_tracker_.get()); |
134 | 134 |
135 return true; | 135 return true; |
136 } | 136 } |
137 | 137 |
138 void FaviconHelper::GetLargestRawFaviconForUrl( | 138 void FaviconHelper::GetLargestRawFaviconForUrl( |
139 JNIEnv* env, | 139 JNIEnv* env, |
140 jobject obj, | 140 jobject obj, |
141 jobject j_profile, | 141 jobject j_profile, |
(...skipping 12 matching lines...) Expand all Loading... |
154 if (!favicon_service) | 154 if (!favicon_service) |
155 return; | 155 return; |
156 | 156 |
157 std::vector<int> icon_types; | 157 std::vector<int> icon_types; |
158 base::android::JavaIntArrayToIntVector(env, j_icon_types, &icon_types); | 158 base::android::JavaIntArrayToIntVector(env, j_icon_types, &icon_types); |
159 | 159 |
160 ScopedJavaGlobalRef<jobject>* j_scoped_favicon_callback = | 160 ScopedJavaGlobalRef<jobject>* j_scoped_favicon_callback = |
161 new ScopedJavaGlobalRef<jobject>(); | 161 new ScopedJavaGlobalRef<jobject>(); |
162 j_scoped_favicon_callback->Reset(env, j_favicon_image_callback); | 162 j_scoped_favicon_callback->Reset(env, j_favicon_image_callback); |
163 | 163 |
164 favicon_base::FaviconRawCallback callback_runner = base::Bind( | 164 favicon_base::FaviconRawBitmapCallback callback_runner = |
165 &OnFaviconBitmapResultAvailable, base::Owned(j_scoped_favicon_callback)); | 165 base::Bind(&OnFaviconRawBitmapResultAvailable, |
166 favicon_service->GetLargestRawFaviconForURL( | 166 base::Owned(j_scoped_favicon_callback)); |
| 167 favicon_service->GetLargestRawFaviconForPageURL( |
167 profile, | 168 profile, |
168 GURL(ConvertJavaStringToUTF16(env, j_page_url)), | 169 GURL(ConvertJavaStringToUTF16(env, j_page_url)), |
169 icon_types, | 170 icon_types, |
170 static_cast<int>(j_min_size_threshold_px), | 171 static_cast<int>(j_min_size_threshold_px), |
171 callback_runner, | 172 callback_runner, |
172 cancelable_task_tracker_.get()); | 173 cancelable_task_tracker_.get()); |
173 } | 174 } |
174 | 175 |
175 ScopedJavaLocalRef<jobject> FaviconHelper::GetSyncedFaviconImageForURL( | 176 ScopedJavaLocalRef<jobject> FaviconHelper::GetSyncedFaviconImageForURL( |
176 JNIEnv* env, | 177 JNIEnv* env, |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
215 | 216 |
216 gfx::JavaBitmap bitmap_lock(bitmap); | 217 gfx::JavaBitmap bitmap_lock(bitmap); |
217 SkBitmap skbitmap = gfx::CreateSkBitmapFromJavaBitmap(bitmap_lock); | 218 SkBitmap skbitmap = gfx::CreateSkBitmapFromJavaBitmap(bitmap_lock); |
218 return color_utils::CalculateKMeanColorOfBitmap(skbitmap); | 219 return color_utils::CalculateKMeanColorOfBitmap(skbitmap); |
219 } | 220 } |
220 | 221 |
221 // static | 222 // static |
222 bool FaviconHelper::RegisterFaviconHelper(JNIEnv* env) { | 223 bool FaviconHelper::RegisterFaviconHelper(JNIEnv* env) { |
223 return RegisterNativesImpl(env); | 224 return RegisterNativesImpl(env); |
224 } | 225 } |
OLD | NEW |