Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d422be62 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Callback the surface package after the views are drawn locally" into...

Merge "Callback the surface package after the views are drawn locally" into rvc-dev am: cf5f65cb am: cf50e800 am: ce4d0339

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11607123

Change-Id: I7f1a8f3aaede8b04554fc6c029b8213db41f4d03
parents 6424968d ce4d0339
Loading
Loading
Loading
Loading
+19 −12
Original line number Diff line number Diff line
@@ -64,7 +64,7 @@ public abstract class InlineSuggestionRenderService extends Service {
    public static final String SERVICE_INTERFACE =
            "android.service.autofill.InlineSuggestionRenderService";

    private final Handler mHandler = new Handler(Looper.getMainLooper(), null, true);
    private final Handler mMainHandler = new Handler(Looper.getMainLooper(), null, true);

    private IInlineSuggestionUiCallback mCallback;

@@ -192,15 +192,22 @@ public abstract class InlineSuggestionRenderService extends Service {
                }
                return true;
            });
            final InlineSuggestionUiImpl uiImpl = new InlineSuggestionUiImpl(host, mMainHandler);
            mActiveInlineSuggestions.put(uiImpl, true);

            // We post the callback invocation to the end of the main thread handler queue, to make
            // sure the callback happens after the views are drawn. This is needed because calling
            // {@link SurfaceControlViewHost#setView()} will post a task to the main thread
            // to draw the view asynchronously.
            mMainHandler.post(() -> {
                try {
                InlineSuggestionUiImpl uiImpl = new InlineSuggestionUiImpl(host, mHandler);
                mActiveInlineSuggestions.put(uiImpl, true);
                callback.onContent(new InlineSuggestionUiWrapper(uiImpl), host.getSurfacePackage(),
                    callback.onContent(new InlineSuggestionUiWrapper(uiImpl),
                            host.getSurfacePackage(),
                            measuredSize.getWidth(), measuredSize.getHeight());
                } catch (RemoteException e) {
                    Log.w(TAG, "RemoteException calling onContent()");
                }
            });
        } finally {
            updateDisplay(Display.DEFAULT_DISPLAY);
        }
@@ -305,7 +312,7 @@ public abstract class InlineSuggestionRenderService extends Service {
                public void renderSuggestion(@NonNull IInlineSuggestionUiCallback callback,
                        @NonNull InlinePresentation presentation, int width, int height,
                        @Nullable IBinder hostInputToken, int displayId) {
                    mHandler.sendMessage(
                    mMainHandler.sendMessage(
                            obtainMessage(InlineSuggestionRenderService::handleRenderSuggestion,
                                    InlineSuggestionRenderService.this, callback, presentation,
                                    width, height, hostInputToken, displayId));
@@ -313,7 +320,7 @@ public abstract class InlineSuggestionRenderService extends Service {

                @Override
                public void getInlineSuggestionsRendererInfo(@NonNull RemoteCallback callback) {
                    mHandler.sendMessage(obtainMessage(
                    mMainHandler.sendMessage(obtainMessage(
                            InlineSuggestionRenderService::handleGetInlineSuggestionsRendererInfo,
                            InlineSuggestionRenderService.this, callback));
                }