Merge "Move InputMethodSytemProperty to server from client."
This commit is contained in:
committed by
Android (Google) Code Review
commit
cf695aabfd
@@ -480,7 +480,7 @@ public class EditorInfo implements InputType, Parcelable {
|
||||
* matter what user ID the calling process has.
|
||||
*
|
||||
* <p>Note: This field will be silently ignored when
|
||||
* {@link android.view.inputmethod.InputMethodSystemProperty#MULTI_CLIENT_IME_ENABLED} is
|
||||
* {@link com.android.server.inputmethod.InputMethodSystemProperty#MULTI_CLIENT_IME_ENABLED} is
|
||||
* {@code true}.</p>
|
||||
*
|
||||
* <p>Note also that pseudo handles such as {@link UserHandle#ALL} are not supported.</p>
|
||||
|
||||
@@ -58,7 +58,7 @@ oneway interface IStatusBar
|
||||
|
||||
void topAppWindowChanged(int displayId, boolean menuVisible);
|
||||
void setImeWindowStatus(int displayId, in IBinder token, int vis, int backDisposition,
|
||||
boolean showImeSwitcher);
|
||||
boolean showImeSwitcher, boolean isMultiClientImeEnabled);
|
||||
void setWindowState(int display, int window, int state);
|
||||
|
||||
void showRecentApps(boolean triggeredFromAltTab);
|
||||
|
||||
@@ -49,7 +49,7 @@ interface IStatusBarService
|
||||
@UnsupportedAppUsage
|
||||
void removeIcon(String slot);
|
||||
void setImeWindowStatus(int displayId, in IBinder token, int vis, int backDisposition,
|
||||
boolean showImeSwitcher);
|
||||
boolean showImeSwitcher, boolean isMultiClientImeEnabled);
|
||||
void expandSettingsPanel(String subPanel);
|
||||
|
||||
// ---- Methods below are for use by the status bar policy services ----
|
||||
|
||||
@@ -43,7 +43,6 @@ import android.os.Looper;
|
||||
import android.os.Message;
|
||||
import android.util.Pair;
|
||||
import android.util.SparseArray;
|
||||
import android.view.inputmethod.InputMethodSystemProperty;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
@@ -481,7 +480,7 @@ public class CommandQueue extends IStatusBar.Stub implements CallbackController<
|
||||
|
||||
@Override
|
||||
public void setImeWindowStatus(int displayId, IBinder token, int vis, int backDisposition,
|
||||
boolean showImeSwitcher) {
|
||||
boolean showImeSwitcher, boolean isMultiClientImeEnabled) {
|
||||
synchronized (mLock) {
|
||||
mHandler.removeMessages(MSG_SHOW_IME_BUTTON);
|
||||
SomeArgs args = SomeArgs.obtain();
|
||||
@@ -489,6 +488,7 @@ public class CommandQueue extends IStatusBar.Stub implements CallbackController<
|
||||
args.argi2 = vis;
|
||||
args.argi3 = backDisposition;
|
||||
args.argi4 = showImeSwitcher ? 1 : 0;
|
||||
args.argi5 = isMultiClientImeEnabled ? 1 : 0;
|
||||
args.arg1 = token;
|
||||
Message m = mHandler.obtainMessage(MSG_SHOW_IME_BUTTON, args);
|
||||
m.sendToTarget();
|
||||
@@ -801,11 +801,10 @@ public class CommandQueue extends IStatusBar.Stub implements CallbackController<
|
||||
}
|
||||
|
||||
private void handleShowImeButton(int displayId, IBinder token, int vis, int backDisposition,
|
||||
boolean showImeSwitcher) {
|
||||
boolean showImeSwitcher, boolean isMultiClientImeEnabled) {
|
||||
if (displayId == INVALID_DISPLAY) return;
|
||||
|
||||
if (!InputMethodSystemProperty.MULTI_CLIENT_IME_ENABLED
|
||||
&& mLastUpdatedImeDisplayId != displayId
|
||||
if (!isMultiClientImeEnabled && mLastUpdatedImeDisplayId != displayId
|
||||
&& mLastUpdatedImeDisplayId != INVALID_DISPLAY) {
|
||||
// Set previous NavBar's IME window status as invisible when IME
|
||||
// window switched to another display for single-session IME case.
|
||||
@@ -891,7 +890,8 @@ public class CommandQueue extends IStatusBar.Stub implements CallbackController<
|
||||
args = (SomeArgs) msg.obj;
|
||||
handleShowImeButton(args.argi1 /* displayId */, (IBinder) args.arg1 /* token */,
|
||||
args.argi2 /* vis */, args.argi3 /* backDisposition */,
|
||||
args.argi4 != 0 /* showImeSwitcher */);
|
||||
args.argi4 != 0 /* showImeSwitcher */,
|
||||
args.argi5 != 0 /* isMultiClientImeEnabled */);
|
||||
break;
|
||||
case MSG_SHOW_RECENT_APPS:
|
||||
for (int i = 0; i < mCallbacks.size(); i++) {
|
||||
|
||||
@@ -129,7 +129,7 @@ public class CommandQueueTest extends SysuiTestCase {
|
||||
|
||||
@Test
|
||||
public void testShowImeButton() {
|
||||
mCommandQueue.setImeWindowStatus(DEFAULT_DISPLAY, null, 1, 2, true);
|
||||
mCommandQueue.setImeWindowStatus(DEFAULT_DISPLAY, null, 1, 2, true, false);
|
||||
waitForIdleSync();
|
||||
verify(mCallbacks).setImeWindowStatus(
|
||||
eq(DEFAULT_DISPLAY), eq(null), eq(1), eq(2), eq(true));
|
||||
@@ -137,7 +137,7 @@ public class CommandQueueTest extends SysuiTestCase {
|
||||
|
||||
@Test
|
||||
public void testShowImeButtonForSecondaryDisplay() {
|
||||
mCommandQueue.setImeWindowStatus(SECONDARY_DISPLAY, null, 1, 2, true);
|
||||
mCommandQueue.setImeWindowStatus(SECONDARY_DISPLAY, null, 1, 2, true, false);
|
||||
waitForIdleSync();
|
||||
verify(mCallbacks).setImeWindowStatus(
|
||||
eq(SECONDARY_DISPLAY), eq(null), eq(1), eq(2), eq(true));
|
||||
|
||||
@@ -183,7 +183,7 @@ public class NavigationBarFragmentTest extends SysuiBaseFragmentTest {
|
||||
|
||||
// Set IME window status for default NavBar.
|
||||
mCommandQueue.setImeWindowStatus(DEFAULT_DISPLAY, null, IME_VISIBLE,
|
||||
BACK_DISPOSITION_DEFAULT, true);
|
||||
BACK_DISPOSITION_DEFAULT, true, false);
|
||||
Handler.getMain().runWithScissors(() -> { }, 500);
|
||||
|
||||
// Verify IME window state will be updated in default NavBar & external NavBar state reset.
|
||||
@@ -194,7 +194,7 @@ public class NavigationBarFragmentTest extends SysuiBaseFragmentTest {
|
||||
|
||||
// Set IME window status for external NavBar.
|
||||
mCommandQueue.setImeWindowStatus(EXTERNAL_DISPLAY_ID, null,
|
||||
IME_VISIBLE, BACK_DISPOSITION_DEFAULT, true);
|
||||
IME_VISIBLE, BACK_DISPOSITION_DEFAULT, true, false);
|
||||
Handler.getMain().runWithScissors(() -> { }, 500);
|
||||
|
||||
// Verify IME window state will be updated in external NavBar & default NavBar state reset.
|
||||
|
||||
@@ -2551,7 +2551,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
|
||||
final boolean needsToShowImeSwitcher = shouldShowImeSwitcherLocked(vis);
|
||||
if (mStatusBar != null) {
|
||||
mStatusBar.setImeWindowStatus(mCurTokenDisplayId, mCurToken, vis, backDisposition,
|
||||
needsToShowImeSwitcher);
|
||||
needsToShowImeSwitcher, false /*isMultiClientImeEnabled*/);
|
||||
}
|
||||
final InputMethodInfo imi = mMethodMap.get(mCurMethodId);
|
||||
if (imi != null && needsToShowImeSwitcher) {
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.view.inputmethod;
|
||||
package com.android.server.inputmethod;
|
||||
|
||||
import android.annotation.Nullable;
|
||||
import android.content.ComponentName;
|
||||
@@ -23,8 +23,6 @@ import android.os.SystemProperties;
|
||||
|
||||
/**
|
||||
* Various (pseudo) constants about IME behaviors.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public class InputMethodSystemProperty {
|
||||
/**
|
||||
@@ -58,23 +56,12 @@ public class InputMethodSystemProperty {
|
||||
|
||||
/**
|
||||
* {@link ComponentName} of multi-client IME to be used.
|
||||
*
|
||||
* <p>TODO: Move this back to MultiClientInputMethodManagerService once
|
||||
* {@link #PER_PROFILE_IME_ENABLED} always becomes {@code true}.</p>
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@Nullable
|
||||
public static final ComponentName sMultiClientImeComponentName =
|
||||
getMultiClientImeComponentName();
|
||||
static final ComponentName sMultiClientImeComponentName = getMultiClientImeComponentName();
|
||||
|
||||
/**
|
||||
* {@code true} when multi-client IME is enabled.
|
||||
*
|
||||
* <p>TODO: Move this back to MultiClientInputMethodManagerService once
|
||||
* {@link #PER_PROFILE_IME_ENABLED} always becomes {@code true}.</p>
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public static final boolean MULTI_CLIENT_IME_ENABLED = (sMultiClientImeComponentName != null);
|
||||
}
|
||||
@@ -67,7 +67,6 @@ import android.view.inputmethod.EditorInfo;
|
||||
import android.view.inputmethod.InputConnectionInspector.MissingMethodFlags;
|
||||
import android.view.inputmethod.InputMethodInfo;
|
||||
import android.view.inputmethod.InputMethodSubtype;
|
||||
import android.view.inputmethod.InputMethodSystemProperty;
|
||||
|
||||
import com.android.internal.R;
|
||||
import com.android.internal.annotations.GuardedBy;
|
||||
|
||||
@@ -841,7 +841,8 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
|
||||
|
||||
@Override
|
||||
public void setImeWindowStatus(int displayId, final IBinder token, final int vis,
|
||||
final int backDisposition, final boolean showImeSwitcher) {
|
||||
final int backDisposition, final boolean showImeSwitcher,
|
||||
boolean isMultiClientImeEnabled) {
|
||||
enforceStatusBar();
|
||||
|
||||
if (SPEW) {
|
||||
@@ -858,7 +859,8 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
|
||||
if (mBar == null) return;
|
||||
try {
|
||||
mBar.setImeWindowStatus(
|
||||
displayId, token, vis, backDisposition, showImeSwitcher);
|
||||
displayId, token, vis, backDisposition, showImeSwitcher,
|
||||
isMultiClientImeEnabled);
|
||||
} catch (RemoteException ex) { }
|
||||
});
|
||||
}
|
||||
|
||||
@@ -225,7 +225,6 @@ import android.view.IRecentsAnimationRunner;
|
||||
import android.view.RemoteAnimationAdapter;
|
||||
import android.view.RemoteAnimationDefinition;
|
||||
import android.view.WindowManager;
|
||||
import android.view.inputmethod.InputMethodSystemProperty;
|
||||
|
||||
import com.android.internal.R;
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
@@ -262,6 +261,7 @@ import com.android.server.am.PendingIntentRecord;
|
||||
import com.android.server.am.UserState;
|
||||
import com.android.server.appop.AppOpsService;
|
||||
import com.android.server.firewall.IntentFirewall;
|
||||
import com.android.server.inputmethod.InputMethodSystemProperty;
|
||||
import com.android.server.pm.UserManagerService;
|
||||
import com.android.server.policy.PermissionPolicyInternal;
|
||||
import com.android.server.uri.UriGrantsManagerInternal;
|
||||
|
||||
@@ -67,7 +67,6 @@ import android.util.EventLog;
|
||||
import android.util.Slog;
|
||||
import android.view.WindowManager;
|
||||
import android.view.contentcapture.ContentCaptureManager;
|
||||
import android.view.inputmethod.InputMethodSystemProperty;
|
||||
|
||||
import com.android.internal.R;
|
||||
import com.android.internal.logging.MetricsLogger;
|
||||
@@ -101,6 +100,7 @@ import com.android.server.hdmi.HdmiControlService;
|
||||
import com.android.server.incident.IncidentCompanionService;
|
||||
import com.android.server.input.InputManagerService;
|
||||
import com.android.server.inputmethod.InputMethodManagerService;
|
||||
import com.android.server.inputmethod.InputMethodSystemProperty;
|
||||
import com.android.server.inputmethod.MultiClientInputMethodManagerService;
|
||||
import com.android.server.lights.LightsService;
|
||||
import com.android.server.media.MediaResourceMonitorService;
|
||||
|
||||
Reference in New Issue
Block a user