Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(336)

Side by Side Diff: mojo/android/system/core_impl.cc

Issue 1288183004: jni_generator: Make all object-returning natives return ScopedJavaLocalRef. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add some newlines for readability Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "mojo/android/system/core_impl.h" 5 #include "mojo/android/system/core_impl.h"
6 6
7 #include "base/android/base_jni_registrar.h" 7 #include "base/android/base_jni_registrar.h"
8 #include "base/android/jni_android.h" 8 #include "base/android/jni_android.h"
9 #include "base/android/jni_registrar.h" 9 #include "base/android/jni_registrar.h"
10 #include "base/android/library_loader/library_loader_hooks.h" 10 #include "base/android/library_loader/library_loader_hooks.h"
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 reinterpret_cast<const MojoHandleSignals*>(buffer_start + 4 * nb_handles); 81 reinterpret_cast<const MojoHandleSignals*>(buffer_start + 4 * nb_handles);
82 MojoHandleSignalsState* states_start = 82 MojoHandleSignalsState* states_start =
83 reinterpret_cast<MojoHandleSignalsState*>(buffer_start + 8 * nb_handles); 83 reinterpret_cast<MojoHandleSignalsState*>(buffer_start + 8 * nb_handles);
84 uint32_t* result_index = 84 uint32_t* result_index =
85 reinterpret_cast<uint32_t*>(buffer_start + 16 * nb_handles); 85 reinterpret_cast<uint32_t*>(buffer_start + 16 * nb_handles);
86 *result_index = static_cast<uint32_t>(-1); 86 *result_index = static_cast<uint32_t>(-1);
87 return MojoWaitMany(handle_start, signals_start, nb_handles, deadline, 87 return MojoWaitMany(handle_start, signals_start, nb_handles, deadline,
88 result_index, states_start); 88 result_index, states_start);
89 } 89 }
90 90
91 static jobject CreateMessagePipe(JNIEnv* env, 91 static ScopedJavaLocalRef<jobject> CreateMessagePipe(JNIEnv* env,
92 jobject jcaller, 92 jobject jcaller,
93 jobject options_buffer) { 93 jobject options_buffer) {
94 const MojoCreateMessagePipeOptions* options = NULL; 94 const MojoCreateMessagePipeOptions* options = NULL;
95 if (options_buffer) { 95 if (options_buffer) {
96 const void* buffer_start = env->GetDirectBufferAddress(options_buffer); 96 const void* buffer_start = env->GetDirectBufferAddress(options_buffer);
97 DCHECK(buffer_start); 97 DCHECK(buffer_start);
98 DCHECK_EQ(reinterpret_cast<const uintptr_t>(buffer_start) % 8, 0u); 98 DCHECK_EQ(reinterpret_cast<const uintptr_t>(buffer_start) % 8, 0u);
99 const size_t buffer_size = env->GetDirectBufferCapacity(options_buffer); 99 const size_t buffer_size = env->GetDirectBufferCapacity(options_buffer);
100 DCHECK_EQ(buffer_size, sizeof(MojoCreateMessagePipeOptions)); 100 DCHECK_EQ(buffer_size, sizeof(MojoCreateMessagePipeOptions));
101 options = static_cast<const MojoCreateMessagePipeOptions*>(buffer_start); 101 options = static_cast<const MojoCreateMessagePipeOptions*>(buffer_start);
102 DCHECK_EQ(options->struct_size, buffer_size); 102 DCHECK_EQ(options->struct_size, buffer_size);
103 } 103 }
104 MojoHandle handle1; 104 MojoHandle handle1;
105 MojoHandle handle2; 105 MojoHandle handle2;
106 MojoResult result = MojoCreateMessagePipe(options, &handle1, &handle2); 106 MojoResult result = MojoCreateMessagePipe(options, &handle1, &handle2);
107 return Java_CoreImpl_newNativeCreationResult(env, result, handle1, handle2) 107 return Java_CoreImpl_newNativeCreationResult(env, result, handle1, handle2);
108 .Release();
109 } 108 }
110 109
111 static jobject CreateDataPipe(JNIEnv* env, 110 static ScopedJavaLocalRef<jobject> CreateDataPipe(JNIEnv* env,
112 jobject jcaller, 111 jobject jcaller,
113 jobject options_buffer) { 112 jobject options_buffer) {
114 const MojoCreateDataPipeOptions* options = NULL; 113 const MojoCreateDataPipeOptions* options = NULL;
115 if (options_buffer) { 114 if (options_buffer) {
116 const void* buffer_start = env->GetDirectBufferAddress(options_buffer); 115 const void* buffer_start = env->GetDirectBufferAddress(options_buffer);
117 DCHECK(buffer_start); 116 DCHECK(buffer_start);
118 DCHECK_EQ(reinterpret_cast<const uintptr_t>(buffer_start) % 8, 0u); 117 DCHECK_EQ(reinterpret_cast<const uintptr_t>(buffer_start) % 8, 0u);
119 const size_t buffer_size = env->GetDirectBufferCapacity(options_buffer); 118 const size_t buffer_size = env->GetDirectBufferCapacity(options_buffer);
120 DCHECK_EQ(buffer_size, sizeof(MojoCreateDataPipeOptions)); 119 DCHECK_EQ(buffer_size, sizeof(MojoCreateDataPipeOptions));
121 options = static_cast<const MojoCreateDataPipeOptions*>(buffer_start); 120 options = static_cast<const MojoCreateDataPipeOptions*>(buffer_start);
122 DCHECK_EQ(options->struct_size, buffer_size); 121 DCHECK_EQ(options->struct_size, buffer_size);
123 } 122 }
124 MojoHandle handle1; 123 MojoHandle handle1;
125 MojoHandle handle2; 124 MojoHandle handle2;
126 MojoResult result = MojoCreateDataPipe(options, &handle1, &handle2); 125 MojoResult result = MojoCreateDataPipe(options, &handle1, &handle2);
127 return Java_CoreImpl_newNativeCreationResult(env, result, handle1, handle2) 126 return Java_CoreImpl_newNativeCreationResult(env, result, handle1, handle2);
128 .Release();
129 } 127 }
130 128
131 static jobject CreateSharedBuffer(JNIEnv* env, 129 static ScopedJavaLocalRef<jobject> CreateSharedBuffer(JNIEnv* env,
132 jobject jcaller, 130 jobject jcaller,
133 jobject options_buffer, 131 jobject options_buffer,
134 jlong num_bytes) { 132 jlong num_bytes) {
135 const MojoCreateSharedBufferOptions* options = 0; 133 const MojoCreateSharedBufferOptions* options = 0;
136 if (options_buffer) { 134 if (options_buffer) {
137 const void* buffer_start = env->GetDirectBufferAddress(options_buffer); 135 const void* buffer_start = env->GetDirectBufferAddress(options_buffer);
138 DCHECK(buffer_start); 136 DCHECK(buffer_start);
139 DCHECK_EQ(reinterpret_cast<const uintptr_t>(buffer_start) % 8, 0u); 137 DCHECK_EQ(reinterpret_cast<const uintptr_t>(buffer_start) % 8, 0u);
140 const size_t buffer_size = env->GetDirectBufferCapacity(options_buffer); 138 const size_t buffer_size = env->GetDirectBufferCapacity(options_buffer);
141 DCHECK_EQ(buffer_size, sizeof(MojoCreateSharedBufferOptions)); 139 DCHECK_EQ(buffer_size, sizeof(MojoCreateSharedBufferOptions));
142 options = static_cast<const MojoCreateSharedBufferOptions*>(buffer_start); 140 options = static_cast<const MojoCreateSharedBufferOptions*>(buffer_start);
143 DCHECK_EQ(options->struct_size, buffer_size); 141 DCHECK_EQ(options->struct_size, buffer_size);
144 } 142 }
145 MojoHandle handle; 143 MojoHandle handle;
146 MojoResult result = MojoCreateSharedBuffer(options, num_bytes, &handle); 144 MojoResult result = MojoCreateSharedBuffer(options, num_bytes, &handle);
147 return Java_CoreImpl_newResultAndInteger(env, result, handle).Release(); 145 return Java_CoreImpl_newResultAndInteger(env, result, handle);
148 } 146 }
149 147
150 static jint Close(JNIEnv* env, jobject jcaller, jint mojo_handle) { 148 static jint Close(JNIEnv* env, jobject jcaller, jint mojo_handle) {
151 return MojoClose(mojo_handle); 149 return MojoClose(mojo_handle);
152 } 150 }
153 151
154 static jint Wait(JNIEnv* env, 152 static jint Wait(JNIEnv* env,
155 jobject jcaller, 153 jobject jcaller,
156 jobject buffer, 154 jobject buffer,
157 jint mojo_handle, 155 jint mojo_handle,
(...skipping 30 matching lines...) Expand all
188 if (handles_buffer) { 186 if (handles_buffer) {
189 handles = 187 handles =
190 static_cast<MojoHandle*>(env->GetDirectBufferAddress(handles_buffer)); 188 static_cast<MojoHandle*>(env->GetDirectBufferAddress(handles_buffer));
191 num_handles = env->GetDirectBufferCapacity(handles_buffer) / 4; 189 num_handles = env->GetDirectBufferCapacity(handles_buffer) / 4;
192 } 190 }
193 // Java code will handle invalidating handles if the write succeeded. 191 // Java code will handle invalidating handles if the write succeeded.
194 return MojoWriteMessage( 192 return MojoWriteMessage(
195 mojo_handle, buffer_start, buffer_size, handles, num_handles, flags); 193 mojo_handle, buffer_start, buffer_size, handles, num_handles, flags);
196 } 194 }
197 195
198 static jobject ReadMessage(JNIEnv* env, 196 static ScopedJavaLocalRef<jobject> ReadMessage(JNIEnv* env,
199 jobject jcaller, 197 jobject jcaller,
200 jint mojo_handle, 198 jint mojo_handle,
201 jobject bytes, 199 jobject bytes,
202 jobject handles_buffer, 200 jobject handles_buffer,
203 jint flags) { 201 jint flags) {
204 void* buffer_start = 0; 202 void* buffer_start = 0;
205 uint32_t buffer_size = 0; 203 uint32_t buffer_size = 0;
206 if (bytes) { 204 if (bytes) {
207 buffer_start = env->GetDirectBufferAddress(bytes); 205 buffer_start = env->GetDirectBufferAddress(bytes);
208 DCHECK(buffer_start); 206 DCHECK(buffer_start);
209 buffer_size = env->GetDirectBufferCapacity(bytes); 207 buffer_size = env->GetDirectBufferCapacity(bytes);
210 } 208 }
211 MojoHandle* handles = 0; 209 MojoHandle* handles = 0;
212 uint32_t num_handles = 0; 210 uint32_t num_handles = 0;
213 if (handles_buffer) { 211 if (handles_buffer) {
214 handles = 212 handles =
215 static_cast<MojoHandle*>(env->GetDirectBufferAddress(handles_buffer)); 213 static_cast<MojoHandle*>(env->GetDirectBufferAddress(handles_buffer));
216 num_handles = env->GetDirectBufferCapacity(handles_buffer) / 4; 214 num_handles = env->GetDirectBufferCapacity(handles_buffer) / 4;
217 } 215 }
218 MojoResult result = MojoReadMessage( 216 MojoResult result = MojoReadMessage(
219 mojo_handle, buffer_start, &buffer_size, handles, &num_handles, flags); 217 mojo_handle, buffer_start, &buffer_size, handles, &num_handles, flags);
220 // Jave code will handle taking ownership of any received handle. 218 // Jave code will handle taking ownership of any received handle.
221 return Java_CoreImpl_newReadMessageResult( 219 return Java_CoreImpl_newReadMessageResult(env, result, buffer_size,
222 env, result, buffer_size, num_handles).Release(); 220 num_handles);
223 } 221 }
224 222
225 static jobject ReadData(JNIEnv* env, 223 static ScopedJavaLocalRef<jobject> ReadData(JNIEnv* env,
226 jobject jcaller, 224 jobject jcaller,
227 jint mojo_handle, 225 jint mojo_handle,
228 jobject elements, 226 jobject elements,
229 jint elements_capacity, 227 jint elements_capacity,
230 jint flags) { 228 jint flags) {
231 void* buffer_start = 0; 229 void* buffer_start = 0;
232 uint32_t buffer_size = elements_capacity; 230 uint32_t buffer_size = elements_capacity;
233 if (elements) { 231 if (elements) {
234 buffer_start = env->GetDirectBufferAddress(elements); 232 buffer_start = env->GetDirectBufferAddress(elements);
235 DCHECK(buffer_start); 233 DCHECK(buffer_start);
236 DCHECK(elements_capacity <= env->GetDirectBufferCapacity(elements)); 234 DCHECK(elements_capacity <= env->GetDirectBufferCapacity(elements));
237 } 235 }
238 MojoResult result = 236 MojoResult result =
239 MojoReadData(mojo_handle, buffer_start, &buffer_size, flags); 237 MojoReadData(mojo_handle, buffer_start, &buffer_size, flags);
240 return Java_CoreImpl_newResultAndInteger( 238 return Java_CoreImpl_newResultAndInteger(
241 env, result, (result == MOJO_RESULT_OK) ? buffer_size : 0) 239 env, result, (result == MOJO_RESULT_OK) ? buffer_size : 0);
242 .Release();
243 } 240 }
244 241
245 static jobject BeginReadData(JNIEnv* env, 242 static ScopedJavaLocalRef<jobject> BeginReadData(JNIEnv* env,
246 jobject jcaller, 243 jobject jcaller,
247 jint mojo_handle, 244 jint mojo_handle,
248 jint num_bytes, 245 jint num_bytes,
249 jint flags) { 246 jint flags) {
250 void const* buffer = 0; 247 void const* buffer = 0;
251 uint32_t buffer_size = num_bytes; 248 uint32_t buffer_size = num_bytes;
252 MojoResult result = 249 MojoResult result =
253 MojoBeginReadData(mojo_handle, &buffer, &buffer_size, flags); 250 MojoBeginReadData(mojo_handle, &buffer, &buffer_size, flags);
254 jobject byte_buffer = 0; 251 jobject byte_buffer = 0;
255 if (result == MOJO_RESULT_OK) { 252 if (result == MOJO_RESULT_OK) {
256 byte_buffer = 253 byte_buffer =
257 env->NewDirectByteBuffer(const_cast<void*>(buffer), buffer_size); 254 env->NewDirectByteBuffer(const_cast<void*>(buffer), buffer_size);
258 } 255 }
259 return Java_CoreImpl_newResultAndBuffer(env, result, byte_buffer).Release(); 256 return Java_CoreImpl_newResultAndBuffer(env, result, byte_buffer);
260 } 257 }
261 258
262 static jint EndReadData(JNIEnv* env, 259 static jint EndReadData(JNIEnv* env,
263 jobject jcaller, 260 jobject jcaller,
264 jint mojo_handle, 261 jint mojo_handle,
265 jint num_bytes_read) { 262 jint num_bytes_read) {
266 return MojoEndReadData(mojo_handle, num_bytes_read); 263 return MojoEndReadData(mojo_handle, num_bytes_read);
267 } 264 }
268 265
269 static jobject WriteData(JNIEnv* env, 266 static ScopedJavaLocalRef<jobject> WriteData(JNIEnv* env,
270 jobject jcaller, 267 jobject jcaller,
271 jint mojo_handle, 268 jint mojo_handle,
272 jobject elements, 269 jobject elements,
273 jint limit, 270 jint limit,
274 jint flags) { 271 jint flags) {
275 void* buffer_start = env->GetDirectBufferAddress(elements); 272 void* buffer_start = env->GetDirectBufferAddress(elements);
276 DCHECK(buffer_start); 273 DCHECK(buffer_start);
277 DCHECK(limit <= env->GetDirectBufferCapacity(elements)); 274 DCHECK(limit <= env->GetDirectBufferCapacity(elements));
278 uint32_t buffer_size = limit; 275 uint32_t buffer_size = limit;
279 MojoResult result = 276 MojoResult result =
280 MojoWriteData(mojo_handle, buffer_start, &buffer_size, flags); 277 MojoWriteData(mojo_handle, buffer_start, &buffer_size, flags);
281 return Java_CoreImpl_newResultAndInteger( 278 return Java_CoreImpl_newResultAndInteger(
282 env, result, (result == MOJO_RESULT_OK) ? buffer_size : 0) 279 env, result, (result == MOJO_RESULT_OK) ? buffer_size : 0);
283 .Release();
284 } 280 }
285 281
286 static jobject BeginWriteData(JNIEnv* env, 282 static ScopedJavaLocalRef<jobject> BeginWriteData(JNIEnv* env,
287 jobject jcaller, 283 jobject jcaller,
288 jint mojo_handle, 284 jint mojo_handle,
289 jint num_bytes, 285 jint num_bytes,
290 jint flags) { 286 jint flags) {
291 void* buffer = 0; 287 void* buffer = 0;
292 uint32_t buffer_size = num_bytes; 288 uint32_t buffer_size = num_bytes;
293 MojoResult result = 289 MojoResult result =
294 MojoBeginWriteData(mojo_handle, &buffer, &buffer_size, flags); 290 MojoBeginWriteData(mojo_handle, &buffer, &buffer_size, flags);
295 jobject byte_buffer = 0; 291 jobject byte_buffer = 0;
296 if (result == MOJO_RESULT_OK) { 292 if (result == MOJO_RESULT_OK) {
297 byte_buffer = env->NewDirectByteBuffer(buffer, buffer_size); 293 byte_buffer = env->NewDirectByteBuffer(buffer, buffer_size);
298 } 294 }
299 return Java_CoreImpl_newResultAndBuffer(env, result, byte_buffer).Release(); 295 return Java_CoreImpl_newResultAndBuffer(env, result, byte_buffer);
300 } 296 }
301 297
302 static jint EndWriteData(JNIEnv* env, 298 static jint EndWriteData(JNIEnv* env,
303 jobject jcaller, 299 jobject jcaller,
304 jint mojo_handle, 300 jint mojo_handle,
305 jint num_bytes_written) { 301 jint num_bytes_written) {
306 return MojoEndWriteData(mojo_handle, num_bytes_written); 302 return MojoEndWriteData(mojo_handle, num_bytes_written);
307 } 303 }
308 304
309 static jobject Duplicate(JNIEnv* env, 305 static ScopedJavaLocalRef<jobject> Duplicate(JNIEnv* env,
310 jobject jcaller, 306 jobject jcaller,
311 jint mojo_handle, 307 jint mojo_handle,
312 jobject options_buffer) { 308 jobject options_buffer) {
313 const MojoDuplicateBufferHandleOptions* options = 0; 309 const MojoDuplicateBufferHandleOptions* options = 0;
314 if (options_buffer) { 310 if (options_buffer) {
315 const void* buffer_start = env->GetDirectBufferAddress(options_buffer); 311 const void* buffer_start = env->GetDirectBufferAddress(options_buffer);
316 DCHECK(buffer_start); 312 DCHECK(buffer_start);
317 const size_t buffer_size = env->GetDirectBufferCapacity(options_buffer); 313 const size_t buffer_size = env->GetDirectBufferCapacity(options_buffer);
318 DCHECK_EQ(buffer_size, sizeof(MojoDuplicateBufferHandleOptions)); 314 DCHECK_EQ(buffer_size, sizeof(MojoDuplicateBufferHandleOptions));
319 options = 315 options =
320 static_cast<const MojoDuplicateBufferHandleOptions*>(buffer_start); 316 static_cast<const MojoDuplicateBufferHandleOptions*>(buffer_start);
321 DCHECK_EQ(options->struct_size, buffer_size); 317 DCHECK_EQ(options->struct_size, buffer_size);
322 } 318 }
323 MojoHandle handle; 319 MojoHandle handle;
324 MojoResult result = MojoDuplicateBufferHandle(mojo_handle, options, &handle); 320 MojoResult result = MojoDuplicateBufferHandle(mojo_handle, options, &handle);
325 return Java_CoreImpl_newResultAndInteger(env, result, handle).Release(); 321 return Java_CoreImpl_newResultAndInteger(env, result, handle);
326 } 322 }
327 323
328 static jobject Map(JNIEnv* env, 324 static ScopedJavaLocalRef<jobject> Map(JNIEnv* env,
329 jobject jcaller, 325 jobject jcaller,
330 jint mojo_handle, 326 jint mojo_handle,
331 jlong offset, 327 jlong offset,
332 jlong num_bytes, 328 jlong num_bytes,
333 jint flags) { 329 jint flags) {
334 void* buffer = 0; 330 void* buffer = 0;
335 MojoResult result = 331 MojoResult result =
336 MojoMapBuffer(mojo_handle, offset, num_bytes, &buffer, flags); 332 MojoMapBuffer(mojo_handle, offset, num_bytes, &buffer, flags);
337 jobject byte_buffer = 0; 333 jobject byte_buffer = 0;
338 if (result == MOJO_RESULT_OK) { 334 if (result == MOJO_RESULT_OK) {
339 byte_buffer = env->NewDirectByteBuffer(buffer, num_bytes); 335 byte_buffer = env->NewDirectByteBuffer(buffer, num_bytes);
340 } 336 }
341 return Java_CoreImpl_newResultAndBuffer(env, result, byte_buffer).Release(); 337 return Java_CoreImpl_newResultAndBuffer(env, result, byte_buffer);
342 } 338 }
343 339
344 static int Unmap(JNIEnv* env, jobject jcaller, jobject buffer) { 340 static int Unmap(JNIEnv* env, jobject jcaller, jobject buffer) {
345 void* buffer_start = env->GetDirectBufferAddress(buffer); 341 void* buffer_start = env->GetDirectBufferAddress(buffer);
346 DCHECK(buffer_start); 342 DCHECK(buffer_start);
347 return MojoUnmapBuffer(buffer_start); 343 return MojoUnmapBuffer(buffer_start);
348 } 344 }
349 345
350 static jobject AsyncWait(JNIEnv* env, 346 static ScopedJavaLocalRef<jobject> AsyncWait(JNIEnv* env,
351 jobject jcaller, 347 jobject jcaller,
352 jint mojo_handle, 348 jint mojo_handle,
353 jint signals, 349 jint signals,
354 jlong deadline, 350 jlong deadline,
355 jobject callback) { 351 jobject callback) {
356 AsyncWaitCallbackData* callback_data = 352 AsyncWaitCallbackData* callback_data =
357 new AsyncWaitCallbackData(env, jcaller, callback); 353 new AsyncWaitCallbackData(env, jcaller, callback);
358 MojoAsyncWaitID cancel_id; 354 MojoAsyncWaitID cancel_id;
359 if (static_cast<MojoHandle>(mojo_handle) != MOJO_HANDLE_INVALID) { 355 if (static_cast<MojoHandle>(mojo_handle) != MOJO_HANDLE_INVALID) {
360 cancel_id = Environment::GetDefaultAsyncWaiter()->AsyncWait( 356 cancel_id = Environment::GetDefaultAsyncWaiter()->AsyncWait(
361 mojo_handle, signals, deadline, AsyncWaitCallback, callback_data); 357 mojo_handle, signals, deadline, AsyncWaitCallback, callback_data);
362 } else { 358 } else {
363 cancel_id = kInvalidHandleCancelID; 359 cancel_id = kInvalidHandleCancelID;
364 base::MessageLoop::current()->PostTask( 360 base::MessageLoop::current()->PostTask(
365 FROM_HERE, 361 FROM_HERE,
366 base::Bind( 362 base::Bind(
367 &AsyncWaitCallback, callback_data, MOJO_RESULT_INVALID_ARGUMENT)); 363 &AsyncWaitCallback, callback_data, MOJO_RESULT_INVALID_ARGUMENT));
368 } 364 }
369 base::android::ScopedJavaLocalRef<jobject> cancellable = 365 base::android::ScopedJavaLocalRef<jobject> cancellable =
370 Java_CoreImpl_newAsyncWaiterCancellableImpl( 366 Java_CoreImpl_newAsyncWaiterCancellableImpl(
371 env, jcaller, cancel_id, reinterpret_cast<intptr_t>(callback_data)); 367 env, jcaller, cancel_id, reinterpret_cast<intptr_t>(callback_data));
372 callback_data->cancellable.Reset(env, cancellable.obj()); 368 callback_data->cancellable.Reset(env, cancellable.obj());
373 return cancellable.Release(); 369 return cancellable;
374 } 370 }
375 371
376 static void CancelAsyncWait(JNIEnv* env, 372 static void CancelAsyncWait(JNIEnv* env,
377 jobject jcaller, 373 jobject jcaller,
378 jlong id, 374 jlong id,
379 jlong data_ptr) { 375 jlong data_ptr) {
380 if (id == 0) { 376 if (id == 0) {
381 // If |id| is |kInvalidHandleCancelID|, the async wait was done on an 377 // If |id| is |kInvalidHandleCancelID|, the async wait was done on an
382 // invalid handle, so the AsyncWaitCallback will be called and will clear 378 // invalid handle, so the AsyncWaitCallback will be called and will clear
383 // the data_ptr. 379 // the data_ptr.
(...skipping 15 matching lines...) Expand all
399 return 0; 395 return 0;
400 return alignment - offset; 396 return alignment - offset;
401 } 397 }
402 398
403 bool RegisterCoreImpl(JNIEnv* env) { 399 bool RegisterCoreImpl(JNIEnv* env) {
404 return RegisterNativesImpl(env); 400 return RegisterNativesImpl(env);
405 } 401 }
406 402
407 } // namespace android 403 } // namespace android
408 } // namespace mojo 404 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698