summaryrefslogtreecommitdiffstats
path: root/core/java/android/accessibilityservice
diff options
context:
space:
mode:
authorAlan Viverette <alanv@google.com>2014-11-19 17:02:16 -0800
committerAlan Viverette <alanv@google.com>2014-11-19 17:02:16 -0800
commit7c9746d4ef8ab3c500b501ab32933c5172a856ab (patch)
tree9f21f6d0fc56abd07527e10d74de679c9b2ee060 /core/java/android/accessibilityservice
parent2ee054b4f099ce67dffc29329612170305053783 (diff)
downloadframeworks_base-7c9746d4ef8ab3c500b501ab32933c5172a856ab.zip
frameworks_base-7c9746d4ef8ab3c500b501ab32933c5172a856ab.tar.gz
frameworks_base-7c9746d4ef8ab3c500b501ab32933c5172a856ab.tar.bz2
Move default token handling into WindowManagerImpl
BUG: 18451795 Change-Id: I1fc6db988ad879fded5318f33d08a4f09da38907
Diffstat (limited to 'core/java/android/accessibilityservice')
-rw-r--r--core/java/android/accessibilityservice/AccessibilityService.java25
1 files changed, 23 insertions, 2 deletions
diff --git a/core/java/android/accessibilityservice/AccessibilityService.java b/core/java/android/accessibilityservice/AccessibilityService.java
index a9eaf29..3f1845a 100644
--- a/core/java/android/accessibilityservice/AccessibilityService.java
+++ b/core/java/android/accessibilityservice/AccessibilityService.java
@@ -16,6 +16,7 @@
package android.accessibilityservice;
+import android.annotation.NonNull;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
@@ -27,6 +28,7 @@ import android.util.Log;
import android.view.KeyEvent;
import android.view.WindowManager;
import android.view.WindowManagerGlobal;
+import android.view.WindowManagerImpl;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityInteractionClient;
import android.view.accessibility.AccessibilityNodeInfo;
@@ -618,6 +620,23 @@ public abstract class AccessibilityService extends Service {
}
}
+ @Override
+ public Object getSystemService(@ServiceName @NonNull String name) {
+ if (getBaseContext() == null) {
+ throw new IllegalStateException(
+ "System services not available to Activities before onCreate()");
+ }
+
+ // Guarantee that we always return the same window manager instance.
+ if (WINDOW_SERVICE.equals(name)) {
+ if (mWindowManager == null) {
+ mWindowManager = (WindowManager) getBaseContext().getSystemService(name);
+ }
+ return mWindowManager;
+ }
+ return super.getSystemService(name);
+ }
+
/**
* Implement to return the implementation of the internal accessibility
* service interface.
@@ -645,8 +664,10 @@ public abstract class AccessibilityService extends Service {
mConnectionId = connectionId;
mWindowToken = windowToken;
- // Let the window manager know about our shiny new token.
- WindowManagerGlobal.getInstance().setDefaultToken(mWindowToken);
+ // The client may have already obtained the window manager, so
+ // update the default token on whatever manager we gave them.
+ final WindowManagerImpl wm = (WindowManagerImpl) getSystemService(WINDOW_SERVICE);
+ wm.setDefaultToken(windowToken);
}
@Override