Merge "Remove the dependency on StatusBarManagerService from IMMS"
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
index 2be84d0..8481560 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
@@ -105,7 +105,6 @@
import android.os.Process;
import android.os.RemoteException;
import android.os.ResultReceiver;
-import android.os.ServiceManager;
import android.os.ShellCallback;
import android.os.ShellCommand;
import android.os.SystemClock;
@@ -190,7 +189,7 @@
import com.android.server.inputmethod.InputMethodSubtypeSwitchingController.ImeSubtypeListItem;
import com.android.server.inputmethod.InputMethodUtils.InputMethodSettings;
import com.android.server.pm.UserManagerInternal;
-import com.android.server.statusbar.StatusBarManagerService;
+import com.android.server.statusbar.StatusBarManagerInternal;
import com.android.server.utils.PriorityDump;
import com.android.server.wm.WindowManagerInternal;
@@ -339,7 +338,7 @@
// Ongoing notification
private NotificationManager mNotificationManager;
KeyguardManager mKeyguardManager;
- private @Nullable StatusBarManagerService mStatusBar;
+ @Nullable private StatusBarManagerInternal mStatusBarManagerInternal;
private final Notification.Builder mImeSwitcherNotification;
private final PendingIntent mImeSwitchPendingIntent;
private boolean mShowOngoingImeSwitcherForPhones;
@@ -1650,9 +1649,7 @@
// Called on ActivityManager thread.
// TODO: Dispatch this to a worker thread as needed.
if (phase == SystemService.PHASE_ACTIVITY_MANAGER_READY) {
- StatusBarManagerService statusBarService = (StatusBarManagerService) ServiceManager
- .getService(Context.STATUS_BAR_SERVICE);
- mService.systemRunning(statusBarService);
+ mService.systemRunning();
}
}
@@ -1933,7 +1930,7 @@
/**
* TODO(b/32343335): The entire systemRunning() method needs to be revisited.
*/
- public void systemRunning(StatusBarManagerService statusBar) {
+ public void systemRunning() {
synchronized (ImfLock.class) {
if (DEBUG) {
Slog.d(TAG, "--- systemReady");
@@ -1946,7 +1943,8 @@
!mUserManagerInternal.isUserUnlockingOrUnlocked(currentUserId));
mKeyguardManager = mContext.getSystemService(KeyguardManager.class);
mNotificationManager = mContext.getSystemService(NotificationManager.class);
- mStatusBar = statusBar;
+ mStatusBarManagerInternal =
+ LocalServices.getService(StatusBarManagerInternal.class);
hideStatusBarIconLocked();
updateSystemUiLocked(mImeWindowVis, mBackDisposition);
mShowOngoingImeSwitcherForPhones = mRes.getBoolean(
@@ -2965,11 +2963,11 @@
final CharSequence contentDescription = applicationInfo != null
? userAwarePackageManager.getApplicationLabel(applicationInfo)
: null;
- if (mStatusBar != null) {
- mStatusBar.setIcon(mSlotIme, packageName, iconId, 0,
+ if (mStatusBarManagerInternal != null) {
+ mStatusBarManagerInternal.setIcon(mSlotIme, packageName, iconId, 0,
contentDescription != null
? contentDescription.toString() : null);
- mStatusBar.setIconVisibility(mSlotIme, true);
+ mStatusBarManagerInternal.setIconVisibility(mSlotIme, true);
}
}
} finally {
@@ -2980,8 +2978,8 @@
@GuardedBy("ImfLock.class")
private void hideStatusBarIconLocked() {
- if (mStatusBar != null) {
- mStatusBar.setIconVisibility(mSlotIme, false);
+ if (mStatusBarManagerInternal != null) {
+ mStatusBarManagerInternal.setIconVisibility(mSlotIme, false);
}
}
@@ -3160,9 +3158,9 @@
}
// mImeWindowVis should be updated before calling shouldShowImeSwitcherLocked().
final boolean needsToShowImeSwitcher = shouldShowImeSwitcherLocked(vis);
- if (mStatusBar != null) {
- mStatusBar.setImeWindowStatus(mCurTokenDisplayId, getCurTokenLocked(), vis,
- backDisposition, needsToShowImeSwitcher);
+ if (mStatusBarManagerInternal != null) {
+ mStatusBarManagerInternal.setImeWindowStatus(mCurTokenDisplayId,
+ getCurTokenLocked(), vis, backDisposition, needsToShowImeSwitcher);
}
final InputMethodInfo imi = mMethodMap.get(getSelectedMethodIdLocked());
if (imi != null && needsToShowImeSwitcher) {
diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java b/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java
index 690dd10..4111446 100644
--- a/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java
@@ -49,6 +49,31 @@
void dismissKeyboardShortcutsMenu();
void toggleKeyboardShortcutsMenu(int deviceId);
+ /**
+ * Used by InputMethodManagerService to notify the IME status.
+ *
+ * @param displayId The display to which the IME is bound to.
+ * @param token The IME token.
+ * @param vis Bit flags about the IME visibility.
+ * (e.g. {@link android.inputmethodservice.InputMethodService#IME_ACTIVE})
+ * @param backDisposition Bit flags about the IME back disposition.
+ * (e.g. {@link android.inputmethodservice.InputMethodService#BACK_DISPOSITION_DEFAULT})
+ * @param showImeSwitcher {@code true} when the IME switcher button should be shown.
+ */
+ void setImeWindowStatus(int displayId, IBinder token, int vis,
+ int backDisposition, boolean showImeSwitcher);
+
+ /**
+ * See {@link android.app.StatusBarManager#setIcon(String, int, int, String)}.
+ */
+ void setIcon(String slot, String iconPackage, int iconId, int iconLevel,
+ String contentDescription);
+
+ /**
+ * See {@link android.app.StatusBarManager#setIconVisibility(String, boolean)}.
+ */
+ void setIconVisibility(String slot, boolean visibility);
+
void showChargingAnimation(int batteryLevel);
/**
diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
index 653b51a9..7ccf85f 100644
--- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
@@ -484,6 +484,25 @@
}
@Override
+ public void setImeWindowStatus(int displayId, IBinder token, int vis, int backDisposition,
+ boolean showImeSwitcher) {
+ StatusBarManagerService.this.setImeWindowStatus(displayId, token, vis, backDisposition,
+ showImeSwitcher);
+ }
+
+ @Override
+ public void setIcon(String slot, String iconPackage, int iconId, int iconLevel,
+ String contentDescription) {
+ StatusBarManagerService.this.setIcon(slot, iconPackage, iconId, iconLevel,
+ contentDescription);
+ }
+
+ @Override
+ public void setIconVisibility(String slot, boolean visibility) {
+ StatusBarManagerService.this.setIconVisibility(slot, visibility);
+ }
+
+ @Override
public void showChargingAnimation(int batteryLevel) {
if (mBar != null) {
try {