diff options
author | Yi-an Chen <theianchen@google.com> | 2023-04-11 02:19:18 +0000 |
---|---|---|
committer | Yi-an Chen <theianchen@google.com> | 2023-04-12 01:20:43 +0000 |
commit | 24d58bd8dd40722c25edab328642d43949d7e9c2 (patch) | |
tree | 9ba7a222f44ae5c2339b0ccc7abfbaba8b1067df /PermissionController/src/com/android/permissioncontroller/permission/utils | |
parent | 17abe36e0d7a3da791baddeb3dfdecda1c3d8e4e (diff) | |
download | Permission-24d58bd8dd40722c25edab328642d43949d7e9c2.tar.gz |
Refactor TV SafetyNetLogger
Bug: 274702991
For R coverage calculation:
This CL is expected to remove 43 lines from calculations
Test: Build
Change-Id: I17001c470a76ee53762f9e04ef28daf88b658ac8
Diffstat (limited to 'PermissionController/src/com/android/permissioncontroller/permission/utils')
2 files changed, 112 insertions, 102 deletions
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/utils/SafetyNetLogger.java b/PermissionController/src/com/android/permissioncontroller/permission/utils/SafetyNetLogger.java index f0227cad5..828857cc6 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/utils/SafetyNetLogger.java +++ b/PermissionController/src/com/android/permissioncontroller/permission/utils/SafetyNetLogger.java @@ -16,17 +16,11 @@ package com.android.permissioncontroller.permission.utils; -import android.content.pm.PackageInfo; -import android.util.ArrayMap; -import android.util.ArraySet; import android.util.EventLog; -import com.android.permissioncontroller.permission.model.AppPermissionGroup; -import com.android.permissioncontroller.permission.model.Permission; import com.android.permissioncontroller.permission.model.livedatatypes.LightAppPermGroup; import com.android.permissioncontroller.permission.model.livedatatypes.LightPermission; -import java.util.ArrayList; import java.util.List; public final class SafetyNetLogger { @@ -49,21 +43,6 @@ public final class SafetyNetLogger { * * <p>The groups might refer to different permission groups and different apps. * - * @param packageInfo The info about the package for which permissions were requested - * @param groups The permission groups which were requested - */ - public static void logPermissionsRequested(PackageInfo packageInfo, - List<AppPermissionGroup> groups) { - EventLog.writeEvent(SNET_NET_EVENT_LOG_TAG, PERMISSIONS_REQUESTED, - packageInfo.applicationInfo.uid, buildChangedPermissionForPackageMessage( - packageInfo.packageName, groups)); - } - - /** - * Log that permission groups have been requested for the purpose of safety net. - * - * <p>The groups might refer to different permission groups and different apps. - * * @param packageName The name of the package for which permissions were requested * @param uid The uid of the package * @param groups The permission groups which were requested @@ -75,52 +54,6 @@ public final class SafetyNetLogger { } /** - * Log that permission groups have been toggled for the purpose of safety net. - * - * <p>The groups might refer to different permission groups and different apps. - * - * @param groups The groups toggled - */ - public static void logPermissionsToggled(ArraySet<AppPermissionGroup> groups) { - ArrayMap<String, ArrayList<AppPermissionGroup>> groupsByPackage = new ArrayMap<>(); - - int numGroups = groups.size(); - for (int i = 0; i < numGroups; i++) { - AppPermissionGroup group = groups.valueAt(i); - - ArrayList<AppPermissionGroup> groupsForThisPackage = groupsByPackage.get( - group.getApp().packageName); - if (groupsForThisPackage == null) { - groupsForThisPackage = new ArrayList<>(); - groupsByPackage.put(group.getApp().packageName, groupsForThisPackage); - } - - groupsForThisPackage.add(group); - if (group.getBackgroundPermissions() != null) { - groupsForThisPackage.add(group.getBackgroundPermissions()); - } - } - - int numPackages = groupsByPackage.size(); - for (int i = 0; i < numPackages; i++) { - EventLog.writeEvent(SNET_NET_EVENT_LOG_TAG, PERMISSIONS_TOGGLED, - android.os.Process.myUid(), buildChangedPermissionForPackageMessage( - groupsByPackage.keyAt(i), groupsByPackage.valueAt(i))); - } - } - - /** - * Log that a permission group has been toggled for the purpose of safety net. - * - * @param group The group toggled. - */ - public static void logPermissionToggled(AppPermissionGroup group) { - ArraySet groups = new ArraySet<AppPermissionGroup>(1); - groups.add(group); - logPermissionsToggled(groups); - } - - /** * Log that a permission group has been toggled for the purpose of safety net. * * @param group The group which was toggled. This group must represent the current state, not @@ -167,22 +100,6 @@ public final class SafetyNetLogger { } } - private static void buildChangedPermissionForGroup(AppPermissionGroup group, - StringBuilder builder) { - int permissionCount = group.getPermissions().size(); - for (int permissionNum = 0; permissionNum < permissionCount; permissionNum++) { - Permission permission = group.getPermissions().get(permissionNum); - - if (builder.length() > 0) { - builder.append(';'); - } - - builder.append(permission.getName()).append('|'); - builder.append(permission.isGrantedIncludingAppOp()).append('|'); - builder.append(permission.getFlags()); - } - } - private static String buildChangedPermissionForPackageMessageNew(String packageName, List<LightAppPermGroup> groups) { StringBuilder builder = new StringBuilder(); @@ -193,23 +110,4 @@ public final class SafetyNetLogger { } return builder.toString(); } - - private static String buildChangedPermissionForPackageMessage(String packageName, - List<AppPermissionGroup> groups) { - StringBuilder builder = new StringBuilder(); - - builder.append(packageName).append(':'); - - int groupCount = groups.size(); - for (int groupNum = 0; groupNum < groupCount; groupNum++) { - AppPermissionGroup group = groups.get(groupNum); - - buildChangedPermissionForGroup(group, builder); - if (group.getBackgroundPermissions() != null) { - buildChangedPermissionForGroup(group.getBackgroundPermissions(), builder); - } - } - - return builder.toString(); - } } diff --git a/PermissionController/src/com/android/permissioncontroller/permission/utils/legacy/LegacySafetyNetLogger.java b/PermissionController/src/com/android/permissioncontroller/permission/utils/legacy/LegacySafetyNetLogger.java new file mode 100644 index 000000000..0bda36539 --- /dev/null +++ b/PermissionController/src/com/android/permissioncontroller/permission/utils/legacy/LegacySafetyNetLogger.java @@ -0,0 +1,112 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.permissioncontroller.permission.utils.legacy; + +import android.util.ArrayMap; +import android.util.ArraySet; +import android.util.EventLog; + +import com.android.permissioncontroller.permission.model.AppPermissionGroup; +import com.android.permissioncontroller.permission.model.Permission; + +import java.util.ArrayList; +import java.util.List; + +/** + * Legacy SafetyNetLogger that interacts with AppPermissionGroup for TV and wear. + */ +public class LegacySafetyNetLogger { + // The log tag used by SafetyNet to pick entries from the event log. + private static final int SNET_NET_EVENT_LOG_TAG = 0x534e4554; + + // Log tag for the result of permissions toggling. + private static final String PERMISSIONS_TOGGLED = "individual_permissions_toggled"; + + private LegacySafetyNetLogger() { + /* do nothing */ + } + + /** + * Log that permission groups have been toggled for the purpose of safety net. + * + * <p>The groups might refer to different permission groups and different apps. + * + * @param groups The groups toggled + */ + public static void logPermissionsToggled(ArraySet<AppPermissionGroup> groups) { + ArrayMap<String, ArrayList<AppPermissionGroup>> groupsByPackage = new ArrayMap<>(); + + int numGroups = groups.size(); + for (int i = 0; i < numGroups; i++) { + AppPermissionGroup group = groups.valueAt(i); + + ArrayList<AppPermissionGroup> groupsForThisPackage = groupsByPackage.get( + group.getApp().packageName); + if (groupsForThisPackage == null) { + groupsForThisPackage = new ArrayList<>(); + groupsByPackage.put(group.getApp().packageName, groupsForThisPackage); + } + + groupsForThisPackage.add(group); + if (group.getBackgroundPermissions() != null) { + groupsForThisPackage.add(group.getBackgroundPermissions()); + } + } + + int numPackages = groupsByPackage.size(); + for (int i = 0; i < numPackages; i++) { + EventLog.writeEvent(SNET_NET_EVENT_LOG_TAG, PERMISSIONS_TOGGLED, + android.os.Process.myUid(), buildChangedPermissionForPackageMessage( + groupsByPackage.keyAt(i), groupsByPackage.valueAt(i))); + } + } + + private static String buildChangedPermissionForPackageMessage(String packageName, + List<AppPermissionGroup> groups) { + StringBuilder builder = new StringBuilder(); + + builder.append(packageName).append(':'); + + int groupCount = groups.size(); + for (int groupNum = 0; groupNum < groupCount; groupNum++) { + AppPermissionGroup group = groups.get(groupNum); + + buildChangedPermissionForGroup(group, builder); + if (group.getBackgroundPermissions() != null) { + buildChangedPermissionForGroup(group.getBackgroundPermissions(), builder); + } + } + + return builder.toString(); + } + + private static void buildChangedPermissionForGroup(AppPermissionGroup group, + StringBuilder builder) { + int permissionCount = group.getPermissions().size(); + for (int permissionNum = 0; permissionNum < permissionCount; permissionNum++) { + Permission permission = group.getPermissions().get(permissionNum); + + if (builder.length() > 0) { + builder.append(';'); + } + + builder.append(permission.getName()).append('|'); + builder.append(permission.isGrantedIncludingAppOp()).append('|'); + builder.append(permission.getFlags()); + } + } +} |