Merge "Remove the dependency on StatusBarManagerService from IMMS"
This commit is contained in:
@@ -105,7 +105,6 @@ import android.os.Parcel;
|
||||
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.InputMethodManagerInternal.InputMethodList
|
||||
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 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
|
||||
// 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 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
|
||||
// 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 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
|
||||
/**
|
||||
* 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 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
|
||||
!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 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
|
||||
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 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
|
||||
|
||||
@GuardedBy("ImfLock.class")
|
||||
private void hideStatusBarIconLocked() {
|
||||
if (mStatusBar != null) {
|
||||
mStatusBar.setIconVisibility(mSlotIme, false);
|
||||
if (mStatusBarManagerInternal != null) {
|
||||
mStatusBarManagerInternal.setIconVisibility(mSlotIme, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3160,9 +3158,9 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
|
||||
}
|
||||
// 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) {
|
||||
|
||||
@@ -49,6 +49,31 @@ public interface StatusBarManagerInternal {
|
||||
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);
|
||||
|
||||
/**
|
||||
|
||||
@@ -483,6 +483,25 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
|
||||
}
|
||||
}
|
||||
|
||||
@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) {
|
||||
|
||||
Reference in New Issue
Block a user