Merge "Remove a special test-only mode from IMMS"

This commit is contained in:
TreeHugger Robot
2018-12-18 03:35:07 +00:00
committed by Android (Google) Code Review

View File

@@ -674,13 +674,6 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
@HardKeyboardBehavior
private final int mHardKeyboardBehavior;
/**
* Whether we temporarily allow IMEs implemented in instant apps to run for testing.
*
* <p>Note: This is quite dangerous. Don't forget to reset after you finish testing.</p>
*/
private boolean mBindInstantServiceAllowed = false;
/**
* Internal state snapshot when {@link #MSG_START_INPUT} message is about to be posted to the
* internal message queue. Any subsequent state change inside {@link InputMethodManagerService}
@@ -1135,8 +1128,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
final PackageManager pm = mContext.getPackageManager();
final List<ResolveInfo> services = pm.queryIntentServicesAsUser(
new Intent(InputMethod.SERVICE_INTERFACE).setPackage(packageName),
getComponentMatchingFlags(PackageManager.MATCH_DISABLED_COMPONENTS),
getChangingUserId());
PackageManager.MATCH_DISABLED_COMPONENTS, getChangingUserId());
// No need to lock this because we access it only on getRegisteredHandler().
if (!services.isEmpty()) {
mImePackageAppeared = true;
@@ -1684,9 +1676,6 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
Slog.e(TAG, "--- bind failed: service = " + service + ", conn = " + conn);
return false;
}
if (mBindInstantServiceAllowed) {
flags |= Context.BIND_ALLOW_INSTANT;
}
return mContext.bindServiceAsUser(service, conn, flags,
new UserHandle(mSettings.getCurrentUserId()));
}
@@ -3631,16 +3620,6 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
return false;
}
@PackageManager.ResolveInfoFlags
private int getComponentMatchingFlags(@PackageManager.ResolveInfoFlags int baseFlags) {
synchronized (mMethodMap) {
if (mBindInstantServiceAllowed) {
baseFlags |= PackageManager.MATCH_INSTANT;
}
return baseFlags;
}
}
@GuardedBy("mMethodMap")
void buildInputMethodListLocked(boolean resetDefaultEnabledIme) {
if (DEBUG) {
@@ -3664,8 +3643,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
// services depending on the unlock state for the specified user.
final List<ResolveInfo> services = pm.queryIntentServicesAsUser(
new Intent(InputMethod.SERVICE_INTERFACE),
getComponentMatchingFlags(PackageManager.GET_META_DATA
| PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS),
PackageManager.GET_META_DATA | PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS,
mSettings.getCurrentUserId());
final ArrayMap<String, List<InputMethodSubtype>> additionalSubtypeMap =
@@ -3707,8 +3685,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
// conservative, but it seems we cannot use it for now (Issue 35176630).
final List<ResolveInfo> allInputMethodServices = pm.queryIntentServicesAsUser(
new Intent(InputMethod.SERVICE_INTERFACE),
getComponentMatchingFlags(PackageManager.MATCH_DISABLED_COMPONENTS),
mSettings.getCurrentUserId());
PackageManager.MATCH_DISABLED_COMPONENTS, mSettings.getCurrentUserId());
final int N = allInputMethodServices.size();
for (int i = 0; i < N; ++i) {
final ServiceInfo si = allInputMethodServices.get(i).serviceInfo;
@@ -4606,8 +4583,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
synchronized (mMethodMap) {
p.println("Current Input Method Manager state:");
int N = mMethodList.size();
p.println(" Input Methods: mMethodMapUpdateCount=" + mMethodMapUpdateCount
+ " mBindInstantServiceAllowed=" + mBindInstantServiceAllowed);
p.println(" Input Methods: mMethodMapUpdateCount=" + mMethodMapUpdateCount);
for (int i=0; i<N; i++) {
InputMethodInfo info = mMethodList.get(i);
p.println(" InputMethod #" + i + ":");
@@ -4719,9 +4695,6 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
if ("refresh_debug_properties".equals(cmd)) {
return refreshDebugProperties();
}
if ("set-bind-instant-service-allowed".equals(cmd)) {
return setBindInstantServiceAllowed();
}
// For existing "adb shell ime <command>".
if ("ime".equals(cmd)) {
@@ -4750,12 +4723,6 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
return handleDefaultCommands(cmd);
}
@BinderThread
@ShellCommandResult
private int setBindInstantServiceAllowed() {
return mService.handleSetBindInstantServiceAllowed(this);
}
@BinderThread
@ShellCommandResult
private int refreshDebugProperties() {
@@ -4774,9 +4741,6 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
pw.println(" Synonym of dumpsys.");
pw.println(" ime <command> [options]");
pw.println(" Manipulate IMEs. Run \"ime help\" for details.");
pw.println(" set-bind-instant-service-allowed true|false ");
pw.println(" Set whether binding to services provided by instant apps is "
+ "allowed.");
}
}
@@ -4824,53 +4788,6 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
// ----------------------------------------------------------------------
// Shell command handlers:
/**
* Handles {@code adb shell cmd input_method set-bind-instant-service-allowed}.
*
* @param shellCommand {@link ShellCommand} object that is handling this command.
* @return Exit code of the command.
*/
@BinderThread
@RequiresPermission(android.Manifest.permission.MANAGE_BIND_INSTANT_SERVICE)
@ShellCommandResult
private int handleSetBindInstantServiceAllowed(@NonNull ShellCommand shellCommand) {
final String allowedString = shellCommand.getNextArgRequired();
if (allowedString == null) {
shellCommand.getErrPrintWriter().println("Error: no true/false specified");
return ShellCommandResult.FAILURE;
}
final boolean allowed = Boolean.parseBoolean(allowedString);
synchronized (mMethodMap) {
if (mContext.checkCallingOrSelfPermission(
android.Manifest.permission.MANAGE_BIND_INSTANT_SERVICE)
!= PackageManager.PERMISSION_GRANTED) {
shellCommand.getErrPrintWriter().print(
"Caller must have MANAGE_BIND_INSTANT_SERVICE permission");
return ShellCommandResult.FAILURE;
}
if (mBindInstantServiceAllowed == allowed) {
// Nothing to do.
return ShellCommandResult.SUCCESS;
}
mBindInstantServiceAllowed = allowed;
// Rebuild everything.
final long ident = Binder.clearCallingIdentity();
try {
// Reset the current IME
resetSelectedInputMethodAndSubtypeLocked(null);
// Also reset the settings of the current IME
mSettings.putSelectedInputMethod(null);
buildInputMethodListLocked(false /* resetDefaultEnabledIme */);
updateInputMethodsFromSettingsLocked(true /* enabledMayChange */);
} finally {
Binder.restoreCallingIdentity(ident);
}
}
return ShellCommandResult.SUCCESS;
}
/**
* Handles {@code adb shell ime list}.
* @param shellCommand {@link ShellCommand} object that is handling this command.