Index: sync/test/fake_server/android/fake_server_helper_android.cc |
diff --git a/sync/test/fake_server/android/fake_server_helper_android.cc b/sync/test/fake_server/android/fake_server_helper_android.cc |
index fd56e960b24f07372666b374ba936380f93c484e..016fa0e383b3db1a81e5080c62acbbe59196d305 100644 |
--- a/sync/test/fake_server/android/fake_server_helper_android.cc |
+++ b/sync/test/fake_server/android/fake_server_helper_android.cc |
@@ -109,6 +109,49 @@ jboolean FakeServerHelperAndroid::VerifySessions( |
return result; |
} |
+base::android::ScopedJavaLocalRef<jobjectArray> |
+FakeServerHelperAndroid::GetSyncEntitiesByModelType(JNIEnv* env, |
+ jobject obj, |
+ jlong fake_server, |
+ jstring model_type_string) { |
+ fake_server::FakeServer* fake_server_ptr = |
+ reinterpret_cast<fake_server::FakeServer*>(fake_server); |
+ |
+ syncer::ModelType model_type; |
+ if (!NotificationTypeToRealModelType( |
+ base::android::ConvertJavaStringToUTF8(env, model_type_string), |
pval...(no longer on Chromium)
2015/07/10 01:48:07
should be indented 4 spaces
maxbogue
2015/07/10 17:52:11
Done.
|
+ &model_type)) { |
+ LOG(WARNING) << "Invalid ModelType string."; |
+ NOTREACHED(); |
+ } |
+ |
+ std::vector<sync_pb::SyncEntity> entities = |
+ fake_server_ptr->GetSyncEntitiesByModelType(model_type); |
+ |
+ // "[B" is the type specifier for the Java byte[]; so, this returns the class |
+ // type for a Java byte[]. |
+ jclass byte_array_class = env->FindClass("[B"); |
+ jobjectArray object_array = |
+ env->NewObjectArray(entities.size(), byte_array_class, nullptr); |
+ for (size_t i = 0; i < entities.size(); ++i) { |
+ env->SetObjectArrayElement(object_array, i, |
+ ProtoToJbyteArray(env, entities[i])); |
+ } |
+ return base::android::ScopedJavaLocalRef<jobjectArray>(env, object_array); |
+} |
+ |
+jbyteArray FakeServerHelperAndroid::ProtoToJbyteArray( |
+ JNIEnv* env, |
+ const google::protobuf::MessageLite& proto) { |
+ int size = proto.ByteSize(); |
+ jbyteArray ret_arr = env->NewByteArray(size); |
+ jbyte* memory = reinterpret_cast<jbyte*>( |
+ env->GetPrimitiveArrayCritical(ret_arr, nullptr)); |
+ proto.SerializeToArray(memory, size); |
+ env->ReleasePrimitiveArrayCritical(ret_arr, memory, 0); |
+ return ret_arr; |
+} |
+ |
void FakeServerHelperAndroid::InjectUniqueClientEntity( |
JNIEnv* env, |
jobject obj, |
@@ -202,8 +245,9 @@ void FakeServerHelperAndroid::ModifyBookmarkEntity(JNIEnv* env, |
CreateBookmarkEntity(env, title, url, parent_id); |
sync_pb::SyncEntity proto; |
bookmark->SerializeAsProto(&proto); |
- fake_server_ptr->ModifyEntitySpecifics( |
+ fake_server_ptr->ModifyBookmarkEntity( |
base::android::ConvertJavaStringToUTF8(env, entity_id), |
+ base::android::ConvertJavaStringToUTF8(env, parent_id), |
proto.specifics()); |
} |
@@ -225,8 +269,9 @@ void FakeServerHelperAndroid::ModifyBookmarkFolderEntity(JNIEnv* env, |
sync_pb::SyncEntity proto; |
bookmark_builder.BuildFolder()->SerializeAsProto(&proto); |
- fake_server_ptr->ModifyEntitySpecifics( |
+ fake_server_ptr->ModifyBookmarkEntity( |
base::android::ConvertJavaStringToUTF8(env, entity_id), |
+ base::android::ConvertJavaStringToUTF8(env, parent_id), |
proto.specifics()); |
} |