summaryrefslogtreecommitdiff
path: root/core/java/android/inputmethodservice/InputMethodService.java
diff options
context:
space:
mode:
authorFeng Cao <fengcao@google.com>2020-02-18 18:23:30 -0800
committerFeng Cao <fengcao@google.com>2020-02-19 09:42:22 -0800
commit36960ee20ea612b2df2447d73003ac4af6f32341 (patch)
treef3fce1a058820be899eead740f2f0186d401ab67 /core/java/android/inputmethodservice/InputMethodService.java
parentda0c5df4af50a670c8a1928b46d5e4d1e9a63f2f (diff)
Introduces the Bundle to inline suggestions APIs to encode custom UI styling information.
* The bundle will be generated/consumed by the support library. * More API documentation and example usage will be added later once we have the support library impl ready. * The old style resource name approach doesn't work due to the potential mismatch in the support library version across the host IME and the platform renderer service, and the non-static nature of the public attribute int id in the support lib. * The Bundle added to the onCreateInlineSuggestionsRequest() is intended for the platform/ExtServices to communicate the UI versions it supports. * The Bundle added to the InlinePresentationSpec is intended for the IME to communicate the custom styles for the chosen UI versions. Test: manual verification, and also atest CtsInputMethodTestCases:InlineSuggestionInfoTest CtsInputMethodTestCases:InlineSuggestionTest CtsInputMethodTestCases:InlineSuggestionsRequestTest CtsInputMethodTestCases:InlineSuggestionsResponseTest Bug: 146454892 Change-Id: Id7fea32a7550fb924fec811b376790474a7b92eb
Diffstat (limited to 'core/java/android/inputmethodservice/InputMethodService.java')
-rw-r--r--core/java/android/inputmethodservice/InputMethodService.java27
1 files changed, 16 insertions, 11 deletions
diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java
index b1aa67e9f7ed..20a4ab35defe 100644
--- a/core/java/android/inputmethodservice/InputMethodService.java
+++ b/core/java/android/inputmethodservice/InputMethodService.java
@@ -34,7 +34,6 @@ import android.annotation.Nullable;
import android.app.ActivityManager;
import android.app.Dialog;
import android.compat.annotation.UnsupportedAppUsage;
-import android.content.ComponentName;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
@@ -74,7 +73,6 @@ import android.view.Window;
import android.view.WindowInsets;
import android.view.WindowManager;
import android.view.animation.AnimationUtils;
-import android.view.autofill.AutofillId;
import android.view.inputmethod.CompletionInfo;
import android.view.inputmethod.CursorAnchorInfo;
import android.view.inputmethod.EditorInfo;
@@ -99,6 +97,7 @@ import com.android.internal.inputmethod.IInputMethodPrivilegedOperations;
import com.android.internal.inputmethod.InputMethodPrivilegedOperations;
import com.android.internal.inputmethod.InputMethodPrivilegedOperationsRegistry;
import com.android.internal.view.IInlineSuggestionsRequestCallback;
+import com.android.internal.view.InlineSuggestionsRequestInfo;
import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -526,12 +525,13 @@ public class InputMethodService extends AbstractInputMethodService {
*/
@MainThread
@Override
- public void onCreateInlineSuggestionsRequest(ComponentName componentName,
- AutofillId autofillId, IInlineSuggestionsRequestCallback cb) {
+ public void onCreateInlineSuggestionsRequest(
+ @NonNull InlineSuggestionsRequestInfo requestInfo,
+ @NonNull IInlineSuggestionsRequestCallback cb) {
if (DEBUG) {
Log.d(TAG, "InputMethodService received onCreateInlineSuggestionsRequest()");
}
- handleOnCreateInlineSuggestionsRequest(componentName, cb);
+ handleOnCreateInlineSuggestionsRequest(requestInfo, cb);
}
/**
@@ -742,11 +742,14 @@ public class InputMethodService extends AbstractInputMethodService {
// TODO(b/137800469): Add detailed docs explaining the inline suggestions process.
/**
- * Returns an {@link InlineSuggestionsRequest} to be sent to Autofill.
+ * This method should be implemented by subclass which supports displaying autofill inline
+ * suggestion.
*
- * <p>Should be implemented by subclasses.</p>
+ * @param uiExtras the extras that contain the UI renderer related information
+ * @return an {@link InlineSuggestionsRequest} to be sent to Autofill.
*/
- public @Nullable InlineSuggestionsRequest onCreateInlineSuggestionsRequest() {
+ @Nullable
+ public InlineSuggestionsRequest onCreateInlineSuggestionsRequest(@NonNull Bundle uiExtras) {
return null;
}
@@ -764,7 +767,8 @@ public class InputMethodService extends AbstractInputMethodService {
}
@MainThread
- private void handleOnCreateInlineSuggestionsRequest(@NonNull ComponentName componentName,
+ private void handleOnCreateInlineSuggestionsRequest(
+ @NonNull InlineSuggestionsRequestInfo requestInfo,
@NonNull IInlineSuggestionsRequestCallback callback) {
if (!mInputStarted) {
try {
@@ -779,8 +783,9 @@ public class InputMethodService extends AbstractInputMethodService {
if (mInlineSuggestionSession != null) {
mInlineSuggestionSession.invalidateSession();
}
- mInlineSuggestionSession = new InlineSuggestionSession(componentName, callback,
- this::getEditorInfoPackageName, this::onCreateInlineSuggestionsRequest,
+ mInlineSuggestionSession = new InlineSuggestionSession(requestInfo.getComponentName(),
+ callback, this::getEditorInfoPackageName,
+ () -> onCreateInlineSuggestionsRequest(requestInfo.getUiExtras()),
this::getHostInputToken, this::onInlineSuggestionsResponse);
}