diff options
author | Alan Viverette <alanv@google.com> | 2014-11-19 17:02:16 -0800 |
---|---|---|
committer | Alan Viverette <alanv@google.com> | 2014-11-19 17:02:16 -0800 |
commit | 7c9746d4ef8ab3c500b501ab32933c5172a856ab (patch) | |
tree | 9f21f6d0fc56abd07527e10d74de679c9b2ee060 /core/java/android/accessibilityservice | |
parent | 2ee054b4f099ce67dffc29329612170305053783 (diff) | |
download | frameworks_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.java | 25 |
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 |