| 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..76df488c35fd321d04784a59ed5f3fedaa7f0db9 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"
|
| @@ -55,24 +56,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 +77,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 +112,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) {
|
|
|