summaryrefslogtreecommitdiff
path: root/PermissionController/src/com/android/permissioncontroller/permission/utils
diff options
context:
space:
mode:
authorYi-an Chen <theianchen@google.com>2023-04-11 02:19:18 +0000
committerYi-an Chen <theianchen@google.com>2023-04-12 01:20:43 +0000
commit24d58bd8dd40722c25edab328642d43949d7e9c2 (patch)
tree9ba7a222f44ae5c2339b0ccc7abfbaba8b1067df /PermissionController/src/com/android/permissioncontroller/permission/utils
parent17abe36e0d7a3da791baddeb3dfdecda1c3d8e4e (diff)
downloadPermission-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')
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/utils/SafetyNetLogger.java102
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/utils/legacy/LegacySafetyNetLogger.java112
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());
+ }
+ }
+}