Lines Matching refs:env

57 static bool CheckForJniException(JNIEnv* env) {  in CheckForJniException()  argument
58 if (env->ExceptionCheck()) { in CheckForJniException()
59 env->ExceptionDescribe(); in CheckForJniException()
60 env->ExceptionClear(); in CheckForJniException()
69 static jfieldID CacheField(JNIEnv* env, jclass clazz, const char field_name[], const char type[]) { in CacheField() argument
72 fid = env->GetFieldID(clazz, actual_field_name.c_str(), type); in CacheField()
79 int insertFileInternal(JNIEnv* env, jobject media_provider_object, jmethodID mid_insert_file, in insertFileInternal() argument
81 ScopedLocalRef<jstring> j_path(env, env->NewStringUTF(path.c_str())); in insertFileInternal()
82 int res = env->CallIntMethod(media_provider_object, mid_insert_file, j_path.get(), uid); in insertFileInternal()
84 if (CheckForJniException(env)) { in insertFileInternal()
90 int deleteFileInternal(JNIEnv* env, jobject media_provider_object, jmethodID mid_delete_file, in deleteFileInternal() argument
92 ScopedLocalRef<jstring> j_path(env, env->NewStringUTF(path.c_str())); in deleteFileInternal()
93 int res = env->CallIntMethod(media_provider_object, mid_delete_file, j_path.get(), uid); in deleteFileInternal()
95 if (CheckForJniException(env)) { in deleteFileInternal()
101 int isDirAccessAllowedInternal(JNIEnv* env, jobject media_provider_object, in isDirAccessAllowedInternal() argument
104 ScopedLocalRef<jstring> j_path(env, env->NewStringUTF(path.c_str())); in isDirAccessAllowedInternal()
105 int res = env->CallIntMethod(media_provider_object, mid_is_diraccess_allowed, j_path.get(), uid, in isDirAccessAllowedInternal()
108 if (CheckForJniException(env)) { in isDirAccessAllowedInternal()
114 bool isUidAllowedAccessToDataOrObbPathInternal(JNIEnv* env, jobject media_provider_object, in isUidAllowedAccessToDataOrObbPathInternal() argument
117 ScopedLocalRef<jstring> j_path(env, env->NewStringUTF(path.c_str())); in isUidAllowedAccessToDataOrObbPathInternal()
118 bool res = env->CallBooleanMethod(media_provider_object, mid_is_uid_allowed_path_access_, uid, in isUidAllowedAccessToDataOrObbPathInternal()
121 if (CheckForJniException(env)) { in isUidAllowedAccessToDataOrObbPathInternal()
128 JNIEnv* env, jobject media_provider_object, jmethodID mid_get_files_in_dir, uid_t uid, in getFilesInDirectoryInternal() argument
131 ScopedLocalRef<jstring> j_path(env, env->NewStringUTF(path.c_str())); in getFilesInDirectoryInternal()
134 env, static_cast<jobjectArray>(env->CallObjectMethod( in getFilesInDirectoryInternal()
137 if (CheckForJniException(env)) { in getFilesInDirectoryInternal()
142 int de_count = env->GetArrayLength(files_list.get()); in getFilesInDirectoryInternal()
144 ScopedLocalRef<jstring> j_d_name(env, in getFilesInDirectoryInternal()
145 (jstring)env->GetObjectArrayElement(files_list.get(), 0)); in getFilesInDirectoryInternal()
146 ScopedUtfChars d_name(env, j_d_name.get()); in getFilesInDirectoryInternal()
159 ScopedLocalRef<jstring> j_d_name(env, in getFilesInDirectoryInternal()
160 (jstring)env->GetObjectArrayElement(files_list.get(), i)); in getFilesInDirectoryInternal()
161 ScopedUtfChars d_name(env, j_d_name.get()); in getFilesInDirectoryInternal()
174 int renameInternal(JNIEnv* env, jobject media_provider_object, jmethodID mid_rename, in renameInternal() argument
176 ScopedLocalRef<jstring> j_old_path(env, env->NewStringUTF(old_path.c_str())); in renameInternal()
177 ScopedLocalRef<jstring> j_new_path(env, env->NewStringUTF(new_path.c_str())); in renameInternal()
178 int res = env->CallIntMethod(media_provider_object, mid_rename, j_old_path.get(), in renameInternal()
181 if (CheckForJniException(env)) { in renameInternal()
187 void onFileCreatedInternal(JNIEnv* env, jobject media_provider_object, in onFileCreatedInternal() argument
189 ScopedLocalRef<jstring> j_path(env, env->NewStringUTF(path.c_str())); in onFileCreatedInternal()
191 env->CallVoidMethod(media_provider_object, mid_on_file_created, j_path.get()); in onFileCreatedInternal()
192 CheckForJniException(env); in onFileCreatedInternal()
212 MediaProviderWrapper::MediaProviderWrapper(JNIEnv* env, jobject media_provider) { in MediaProviderWrapper() argument
217 media_provider_object_ = reinterpret_cast<jobject>(env->NewGlobalRef(media_provider)); in MediaProviderWrapper()
218 media_provider_class_ = env->FindClass("com/android/providers/media/MediaProvider"); in MediaProviderWrapper()
222 media_provider_class_ = reinterpret_cast<jclass>(env->NewGlobalRef(media_provider_class_)); in MediaProviderWrapper()
225 mid_insert_file_ = CacheMethod(env, "insertFileIfNecessary", "(Ljava/lang/String;I)I"); in MediaProviderWrapper()
226 mid_delete_file_ = CacheMethod(env, "deleteFile", "(Ljava/lang/String;I)I"); in MediaProviderWrapper()
227 mid_on_file_open_ = CacheMethod(env, "onFileOpen", in MediaProviderWrapper()
230 mid_is_diraccess_allowed_ = CacheMethod(env, "isDirAccessAllowed", "(Ljava/lang/String;II)I"); in MediaProviderWrapper()
232 CacheMethod(env, "getFilesInDirectory", "(Ljava/lang/String;I)[Ljava/lang/String;"); in MediaProviderWrapper()
233 mid_rename_ = CacheMethod(env, "rename", "(Ljava/lang/String;Ljava/lang/String;I)I"); in MediaProviderWrapper()
235 CacheMethod(env, "isUidAllowedAccessToDataOrObbPath", "(ILjava/lang/String;)Z"); in MediaProviderWrapper()
236 mid_on_file_created_ = CacheMethod(env, "onFileCreated", "(Ljava/lang/String;)V"); in MediaProviderWrapper()
237 mid_should_allow_lookup_ = CacheMethod(env, "shouldAllowLookup", "(II)Z"); in MediaProviderWrapper()
238 mid_is_app_clone_user_ = CacheMethod(env, "isAppCloneUser", "(I)Z"); in MediaProviderWrapper()
239 mid_transform_ = CacheMethod(env, "transform", "(Ljava/lang/String;Ljava/lang/String;IIIII)Z"); in MediaProviderWrapper()
241 CacheMethod(env, "onFileLookup", in MediaProviderWrapper()
245 file_lookup_result_class_ = env->FindClass("com/android/providers/media/FileLookupResult"); in MediaProviderWrapper()
250 reinterpret_cast<jclass>(env->NewGlobalRef(file_lookup_result_class_)); in MediaProviderWrapper()
251 fid_file_lookup_transforms_ = CacheField(env, file_lookup_result_class_, "transforms", "I"); in MediaProviderWrapper()
253 CacheField(env, file_lookup_result_class_, "transformsReason", "I"); in MediaProviderWrapper()
254 fid_file_lookup_uid_ = CacheField(env, file_lookup_result_class_, "uid", "I"); in MediaProviderWrapper()
256 CacheField(env, file_lookup_result_class_, "transformsComplete", "Z"); in MediaProviderWrapper()
258 CacheField(env, file_lookup_result_class_, "transformsSupported", "Z"); in MediaProviderWrapper()
260 CacheField(env, file_lookup_result_class_, "ioPath", "Ljava/lang/String;"); in MediaProviderWrapper()
263 file_open_result_class_ = env->FindClass("com/android/providers/media/FileOpenResult"); in MediaProviderWrapper()
267 file_open_result_class_ = reinterpret_cast<jclass>(env->NewGlobalRef(file_open_result_class_)); in MediaProviderWrapper()
268 fid_file_open_status_ = CacheField(env, file_open_result_class_, "status", "I"); in MediaProviderWrapper()
269 fid_file_open_uid_ = CacheField(env, file_open_result_class_, "uid", "I"); in MediaProviderWrapper()
270 fid_file_open_transforms_uid_ = CacheField(env, file_open_result_class_, "transformsUid", "I"); in MediaProviderWrapper()
272 CacheField(env, file_open_result_class_, "redactionRanges", "[J"); in MediaProviderWrapper()
273 fid_file_open_fd_ = CacheField(env, file_open_result_class_, "nativeFd", "I"); in MediaProviderWrapper()
277 JNIEnv* env = MaybeAttachCurrentThread(); in ~MediaProviderWrapper() local
278 env->DeleteGlobalRef(media_provider_object_); in ~MediaProviderWrapper()
279 env->DeleteGlobalRef(media_provider_class_); in ~MediaProviderWrapper()
287 JNIEnv* env = MaybeAttachCurrentThread(); in InsertFile() local
288 return insertFileInternal(env, media_provider_object_, mid_insert_file_, path, uid); in InsertFile()
297 JNIEnv* env = MaybeAttachCurrentThread(); in DeleteFile() local
298 return deleteFileInternal(env, media_provider_object_, mid_delete_file_, path, uid); in DeleteFile()
306 JNIEnv* env = MaybeAttachCurrentThread(); in OnFileOpen() local
312 ScopedLocalRef<jstring> j_path(env, env->NewStringUTF(path.c_str())); in OnFileOpen()
313 ScopedLocalRef<jstring> j_io_path(env, env->NewStringUTF(io_path.c_str())); in OnFileOpen()
315 env, env->CallObjectMethod(media_provider_object_, mid_on_file_open_, j_path.get(), in OnFileOpen()
319 if (CheckForJniException(env)) { in OnFileOpen()
323 const int status = env->GetIntField(j_res_file_open_object.get(), fid_file_open_status_); in OnFileOpen()
324 const int original_uid = env->GetIntField(j_res_file_open_object.get(), fid_file_open_uid_); in OnFileOpen()
326 env->GetIntField(j_res_file_open_object.get(), fid_file_open_transforms_uid_); in OnFileOpen()
327 const int fd = env->GetIntField(j_res_file_open_object.get(), fid_file_open_fd_); in OnFileOpen()
331 env, static_cast<jlongArray>(env->GetObjectField(j_res_file_open_object.get(), in OnFileOpen()
333 ScopedLongArrayRO redaction_ranges(env, redaction_ranges_local_ref.get()); in OnFileOpen()
358 JNIEnv* env = MaybeAttachCurrentThread(); in IsCreatingDirAllowed() local
359 return isDirAccessAllowedInternal(env, media_provider_object_, mid_is_diraccess_allowed_, path, in IsCreatingDirAllowed()
368 JNIEnv* env = MaybeAttachCurrentThread(); in IsDeletingDirAllowed() local
369 return isDirAccessAllowedInternal(env, media_provider_object_, mid_is_diraccess_allowed_, path, in IsDeletingDirAllowed()
382 JNIEnv* env = MaybeAttachCurrentThread(); in GetDirectoryEntries() local
383 … res = getFilesInDirectoryInternal(env, media_provider_object_, mid_get_files_in_dir_, uid, path); in GetDirectoryEntries()
402 JNIEnv* env = MaybeAttachCurrentThread(); in IsOpendirAllowed() local
403 return isDirAccessAllowedInternal(env, media_provider_object_, mid_is_diraccess_allowed_, path, in IsOpendirAllowed()
413 JNIEnv* env = MaybeAttachCurrentThread(); in isUidAllowedAccessToDataOrObbPath() local
415 env, media_provider_object_, mid_is_uid_allowed_access_to_data_or_obb_path_, uid, path); in isUidAllowedAccessToDataOrObbPath()
427 JNIEnv* env = MaybeAttachCurrentThread(); in Rename() local
428 return renameInternal(env, media_provider_object_, mid_rename_, old_path, new_path, uid); in Rename()
432 JNIEnv* env = MaybeAttachCurrentThread(); in OnFileCreated() local
434 return onFileCreatedInternal(env, media_provider_object_, mid_on_file_created_, path); in OnFileCreated()
438 JNIEnv* env = MaybeAttachCurrentThread(); in ShouldAllowLookup() local
440 bool res = env->CallBooleanMethod(media_provider_object_, mid_should_allow_lookup_, uid, in ShouldAllowLookup()
443 if (CheckForJniException(env)) { in ShouldAllowLookup()
450 JNIEnv* env = MaybeAttachCurrentThread(); in IsAppCloneUser() local
452 bool res = env->CallBooleanMethod(media_provider_object_, mid_is_app_clone_user_, userId); in IsAppCloneUser()
454 if (CheckForJniException(env)) { in IsAppCloneUser()
462 JNIEnv* env = MaybeAttachCurrentThread(); in FileLookup() local
464 ScopedLocalRef<jstring> j_path(env, env->NewStringUTF(path.c_str())); in FileLookup()
467 env, env->CallObjectMethod(media_provider_object_, mid_file_lookup_, j_path.get(), uid, in FileLookup()
470 if (CheckForJniException(env)) { in FileLookup()
474 int transforms = env->GetIntField(j_res_file_lookup_object.get(), fid_file_lookup_transforms_); in FileLookup()
476 env->GetIntField(j_res_file_lookup_object.get(), fid_file_lookup_transforms_reason_); in FileLookup()
477 int original_uid = env->GetIntField(j_res_file_lookup_object.get(), fid_file_lookup_uid_); in FileLookup()
478 bool transforms_complete = env->GetBooleanField(j_res_file_lookup_object.get(), in FileLookup()
480 bool transforms_supported = env->GetBooleanField(j_res_file_lookup_object.get(), in FileLookup()
483 env, in FileLookup()
484 (jstring)env->GetObjectField(j_res_file_lookup_object.get(), fid_file_lookup_io_path_)); in FileLookup()
485 ScopedUtfChars j_io_path_utf(env, j_io_path.get()); in FileLookup()
496 JNIEnv* env = MaybeAttachCurrentThread(); in Transform() local
498 ScopedLocalRef<jstring> j_src(env, env->NewStringUTF(src.c_str())); in Transform()
499 ScopedLocalRef<jstring> j_dst(env, env->NewStringUTF(dst.c_str())); in Transform()
500 bool res = env->CallBooleanMethod(media_provider_object_, mid_transform_, j_src.get(), in Transform()
504 if (CheckForJniException(env)) { in Transform()
518 jmethodID MediaProviderWrapper::CacheMethod(JNIEnv* env, const char method_name[], in CacheMethod() argument
523 mid = env->GetMethodID(media_provider_class_, actual_method_name.c_str(), signature); in CacheMethod()
540 JNIEnv* env = nullptr; in MaybeAttachCurrentThread() local
541 if (gJavaVm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_4) == JNI_OK) { in MaybeAttachCurrentThread()
542 return env; in MaybeAttachCurrentThread()
550 CHECK_EQ(gJavaVm->AttachCurrentThread(&env, nullptr), 0); in MaybeAttachCurrentThread()
551 CHECK(env != nullptr); in MaybeAttachCurrentThread()
553 pthread_setspecific(gJniEnvKey, env); in MaybeAttachCurrentThread()
554 return env; in MaybeAttachCurrentThread()