diff options
| author | Feng Cao <fengcao@google.com> | 2020-02-18 18:23:30 -0800 |
|---|---|---|
| committer | Feng Cao <fengcao@google.com> | 2020-02-19 09:42:22 -0800 |
| commit | 36960ee20ea612b2df2447d73003ac4af6f32341 (patch) | |
| tree | f3fce1a058820be899eead740f2f0186d401ab67 /core/java/android/inputmethodservice/InputMethodService.java | |
| parent | da0c5df4af50a670c8a1928b46d5e4d1e9a63f2f (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.java | 27 |
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); } |
