Index: chrome/browser/history/android/sqlite_cursor.cc |
diff --git a/chrome/browser/history/android/sqlite_cursor.cc b/chrome/browser/history/android/sqlite_cursor.cc |
index 691ed955d7cc3738e7d443ba7c8d3b888f3a4fa0..f6c254b678645e8ada671121b1d41aa516e33a3a 100644 |
--- a/chrome/browser/history/android/sqlite_cursor.cc |
+++ b/chrome/browser/history/android/sqlite_cursor.cc |
@@ -5,6 +5,7 @@ |
#include "chrome/browser/history/android/sqlite_cursor.h" |
#include "base/android/jni_android.h" |
+#include "base/android/jni_array.h" |
#include "base/android/jni_string.h" |
#include "base/bind.h" |
#include "base/logging.h" |
@@ -14,9 +15,6 @@ |
#include "sql/statement.h" |
using base::android::ConvertUTF8ToJavaString; |
-using base::android::GetClass; |
-using base::android::HasClass; |
-using base::android::MethodID; |
using base::android::ScopedJavaLocalRef; |
using content::BrowserThread; |
@@ -55,24 +53,9 @@ ScopedJavaLocalRef<jobject> SQLiteCursor::NewJavaSqliteCursor( |
history::AndroidStatement* statement, |
AndroidHistoryProviderService* service, |
FaviconService* favicon_service) { |
- if (!HasClass(env, kSQLiteCursorClassPath)) { |
- LOG(ERROR) << "Can not find " << kSQLiteCursorClassPath; |
- return ScopedJavaLocalRef<jobject>(); |
- } |
- |
- ScopedJavaLocalRef<jclass> sclass = GetClass(env, kSQLiteCursorClassPath); |
- jmethodID method_id = MethodID::Get<MethodID::TYPE_INSTANCE>( |
- env, sclass.obj(), "<init>", "(I)V"); |
- |
SQLiteCursor* cursor = new SQLiteCursor(column_names, statement, service, |
favicon_service); |
- ScopedJavaLocalRef<jobject> obj(env, |
- env->NewObject(sclass.obj(), method_id, reinterpret_cast<jint>(cursor))); |
- if (obj.is_null()) { |
- delete cursor; |
- return ScopedJavaLocalRef<jobject>(); |
- } |
- return obj; |
+ return Java_SQLiteCursor_create(env, reinterpret_cast<jint>(cursor)); |
} |
bool SQLiteCursor::RegisterSqliteCursor(JNIEnv* env) { |
@@ -91,16 +74,7 @@ jint SQLiteCursor::GetCount(JNIEnv* env, jobject obj) { |
ScopedJavaLocalRef<jobjectArray> SQLiteCursor::GetColumnNames(JNIEnv* env, |
jobject obj) { |
- size_t count = column_names_.size(); |
- ScopedJavaLocalRef<jclass> sclass = GetClass(env, "java/lang/String"); |
- ScopedJavaLocalRef<jobjectArray> arr(env, |
- env->NewObjectArray(count, sclass.obj(), NULL)); |
- for (size_t i = 0; i < count; i++) { |
- ScopedJavaLocalRef<jstring> str = |
- ConvertUTF8ToJavaString(env, column_names_[i].c_str()); |
- env->SetObjectArrayElement(arr.obj(), i, str.obj()); |
- } |
- return arr; |
+ return base::android::ToJavaArrayOfStrings(env, column_names_); |
} |
ScopedJavaLocalRef<jstring> SQLiteCursor::GetString(JNIEnv* env, |
@@ -135,13 +109,7 @@ ScopedJavaLocalRef<jbyteArray> SQLiteCursor::GetBlob(JNIEnv* env, |
} else { |
statement_->statement()->ColumnBlobAsVector(column, &blob); |
} |
- ScopedJavaLocalRef<jbyteArray> jb(env, env->NewByteArray(blob.size())); |
- int count = 0; |
- for (std::vector<unsigned char>::const_iterator i = blob.begin(); |
- i != blob.end(); ++i) { |
- env->SetByteArrayRegion(jb.obj(), count++, 1, (jbyte *)i); |
- } |
- return jb; |
+ return base::android::ToJavaByteArray(env, &blob[0], blob.size()); |
} |
jboolean SQLiteCursor::IsNull(JNIEnv* env, jobject obj, jint column) { |