From 24d58bd8dd40722c25edab328642d43949d7e9c2 Mon Sep 17 00:00:00 2001 From: Yi-an Chen Date: Tue, 11 Apr 2023 02:19:18 +0000 Subject: Refactor TV SafetyNetLogger Bug: 274702991 For R coverage calculation: This CL is expected to remove 43 lines from calculations Test: Build Change-Id: I17001c470a76ee53762f9e04ef28daf88b658ac8 --- .../ui/television/AppPermissionsFragment.java | 4 +- .../ui/television/PermissionAppsFragment.java | 4 +- .../ui/wear/AppPermissionsFragmentWear.java | 4 +- .../permission/utils/SafetyNetLogger.java | 102 ------------------- .../utils/legacy/LegacySafetyNetLogger.java | 112 +++++++++++++++++++++ 5 files changed, 118 insertions(+), 108 deletions(-) create mode 100644 PermissionController/src/com/android/permissioncontroller/permission/utils/legacy/LegacySafetyNetLogger.java diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/television/AppPermissionsFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/television/AppPermissionsFragment.java index f7a2c0a91..0f90cf6fe 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/television/AppPermissionsFragment.java +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/television/AppPermissionsFragment.java @@ -61,9 +61,9 @@ import com.android.permissioncontroller.permission.ui.model.AppPermissionGroupsV import com.android.permissioncontroller.permission.ui.model.AppPermissionGroupsViewModelFactory; import com.android.permissioncontroller.permission.utils.KotlinUtils; import com.android.permissioncontroller.permission.utils.LocationUtils; -import com.android.permissioncontroller.permission.utils.SafetyNetLogger; import com.android.permissioncontroller.permission.utils.StringUtils; import com.android.permissioncontroller.permission.utils.Utils; +import com.android.permissioncontroller.permission.utils.legacy.LegacySafetyNetLogger; public final class AppPermissionsFragment extends SettingsWithHeader implements OnPreferenceClickListener { @@ -377,7 +377,7 @@ public final class AppPermissionsFragment extends SettingsWithHeader private void logToggledGroups() { if (mToggledGroups != null) { - SafetyNetLogger.logPermissionsToggled(mToggledGroups); + LegacySafetyNetLogger.logPermissionsToggled(mToggledGroups); mToggledGroups = null; } } diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/television/PermissionAppsFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/television/PermissionAppsFragment.java index a84239405..1109d6389 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/television/PermissionAppsFragment.java +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/television/PermissionAppsFragment.java @@ -44,8 +44,8 @@ import com.android.permissioncontroller.permission.model.legacy.PermissionApps.C import com.android.permissioncontroller.permission.model.legacy.PermissionApps.PermissionApp; import com.android.permissioncontroller.permission.ui.ReviewPermissionsActivity; import com.android.permissioncontroller.permission.utils.LocationUtils; -import com.android.permissioncontroller.permission.utils.SafetyNetLogger; import com.android.permissioncontroller.permission.utils.Utils; +import com.android.permissioncontroller.permission.utils.legacy.LegacySafetyNetLogger; public final class PermissionAppsFragment extends SettingsWithHeader implements Callback, OnPreferenceClickListener { @@ -432,7 +432,7 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements private void logToggledGroups() { if (mToggledGroups != null) { - SafetyNetLogger.logPermissionsToggled(mToggledGroups); + LegacySafetyNetLogger.logPermissionsToggled(mToggledGroups); mToggledGroups = null; } } diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/AppPermissionsFragmentWear.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/AppPermissionsFragmentWear.java index ba5cc58a0..843514b4a 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/AppPermissionsFragmentWear.java +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/AppPermissionsFragmentWear.java @@ -42,8 +42,8 @@ import com.android.permissioncontroller.permission.model.AppPermissions; import com.android.permissioncontroller.permission.model.Permission; import com.android.permissioncontroller.permission.utils.ArrayUtils; import com.android.permissioncontroller.permission.utils.LocationUtils; -import com.android.permissioncontroller.permission.utils.SafetyNetLogger; import com.android.permissioncontroller.permission.utils.Utils; +import com.android.permissioncontroller.permission.utils.legacy.LegacySafetyNetLogger; import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; @@ -381,7 +381,7 @@ public final class AppPermissionsFragmentWear extends PreferenceFragmentCompat { private void logAndClearToggledGroups() { if (mToggledGroups != null) { - SafetyNetLogger.logPermissionsToggled(mToggledGroups); + LegacySafetyNetLogger.logPermissionsToggled(mToggledGroups); mToggledGroups = null; } } 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 { @@ -44,21 +38,6 @@ public final class SafetyNetLogger { /* do nothing */ } - /** - * Log that permission groups have been requested for the purpose of safety net. - * - *

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 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. * @@ -74,52 +53,6 @@ public final class SafetyNetLogger { buildChangedPermissionForPackageMessageNew(packageName, groups)); } - /** - * Log that permission groups have been toggled for the purpose of safety net. - * - *

The groups might refer to different permission groups and different apps. - * - * @param groups The groups toggled - */ - public static void logPermissionsToggled(ArraySet groups) { - ArrayMap> groupsByPackage = new ArrayMap<>(); - - int numGroups = groups.size(); - for (int i = 0; i < numGroups; i++) { - AppPermissionGroup group = groups.valueAt(i); - - ArrayList 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(1); - groups.add(group); - logPermissionsToggled(groups); - } - /** * Log that a permission group has been toggled for the purpose of safety net. * @@ -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 groups) { StringBuilder builder = new StringBuilder(); @@ -193,23 +110,4 @@ public final class SafetyNetLogger { } return builder.toString(); } - - private static String buildChangedPermissionForPackageMessage(String packageName, - List 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. + * + *

The groups might refer to different permission groups and different apps. + * + * @param groups The groups toggled + */ + public static void logPermissionsToggled(ArraySet groups) { + ArrayMap> groupsByPackage = new ArrayMap<>(); + + int numGroups = groups.size(); + for (int i = 0; i < numGroups; i++) { + AppPermissionGroup group = groups.valueAt(i); + + ArrayList 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 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()); + } + } +} -- cgit v1.2.3-59-g8ed1b