diff options
11 files changed, 104 insertions, 41 deletions
diff --git a/PermissionController/res/values-bn/strings.xml b/PermissionController/res/values-bn/strings.xml index ae5f1c3cf..c17a53046 100644 --- a/PermissionController/res/values-bn/strings.xml +++ b/PermissionController/res/values-bn/strings.xml @@ -45,13 +45,13 @@ <string name="permission_add_background_warning_template" msgid="1812914855915092273">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> অ্যাপটিকে সব সময় এটি করার অনুমতি দেবেন?: <xliff:g id="ACTION">%2$s</xliff:g>"</string> <string name="allow_permission_foreground_only" msgid="116465816039675404">"শুধুমাত্র অ্যাপ ব্যবহার করার সময়"</string> <string name="allow_permission_always" msgid="5194342531206054051">"সব সময়"</string> - <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"অনুমতি দেবেন না এবং আর জিজ্ঞাসা করবেন না"</string> + <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"অনুমতি দেবেন না ও আবার জিজ্ঞাসা করা হোক তা চান না"</string> <string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g>টি বন্ধ করা হয়েছে"</string> <string name="permission_revoked_all" msgid="3397649017727222283">"সবগুলি বন্ধ করা হয়েছে"</string> <string name="permission_revoked_none" msgid="9213345075484381180">"কোনওটিই বন্ধ করা হয়নি"</string> <string name="grant_dialog_button_allow" msgid="5314677880021102550">"অনুমতি দিন"</string> <string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"সর্বদা অনুমতি দিন"</string> - <string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"অ্যাপ ব্যবহার করার সময়"</string> + <string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"শুধুমাত্র অ্যাপ ব্যবহার করার সময়"</string> <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"সুনির্দিষ্ট লোকেশনে পরিবর্তন করুন"</string> <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"আনুমানিক লোকেশন রাখুন"</string> <string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"শুধুমাত্র এই সময়ে"</string> diff --git a/PermissionController/res/values-ur/strings.xml b/PermissionController/res/values-ur/strings.xml index e6f6ac167..f1d9a96dc 100644 --- a/PermissionController/res/values-ur/strings.xml +++ b/PermissionController/res/values-ur/strings.xml @@ -492,10 +492,10 @@ <string name="permgrouprequest_device_aware_read_media_visual" msgid="5492319750632751551">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> کو آپ کے <b><xliff:g id="DEVICE">%2$s</xliff:g></b> پر تصاویر اور ویڈیوز تک رسائی کی اجازت دیں؟"</string> <string name="permgrouprequest_more_photos" msgid="128933814654231321">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> کو اس آلے پر مزید تصاویر اور ویڈیوز تک رسائی کی اجازت دیں؟"</string> <string name="permgrouprequest_device_aware_more_photos" msgid="8946782319103584021">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> کو آپ کے <b><xliff:g id="DEVICE">%2$s</xliff:g></b> پر مزید تصاویر اور ویڈیوز تک رسائی کی اجازت دیں؟"</string> - <string name="permgrouprequest_microphone" msgid="2825208549114811299">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> کو آڈیو ریکارڈ کرنے کی اجازت دیں؟"</string> + <string name="permgrouprequest_microphone" msgid="2825208549114811299">"آڈیو ریکارڈ کرنے کے لیے <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> کو اجازت دیں؟"</string> <string name="permgrouprequest_device_aware_microphone" msgid="1266843551173029370">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> کو آپ کے <b><xliff:g id="DEVICE">%2$s</xliff:g></b> پر آڈیو ریکارڈ کرنے کی اجازت دیں؟"</string> <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"جب آپ ایپ استعمال کر رہے ہوں تب ایپ صرف آڈیو ریکارڈ کر پائے گی"</string> - <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> کو آڈیو ریکارڈ کرنے کی اجازت دیں؟"</string> + <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"آڈیو ریکارڈ کرنے کے لیے <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> کو اجازت دیں؟"</string> <string name="permgroupbackgroundrequest_device_aware_microphone" msgid="4990337225146130185">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> کو آپ کے <b><xliff:g id="DEVICE">%2$s</xliff:g></b> پر آڈیو ریکارڈ کرنے کی اجازت دیں؟"</string> <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"ممکن ہے یہ ایپ ہر وقت آڈیو ریکارڈ کرنا چاہے، اگرچہ آپ ایپ استعمال نہ کر رہے ہوں۔ "<annotation id="link">"ترتیبات میں اجازت دیں۔"</annotation></string> <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>? کے ليے مائیکروفون تک رسائی تبدیل کریں؟"</string> diff --git a/PermissionController/role-controller/java/com/android/role/controller/model/RoleParser.java b/PermissionController/role-controller/java/com/android/role/controller/model/RoleParser.java index 3d89e12c0..cc2d102c8 100644 --- a/PermissionController/role-controller/java/com/android/role/controller/model/RoleParser.java +++ b/PermissionController/role-controller/java/com/android/role/controller/model/RoleParser.java @@ -172,7 +172,7 @@ public class RoleParser { * Retrieves the roles.xml resource from a context */ private XmlResourceParser getRolesXml() { - if (SdkLevel.isAtLeastV() && Flags.roleControllerInSystemServer()) { + if (SdkLevel.isAtLeastV() && Flags.systemServerRoleControllerEnabled()) { Resources resources = ResourceUtils.getPermissionControllerResources(mContext); int resourceId = resources.getIdentifier("roles", "xml", ResourceUtils.RESOURCE_PACKAGE_NAME_PERMISSION_CONTROLLER); diff --git a/PermissionController/role-controller/java/com/android/role/controller/util/ResourceUtils.java b/PermissionController/role-controller/java/com/android/role/controller/util/ResourceUtils.java index 2617b953a..f8f12108a 100644 --- a/PermissionController/role-controller/java/com/android/role/controller/util/ResourceUtils.java +++ b/PermissionController/role-controller/java/com/android/role/controller/util/ResourceUtils.java @@ -42,7 +42,7 @@ public class ResourceUtils { @NonNull private static Context getPermissionControllerContext(@NonNull Context context) { - if (!SdkLevel.isAtLeastV() || !Flags.roleControllerInSystemServer()) { + if (!SdkLevel.isAtLeastV() || !Flags.systemServerRoleControllerEnabled()) { // We don't have the getPermissionControllerPackageName() API below V, // but role controller always runs in PermissionController below V. return context; diff --git a/framework-s/api/system-current.txt b/framework-s/api/system-current.txt index f502a3231..a29a68acd 100644 --- a/framework-s/api/system-current.txt +++ b/framework-s/api/system-current.txt @@ -29,14 +29,14 @@ package android.app.role { method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public java.util.List<java.lang.String> getRoleHoldersAsUser(@NonNull String, @NonNull android.os.UserHandle); method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void isApplicationVisibleForRole(@NonNull String, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>); method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public boolean isBypassingRoleQualification(); - method @FlaggedApi(android.permission.flags.Flags.FLAG_ROLE_CONTROLLER_IN_SYSTEM_SERVER) @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public boolean isRoleFallbackEnabled(@NonNull String); + method @FlaggedApi(android.permission.flags.Flags.FLAG_SYSTEM_SERVER_ROLE_CONTROLLER_ENABLED) @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public boolean isRoleFallbackEnabled(@NonNull String); method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void isRoleVisible(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>); method @RequiresPermission(android.Manifest.permission.OBSERVE_ROLE_HOLDERS) public void removeOnRoleHoldersChangedListenerAsUser(@NonNull android.app.role.OnRoleHoldersChangedListener, @NonNull android.os.UserHandle); method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void removeRoleHolderAsUser(@NonNull String, @NonNull String, int, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>); method @Deprecated @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public boolean removeRoleHolderFromController(@NonNull String, @NonNull String); method @RequiresPermission(android.Manifest.permission.BYPASS_ROLE_QUALIFICATION) public void setBypassingRoleQualification(boolean); method @RequiresPermission(android.Manifest.permission.MANAGE_DEFAULT_APPLICATIONS) public void setDefaultApplication(@NonNull String, @Nullable String, int, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>); - method @FlaggedApi(android.permission.flags.Flags.FLAG_ROLE_CONTROLLER_IN_SYSTEM_SERVER) @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void setRoleFallbackEnabled(@NonNull String, boolean); + method @FlaggedApi(android.permission.flags.Flags.FLAG_SYSTEM_SERVER_ROLE_CONTROLLER_ENABLED) @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void setRoleFallbackEnabled(@NonNull String, boolean); method @Deprecated @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public void setRoleNamesFromController(@NonNull java.util.List<java.lang.String>); field public static final int MANAGE_HOLDERS_FLAG_DONT_KILL_APP = 1; // 0x1 field public static final String ROLE_DEVICE_POLICY_MANAGEMENT = "android.app.role.DEVICE_POLICY_MANAGEMENT"; diff --git a/framework-s/java/android/app/role/RoleManager.java b/framework-s/java/android/app/role/RoleManager.java index aeb229cae..3cf1e94ba 100644 --- a/framework-s/java/android/app/role/RoleManager.java +++ b/framework-s/java/android/app/role/RoleManager.java @@ -728,7 +728,7 @@ public final class RoleManager { */ @RequiresApi(Build.VERSION_CODES.VANILLA_ICE_CREAM) @RequiresPermission(Manifest.permission.MANAGE_ROLE_HOLDERS) - @FlaggedApi(Flags.FLAG_ROLE_CONTROLLER_IN_SYSTEM_SERVER) + @FlaggedApi(Flags.FLAG_SYSTEM_SERVER_ROLE_CONTROLLER_ENABLED) @UserHandleAware @SystemApi public boolean isRoleFallbackEnabled(@NonNull String roleName) { @@ -750,7 +750,7 @@ public final class RoleManager { */ @RequiresApi(Build.VERSION_CODES.VANILLA_ICE_CREAM) @RequiresPermission(Manifest.permission.MANAGE_ROLE_HOLDERS) - @FlaggedApi(Flags.FLAG_ROLE_CONTROLLER_IN_SYSTEM_SERVER) + @FlaggedApi(Flags.FLAG_SYSTEM_SERVER_ROLE_CONTROLLER_ENABLED) @UserHandleAware @SystemApi public void setRoleFallbackEnabled(@NonNull String roleName, boolean fallbackEnabled) { @@ -980,7 +980,7 @@ public final class RoleManager { @SystemApi public void isRoleVisible(@NonNull String roleName, @NonNull @CallbackExecutor Executor executor, @NonNull Consumer<Boolean> callback) { - if (SdkLevel.isAtLeastV() && Flags.roleControllerInSystemServer()) { + if (SdkLevel.isAtLeastV() && Flags.systemServerRoleControllerEnabled()) { int userId = getContextUserIfAppropriate().getIdentifier(); boolean visible; try { @@ -1021,7 +1021,7 @@ public final class RoleManager { @SystemApi public void isApplicationVisibleForRole(@NonNull String roleName, @NonNull String packageName, @NonNull @CallbackExecutor Executor executor, @NonNull Consumer<Boolean> callback) { - if (SdkLevel.isAtLeastV() && Flags.roleControllerInSystemServer()) { + if (SdkLevel.isAtLeastV() && Flags.systemServerRoleControllerEnabled()) { int userId = getContextUserIfAppropriate().getIdentifier(); boolean visible; try { diff --git a/service/api/system-server-current.txt b/service/api/system-server-current.txt index ea9c9750c..6a544126b 100644 --- a/service/api/system-server-current.txt +++ b/service/api/system-server-current.txt @@ -45,8 +45,8 @@ package com.android.role.persistence { public final class RolesState { ctor public RolesState(int, @Nullable String, @NonNull java.util.Map<java.lang.String,java.util.Set<java.lang.String>>); - ctor @FlaggedApi(android.permission.flags.Flags.FLAG_ROLE_CONTROLLER_IN_SYSTEM_SERVER) public RolesState(int, @Nullable String, @NonNull java.util.Map<java.lang.String,java.util.Set<java.lang.String>>, @NonNull java.util.Set<java.lang.String>); - method @FlaggedApi(android.permission.flags.Flags.FLAG_ROLE_CONTROLLER_IN_SYSTEM_SERVER) @NonNull public java.util.Set<java.lang.String> getFallbackEnabledRoles(); + ctor @FlaggedApi(android.permission.flags.Flags.FLAG_SYSTEM_SERVER_ROLE_CONTROLLER_ENABLED) public RolesState(int, @Nullable String, @NonNull java.util.Map<java.lang.String,java.util.Set<java.lang.String>>, @NonNull java.util.Set<java.lang.String>); + method @FlaggedApi(android.permission.flags.Flags.FLAG_SYSTEM_SERVER_ROLE_CONTROLLER_ENABLED) @NonNull public java.util.Set<java.lang.String> getFallbackEnabledRoles(); method @Nullable public String getPackagesHash(); method @NonNull public java.util.Map<java.lang.String,java.util.Set<java.lang.String>> getRoles(); method public int getVersion(); diff --git a/service/java/com/android/role/RoleService.java b/service/java/com/android/role/RoleService.java index a282e67cf..c1a3ea4d9 100644 --- a/service/java/com/android/role/RoleService.java +++ b/service/java/com/android/role/RoleService.java @@ -328,7 +328,7 @@ public class RoleService extends SystemService implements RoleUserState.Callback if (controller == null) { UserHandle user = UserHandle.of(userId); Context context = getContext(); - if (SdkLevel.isAtLeastV() && Flags.roleControllerInSystemServer()) { + if (SdkLevel.isAtLeastV() && Flags.systemServerRoleControllerEnabled()) { controller = new LocalRoleController(user, context); } else { controller = new RemoteRoleController(user, context); diff --git a/service/java/com/android/role/persistence/RolesState.java b/service/java/com/android/role/persistence/RolesState.java index fc6b88f26..26644c358 100644 --- a/service/java/com/android/role/persistence/RolesState.java +++ b/service/java/com/android/role/persistence/RolesState.java @@ -79,7 +79,7 @@ public final class RolesState { * @param roles the roles * @param fallbackEnabledRoles the roles with fallback enabled */ - @FlaggedApi(Flags.FLAG_ROLE_CONTROLLER_IN_SYSTEM_SERVER) + @FlaggedApi(Flags.FLAG_SYSTEM_SERVER_ROLE_CONTROLLER_ENABLED) public RolesState(int version, @Nullable String packagesHash, @NonNull Map<String, Set<String>> roles, @NonNull Set<String> fallbackEnabledRoles) { mVersion = version; @@ -123,7 +123,7 @@ public final class RolesState { * @return fallback enabled roles */ @NonNull - @FlaggedApi(Flags.FLAG_ROLE_CONTROLLER_IN_SYSTEM_SERVER) + @FlaggedApi(Flags.FLAG_SYSTEM_SERVER_ROLE_CONTROLLER_ENABLED) public Set<String> getFallbackEnabledRoles() { return mFallbackEnabledRoles; } diff --git a/tests/cts/permission/src/android/permission/cts/NearbyDevicesRenouncePermissionTest.java b/tests/cts/permission/src/android/permission/cts/NearbyDevicesRenouncePermissionTest.java index a196cedfd..aeb4d1d28 100644 --- a/tests/cts/permission/src/android/permission/cts/NearbyDevicesRenouncePermissionTest.java +++ b/tests/cts/permission/src/android/permission/cts/NearbyDevicesRenouncePermissionTest.java @@ -40,15 +40,19 @@ import android.content.pm.PackageManager; import android.os.Process; import android.os.SystemClock; import android.platform.test.annotations.AppModeFull; +import android.provider.DeviceConfig; import android.util.ArraySet; import android.util.Base64; import android.util.Log; import androidx.test.InstrumentationRegistry; +import com.android.compatibility.common.util.DeviceConfigStateChangerRule; import com.android.compatibility.common.util.EnableLocationRule; import com.android.compatibility.common.util.SystemUtil; +import com.google.common.util.concurrent.Uninterruptibles; + import org.junit.After; import org.junit.Before; import org.junit.ClassRule; @@ -58,6 +62,8 @@ import org.junit.Test; import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; /** * Tests behaviour when performing bluetooth scans with renounced location permission. @@ -73,11 +79,22 @@ public class NearbyDevicesRenouncePermissionTest { public static final EnableBluetoothRule sEnableBluetoothRule = new EnableBluetoothRule(true); @Rule + public DeviceConfigStateChangerRule safetyLabelChangeNotificationsEnabledConfig = + new DeviceConfigStateChangerRule( + mContext, + DeviceConfig.NAMESPACE_BLUETOOTH, + "scan_quota_count", + Integer.toString(1000) + ); + + @Rule public final EnableLocationRule enableLocationRule = new EnableLocationRule(); private AppOpsManager mAppOpsManager; - private int mLocationNoteCount; - private int mScanNoteCount; + + private volatile long mTestStartTimestamp; + private final AtomicInteger mLocationNoteCount = new AtomicInteger(0); + private final AtomicInteger mScanNoteCount = new AtomicInteger(0); private enum Result { UNKNOWN, EXCEPTION, EMPTY, FILTERED, FULL @@ -89,6 +106,13 @@ public class NearbyDevicesRenouncePermissionTest { @Before public void setUp() throws Exception { + // Sleep to guarantee that past noteOp timestamps are less than mTestStartTimestamp + Uninterruptibles.sleepUninterruptibly(2, TimeUnit.MILLISECONDS); + mTestStartTimestamp = System.currentTimeMillis(); + + mLocationNoteCount.set(0); + mScanNoteCount.set(0); + mAppOpsManager = getApplicationContext().getSystemService(AppOpsManager.class); mAppOpsManager.setOnOpNotedCallback(getApplicationContext().getMainExecutor(), new AppOpsManager.OnOpNotedCallback() { @@ -96,10 +120,12 @@ public class NearbyDevicesRenouncePermissionTest { public void onNoted(SyncNotedAppOp op) { switch (op.getOp()) { case OPSTR_FINE_LOCATION: - mLocationNoteCount++; + logNoteOp(op); + mLocationNoteCount.incrementAndGet(); break; case OPSTR_BLUETOOTH_SCAN: - mScanNoteCount++; + logNoteOp(op); + mScanNoteCount.incrementAndGet(); break; default: } @@ -113,10 +139,22 @@ public class NearbyDevicesRenouncePermissionTest { public void onAsyncNoted(AsyncNotedAppOp asyncOp) { switch (asyncOp.getOp()) { case OPSTR_FINE_LOCATION: - mLocationNoteCount++; + logNoteOp(asyncOp); + if (asyncOp.getTime() < mTestStartTimestamp) { + Log.i(TAG, "ignoring asyncOp that originated before test " + + "start"); + return; + } + mLocationNoteCount.incrementAndGet(); break; case OPSTR_BLUETOOTH_SCAN: - mScanNoteCount++; + logNoteOp(asyncOp); + if (asyncOp.getTime() < mTestStartTimestamp) { + Log.i(TAG, "ignoring asyncOp that originated before test " + + "start"); + return; + } + mScanNoteCount.incrementAndGet(); break; default: } @@ -124,26 +162,31 @@ public class NearbyDevicesRenouncePermissionTest { }); } + private void logNoteOp(SyncNotedAppOp op) { + Log.i(TAG, "OnOpNotedCallback::onNoted(op=" + op.getOp() + ")"); + } + + private void logNoteOp(AsyncNotedAppOp asyncOp) { + Log.i(TAG, "OnOpNotedCallback::" + + "onAsyncNoted(op=" + asyncOp.getOp() + + ", testStartTimestamp=" + mTestStartTimestamp + + ", noteOpTimestamp=" + asyncOp.getTime() + ")"); + } + @After public void tearDown() throws Exception { mAppOpsManager.setOnOpNotedCallback(null, null); } - private void clearNoteCounts() { - mLocationNoteCount = 0; - mScanNoteCount = 0; - } - @AppModeFull @Test public void scanWithoutRenouncingNotesBluetoothAndLocation() throws Exception { assumeTrue(supportsBluetoothLe()); - clearNoteCounts(); assertThat(performScan(Scenario.DEFAULT)).isEqualTo(Result.FULL); SystemUtil.eventually(() -> { - assertThat(mLocationNoteCount).isGreaterThan(0); - assertThat(mScanNoteCount).isGreaterThan(0); + assertThat(mLocationNoteCount.get()).isGreaterThan(0); + assertThat(mScanNoteCount.get()).isGreaterThan(0); }); } @@ -152,11 +195,10 @@ public class NearbyDevicesRenouncePermissionTest { public void scanRenouncingLocationNotesBluetoothButNotLocation() throws Exception { assumeTrue(supportsBluetoothLe()); - clearNoteCounts(); assertThat(performScan(Scenario.RENOUNCE)).isEqualTo(Result.FILTERED); SystemUtil.eventually(() -> { - assertThat(mLocationNoteCount).isEqualTo(0); - assertThat(mScanNoteCount).isGreaterThan(0); + assertThat(mLocationNoteCount.get()).isEqualTo(0); + assertThat(mScanNoteCount.get()).isGreaterThan(0); }); } @@ -165,22 +207,20 @@ public class NearbyDevicesRenouncePermissionTest { public void scanRenouncingInMiddleOfChainNotesBluetoothButNotLocation() throws Exception { assumeTrue(supportsBluetoothLe()); - clearNoteCounts(); assertThat(performScan(Scenario.RENOUNCE_MIDDLE)).isEqualTo(Result.FILTERED); SystemUtil.eventually(() -> { - assertThat(mLocationNoteCount).isEqualTo(0); - assertThat(mScanNoteCount).isGreaterThan(0); + assertThat(mLocationNoteCount.get()).isEqualTo(0); + assertThat(mScanNoteCount.get()).isGreaterThan(0); }); } @AppModeFull @Test public void scanRenouncingAtEndOfChainNotesBluetoothButNotLocation() throws Exception { - clearNoteCounts(); assertThat(performScan(Scenario.RENOUNCE_END)).isEqualTo(Result.FILTERED); SystemUtil.eventually(() -> { - assertThat(mLocationNoteCount).isEqualTo(0); - assertThat(mScanNoteCount).isGreaterThan(0); + assertThat(mLocationNoteCount.get()).isEqualTo(0); + assertThat(mScanNoteCount.get()).isGreaterThan(0); }); } diff --git a/tests/cts/permissionpolicy/res/raw/android_manifest.xml b/tests/cts/permissionpolicy/res/raw/android_manifest.xml index 80978bf2f..cc68a8a37 100644 --- a/tests/cts/permissionpolicy/res/raw/android_manifest.xml +++ b/tests/cts/permissionpolicy/res/raw/android_manifest.xml @@ -2285,7 +2285,7 @@ @hide --> <permission android:name="android.permission.SUSPEND_APPS" - android:protectionLevel="signature|role" /> + android:protectionLevel="signature|role|verifier" /> <!-- @SystemApi @hide @@ -7302,6 +7302,13 @@ <permission android:name="android.permission.MODIFY_TOUCH_MODE_STATE" android:protectionLevel="signature" /> + <!-- @SystemApi Allows the holder to launch an Intent Resolver flow with custom presentation + and/or targets. + @FlaggedApi("android.service.chooser.support_nfc_resolver") + @hide --> + <permission android:name="android.permission.SHOW_CUSTOMIZED_RESOLVER" + android:protectionLevel="signature|privileged" /> + <!-- @hide Allows an application to get a People Tile preview for a given shortcut. --> <permission android:name="android.permission.GET_PEOPLE_TILE_PREVIEW" android:protectionLevel="signature|recents" /> @@ -7652,6 +7659,22 @@ <permission android:name="android.permission.PREPARE_FACTORY_RESET" android:protectionLevel="signature|privileged" /> + <!-- @SystemApi Allows focused window to override the default behavior of supported system keys. + The following keycodes are supported: + <p> KEYCODE_STEM_PRIMARY + <p>If an app is granted this permission and has a focused window, it will be allowed to + receive supported key events that are otherwise handled by the system. The app can choose + to consume the key events and trigger its own behavior, in which case the default key + behavior will be skipped. + <p>For example, KEYCODE_STEM_PRIMARY by default opens recent app launcher. If the foreground + fitness app is granted this permission, it can repurpose the KEYCODE_STEM_PRIMARY button + to pause/resume the current fitness session. + <p>Protection level: signature|privileged + @FlaggedApi("com.android.input.flags.override_key_behavior_permission_apis") + @hide --> + <permission android:name="android.permission.OVERRIDE_SYSTEM_KEY_BEHAVIOR_IN_FOCUSED_WINDOW" + android:protectionLevel="signature|privileged" /> + <!-- Attribution for Geofencing service. --> <attribution android:tag="GeofencingService" android:label="@string/geofencing_service"/> <!-- Attribution for Country Detector. --> |