OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "sync/test/fake_server/android/fake_server_helper_android.h" | 5 #include "sync/test/fake_server/android/fake_server_helper_android.h" |
6 | 6 |
7 #include <jni.h> | 7 #include <jni.h> |
8 | 8 |
9 #include "base/android/jni_string.h" | 9 #include "base/android/jni_string.h" |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
102 fake_server::FakeServerVerifier fake_server_verifier(fake_server_ptr); | 102 fake_server::FakeServerVerifier fake_server_verifier(fake_server_ptr); |
103 testing::AssertionResult result = | 103 testing::AssertionResult result = |
104 fake_server_verifier.VerifySessions(expected_sessions); | 104 fake_server_verifier.VerifySessions(expected_sessions); |
105 | 105 |
106 if (!result) | 106 if (!result) |
107 LOG(WARNING) << result.message(); | 107 LOG(WARNING) << result.message(); |
108 | 108 |
109 return result; | 109 return result; |
110 } | 110 } |
111 | 111 |
112 base::android::ScopedJavaLocalRef<jobjectArray> | |
113 FakeServerHelperAndroid::GetSyncEntitiesByModelType(JNIEnv* env, | |
114 jobject obj, | |
115 jlong fake_server, | |
116 jstring model_type_string) { | |
117 fake_server::FakeServer* fake_server_ptr = | |
118 reinterpret_cast<fake_server::FakeServer*>(fake_server); | |
119 | |
120 syncer::ModelType model_type; | |
121 if (!NotificationTypeToRealModelType( | |
122 base::android::ConvertJavaStringToUTF8(env, model_type_string), | |
123 &model_type)) { | |
124 LOG(WARNING) << "Invalid ModelType string."; | |
125 NOTREACHED(); | |
126 } | |
127 | |
128 std::vector<sync_pb::SyncEntity> entities = | |
129 fake_server_ptr->GetSyncEntitiesByModelType(model_type); | |
130 | |
131 // "[B" is the type specifier for the Java byte[]; so, this returns the class | |
132 // type for a Java byte[]. | |
133 jclass byte_array_class = env->FindClass("[B"); | |
134 jobjectArray object_array = | |
135 env->NewObjectArray(entities.size(), byte_array_class, nullptr); | |
136 for (size_t i = 0; i < entities.size(); ++i) { | |
137 env->SetObjectArrayElement(object_array, i, | |
138 ProtoToJbyteArray(env, entities[i])); | |
139 } | |
140 return base::android::ScopedJavaLocalRef<jobjectArray>(env, object_array); | |
141 } | |
142 | |
143 jbyteArray FakeServerHelperAndroid::ProtoToJbyteArray( | |
nyquist
2015/07/13 18:52:46
Could you instead use MessageLite::SerializeToStri
maxbogue
2015/07/13 19:44:54
Done.
| |
144 JNIEnv* env, | |
145 const google::protobuf::MessageLite& proto) { | |
146 int size = proto.ByteSize(); | |
147 jbyteArray ret_arr = env->NewByteArray(size); | |
148 jbyte* memory = reinterpret_cast<jbyte*>( | |
149 env->GetPrimitiveArrayCritical(ret_arr, nullptr)); | |
150 proto.SerializeToArray(memory, size); | |
151 env->ReleasePrimitiveArrayCritical(ret_arr, memory, 0); | |
152 return ret_arr; | |
153 } | |
154 | |
112 void FakeServerHelperAndroid::InjectUniqueClientEntity( | 155 void FakeServerHelperAndroid::InjectUniqueClientEntity( |
113 JNIEnv* env, | 156 JNIEnv* env, |
114 jobject obj, | 157 jobject obj, |
115 jlong fake_server, | 158 jlong fake_server, |
116 jstring name, | 159 jstring name, |
117 jbyteArray serialized_entity_specifics) { | 160 jbyteArray serialized_entity_specifics) { |
118 fake_server::FakeServer* fake_server_ptr = | 161 fake_server::FakeServer* fake_server_ptr = |
119 reinterpret_cast<fake_server::FakeServer*>(fake_server); | 162 reinterpret_cast<fake_server::FakeServer*>(fake_server); |
120 | 163 |
121 sync_pb::EntitySpecifics entity_specifics; | 164 sync_pb::EntitySpecifics entity_specifics; |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
195 jstring entity_id, | 238 jstring entity_id, |
196 jstring title, | 239 jstring title, |
197 jstring url, | 240 jstring url, |
198 jstring parent_id) { | 241 jstring parent_id) { |
199 fake_server::FakeServer* fake_server_ptr = | 242 fake_server::FakeServer* fake_server_ptr = |
200 reinterpret_cast<fake_server::FakeServer*>(fake_server); | 243 reinterpret_cast<fake_server::FakeServer*>(fake_server); |
201 scoped_ptr<fake_server::FakeServerEntity> bookmark = | 244 scoped_ptr<fake_server::FakeServerEntity> bookmark = |
202 CreateBookmarkEntity(env, title, url, parent_id); | 245 CreateBookmarkEntity(env, title, url, parent_id); |
203 sync_pb::SyncEntity proto; | 246 sync_pb::SyncEntity proto; |
204 bookmark->SerializeAsProto(&proto); | 247 bookmark->SerializeAsProto(&proto); |
205 fake_server_ptr->ModifyEntitySpecifics( | 248 fake_server_ptr->ModifyBookmarkEntity( |
206 base::android::ConvertJavaStringToUTF8(env, entity_id), | 249 base::android::ConvertJavaStringToUTF8(env, entity_id), |
250 base::android::ConvertJavaStringToUTF8(env, parent_id), | |
207 proto.specifics()); | 251 proto.specifics()); |
208 } | 252 } |
209 | 253 |
210 void FakeServerHelperAndroid::ModifyBookmarkFolderEntity(JNIEnv* env, | 254 void FakeServerHelperAndroid::ModifyBookmarkFolderEntity(JNIEnv* env, |
211 jobject obj, | 255 jobject obj, |
212 jlong fake_server, | 256 jlong fake_server, |
213 jstring entity_id, | 257 jstring entity_id, |
214 jstring title, | 258 jstring title, |
215 jstring parent_id) { | 259 jstring parent_id) { |
216 fake_server::FakeServer* fake_server_ptr = | 260 fake_server::FakeServer* fake_server_ptr = |
217 reinterpret_cast<fake_server::FakeServer*>(fake_server); | 261 reinterpret_cast<fake_server::FakeServer*>(fake_server); |
218 | 262 |
219 fake_server::EntityBuilderFactory entity_builder_factory; | 263 fake_server::EntityBuilderFactory entity_builder_factory; |
220 fake_server::BookmarkEntityBuilder bookmark_builder = | 264 fake_server::BookmarkEntityBuilder bookmark_builder = |
221 entity_builder_factory.NewBookmarkEntityBuilder( | 265 entity_builder_factory.NewBookmarkEntityBuilder( |
222 base::android::ConvertJavaStringToUTF8(env, title)); | 266 base::android::ConvertJavaStringToUTF8(env, title)); |
223 bookmark_builder.SetParentId( | 267 bookmark_builder.SetParentId( |
224 base::android::ConvertJavaStringToUTF8(env, parent_id)); | 268 base::android::ConvertJavaStringToUTF8(env, parent_id)); |
225 | 269 |
226 sync_pb::SyncEntity proto; | 270 sync_pb::SyncEntity proto; |
227 bookmark_builder.BuildFolder()->SerializeAsProto(&proto); | 271 bookmark_builder.BuildFolder()->SerializeAsProto(&proto); |
228 fake_server_ptr->ModifyEntitySpecifics( | 272 fake_server_ptr->ModifyBookmarkEntity( |
229 base::android::ConvertJavaStringToUTF8(env, entity_id), | 273 base::android::ConvertJavaStringToUTF8(env, entity_id), |
274 base::android::ConvertJavaStringToUTF8(env, parent_id), | |
230 proto.specifics()); | 275 proto.specifics()); |
231 } | 276 } |
232 | 277 |
233 scoped_ptr<fake_server::FakeServerEntity> | 278 scoped_ptr<fake_server::FakeServerEntity> |
234 FakeServerHelperAndroid::CreateBookmarkEntity(JNIEnv* env, | 279 FakeServerHelperAndroid::CreateBookmarkEntity(JNIEnv* env, |
235 jstring title, | 280 jstring title, |
236 jstring url, | 281 jstring url, |
237 jstring parent_id) { | 282 jstring parent_id) { |
238 std::string url_as_string = base::android::ConvertJavaStringToUTF8(env, url); | 283 std::string url_as_string = base::android::ConvertJavaStringToUTF8(env, url); |
239 GURL gurl = GURL(url_as_string); | 284 GURL gurl = GURL(url_as_string); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
271 reinterpret_cast<fake_server::FakeServer*>(fake_server); | 316 reinterpret_cast<fake_server::FakeServer*>(fake_server); |
272 std::string native_id = base::android::ConvertJavaStringToUTF8(env, id); | 317 std::string native_id = base::android::ConvertJavaStringToUTF8(env, id); |
273 fake_server_ptr->InjectEntity( | 318 fake_server_ptr->InjectEntity( |
274 fake_server::TombstoneEntity::Create(native_id)); | 319 fake_server::TombstoneEntity::Create(native_id)); |
275 } | 320 } |
276 | 321 |
277 // static | 322 // static |
278 bool FakeServerHelperAndroid::Register(JNIEnv* env) { | 323 bool FakeServerHelperAndroid::Register(JNIEnv* env) { |
279 return RegisterNativesImpl(env); | 324 return RegisterNativesImpl(env); |
280 } | 325 } |
OLD | NEW |