transcoding: use NDK methods for permission and binder

- Change permission checks to use NDK
- Replace MediaProvider uid check with permission check of
  MANAGE_EXTERNAL_STORAGE (which is replacing the deprecated
  WRITE_MEDIA_STORAGE).
- Use ABinderProcess_* for thread pool.

bug: 159172726
bug: 171393067
test: MediaTranscodingService unit tests; dumpsys to check if
MediaProvider can still regiserClient successfully.

Change-Id: I4fed7bb23a2d68c92e5cd1aecd5a6ef340dc2b61
diff --git a/services/mediatranscoding/MediaTranscodingService.cpp b/services/mediatranscoding/MediaTranscodingService.cpp
index 56f327e..64def5e 100644
--- a/services/mediatranscoding/MediaTranscodingService.cpp
+++ b/services/mediatranscoding/MediaTranscodingService.cpp
@@ -20,7 +20,7 @@
 
 #include <android/binder_manager.h>
 #include <android/binder_process.h>
-#include <binder/IServiceManager.h>
+#include <android/permission_manager.h>
 #include <cutils/properties.h>
 #include <media/TranscoderWrapper.h>
 #include <media/TranscodingClientManager.h>
@@ -60,8 +60,12 @@
 binder_status_t MediaTranscodingService::dump(int fd, const char** /*args*/, uint32_t /*numArgs*/) {
     String8 result;
 
-    // TODO(b/161549994): Remove libbinder dependencies for mainline.
-    if (checkCallingPermission(String16("android.permission.DUMP")) == false) {
+    uid_t callingUid = AIBinder_getCallingUid();
+    pid_t callingPid = AIBinder_getCallingPid();
+    int32_t permissionResult;
+    if (APermissionManager_checkPermission("android.permission.DUMP", callingPid, callingUid,
+                                           &permissionResult) != PERMISSION_MANAGER_STATUS_OK ||
+        permissionResult != PERMISSION_MANAGER_PERMISSION_GRANTED) {
         result.format(
                 "Permission Denial: "
                 "can't dump MediaTranscodingService from pid=%d, uid=%d\n",