Merge "Cleanup step to reverts the USE_FULL_SCREEN_INTENT app op mode to MODE_DEFAULT if the permission flags for the USE_FULL_SCREEN_INTENT permission does not have USER_SET." into udc-dev am: 2256e4bac2
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23065541 Change-Id: I233f524a279e410b4c253d858dfddd170ea641d0 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -19,6 +19,7 @@ package com.android.server.appop;
|
|||||||
import static android.app.AppOpsManager.MODE_ALLOWED;
|
import static android.app.AppOpsManager.MODE_ALLOWED;
|
||||||
import static android.app.AppOpsManager.OP_NONE;
|
import static android.app.AppOpsManager.OP_NONE;
|
||||||
import static android.app.AppOpsManager.OP_SCHEDULE_EXACT_ALARM;
|
import static android.app.AppOpsManager.OP_SCHEDULE_EXACT_ALARM;
|
||||||
|
import static android.app.AppOpsManager.OP_USE_FULL_SCREEN_INTENT;
|
||||||
import static android.app.AppOpsManager.WATCH_FOREGROUND_CHANGES;
|
import static android.app.AppOpsManager.WATCH_FOREGROUND_CHANGES;
|
||||||
import static android.app.AppOpsManager.opRestrictsRead;
|
import static android.app.AppOpsManager.opRestrictsRead;
|
||||||
import static android.app.AppOpsManager.opToDefaultMode;
|
import static android.app.AppOpsManager.opToDefaultMode;
|
||||||
@@ -41,6 +42,7 @@ import android.os.Binder;
|
|||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.RemoteException;
|
import android.os.RemoteException;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
|
import android.permission.PermissionManager;
|
||||||
import android.util.ArrayMap;
|
import android.util.ArrayMap;
|
||||||
import android.util.ArraySet;
|
import android.util.ArraySet;
|
||||||
import android.util.AtomicFile;
|
import android.util.AtomicFile;
|
||||||
@@ -107,7 +109,7 @@ public class AppOpsCheckingServiceImpl implements AppOpsCheckingServiceInterface
|
|||||||
* {@link #upgradeLocked(int)} below. The first version was 1.
|
* {@link #upgradeLocked(int)} below. The first version was 1.
|
||||||
*/
|
*/
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
static final int CURRENT_VERSION = 3;
|
static final int CURRENT_VERSION = 4;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This stores the version of appops.xml seen at boot. If this is smaller than
|
* This stores the version of appops.xml seen at boot. If this is smaller than
|
||||||
@@ -1074,7 +1076,12 @@ public class AppOpsCheckingServiceImpl implements AppOpsCheckingServiceInterface
|
|||||||
upgradeScheduleExactAlarmLocked();
|
upgradeScheduleExactAlarmLocked();
|
||||||
// fall through
|
// fall through
|
||||||
case 2:
|
case 2:
|
||||||
// for future upgrades
|
// split the appops.xml into appops.xml to store appop state and apppops_access.xml
|
||||||
|
// to store app-op access.
|
||||||
|
// fall through
|
||||||
|
case 3:
|
||||||
|
resetUseFullScreenIntentLocked();
|
||||||
|
// fall through
|
||||||
}
|
}
|
||||||
scheduleFastWriteLocked();
|
scheduleFastWriteLocked();
|
||||||
}
|
}
|
||||||
@@ -1145,6 +1152,38 @@ public class AppOpsCheckingServiceImpl implements AppOpsCheckingServiceInterface
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A cleanup step for U Beta 2 that reverts the OP_USE_FULL_SCREEN_INTENT's mode to MODE_DEFAULT
|
||||||
|
* if the permission flags for the USE_FULL_SCREEN_INTENT permission does not have USER_SET.
|
||||||
|
*/
|
||||||
|
@VisibleForTesting
|
||||||
|
@GuardedBy("mLock")
|
||||||
|
void resetUseFullScreenIntentLocked() {
|
||||||
|
final PermissionManagerServiceInternal pmsi = LocalServices.getService(
|
||||||
|
PermissionManagerServiceInternal.class);
|
||||||
|
final UserManagerInternal umi = LocalServices.getService(UserManagerInternal.class);
|
||||||
|
final PackageManagerInternal pmi = LocalServices.getService(PackageManagerInternal.class);
|
||||||
|
final PermissionManager permissionManager =
|
||||||
|
mContext.getSystemService(PermissionManager.class);
|
||||||
|
|
||||||
|
final String permissionName = AppOpsManager.opToPermission(OP_USE_FULL_SCREEN_INTENT);
|
||||||
|
final String[] packagesDeclaringPermission =
|
||||||
|
pmsi.getAppOpPermissionPackages(permissionName);
|
||||||
|
final int[] userIds = umi.getUserIds();
|
||||||
|
|
||||||
|
for (final String pkg : packagesDeclaringPermission) {
|
||||||
|
for (int userId : userIds) {
|
||||||
|
final int uid = pmi.getPackageUid(pkg, 0, userId);
|
||||||
|
final int flags = permissionManager.getPermissionFlags(pkg, permissionName,
|
||||||
|
UserHandle.of(userId));
|
||||||
|
if ((flags & PackageManager.FLAG_PERMISSION_USER_SET) == 0) {
|
||||||
|
setUidMode(uid, OP_USE_FULL_SCREEN_INTENT,
|
||||||
|
AppOpsManager.opToDefaultMode(OP_USE_FULL_SCREEN_INTENT));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
List<Integer> getUidsWithNonDefaultModes() {
|
List<Integer> getUidsWithNonDefaultModes() {
|
||||||
List<Integer> result = new ArrayList<>();
|
List<Integer> result = new ArrayList<>();
|
||||||
|
|||||||
@@ -0,0 +1,801 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
|
||||||
|
<!--
|
||||||
|
~ 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.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<app-ops v="3">
|
||||||
|
<uid n="1001">
|
||||||
|
<op n="0" m="4" />
|
||||||
|
<op n="1" m="4" />
|
||||||
|
<op n="15" m="0" />
|
||||||
|
<op n="27" m="4" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="1002">
|
||||||
|
<op n="0" m="4" />
|
||||||
|
<op n="1" m="4" />
|
||||||
|
<op n="15" m="0" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10077">
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10079">
|
||||||
|
<op n="116" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10080">
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10081">
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10086">
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10087">
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10090">
|
||||||
|
<op n="0" m="4" />
|
||||||
|
<op n="1" m="4" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10096">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
<op n="1" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10112">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="51" m="1" />
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="62" m="1" />
|
||||||
|
<op n="81" m="1" />
|
||||||
|
<op n="83" m="1" />
|
||||||
|
<op n="85" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10113">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
<op n="1" m="1" />
|
||||||
|
<op n="51" m="1" />
|
||||||
|
<op n="62" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10114">
|
||||||
|
<op n="4" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10115">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10116">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10117">
|
||||||
|
<op n="0" m="4" />
|
||||||
|
<op n="1" m="4" />
|
||||||
|
<op n="13" m="1" />
|
||||||
|
<op n="14" m="1" />
|
||||||
|
<op n="16" m="1" />
|
||||||
|
<op n="26" m="4" />
|
||||||
|
<op n="27" m="4" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10118">
|
||||||
|
<op n="51" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10119">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="77" m="1" />
|
||||||
|
<op n="111" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10120">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
<op n="1" m="1" />
|
||||||
|
<op n="4" m="1" />
|
||||||
|
<op n="6" m="1" />
|
||||||
|
<op n="7" m="1" />
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="13" m="1" />
|
||||||
|
<op n="26" m="1" />
|
||||||
|
<op n="27" m="1" />
|
||||||
|
<op n="54" m="1" />
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="81" m="1" />
|
||||||
|
<op n="83" m="1" />
|
||||||
|
<op n="85" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10121">
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="60" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10122">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
<op n="1" m="1" />
|
||||||
|
<op n="51" m="1" />
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="60" m="1" />
|
||||||
|
<op n="81" m="1" />
|
||||||
|
<op n="83" m="1" />
|
||||||
|
<op n="85" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10123">
|
||||||
|
<op n="0" m="4" />
|
||||||
|
<op n="1" m="4" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10124">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="26" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10125">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10127">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
<op n="1" m="1" />
|
||||||
|
<op n="26" m="4" />
|
||||||
|
<op n="27" m="4" />
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="60" m="1" />
|
||||||
|
<op n="65" m="1" />
|
||||||
|
<op n="81" m="1" />
|
||||||
|
<op n="83" m="1" />
|
||||||
|
<op n="85" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
<op n="111" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10129">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
<op n="1" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10130">
|
||||||
|
<op n="51" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10131">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
<op n="1" m="1" />
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="60" m="1" />
|
||||||
|
<op n="81" m="1" />
|
||||||
|
<op n="83" m="1" />
|
||||||
|
<op n="85" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10132">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
<op n="1" m="1" />
|
||||||
|
<op n="26" m="1" />
|
||||||
|
<op n="27" m="1" />
|
||||||
|
<op n="69" m="1" />
|
||||||
|
<op n="79" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10133">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10136">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
<op n="4" m="1" />
|
||||||
|
<op n="77" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
<op n="111" m="1" />
|
||||||
|
<op n="114" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10137">
|
||||||
|
<op n="62" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10138">
|
||||||
|
<op n="26" m="4" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10140">
|
||||||
|
<op n="26" m="4" />
|
||||||
|
<op n="27" m="4" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10141">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="27" m="1" />
|
||||||
|
<op n="111" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10142">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
<op n="1" m="1" />
|
||||||
|
<op n="11" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10144">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
<op n="1" m="1" />
|
||||||
|
<op n="4" m="1" />
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="27" m="4" />
|
||||||
|
<op n="111" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10145">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10149">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="60" m="1" />
|
||||||
|
<op n="81" m="1" />
|
||||||
|
<op n="83" m="1" />
|
||||||
|
<op n="85" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10150">
|
||||||
|
<op n="51" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10151">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10152">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10154">
|
||||||
|
<op n="0" m="4" />
|
||||||
|
<op n="1" m="4" />
|
||||||
|
<op n="27" m="4" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10155">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
<op n="1" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10157">
|
||||||
|
<op n="13" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10158">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10160">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
<op n="1" m="1" />
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="26" m="4" />
|
||||||
|
<op n="27" m="4" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10161">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
<op n="1" m="1" />
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="51" m="1" />
|
||||||
|
<op n="77" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
<op n="111" m="1" />
|
||||||
|
<op n="114" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10162">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
<op n="1" m="1" />
|
||||||
|
<op n="15" m="0" />
|
||||||
|
<op n="26" m="4" />
|
||||||
|
<op n="27" m="4" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
<op n="89" m="0" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10163">
|
||||||
|
<op n="26" m="4" />
|
||||||
|
<op n="27" m="4" />
|
||||||
|
<op n="56" m="4" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10164">
|
||||||
|
<op n="26" m="1" />
|
||||||
|
<op n="27" m="4" />
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="60" m="1" />
|
||||||
|
<op n="69" m="1" />
|
||||||
|
<op n="79" m="1" />
|
||||||
|
<op n="81" m="1" />
|
||||||
|
<op n="83" m="1" />
|
||||||
|
<op n="85" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10169">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10170">
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10171">
|
||||||
|
<op n="26" m="1" />
|
||||||
|
<op n="51" m="1" />
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="60" m="1" />
|
||||||
|
<op n="81" m="1" />
|
||||||
|
<op n="83" m="1" />
|
||||||
|
<op n="85" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10172">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10173">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
<op n="1" m="1" />
|
||||||
|
<op n="23" m="0" />
|
||||||
|
<op n="26" m="1" />
|
||||||
|
<op n="51" m="1" />
|
||||||
|
<op n="62" m="1" />
|
||||||
|
<op n="65" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10175">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="26" m="1" />
|
||||||
|
<op n="27" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10178">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
<op n="1" m="1" />
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="27" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10179">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
<op n="1" m="1" />
|
||||||
|
<op n="4" m="1" />
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="26" m="1" />
|
||||||
|
<op n="27" m="1" />
|
||||||
|
<op n="51" m="1" />
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="60" m="1" />
|
||||||
|
<op n="62" m="1" />
|
||||||
|
<op n="81" m="1" />
|
||||||
|
<op n="83" m="1" />
|
||||||
|
<op n="85" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10180">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10181">
|
||||||
|
<op n="4" m="1" />
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="26" m="1" />
|
||||||
|
<op n="27" m="1" />
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="62" m="1" />
|
||||||
|
<op n="81" m="1" />
|
||||||
|
<op n="83" m="1" />
|
||||||
|
<op n="85" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="1110181">
|
||||||
|
<op n="4" m="1" />
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="26" m="1" />
|
||||||
|
<op n="27" m="1" />
|
||||||
|
<op n="81" m="1" />
|
||||||
|
<op n="83" m="1" />
|
||||||
|
<op n="85" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
<op n="107" m="2" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10182">
|
||||||
|
<op n="27" m="4" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10183">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="26" m="4" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10184">
|
||||||
|
<op n="4" m="1" />
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="13" m="1" />
|
||||||
|
<op n="26" m="1" />
|
||||||
|
<op n="27" m="4" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10185">
|
||||||
|
<op n="8" m="1" />
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="81" m="1" />
|
||||||
|
<op n="83" m="1" />
|
||||||
|
<op n="85" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10187">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10189">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="26" m="1" />
|
||||||
|
<op n="27" m="1" />
|
||||||
|
<op n="51" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10190">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
<op n="13" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10191">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10192">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="13" m="1" />
|
||||||
|
<op n="26" m="1" />
|
||||||
|
<op n="27" m="1" />
|
||||||
|
<op n="51" m="1" />
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="60" m="1" />
|
||||||
|
<op n="81" m="1" />
|
||||||
|
<op n="83" m="1" />
|
||||||
|
<op n="85" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10193">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10197">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10198">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
<op n="1" m="1" />
|
||||||
|
<op n="4" m="1" />
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="26" m="1" />
|
||||||
|
<op n="27" m="1" />
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="60" m="1" />
|
||||||
|
<op n="77" m="1" />
|
||||||
|
<op n="81" m="1" />
|
||||||
|
<op n="83" m="1" />
|
||||||
|
<op n="85" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
<op n="90" m="1" />
|
||||||
|
<op n="107" m="0" />
|
||||||
|
<op n="111" m="1" />
|
||||||
|
<op n="133" m="0" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10199">
|
||||||
|
<op n="4" m="1" />
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="26" m="1" />
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="60" m="1" />
|
||||||
|
<op n="62" m="1" />
|
||||||
|
<op n="81" m="1" />
|
||||||
|
<op n="83" m="1" />
|
||||||
|
<op n="85" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10200">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="65" m="1" />
|
||||||
|
<op n="107" m="1" />
|
||||||
|
<op n="133" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="1110200">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="65" m="1" />
|
||||||
|
<op n="107" m="2" />
|
||||||
|
<op n="133" m="2"/>
|
||||||
|
</uid>
|
||||||
|
<uid n="10201">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
<op n="1" m="1" />
|
||||||
|
<op n="4" m="1" />
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="51" m="1" />
|
||||||
|
<op n="62" m="1" />
|
||||||
|
<op n="84" m="0" />
|
||||||
|
<op n="86" m="0" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10206">
|
||||||
|
<op n="0" m="4" />
|
||||||
|
<op n="1" m="4" />
|
||||||
|
<op n="26" m="4" />
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="60" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10209">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="51" m="1" />
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="60" m="1" />
|
||||||
|
<op n="81" m="1" />
|
||||||
|
<op n="83" m="1" />
|
||||||
|
<op n="85" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10210">
|
||||||
|
<op n="51" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10212">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="62" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10214">
|
||||||
|
<op n="26" m="4" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10216">
|
||||||
|
<op n="51" m="1" />
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="60" m="1" />
|
||||||
|
<op n="85" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10225">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
<op n="1" m="1" />
|
||||||
|
<op n="51" m="1" />
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10229">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="60" m="1" />
|
||||||
|
<op n="62" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10231">
|
||||||
|
<op n="51" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10232">
|
||||||
|
<op n="51" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10234">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
<op n="1" m="1" />
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="13" m="1" />
|
||||||
|
<op n="20" m="1" />
|
||||||
|
<op n="26" m="1" />
|
||||||
|
<op n="27" m="1" />
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="60" m="1" />
|
||||||
|
<op n="81" m="1" />
|
||||||
|
<op n="83" m="1" />
|
||||||
|
<op n="85" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10235">
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="60" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10237">
|
||||||
|
<op n="0" m="4" />
|
||||||
|
<op n="1" m="4" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10238">
|
||||||
|
<op n="26" m="4" />
|
||||||
|
<op n="27" m="4" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10240">
|
||||||
|
<op n="112" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10241">
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10245">
|
||||||
|
<op n="13" m="1" />
|
||||||
|
<op n="51" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10247">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="60" m="1" />
|
||||||
|
<op n="81" m="1" />
|
||||||
|
<op n="83" m="1" />
|
||||||
|
<op n="85" m="1" />
|
||||||
|
<op n="87" m="0" />
|
||||||
|
<op n="90" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10254">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10255">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10256">
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10258">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10260">
|
||||||
|
<op n="51" m="1" />
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="60" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10262">
|
||||||
|
<op n="15" m="0" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10266">
|
||||||
|
<op n="0" m="4" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10267">
|
||||||
|
<op n="0" m="1" />
|
||||||
|
<op n="1" m="1" />
|
||||||
|
<op n="4" m="1" />
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="60" m="1" />
|
||||||
|
<op n="62" m="1" />
|
||||||
|
<op n="77" m="1" />
|
||||||
|
<op n="81" m="1" />
|
||||||
|
<op n="83" m="1" />
|
||||||
|
<op n="85" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
<op n="107" m="2" />
|
||||||
|
<op n="111" m="1" />
|
||||||
|
<op n="133" m="2" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10268">
|
||||||
|
<op n="4" m="1" />
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="62" m="1" />
|
||||||
|
</uid>
|
||||||
|
<uid n="10269">
|
||||||
|
<op n="11" m="1" />
|
||||||
|
<op n="26" m="1" />
|
||||||
|
<op n="27" m="1" />
|
||||||
|
<op n="59" m="1" />
|
||||||
|
<op n="60" m="1" />
|
||||||
|
<op n="85" m="1" />
|
||||||
|
<op n="87" m="1" />
|
||||||
|
</uid>
|
||||||
|
<pkg n="com.google.android.iwlan">
|
||||||
|
<uid n="0">
|
||||||
|
<op n="1" />
|
||||||
|
<op n="75" m="0" />
|
||||||
|
</uid>
|
||||||
|
</pkg>
|
||||||
|
<pkg n="com.android.phone">
|
||||||
|
<uid n="0">
|
||||||
|
<op n="1" />
|
||||||
|
<op n="75" m="0" />
|
||||||
|
</uid>
|
||||||
|
</pkg>
|
||||||
|
<pkg n="android">
|
||||||
|
<uid n="1000">
|
||||||
|
<op n="0">
|
||||||
|
<st n="214748364801" t="1670287941040" />
|
||||||
|
</op>
|
||||||
|
<op n="4">
|
||||||
|
<st n="214748364801" t="1670289665522" />
|
||||||
|
</op>
|
||||||
|
<op n="6">
|
||||||
|
<st n="214748364801" t="1670287946650" />
|
||||||
|
</op>
|
||||||
|
<op n="8">
|
||||||
|
<st n="214748364801" t="1670289624396" />
|
||||||
|
</op>
|
||||||
|
<op n="14">
|
||||||
|
<st n="214748364801" t="1670287951031" />
|
||||||
|
</op>
|
||||||
|
<op n="40">
|
||||||
|
<st n="214748364801" t="1670291786337" d="156" />
|
||||||
|
</op>
|
||||||
|
<op n="41">
|
||||||
|
<st id="SensorNotificationService" n="214748364801" t="1670287585567" d="4251183" />
|
||||||
|
<st id="CountryDetector" n="214748364801" t="1670287583306" d="6700" />
|
||||||
|
</op>
|
||||||
|
<op n="43">
|
||||||
|
<st n="214748364801" r="1670291755062" />
|
||||||
|
</op>
|
||||||
|
<op n="61">
|
||||||
|
<st n="214748364801" r="1670291754997" />
|
||||||
|
</op>
|
||||||
|
<op n="105">
|
||||||
|
<st n="214748364801" r="1670291473903" />
|
||||||
|
<st id="GnssService" n="214748364801" r="1670288044920" />
|
||||||
|
</op>
|
||||||
|
<op n="111">
|
||||||
|
<st n="214748364801" t="1670291441554" />
|
||||||
|
</op>
|
||||||
|
</uid>
|
||||||
|
</pkg>
|
||||||
|
<pkg n="com.android.server.telecom">
|
||||||
|
<uid n="1000">
|
||||||
|
<op n="6">
|
||||||
|
<st n="214748364801" t="1670287609092" />
|
||||||
|
</op>
|
||||||
|
<op n="111">
|
||||||
|
<st n="214748364801" t="1670287583728" />
|
||||||
|
</op>
|
||||||
|
</uid>
|
||||||
|
</pkg>
|
||||||
|
<pkg n="com.android.settings">
|
||||||
|
<uid n="1000">
|
||||||
|
<op n="43">
|
||||||
|
<st n="214748364801" r="1670291447349" />
|
||||||
|
</op>
|
||||||
|
<op n="105">
|
||||||
|
<st n="214748364801" r="1670291399231" />
|
||||||
|
</op>
|
||||||
|
<op n="111">
|
||||||
|
<st n="214748364801" t="1670291756910" />
|
||||||
|
</op>
|
||||||
|
</uid>
|
||||||
|
</pkg>
|
||||||
|
<pkg n="com.android.phone">
|
||||||
|
<uid n="1001">
|
||||||
|
<op n="15">
|
||||||
|
<st n="214748364801" t="1670287951022" />
|
||||||
|
</op>
|
||||||
|
<op n="40">
|
||||||
|
<st n="214748364801" t="1670291786177" />
|
||||||
|
</op>
|
||||||
|
<op n="105">
|
||||||
|
<st n="214748364801" r="1670291756403" />
|
||||||
|
</op>
|
||||||
|
</uid>
|
||||||
|
</pkg>
|
||||||
|
<pkg n="com.android.bluetooth">
|
||||||
|
<uid n="1002">
|
||||||
|
<op n="4">
|
||||||
|
<st n="214748364801" t="1670289671076" />
|
||||||
|
</op>
|
||||||
|
<op n="40">
|
||||||
|
<st n="214748364801" t="1670287585676" d="8" />
|
||||||
|
</op>
|
||||||
|
<op n="43">
|
||||||
|
<st n="214748364801" r="1670287585818" />
|
||||||
|
</op>
|
||||||
|
<op n="77">
|
||||||
|
<st n="214748364801" t="1670288037629" />
|
||||||
|
</op>
|
||||||
|
<op n="111">
|
||||||
|
<st n="214748364801" t="1670287592081" />
|
||||||
|
</op>
|
||||||
|
</uid>
|
||||||
|
</pkg>
|
||||||
|
<pkg n="com.android.vending">
|
||||||
|
<uid n="10136">
|
||||||
|
<op n="40">
|
||||||
|
<st n="429496729601" t="1670289621210" d="114" />
|
||||||
|
<st n="858993459201" t="1670289879730" d="349" />
|
||||||
|
<st n="1288490188801" t="1670287942622" d="937" />
|
||||||
|
</op>
|
||||||
|
<op n="43">
|
||||||
|
<st n="429496729601" r="1670289755305" />
|
||||||
|
<st n="858993459201" r="1670288019246" />
|
||||||
|
<st n="1073741824001" r="1670289571783" />
|
||||||
|
<st n="1288490188801" r="1670289373336" />
|
||||||
|
</op>
|
||||||
|
<op n="76">
|
||||||
|
<st n="429496729601" t="1670289748735" d="15991" />
|
||||||
|
<st n="858993459201" t="1670291395180" d="79201" />
|
||||||
|
<st n="1073741824001" t="1670291395168" d="12" />
|
||||||
|
<st n="1288490188801" t="1670291526029" d="3" />
|
||||||
|
<st n="1503238553601" t="1670291526032" d="310718" />
|
||||||
|
</op>
|
||||||
|
<op n="105">
|
||||||
|
<st n="429496729601" r="1670289538910" />
|
||||||
|
<st n="858993459201" r="1670288054519" />
|
||||||
|
<st n="1073741824001" r="1670287599379" />
|
||||||
|
<st n="1288490188801" r="1670289526854" />
|
||||||
|
<st n="1503238553601" r="1670289528242" />
|
||||||
|
</op>
|
||||||
|
</uid>
|
||||||
|
</pkg>
|
||||||
|
<pkg n="com.android.nfc">
|
||||||
|
<uid n="1027">
|
||||||
|
<op n="40">
|
||||||
|
<st n="214748364801" t="1670291786330" d="22" />
|
||||||
|
</op>
|
||||||
|
</uid>
|
||||||
|
</pkg>
|
||||||
|
</app-ops>
|
||||||
@@ -17,6 +17,7 @@
|
|||||||
package com.android.server.appop;
|
package com.android.server.appop;
|
||||||
|
|
||||||
import static android.app.AppOpsManager.OP_SCHEDULE_EXACT_ALARM;
|
import static android.app.AppOpsManager.OP_SCHEDULE_EXACT_ALARM;
|
||||||
|
import static android.app.AppOpsManager.OP_USE_FULL_SCREEN_INTENT;
|
||||||
import static android.app.AppOpsManager._NUM_OP;
|
import static android.app.AppOpsManager._NUM_OP;
|
||||||
|
|
||||||
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doAnswer;
|
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doAnswer;
|
||||||
@@ -31,6 +32,7 @@ import static org.junit.Assert.fail;
|
|||||||
import static org.mockito.ArgumentMatchers.anyInt;
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
import static org.mockito.ArgumentMatchers.anyLong;
|
import static org.mockito.ArgumentMatchers.anyLong;
|
||||||
import static org.mockito.ArgumentMatchers.anyString;
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
|
import static org.mockito.ArgumentMatchers.isA;
|
||||||
import static org.mockito.ArgumentMatchers.nullable;
|
import static org.mockito.ArgumentMatchers.nullable;
|
||||||
import static org.mockito.Mockito.doNothing;
|
import static org.mockito.Mockito.doNothing;
|
||||||
import static org.mockito.Mockito.never;
|
import static org.mockito.Mockito.never;
|
||||||
@@ -44,6 +46,7 @@ import android.content.pm.UserPackage;
|
|||||||
import android.content.res.AssetManager;
|
import android.content.res.AssetManager;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
|
import android.permission.PermissionManager;
|
||||||
import android.util.ArrayMap;
|
import android.util.ArrayMap;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.SparseArray;
|
import android.util.SparseArray;
|
||||||
@@ -87,6 +90,10 @@ public class AppOpsUpgradeTest {
|
|||||||
"AppOpsUpgradeTest/appops-unversioned.xml";
|
"AppOpsUpgradeTest/appops-unversioned.xml";
|
||||||
private static final String APP_OPS_VERSION_1_ASSET_PATH =
|
private static final String APP_OPS_VERSION_1_ASSET_PATH =
|
||||||
"AppOpsUpgradeTest/appops-version-1.xml";
|
"AppOpsUpgradeTest/appops-version-1.xml";
|
||||||
|
|
||||||
|
private static final String APP_OPS_VERSION_3_ASSET_PATH =
|
||||||
|
"AppOpsUpgradeTest/appops-version-3.xml";
|
||||||
|
|
||||||
private static final String APP_OPS_FILENAME = "appops-test.xml";
|
private static final String APP_OPS_FILENAME = "appops-test.xml";
|
||||||
|
|
||||||
private static final Context sContext = InstrumentationRegistry.getTargetContext();
|
private static final Context sContext = InstrumentationRegistry.getTargetContext();
|
||||||
@@ -105,6 +112,8 @@ public class AppOpsUpgradeTest {
|
|||||||
private PermissionManagerServiceInternal mPermissionManagerInternal;
|
private PermissionManagerServiceInternal mPermissionManagerInternal;
|
||||||
@Mock
|
@Mock
|
||||||
private Handler mHandler;
|
private Handler mHandler;
|
||||||
|
@Mock
|
||||||
|
private PermissionManager mPermissionManager;
|
||||||
|
|
||||||
private Object mLock = new Object();
|
private Object mLock = new Object();
|
||||||
private SparseArray<int[]> mSwitchedOps;
|
private SparseArray<int[]> mSwitchedOps;
|
||||||
@@ -211,7 +220,7 @@ public class AppOpsUpgradeTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int getModeInFile(int uid) {
|
private static int getModeInFile(int uid, int op) {
|
||||||
switch (uid) {
|
switch (uid) {
|
||||||
case 10198:
|
case 10198:
|
||||||
return 0;
|
return 0;
|
||||||
@@ -222,7 +231,7 @@ public class AppOpsUpgradeTest {
|
|||||||
case 1110181:
|
case 1110181:
|
||||||
return 2;
|
return 2;
|
||||||
default:
|
default:
|
||||||
return AppOpsManager.opToDefaultMode(OP_SCHEDULE_EXACT_ALARM);
|
return AppOpsManager.opToDefaultMode(op);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -258,7 +267,7 @@ public class AppOpsUpgradeTest {
|
|||||||
for (int userId : userIds) {
|
for (int userId : userIds) {
|
||||||
for (int appId : appIds) {
|
for (int appId : appIds) {
|
||||||
final int uid = UserHandle.getUid(userId, appId);
|
final int uid = UserHandle.getUid(userId, appId);
|
||||||
final int previousMode = getModeInFile(uid);
|
final int previousMode = getModeInFile(uid, OP_SCHEDULE_EXACT_ALARM);
|
||||||
|
|
||||||
final int expectedMode;
|
final int expectedMode;
|
||||||
if (previousMode == AppOpsManager.opToDefaultMode(OP_SCHEDULE_EXACT_ALARM)) {
|
if (previousMode == AppOpsManager.opToDefaultMode(OP_SCHEDULE_EXACT_ALARM)) {
|
||||||
@@ -280,6 +289,55 @@ public class AppOpsUpgradeTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void resetUseFullScreenIntent() {
|
||||||
|
extractAppOpsFile(APP_OPS_VERSION_3_ASSET_PATH);
|
||||||
|
|
||||||
|
String[] packageNames = {"p1", "package2", "pkg3", "package.4", "pkg-5", "pkg.6"};
|
||||||
|
int[] appIds = {10267, 10181, 10198, 10199, 10200, 4213};
|
||||||
|
int[] userIds = {0, 10, 11};
|
||||||
|
int flag = 0;
|
||||||
|
|
||||||
|
doReturn(userIds).when(mUserManagerInternal).getUserIds();
|
||||||
|
|
||||||
|
doReturn(packageNames).when(mPermissionManagerInternal).getAppOpPermissionPackages(
|
||||||
|
AppOpsManager.opToPermission(OP_USE_FULL_SCREEN_INTENT));
|
||||||
|
|
||||||
|
doReturn(mPermissionManager).when(mTestContext).getSystemService(PermissionManager.class);
|
||||||
|
|
||||||
|
doReturn(flag).when(mPackageManager).getPermissionFlags(
|
||||||
|
anyString(), anyString(), isA(UserHandle.class));
|
||||||
|
|
||||||
|
doAnswer(invocation -> {
|
||||||
|
String pkg = invocation.getArgument(0);
|
||||||
|
int index = ArrayUtils.indexOf(packageNames, pkg);
|
||||||
|
if (index < 0) {
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
int userId = invocation.getArgument(2);
|
||||||
|
return UserHandle.getUid(userId, appIds[index]);
|
||||||
|
}).when(mPackageManagerInternal).getPackageUid(anyString(), anyLong(), anyInt());
|
||||||
|
|
||||||
|
AppOpsCheckingServiceImpl testService = new AppOpsCheckingServiceImpl(sAppOpsFile, mLock,
|
||||||
|
mHandler, mTestContext, mSwitchedOps);
|
||||||
|
testService.readState();
|
||||||
|
|
||||||
|
synchronized (testService) {
|
||||||
|
testService.resetUseFullScreenIntentLocked();
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int userId : userIds) {
|
||||||
|
for (int appId : appIds) {
|
||||||
|
final int uid = UserHandle.getUid(userId, appId);
|
||||||
|
final int expectedMode = AppOpsManager.opToDefaultMode(OP_USE_FULL_SCREEN_INTENT);
|
||||||
|
synchronized (testService) {
|
||||||
|
int mode = testService.getUidMode(uid, OP_USE_FULL_SCREEN_INTENT);
|
||||||
|
assertEquals(expectedMode, mode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void upgradeFromNoFile() {
|
public void upgradeFromNoFile() {
|
||||||
assertFalse(sAppOpsFile.exists());
|
assertFalse(sAppOpsFile.exists());
|
||||||
@@ -290,12 +348,14 @@ public class AppOpsUpgradeTest {
|
|||||||
|
|
||||||
doNothing().when(testService).upgradeRunAnyInBackgroundLocked();
|
doNothing().when(testService).upgradeRunAnyInBackgroundLocked();
|
||||||
doNothing().when(testService).upgradeScheduleExactAlarmLocked();
|
doNothing().when(testService).upgradeScheduleExactAlarmLocked();
|
||||||
|
doNothing().when(testService).resetUseFullScreenIntentLocked();
|
||||||
|
|
||||||
// trigger upgrade
|
// trigger upgrade
|
||||||
testService.systemReady();
|
testService.systemReady();
|
||||||
|
|
||||||
verify(testService, never()).upgradeRunAnyInBackgroundLocked();
|
verify(testService, never()).upgradeRunAnyInBackgroundLocked();
|
||||||
verify(testService, never()).upgradeScheduleExactAlarmLocked();
|
verify(testService, never()).upgradeScheduleExactAlarmLocked();
|
||||||
|
verify(testService, never()).resetUseFullScreenIntentLocked();
|
||||||
|
|
||||||
testService.writeState();
|
testService.writeState();
|
||||||
|
|
||||||
@@ -319,12 +379,14 @@ public class AppOpsUpgradeTest {
|
|||||||
|
|
||||||
doNothing().when(testService).upgradeRunAnyInBackgroundLocked();
|
doNothing().when(testService).upgradeRunAnyInBackgroundLocked();
|
||||||
doNothing().when(testService).upgradeScheduleExactAlarmLocked();
|
doNothing().when(testService).upgradeScheduleExactAlarmLocked();
|
||||||
|
doNothing().when(testService).resetUseFullScreenIntentLocked();
|
||||||
|
|
||||||
// trigger upgrade
|
// trigger upgrade
|
||||||
testService.systemReady();
|
testService.systemReady();
|
||||||
|
|
||||||
verify(testService).upgradeRunAnyInBackgroundLocked();
|
verify(testService).upgradeRunAnyInBackgroundLocked();
|
||||||
verify(testService).upgradeScheduleExactAlarmLocked();
|
verify(testService).upgradeScheduleExactAlarmLocked();
|
||||||
|
verify(testService).resetUseFullScreenIntentLocked();
|
||||||
|
|
||||||
testService.writeState();
|
testService.writeState();
|
||||||
assertTrue(parser.parse());
|
assertTrue(parser.parse());
|
||||||
@@ -344,12 +406,40 @@ public class AppOpsUpgradeTest {
|
|||||||
|
|
||||||
doNothing().when(testService).upgradeRunAnyInBackgroundLocked();
|
doNothing().when(testService).upgradeRunAnyInBackgroundLocked();
|
||||||
doNothing().when(testService).upgradeScheduleExactAlarmLocked();
|
doNothing().when(testService).upgradeScheduleExactAlarmLocked();
|
||||||
|
doNothing().when(testService).resetUseFullScreenIntentLocked();
|
||||||
|
|
||||||
// trigger upgrade
|
// trigger upgrade
|
||||||
testService.systemReady();
|
testService.systemReady();
|
||||||
|
|
||||||
verify(testService, never()).upgradeRunAnyInBackgroundLocked();
|
verify(testService, never()).upgradeRunAnyInBackgroundLocked();
|
||||||
verify(testService).upgradeScheduleExactAlarmLocked();
|
verify(testService).upgradeScheduleExactAlarmLocked();
|
||||||
|
verify(testService).resetUseFullScreenIntentLocked();
|
||||||
|
|
||||||
|
testService.writeState();
|
||||||
|
assertTrue(parser.parse());
|
||||||
|
assertEquals(AppOpsCheckingServiceImpl.CURRENT_VERSION, parser.mVersion);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void resetFromVersion3() {
|
||||||
|
extractAppOpsFile(APP_OPS_VERSION_3_ASSET_PATH);
|
||||||
|
AppOpsDataParser parser = new AppOpsDataParser(sAppOpsFile);
|
||||||
|
assertTrue(parser.parse());
|
||||||
|
assertEquals(3, parser.mVersion);
|
||||||
|
|
||||||
|
AppOpsCheckingServiceImpl testService = spy(new AppOpsCheckingServiceImpl(sAppOpsFile,
|
||||||
|
mLock, mHandler, mTestContext, mSwitchedOps));
|
||||||
|
testService.readState();
|
||||||
|
|
||||||
|
doNothing().when(testService).upgradeRunAnyInBackgroundLocked();
|
||||||
|
doNothing().when(testService).upgradeScheduleExactAlarmLocked();
|
||||||
|
doNothing().when(testService).resetUseFullScreenIntentLocked();
|
||||||
|
|
||||||
|
testService.systemReady();
|
||||||
|
|
||||||
|
verify(testService, never()).upgradeRunAnyInBackgroundLocked();
|
||||||
|
verify(testService, never()).upgradeScheduleExactAlarmLocked();
|
||||||
|
verify(testService).resetUseFullScreenIntentLocked();
|
||||||
|
|
||||||
testService.writeState();
|
testService.writeState();
|
||||||
assertTrue(parser.parse());
|
assertTrue(parser.parse());
|
||||||
|
|||||||
Reference in New Issue
Block a user