Merge "Move InputMethodSytemProperty to server from client."

This commit is contained in:
TreeHugger Robot
2019-08-01 00:41:25 +00:00
committed by Android (Google) Code Review
12 changed files with 22 additions and 34 deletions

View File

@@ -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>

View File

@@ -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);

View File

@@ -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 ----

View File

@@ -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++) {

View File

@@ -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));

View File

@@ -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.

View File

@@ -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) {

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -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) { }
});
}

View File

@@ -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;

View File

@@ -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;