Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3265821c authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Revert "Revert "Remove getAppsUsingPermisisons"""

parents 4dfc39cc 495d8911
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -33747,7 +33747,6 @@ package android.permissionpresenterservice {
    method public final void attachBaseContext(android.content.Context);
    method public final android.os.IBinder onBind(android.content.Intent);
    method public abstract java.util.List<android.content.pm.permission.RuntimePermissionPresentationInfo> onGetAppPermissions(java.lang.String);
    method public abstract java.util.List<android.content.pm.ApplicationInfo> onGetAppsUsingPermissions(boolean);
    field public static final java.lang.String SERVICE_INTERFACE = "android.permissionpresenterservice.RuntimePermissionPresenterService";
  }
+1 −2
Original line number Diff line number Diff line
@@ -25,5 +25,4 @@ import android.os.RemoteCallback;
 */
oneway interface IRuntimePermissionPresenter {
    void getAppPermissions(String packageName, in RemoteCallback callback);
    void getAppsUsingPermissions(boolean system, in RemoteCallback callback);
}
+0 −77
Original line number Diff line number Diff line
@@ -72,15 +72,6 @@ public final class RuntimePermissionPresenter {
                List<RuntimePermissionPresentationInfo> permissions) {
            /* do nothing - stub */
        }

        /**
         * The result for {@link #getAppsUsingPermissions(boolean, List)}.
         * @param system Whether to return only the system apps or only the non-system ones.
         * @param apps The apps using runtime permissions.
         */
        public void getAppsUsingPermissions(boolean system, @NonNull List<ApplicationInfo> apps) {
            /* do nothing - stub */
        }
    }

    private static final Object sLock = new Object();
@@ -127,29 +118,6 @@ public final class RuntimePermissionPresenter {
        mRemoteService.processMessage(message);
    }

    /**
     * Gets the system apps that use runtime permissions. System apps are ones
     * that are considered system for presentation purposes instead of ones
     * that are preinstalled on the system image. System apps are ones that
     * are on the system image, haven't been updated (a.k.a factory apps)
     * that do not have a launcher icon.
     *
     * @param system If true only system apps are returned otherwise only
     *        non-system ones are returned.
     * @param callback Callback to receive the result.
     * @param handler Handler on which to invoke the callback.
     */
    public void getAppsUsingPermissions(boolean system, @NonNull OnResultCallback callback,
            @Nullable Handler handler) {
        SomeArgs args = SomeArgs.obtain();
        args.arg1 = callback;
        args.arg2 = handler;
        args.argi1 = system ? 1 : 0;
        Message message = mRemoteService.obtainMessage(
                RemoteService.MSG_GET_APPS_USING_PERMISSIONS, args);
        mRemoteService.processMessage(message);
    }

    private static final class RemoteService
            extends Handler implements ServiceConnection {
        private static final long UNBIND_TIMEOUT_MILLIS = 10000;
@@ -254,51 +222,6 @@ public final class RuntimePermissionPresenter {
                    scheduleUnbind();
                } break;

                case MSG_GET_APPS_USING_PERMISSIONS: {
                    SomeArgs args = (SomeArgs) msg.obj;
                    final OnResultCallback callback = (OnResultCallback) args.arg1;
                    final Handler handler = (Handler) args.arg2;
                    final boolean system = args.argi1 == 1;
                    args.recycle();
                    final IRuntimePermissionPresenter remoteInstance;
                    synchronized (mLock) {
                        remoteInstance = mRemoteInstance;
                    }
                    if (remoteInstance == null) {
                        return;
                    }
                    try {
                        remoteInstance.getAppsUsingPermissions(system, new RemoteCallback(
                                new RemoteCallback.OnResultListener() {
                            @Override
                            public void onResult(Bundle result) {
                                final List<ApplicationInfo> reportedApps;
                                List<ApplicationInfo> apps = null;
                                if (result != null) {
                                    apps = result.getParcelableArrayList(KEY_RESULT);
                                }
                                if (apps == null) {
                                    apps = Collections.emptyList();
                                }
                                reportedApps = apps;
                                if (handler != null) {
                                    handler.post(new Runnable() {
                                        @Override
                                        public void run() {
                                            callback.getAppsUsingPermissions(system, reportedApps);
                                        }
                                    });
                                } else {
                                    callback.getAppsUsingPermissions(system, reportedApps);
                                }
                            }
                        }, this));
                    } catch (RemoteException re) {
                        Log.e(TAG, "Error getting apps using permissions", re);
                    }
                    scheduleUnbind();
                } break;

                case MSG_UNBIND: {
                    synchronized (mLock) {
                        if (mBound) {
+0 −27
Original line number Diff line number Diff line
@@ -72,14 +72,6 @@ public abstract class RuntimePermissionPresenterService extends Service {
     */
    public abstract List<RuntimePermissionPresentationInfo> onGetAppPermissions(String packageName);

    /**
     * Gets the apps that use runtime permissions.
     *
     * @param system Whether to return only the system apps or only the non-system ones.
     * @return The app list.
     */
    public abstract List<ApplicationInfo> onGetAppsUsingPermissions(boolean system);

    @Override
    public final IBinder onBind(Intent intent) {
        return new IRuntimePermissionPresenter.Stub() {
@@ -91,12 +83,6 @@ public abstract class RuntimePermissionPresenterService extends Service {
                mHandler.obtainMessage(MyHandler.MSG_GET_APP_PERMISSIONS,
                        args).sendToTarget();
            }

            @Override
            public void getAppsUsingPermissions(boolean system, RemoteCallback callback) {
                mHandler.obtainMessage(MyHandler.MSG_GET_APPS_USING_PERMISSIONS,
                        system ? 1 : 0, 0, callback).sendToTarget();
            }
        };
    }

@@ -127,19 +113,6 @@ public abstract class RuntimePermissionPresenterService extends Service {
                        callback.sendResult(null);
                    }
                } break;

                case MSG_GET_APPS_USING_PERMISSIONS: {
                    RemoteCallback callback = (RemoteCallback) msg.obj;
                    final boolean system = msg.arg1 == 1;
                    List<ApplicationInfo> apps = onGetAppsUsingPermissions(system);
                    if (apps != null && !apps.isEmpty()) {
                        Bundle result = new Bundle();
                        result.putParcelableList(RuntimePermissionPresenter.KEY_RESULT, apps);
                        callback.sendResult(result);
                    } else {
                        callback.sendResult(null);
                    }
                } break;
            }
        }
    }