Loading src/com/android/packageinstaller/permission/model/PermissionGroups.java +29 −7 Original line number Diff line number Diff line Loading @@ -55,16 +55,19 @@ public final class PermissionGroups implements LoaderCallbacks<List<PermissionGr private final Context mContext; private final PermissionsGroupsChangeCallback mCallback; private final boolean mGetAppUiInfo; private final boolean mGetNonPlatformPermissions; public interface PermissionsGroupsChangeCallback { public void onPermissionGroupsChanged(); } public PermissionGroups(Context context, LoaderManager loaderManager, PermissionsGroupsChangeCallback callback, boolean getAppUiInfo) { PermissionsGroupsChangeCallback callback, boolean getAppUiInfo, boolean getNonPlatformPermissions) { mContext = context; mCallback = callback; mGetAppUiInfo = getAppUiInfo; mGetNonPlatformPermissions = getNonPlatformPermissions; // Don't update immediately as otherwise we can get a callback before this object is // initialized. Loading @@ -73,7 +76,7 @@ public final class PermissionGroups implements LoaderCallbacks<List<PermissionGr @Override public Loader<List<PermissionGroup>> onCreateLoader(int id, Bundle args) { return new PermissionsLoader(mContext, mGetAppUiInfo); return new PermissionsLoader(mContext, mGetAppUiInfo, mGetNonPlatformPermissions); } @Override Loading Loading @@ -135,12 +138,15 @@ public final class PermissionGroups implements LoaderCallbacks<List<PermissionGr * @param context Context to use * @param isCanceled callback checked if the group resolution should be aborted * @param getAppUiInfo If the UI info for apps should be updated * @param getNonPlatformPermissions If we should get non-platform permission groups * * @return the list of all groups int the system */ public static @NonNull List<PermissionGroup> getAllPermissionGroups(@NonNull Context context, @Nullable Supplier<Boolean> isCanceled, boolean getAppUiInfo) { return getPermissionGroups(context, isCanceled, getAppUiInfo, null, null); @Nullable Supplier<Boolean> isCanceled, boolean getAppUiInfo, boolean getNonPlatformPermissions) { return getPermissionGroups(context, isCanceled, getAppUiInfo, getNonPlatformPermissions, null, null); } /** Loading @@ -149,6 +155,7 @@ public final class PermissionGroups implements LoaderCallbacks<List<PermissionGr * @param context Context to use * @param isCanceled callback checked if the group resolution should be aborted * @param getAppUiInfo If the UI info for apps should be updated * @param getNonPlatformPermissions If we should get non-platform permission groups * @param groupName Optional group to filter for. * @param packageName Optional package to filter for. * Loading @@ -156,7 +163,8 @@ public final class PermissionGroups implements LoaderCallbacks<List<PermissionGr */ public static @NonNull List<PermissionGroup> getPermissionGroups(@NonNull Context context, @Nullable Supplier<Boolean> isCanceled, boolean getAppUiInfo, @Nullable String groupName, @Nullable String packageName) { boolean getNonPlatformPermissions, @Nullable String groupName, @Nullable String packageName) { ArraySet<String> launcherPkgs = Utils.getLauncherPackages(context); PermissionApps.PmCache pmCache = new PermissionApps.PmCache( context.getPackageManager()); Loading @@ -175,6 +183,11 @@ public final class PermissionGroups implements LoaderCallbacks<List<PermissionGr return Collections.emptyList(); } // Ignore non-platform permissions and the UNDEFINED group. if (!getNonPlatformPermissions && !Utils.isModernPermissionGroup(groupInfo.name)) { continue; } // Get the permissions in this group. final List<PermissionInfo> groupPermissions; try { Loading Loading @@ -248,6 +261,12 @@ public final class PermissionGroups implements LoaderCallbacks<List<PermissionGr continue; } // Ignore non-platform permissions and the UNDEFINED group. if (!getNonPlatformPermissions && !Utils.isModernPermissionGroup( permissionInfo.name)) { continue; } // If no app uses this permission, if (!requestedPermissions.contains(permissionInfo.name)) { continue; Loading Loading @@ -303,10 +322,13 @@ public final class PermissionGroups implements LoaderCallbacks<List<PermissionGr private static final class PermissionsLoader extends AsyncTaskLoader<List<PermissionGroup>> implements PackageManager.OnPermissionsChangedListener { private final boolean mGetAppUiInfo; private final boolean mGetNonPlatformPermissions; PermissionsLoader(Context context, boolean getAppUiInfo) { PermissionsLoader(Context context, boolean getAppUiInfo, boolean getNonPlatformPermissions) { super(context); mGetAppUiInfo = getAppUiInfo; mGetNonPlatformPermissions = getNonPlatformPermissions; } @Override Loading @@ -323,7 +345,7 @@ public final class PermissionGroups implements LoaderCallbacks<List<PermissionGr @Override public List<PermissionGroup> loadInBackground() { return getAllPermissionGroups(getContext(), this::isLoadInBackgroundCanceled, mGetAppUiInfo); mGetAppUiInfo, mGetNonPlatformPermissions); } @Override Loading src/com/android/packageinstaller/permission/model/PermissionUsages.java +12 −5 Original line number Diff line number Diff line Loading @@ -63,6 +63,8 @@ public final class PermissionUsages implements LoaderCallbacks<List<AppPermissio private static final String KEY_FILTER_END_TIME_MILLIS = "KEY_FILTER_END_TIME_MILLIS"; private static final String KEY_USAGE_FLAGS = "KEY_USAGE_FLAGS"; private static final String KEY_GET_UI_INFO = "KEY_GET_UI_INFO"; private static final String KEY_GET_NON_PLATFORM_PERMISSIONS = "KEY_GET_NON_PLATFORM_PERMISSIONS"; private @Nullable PermissionsUsagesChangeCallback mCallback; Loading @@ -77,16 +79,18 @@ public final class PermissionUsages implements LoaderCallbacks<List<AppPermissio public void load(@Nullable String filterPackageName, @Nullable String filterPermissionGroup, long filterBeginTimeMillis, long filterEndTimeMillis, int usageFlags, @NonNull LoaderManager loaderManager, boolean getUiInfo, @NonNull PermissionsUsagesChangeCallback callback, boolean sync) { boolean getNonPlatformPermissions, @NonNull PermissionsUsagesChangeCallback callback, boolean sync) { load(Process.INVALID_UID, filterPackageName, filterPermissionGroup, filterBeginTimeMillis, filterEndTimeMillis, usageFlags, loaderManager, getUiInfo, callback, sync); filterEndTimeMillis, usageFlags, loaderManager, getUiInfo, getNonPlatformPermissions, callback, sync); } public void load(int filterUid, @Nullable String filterPackageName, @Nullable String filterPermissionGroup, long filterBeginTimeMillis, long filterEndTimeMillis, int usageFlags, @NonNull LoaderManager loaderManager, boolean getUiInfo, @NonNull PermissionsUsagesChangeCallback callback, boolean sync) { boolean getUiInfo, boolean getNonPlatformPermissions, @NonNull PermissionsUsagesChangeCallback callback, boolean sync) { mCallback = callback; final Bundle args = new Bundle(); args.putInt(KEY_FILTER_UID, filterUid); Loading @@ -96,6 +100,7 @@ public final class PermissionUsages implements LoaderCallbacks<List<AppPermissio args.putLong(KEY_FILTER_END_TIME_MILLIS, filterEndTimeMillis); args.putInt(KEY_USAGE_FLAGS, usageFlags); args.putBoolean(KEY_GET_UI_INFO, getUiInfo); args.putBoolean(KEY_GET_NON_PLATFORM_PERMISSIONS, getNonPlatformPermissions); if (sync) { final UsageLoader loader = new UsageLoader(mContext, args); final List<AppPermissionUsage> usages = loader.loadInBackground(); Loading Loading @@ -166,6 +171,7 @@ public final class PermissionUsages implements LoaderCallbacks<List<AppPermissio private final long mFilterEndTimeMillis; private final int mUsageFlags; private final boolean mGetUiInfo; private final boolean mGetNonPlatformPermissions; UsageLoader(@NonNull Context context, @NonNull Bundle args) { super(context); Loading @@ -176,6 +182,7 @@ public final class PermissionUsages implements LoaderCallbacks<List<AppPermissio mFilterEndTimeMillis = args.getLong(KEY_FILTER_END_TIME_MILLIS); mUsageFlags = args.getInt(KEY_USAGE_FLAGS); mGetUiInfo = args.getBoolean(KEY_GET_UI_INFO); mGetNonPlatformPermissions = args.getBoolean(KEY_GET_NON_PLATFORM_PERMISSIONS); } @Override Loading @@ -187,7 +194,7 @@ public final class PermissionUsages implements LoaderCallbacks<List<AppPermissio public @NonNull List<AppPermissionUsage> loadInBackground() { final List<PermissionGroup> groups = PermissionGroups.getPermissionGroups( getContext(), this::isLoadInBackgroundCanceled, mGetUiInfo, mFilterPermissionGroup, mFilterPackageName); mGetNonPlatformPermissions, mFilterPermissionGroup, mFilterPackageName); if (!Utils.isPermissionsHubEnabled()) { return Collections.emptyList(); } Loading src/com/android/packageinstaller/permission/service/PermissionControllerServiceImpl.java +1 −1 Original line number Diff line number Diff line Loading @@ -452,7 +452,7 @@ public final class PermissionControllerServiceImpl extends PermissionControllerS long filterTimeBeginMillis = Math.max(System.currentTimeMillis() - numMillis, 0); usages.load(null, null, filterTimeBeginMillis, Long.MAX_VALUE, PermissionUsages.USAGE_FLAG_LAST | PermissionUsages.USAGE_FLAG_HISTORICAL, null, false, null, true); false, false, null, true); List<AppPermissionUsage> appPermissionUsages = usages.getUsages(); int numApps = appPermissionUsages.size(); Loading src/com/android/packageinstaller/permission/ui/handheld/AppPermissionUsageFragment.java +1 −1 Original line number Diff line number Diff line Loading @@ -275,6 +275,6 @@ public class AppPermissionUsageFragment extends SettingsWithButtonHeader impleme mPermissionUsages.load(mAppInfo.uid, mPackageName, null, beginTimeMillis, Long.MAX_VALUE, PermissionUsages.USAGE_FLAG_LAST | PermissionUsages.USAGE_FLAG_HISTORICAL, getActivity().getLoaderManager(), true, this::updateUi, false); true, false, this::updateUi, false); } } src/com/android/packageinstaller/permission/ui/handheld/ManagePermissionsFragment.java +1 −1 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ abstract class ManagePermissionsFragment extends PermissionsFrameFragment } mPermissions = new PermissionGroups(getContext(), getActivity().getLoaderManager(), this, false); false, true); mCollator = Collator.getInstance( getContext().getResources().getConfiguration().getLocales().get(0)); } Loading Loading
src/com/android/packageinstaller/permission/model/PermissionGroups.java +29 −7 Original line number Diff line number Diff line Loading @@ -55,16 +55,19 @@ public final class PermissionGroups implements LoaderCallbacks<List<PermissionGr private final Context mContext; private final PermissionsGroupsChangeCallback mCallback; private final boolean mGetAppUiInfo; private final boolean mGetNonPlatformPermissions; public interface PermissionsGroupsChangeCallback { public void onPermissionGroupsChanged(); } public PermissionGroups(Context context, LoaderManager loaderManager, PermissionsGroupsChangeCallback callback, boolean getAppUiInfo) { PermissionsGroupsChangeCallback callback, boolean getAppUiInfo, boolean getNonPlatformPermissions) { mContext = context; mCallback = callback; mGetAppUiInfo = getAppUiInfo; mGetNonPlatformPermissions = getNonPlatformPermissions; // Don't update immediately as otherwise we can get a callback before this object is // initialized. Loading @@ -73,7 +76,7 @@ public final class PermissionGroups implements LoaderCallbacks<List<PermissionGr @Override public Loader<List<PermissionGroup>> onCreateLoader(int id, Bundle args) { return new PermissionsLoader(mContext, mGetAppUiInfo); return new PermissionsLoader(mContext, mGetAppUiInfo, mGetNonPlatformPermissions); } @Override Loading Loading @@ -135,12 +138,15 @@ public final class PermissionGroups implements LoaderCallbacks<List<PermissionGr * @param context Context to use * @param isCanceled callback checked if the group resolution should be aborted * @param getAppUiInfo If the UI info for apps should be updated * @param getNonPlatformPermissions If we should get non-platform permission groups * * @return the list of all groups int the system */ public static @NonNull List<PermissionGroup> getAllPermissionGroups(@NonNull Context context, @Nullable Supplier<Boolean> isCanceled, boolean getAppUiInfo) { return getPermissionGroups(context, isCanceled, getAppUiInfo, null, null); @Nullable Supplier<Boolean> isCanceled, boolean getAppUiInfo, boolean getNonPlatformPermissions) { return getPermissionGroups(context, isCanceled, getAppUiInfo, getNonPlatformPermissions, null, null); } /** Loading @@ -149,6 +155,7 @@ public final class PermissionGroups implements LoaderCallbacks<List<PermissionGr * @param context Context to use * @param isCanceled callback checked if the group resolution should be aborted * @param getAppUiInfo If the UI info for apps should be updated * @param getNonPlatformPermissions If we should get non-platform permission groups * @param groupName Optional group to filter for. * @param packageName Optional package to filter for. * Loading @@ -156,7 +163,8 @@ public final class PermissionGroups implements LoaderCallbacks<List<PermissionGr */ public static @NonNull List<PermissionGroup> getPermissionGroups(@NonNull Context context, @Nullable Supplier<Boolean> isCanceled, boolean getAppUiInfo, @Nullable String groupName, @Nullable String packageName) { boolean getNonPlatformPermissions, @Nullable String groupName, @Nullable String packageName) { ArraySet<String> launcherPkgs = Utils.getLauncherPackages(context); PermissionApps.PmCache pmCache = new PermissionApps.PmCache( context.getPackageManager()); Loading @@ -175,6 +183,11 @@ public final class PermissionGroups implements LoaderCallbacks<List<PermissionGr return Collections.emptyList(); } // Ignore non-platform permissions and the UNDEFINED group. if (!getNonPlatformPermissions && !Utils.isModernPermissionGroup(groupInfo.name)) { continue; } // Get the permissions in this group. final List<PermissionInfo> groupPermissions; try { Loading Loading @@ -248,6 +261,12 @@ public final class PermissionGroups implements LoaderCallbacks<List<PermissionGr continue; } // Ignore non-platform permissions and the UNDEFINED group. if (!getNonPlatformPermissions && !Utils.isModernPermissionGroup( permissionInfo.name)) { continue; } // If no app uses this permission, if (!requestedPermissions.contains(permissionInfo.name)) { continue; Loading Loading @@ -303,10 +322,13 @@ public final class PermissionGroups implements LoaderCallbacks<List<PermissionGr private static final class PermissionsLoader extends AsyncTaskLoader<List<PermissionGroup>> implements PackageManager.OnPermissionsChangedListener { private final boolean mGetAppUiInfo; private final boolean mGetNonPlatformPermissions; PermissionsLoader(Context context, boolean getAppUiInfo) { PermissionsLoader(Context context, boolean getAppUiInfo, boolean getNonPlatformPermissions) { super(context); mGetAppUiInfo = getAppUiInfo; mGetNonPlatformPermissions = getNonPlatformPermissions; } @Override Loading @@ -323,7 +345,7 @@ public final class PermissionGroups implements LoaderCallbacks<List<PermissionGr @Override public List<PermissionGroup> loadInBackground() { return getAllPermissionGroups(getContext(), this::isLoadInBackgroundCanceled, mGetAppUiInfo); mGetAppUiInfo, mGetNonPlatformPermissions); } @Override Loading
src/com/android/packageinstaller/permission/model/PermissionUsages.java +12 −5 Original line number Diff line number Diff line Loading @@ -63,6 +63,8 @@ public final class PermissionUsages implements LoaderCallbacks<List<AppPermissio private static final String KEY_FILTER_END_TIME_MILLIS = "KEY_FILTER_END_TIME_MILLIS"; private static final String KEY_USAGE_FLAGS = "KEY_USAGE_FLAGS"; private static final String KEY_GET_UI_INFO = "KEY_GET_UI_INFO"; private static final String KEY_GET_NON_PLATFORM_PERMISSIONS = "KEY_GET_NON_PLATFORM_PERMISSIONS"; private @Nullable PermissionsUsagesChangeCallback mCallback; Loading @@ -77,16 +79,18 @@ public final class PermissionUsages implements LoaderCallbacks<List<AppPermissio public void load(@Nullable String filterPackageName, @Nullable String filterPermissionGroup, long filterBeginTimeMillis, long filterEndTimeMillis, int usageFlags, @NonNull LoaderManager loaderManager, boolean getUiInfo, @NonNull PermissionsUsagesChangeCallback callback, boolean sync) { boolean getNonPlatformPermissions, @NonNull PermissionsUsagesChangeCallback callback, boolean sync) { load(Process.INVALID_UID, filterPackageName, filterPermissionGroup, filterBeginTimeMillis, filterEndTimeMillis, usageFlags, loaderManager, getUiInfo, callback, sync); filterEndTimeMillis, usageFlags, loaderManager, getUiInfo, getNonPlatformPermissions, callback, sync); } public void load(int filterUid, @Nullable String filterPackageName, @Nullable String filterPermissionGroup, long filterBeginTimeMillis, long filterEndTimeMillis, int usageFlags, @NonNull LoaderManager loaderManager, boolean getUiInfo, @NonNull PermissionsUsagesChangeCallback callback, boolean sync) { boolean getUiInfo, boolean getNonPlatformPermissions, @NonNull PermissionsUsagesChangeCallback callback, boolean sync) { mCallback = callback; final Bundle args = new Bundle(); args.putInt(KEY_FILTER_UID, filterUid); Loading @@ -96,6 +100,7 @@ public final class PermissionUsages implements LoaderCallbacks<List<AppPermissio args.putLong(KEY_FILTER_END_TIME_MILLIS, filterEndTimeMillis); args.putInt(KEY_USAGE_FLAGS, usageFlags); args.putBoolean(KEY_GET_UI_INFO, getUiInfo); args.putBoolean(KEY_GET_NON_PLATFORM_PERMISSIONS, getNonPlatformPermissions); if (sync) { final UsageLoader loader = new UsageLoader(mContext, args); final List<AppPermissionUsage> usages = loader.loadInBackground(); Loading Loading @@ -166,6 +171,7 @@ public final class PermissionUsages implements LoaderCallbacks<List<AppPermissio private final long mFilterEndTimeMillis; private final int mUsageFlags; private final boolean mGetUiInfo; private final boolean mGetNonPlatformPermissions; UsageLoader(@NonNull Context context, @NonNull Bundle args) { super(context); Loading @@ -176,6 +182,7 @@ public final class PermissionUsages implements LoaderCallbacks<List<AppPermissio mFilterEndTimeMillis = args.getLong(KEY_FILTER_END_TIME_MILLIS); mUsageFlags = args.getInt(KEY_USAGE_FLAGS); mGetUiInfo = args.getBoolean(KEY_GET_UI_INFO); mGetNonPlatformPermissions = args.getBoolean(KEY_GET_NON_PLATFORM_PERMISSIONS); } @Override Loading @@ -187,7 +194,7 @@ public final class PermissionUsages implements LoaderCallbacks<List<AppPermissio public @NonNull List<AppPermissionUsage> loadInBackground() { final List<PermissionGroup> groups = PermissionGroups.getPermissionGroups( getContext(), this::isLoadInBackgroundCanceled, mGetUiInfo, mFilterPermissionGroup, mFilterPackageName); mGetNonPlatformPermissions, mFilterPermissionGroup, mFilterPackageName); if (!Utils.isPermissionsHubEnabled()) { return Collections.emptyList(); } Loading
src/com/android/packageinstaller/permission/service/PermissionControllerServiceImpl.java +1 −1 Original line number Diff line number Diff line Loading @@ -452,7 +452,7 @@ public final class PermissionControllerServiceImpl extends PermissionControllerS long filterTimeBeginMillis = Math.max(System.currentTimeMillis() - numMillis, 0); usages.load(null, null, filterTimeBeginMillis, Long.MAX_VALUE, PermissionUsages.USAGE_FLAG_LAST | PermissionUsages.USAGE_FLAG_HISTORICAL, null, false, null, true); false, false, null, true); List<AppPermissionUsage> appPermissionUsages = usages.getUsages(); int numApps = appPermissionUsages.size(); Loading
src/com/android/packageinstaller/permission/ui/handheld/AppPermissionUsageFragment.java +1 −1 Original line number Diff line number Diff line Loading @@ -275,6 +275,6 @@ public class AppPermissionUsageFragment extends SettingsWithButtonHeader impleme mPermissionUsages.load(mAppInfo.uid, mPackageName, null, beginTimeMillis, Long.MAX_VALUE, PermissionUsages.USAGE_FLAG_LAST | PermissionUsages.USAGE_FLAG_HISTORICAL, getActivity().getLoaderManager(), true, this::updateUi, false); true, false, this::updateUi, false); } }
src/com/android/packageinstaller/permission/ui/handheld/ManagePermissionsFragment.java +1 −1 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ abstract class ManagePermissionsFragment extends PermissionsFrameFragment } mPermissions = new PermissionGroups(getContext(), getActivity().getLoaderManager(), this, false); false, true); mCollator = Collator.getInstance( getContext().getResources().getConfiguration().getLocales().get(0)); } Loading