summaryrefslogtreecommitdiffstats
path: root/services/tests/servicestests/src/com/android/server/AccessibilityManagerServiceTest.java
diff options
context:
space:
mode:
authorSvetoslav Ganov <svetoslavganov@google.com>2012-09-18 12:04:19 -0700
committerSvetoslav Ganov <svetoslavganov@google.com>2012-09-21 16:48:07 -0700
commit58d37b55bd228032355360ea3303e46a804e0516 (patch)
tree7a931f0e6054ef5835f2935dd8d2faa52a93ff53 /services/tests/servicestests/src/com/android/server/AccessibilityManagerServiceTest.java
parent059aedf808c8b9b3da1457eef52f3d477878d50b (diff)
downloadframeworks_base-58d37b55bd228032355360ea3303e46a804e0516.zip
frameworks_base-58d37b55bd228032355360ea3303e46a804e0516.tar.gz
frameworks_base-58d37b55bd228032355360ea3303e46a804e0516.tar.bz2
Multi-user support for the accessibility layer.
1. This change converts the accessibility manager service to maintain a state per user. When the user changes the services for the user that is going away are disconnected, the local accessibility managers in the processes for this user are disabled, the state is swapped with the new user's one, and the new user state is refreshed. This change updates all calls into the system to use their user specific versions when applicable. For example, regisetring content observers, package monitors, calls into other system services, etc. There are some components that are shared across users such as UI created by the system process and the SystemUI package. Such components are managed as a global state shared across all users and are updated accordingly on a user switch. Since the SystemUI is running in a normal app process this change adds hidden APIs on the local window manager to allow the SystemUI to notify the accessibility layer that it will run accross users. Calls to AccessibiltyManager's isEnabled(), isTouchExplorationEnabled() and sendAccessibilityEvent return false or a are a nop for a background user sice he should not send accessibility events, and should not perform touch exploration. Update the internal accessibility tests due to changes in the AccessibilityManager. This change also fixes several issues that were encountered such as calling out the accessibility manager service with a lock held. Removed some incorrect debugging code from the TouchExplorer that was leading to a system crash. bug:6967373 Change-Id: I2cf32ffdee1d827a8197ae4ce717dc0ff798b259
Diffstat (limited to 'services/tests/servicestests/src/com/android/server/AccessibilityManagerServiceTest.java')
-rw-r--r--services/tests/servicestests/src/com/android/server/AccessibilityManagerServiceTest.java32
1 files changed, 17 insertions, 15 deletions
diff --git a/services/tests/servicestests/src/com/android/server/AccessibilityManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/AccessibilityManagerServiceTest.java
index 46bcc4a..fd9fc98 100644
--- a/services/tests/servicestests/src/com/android/server/AccessibilityManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/AccessibilityManagerServiceTest.java
@@ -25,6 +25,7 @@ import android.os.IBinder;
import android.os.Message;
import android.os.ServiceManager;
import android.os.SystemClock;
+import android.os.UserHandle;
import android.provider.Settings;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.LargeTest;
@@ -98,7 +99,7 @@ public class AccessibilityManagerServiceTest extends AndroidTestCase {
MyMockAccessibilityManagerClient mockClient = new MyMockAccessibilityManagerClient();
// invoke the method under test
- final int stateFlagsDisabled = mManagerService.addClient(mockClient);
+ final int stateFlagsDisabled = mManagerService.addClient(mockClient, UserHandle.USER_OWNER);
boolean enabledAccessibilityDisabled =
(stateFlagsDisabled & AccessibilityManager.STATE_FLAG_ACCESSIBILITY_ENABLED) != 0;
@@ -110,7 +111,7 @@ public class AccessibilityManagerServiceTest extends AndroidTestCase {
ensureAccessibilityEnabled(mContext, true);
// invoke the method under test
- final int stateFlagsEnabled = mManagerService.addClient(mockClient);
+ final int stateFlagsEnabled = mManagerService.addClient(mockClient, UserHandle.USER_OWNER);
boolean enabledAccessibilityEnabled =
(stateFlagsEnabled & AccessibilityManager.STATE_FLAG_ACCESSIBILITY_ENABLED) != 0;
@@ -129,7 +130,7 @@ public class AccessibilityManagerServiceTest extends AndroidTestCase {
MyMockAccessibilityManagerClient mockClient = new MyMockAccessibilityManagerClient();
// invoke the method under test
- final int stateFlagsEnabled = mManagerService.addClient(mockClient);
+ final int stateFlagsEnabled = mManagerService.addClient(mockClient, UserHandle.USER_OWNER);
boolean enabledAccessibilityEnabled =
(stateFlagsEnabled & AccessibilityManager.STATE_FLAG_ACCESSIBILITY_ENABLED) != 0;
@@ -141,7 +142,7 @@ public class AccessibilityManagerServiceTest extends AndroidTestCase {
ensureAccessibilityEnabled(mContext, false);
// invoke the method under test
- final int stateFlagsDisabled = mManagerService.addClient(mockClient);
+ final int stateFlagsDisabled = mManagerService.addClient(mockClient, UserHandle.USER_OWNER);
boolean enabledAccessibilityDisabled =
(stateFlagsDisabled & AccessibilityManager.STATE_FLAG_ACCESSIBILITY_ENABLED) != 0;
@@ -160,7 +161,8 @@ public class AccessibilityManagerServiceTest extends AndroidTestCase {
String secondMockServiceClassName = MySecondMockAccessibilityService.class.getName();
// look for the two mock services
- for (AccessibilityServiceInfo info : mManagerService.getInstalledAccessibilityServiceList()) {
+ for (AccessibilityServiceInfo info : mManagerService.getInstalledAccessibilityServiceList(
+ UserHandle.USER_OWNER)) {
ServiceInfo serviceInfo = info.getResolveInfo().serviceInfo;
if (packageName.equals(serviceInfo.packageName)) {
if (firstMockServiceClassName.equals(serviceInfo.name)) {
@@ -201,7 +203,7 @@ public class AccessibilityManagerServiceTest extends AndroidTestCase {
service.replay();
// send the event
- mManagerService.sendAccessibilityEvent(sentEvent);
+ mManagerService.sendAccessibilityEvent(sentEvent, UserHandle.USER_OWNER);
// verify if all expected methods have been called
assertMockServiceVerifiedWithinTimeout(service);
@@ -231,7 +233,7 @@ public class AccessibilityManagerServiceTest extends AndroidTestCase {
service.replay();
// send the event
- mManagerService.sendAccessibilityEvent(sentEvent);
+ mManagerService.sendAccessibilityEvent(sentEvent, UserHandle.USER_OWNER);
// verify if all expected methods have been called
assertMockServiceVerifiedWithinTimeout(service);
@@ -261,7 +263,7 @@ public class AccessibilityManagerServiceTest extends AndroidTestCase {
service.replay();
// send the event
- mManagerService.sendAccessibilityEvent(sentEvent);
+ mManagerService.sendAccessibilityEvent(sentEvent, UserHandle.USER_OWNER);
// verify if all expected methods have been called
assertMockServiceVerifiedWithinTimeout(service);
@@ -297,8 +299,8 @@ public class AccessibilityManagerServiceTest extends AndroidTestCase {
service.replay();
// send the events
- mManagerService.sendAccessibilityEvent(firstEvent);
- mManagerService.sendAccessibilityEvent(secondEvent);
+ mManagerService.sendAccessibilityEvent(firstEvent, UserHandle.USER_OWNER);
+ mManagerService.sendAccessibilityEvent(secondEvent, UserHandle.USER_OWNER);
// wait for #sendAccessibilityEvent to reach the backing service
Thread.sleep(TIMEOUT_BINDER_CALL);
@@ -354,7 +356,7 @@ public class AccessibilityManagerServiceTest extends AndroidTestCase {
secondService.replay();
// send the event
- mManagerService.sendAccessibilityEvent(sentEvent);
+ mManagerService.sendAccessibilityEvent(sentEvent, UserHandle.USER_OWNER);
// verify if all expected methods have been called
assertMockServiceVerifiedWithinTimeout(firstService);
@@ -393,7 +395,7 @@ public class AccessibilityManagerServiceTest extends AndroidTestCase {
secondService.replay();
// send the event
- mManagerService.sendAccessibilityEvent(sentEvent);
+ mManagerService.sendAccessibilityEvent(sentEvent, UserHandle.USER_OWNER);
// verify if all expected methods have been called
assertMockServiceVerifiedWithinTimeout(firstService);
@@ -434,7 +436,7 @@ public class AccessibilityManagerServiceTest extends AndroidTestCase {
secondService.replay();
// send the event
- mManagerService.sendAccessibilityEvent(sentEvent);
+ mManagerService.sendAccessibilityEvent(sentEvent, UserHandle.USER_OWNER);
// verify if all expected methods have been called
assertMockServiceVerifiedWithinTimeout(firstService);
@@ -477,7 +479,7 @@ public class AccessibilityManagerServiceTest extends AndroidTestCase {
secondService.replay();
// send the event
- mManagerService.sendAccessibilityEvent(sentEvent);
+ mManagerService.sendAccessibilityEvent(sentEvent, UserHandle.USER_OWNER);
// verify if all expected methods have been called
assertMockServiceVerifiedWithinTimeout(firstService);
@@ -512,7 +514,7 @@ public class AccessibilityManagerServiceTest extends AndroidTestCase {
secondService.replay();
// call the method under test
- mManagerService.interrupt();
+ mManagerService.interrupt(UserHandle.USER_OWNER);
// verify if all expected methods have been called
assertMockServiceVerifiedWithinTimeout(firstService);