Merge "Require CREATE_VIRTUAL_DEVICE permission to register or unregister an AccessibilityDisplayProxy" into udc-dev
This commit is contained in:
@@ -17290,9 +17290,9 @@ package android.view.accessibility {
|
|||||||
public final class AccessibilityManager {
|
public final class AccessibilityManager {
|
||||||
method public int getAccessibilityWindowId(@Nullable android.os.IBinder);
|
method public int getAccessibilityWindowId(@Nullable android.os.IBinder);
|
||||||
method @RequiresPermission(android.Manifest.permission.MANAGE_ACCESSIBILITY) public void performAccessibilityShortcut();
|
method @RequiresPermission(android.Manifest.permission.MANAGE_ACCESSIBILITY) public void performAccessibilityShortcut();
|
||||||
method @RequiresPermission(android.Manifest.permission.MANAGE_ACCESSIBILITY) public boolean registerDisplayProxy(@NonNull android.view.accessibility.AccessibilityDisplayProxy);
|
method @RequiresPermission(allOf={android.Manifest.permission.MANAGE_ACCESSIBILITY, android.Manifest.permission.CREATE_VIRTUAL_DEVICE}) public boolean registerDisplayProxy(@NonNull android.view.accessibility.AccessibilityDisplayProxy);
|
||||||
method @RequiresPermission(android.Manifest.permission.MANAGE_ACCESSIBILITY) public void registerSystemAction(@NonNull android.app.RemoteAction, int);
|
method @RequiresPermission(android.Manifest.permission.MANAGE_ACCESSIBILITY) public void registerSystemAction(@NonNull android.app.RemoteAction, int);
|
||||||
method @RequiresPermission(android.Manifest.permission.MANAGE_ACCESSIBILITY) public boolean unregisterDisplayProxy(@NonNull android.view.accessibility.AccessibilityDisplayProxy);
|
method @RequiresPermission(allOf={android.Manifest.permission.MANAGE_ACCESSIBILITY, android.Manifest.permission.CREATE_VIRTUAL_DEVICE}) public boolean unregisterDisplayProxy(@NonNull android.view.accessibility.AccessibilityDisplayProxy);
|
||||||
method @RequiresPermission(android.Manifest.permission.MANAGE_ACCESSIBILITY) public void unregisterSystemAction(int);
|
method @RequiresPermission(android.Manifest.permission.MANAGE_ACCESSIBILITY) public void unregisterSystemAction(int);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2068,12 +2068,14 @@ public final class AccessibilityManager {
|
|||||||
* {@link android.view.Display#INVALID_DISPLAY}, or is already being proxy-ed.
|
* {@link android.view.Display#INVALID_DISPLAY}, or is already being proxy-ed.
|
||||||
*
|
*
|
||||||
* @throws SecurityException if the app does not hold the
|
* @throws SecurityException if the app does not hold the
|
||||||
* {@link Manifest.permission#MANAGE_ACCESSIBILITY} permission.
|
* {@link Manifest.permission#MANAGE_ACCESSIBILITY} permission or the
|
||||||
|
* {@link Manifest.permission#CREATE_VIRTUAL_DEVICE} permission.
|
||||||
*
|
*
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
@SystemApi
|
@SystemApi
|
||||||
@RequiresPermission(Manifest.permission.MANAGE_ACCESSIBILITY)
|
@RequiresPermission(allOf = {Manifest.permission.MANAGE_ACCESSIBILITY,
|
||||||
|
Manifest.permission.CREATE_VIRTUAL_DEVICE})
|
||||||
public boolean registerDisplayProxy(@NonNull AccessibilityDisplayProxy proxy) {
|
public boolean registerDisplayProxy(@NonNull AccessibilityDisplayProxy proxy) {
|
||||||
final IAccessibilityManager service;
|
final IAccessibilityManager service;
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
@@ -2096,12 +2098,14 @@ public final class AccessibilityManager {
|
|||||||
* @return {@code true} if the proxy is successfully unregistered.
|
* @return {@code true} if the proxy is successfully unregistered.
|
||||||
*
|
*
|
||||||
* @throws SecurityException if the app does not hold the
|
* @throws SecurityException if the app does not hold the
|
||||||
* {@link Manifest.permission#MANAGE_ACCESSIBILITY} permission.
|
* {@link Manifest.permission#MANAGE_ACCESSIBILITY} permission or the
|
||||||
|
* {@link Manifest.permission#CREATE_VIRTUAL_DEVICE} permission.
|
||||||
*
|
*
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
@SystemApi
|
@SystemApi
|
||||||
@RequiresPermission(Manifest.permission.MANAGE_ACCESSIBILITY)
|
@RequiresPermission(allOf = {Manifest.permission.MANAGE_ACCESSIBILITY,
|
||||||
|
Manifest.permission.CREATE_VIRTUAL_DEVICE})
|
||||||
public boolean unregisterDisplayProxy(@NonNull AccessibilityDisplayProxy proxy) {
|
public boolean unregisterDisplayProxy(@NonNull AccessibilityDisplayProxy proxy) {
|
||||||
final IAccessibilityManager service;
|
final IAccessibilityManager service;
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
|
|||||||
@@ -3801,6 +3801,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
|
|||||||
public boolean registerProxyForDisplay(IAccessibilityServiceClient client, int displayId)
|
public boolean registerProxyForDisplay(IAccessibilityServiceClient client, int displayId)
|
||||||
throws RemoteException {
|
throws RemoteException {
|
||||||
mSecurityPolicy.enforceCallingOrSelfPermission(Manifest.permission.MANAGE_ACCESSIBILITY);
|
mSecurityPolicy.enforceCallingOrSelfPermission(Manifest.permission.MANAGE_ACCESSIBILITY);
|
||||||
|
mSecurityPolicy.enforceCallingOrSelfPermission(Manifest.permission.CREATE_VIRTUAL_DEVICE);
|
||||||
if (client == null) {
|
if (client == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -3837,6 +3838,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
|
|||||||
@Override
|
@Override
|
||||||
public boolean unregisterProxyForDisplay(int displayId) {
|
public boolean unregisterProxyForDisplay(int displayId) {
|
||||||
mSecurityPolicy.enforceCallingOrSelfPermission(Manifest.permission.MANAGE_ACCESSIBILITY);
|
mSecurityPolicy.enforceCallingOrSelfPermission(Manifest.permission.MANAGE_ACCESSIBILITY);
|
||||||
|
mSecurityPolicy.enforceCallingOrSelfPermission(Manifest.permission.CREATE_VIRTUAL_DEVICE);
|
||||||
final long identity = Binder.clearCallingIdentity();
|
final long identity = Binder.clearCallingIdentity();
|
||||||
try {
|
try {
|
||||||
return mProxyManager.unregisterProxy(displayId);
|
return mProxyManager.unregisterProxy(displayId);
|
||||||
|
|||||||
@@ -289,7 +289,7 @@ public class AccessibilityManagerServiceTest {
|
|||||||
|
|
||||||
@SmallTest
|
@SmallTest
|
||||||
@Test
|
@Test
|
||||||
public void testRegisterProxyWithoutPermission() throws Exception {
|
public void testRegisterProxyWithoutA11yPermission() throws Exception {
|
||||||
doThrow(SecurityException.class).when(mMockSecurityPolicy)
|
doThrow(SecurityException.class).when(mMockSecurityPolicy)
|
||||||
.enforceCallingOrSelfPermission(Manifest.permission.MANAGE_ACCESSIBILITY);
|
.enforceCallingOrSelfPermission(Manifest.permission.MANAGE_ACCESSIBILITY);
|
||||||
|
|
||||||
@@ -299,6 +299,18 @@ public class AccessibilityManagerServiceTest {
|
|||||||
any(), any(), any());
|
any(), any(), any());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SmallTest
|
||||||
|
@Test
|
||||||
|
public void testRegisterProxyWithoutDevicePermission() throws Exception {
|
||||||
|
doThrow(SecurityException.class).when(mMockSecurityPolicy)
|
||||||
|
.enforceCallingOrSelfPermission(Manifest.permission.CREATE_VIRTUAL_DEVICE);
|
||||||
|
|
||||||
|
assertThrows(SecurityException.class,
|
||||||
|
() -> mA11yms.registerProxyForDisplay(mMockServiceClient, TEST_DISPLAY));
|
||||||
|
verify(mProxyManager, never()).registerProxy(any(), anyInt(), any(), anyInt(), any(), any(),
|
||||||
|
any(), any(), any());
|
||||||
|
}
|
||||||
|
|
||||||
@SmallTest
|
@SmallTest
|
||||||
@Test
|
@Test
|
||||||
public void testRegisterProxyForDefaultDisplay() throws Exception {
|
public void testRegisterProxyForDefaultDisplay() throws Exception {
|
||||||
@@ -328,7 +340,7 @@ public class AccessibilityManagerServiceTest {
|
|||||||
|
|
||||||
@SmallTest
|
@SmallTest
|
||||||
@Test
|
@Test
|
||||||
public void testUnRegisterProxyWithoutPermission() throws Exception {
|
public void testUnRegisterProxyWithoutA11yPermission() {
|
||||||
doThrow(SecurityException.class).when(mMockSecurityPolicy)
|
doThrow(SecurityException.class).when(mMockSecurityPolicy)
|
||||||
.enforceCallingOrSelfPermission(Manifest.permission.MANAGE_ACCESSIBILITY);
|
.enforceCallingOrSelfPermission(Manifest.permission.MANAGE_ACCESSIBILITY);
|
||||||
|
|
||||||
@@ -337,6 +349,17 @@ public class AccessibilityManagerServiceTest {
|
|||||||
verify(mProxyManager, never()).unregisterProxy(TEST_DISPLAY);
|
verify(mProxyManager, never()).unregisterProxy(TEST_DISPLAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SmallTest
|
||||||
|
@Test
|
||||||
|
public void testUnRegisterProxyWithoutDevicePermission() {
|
||||||
|
doThrow(SecurityException.class).when(mMockSecurityPolicy)
|
||||||
|
.enforceCallingOrSelfPermission(Manifest.permission.CREATE_VIRTUAL_DEVICE);
|
||||||
|
|
||||||
|
assertThrows(SecurityException.class,
|
||||||
|
() -> mA11yms.unregisterProxyForDisplay(TEST_DISPLAY));
|
||||||
|
verify(mProxyManager, never()).unregisterProxy(TEST_DISPLAY);
|
||||||
|
}
|
||||||
|
|
||||||
@SmallTest
|
@SmallTest
|
||||||
@Test
|
@Test
|
||||||
public void testOnMagnificationTransitionFailed_capabilitiesIsAll_fallBackToPreviousMode() {
|
public void testOnMagnificationTransitionFailed_capabilitiesIsAll_fallBackToPreviousMode() {
|
||||||
|
|||||||
Reference in New Issue
Block a user