Loading core/java/android/service/autofill/InlineSuggestionRenderService.java +33 −30 Original line number Original line Diff line number Diff line Loading @@ -23,16 +23,13 @@ import android.annotation.SystemApi; import android.annotation.TestApi; import android.annotation.TestApi; import android.app.Service; import android.app.Service; import android.app.slice.Slice; import android.app.slice.Slice; import android.content.Context; import android.content.Intent; import android.content.Intent; import android.graphics.PixelFormat; import android.graphics.PixelFormat; import android.hardware.display.DisplayManager; import android.os.Bundle; import android.os.Bundle; import android.os.Handler; import android.os.Handler; import android.os.IBinder; import android.os.IBinder; import android.os.Looper; import android.os.Looper; import android.os.RemoteException; import android.os.RemoteException; import android.util.DisplayMetrics; import android.util.Log; import android.util.Log; import android.view.Display; import android.view.Display; import android.view.SurfaceControl; import android.view.SurfaceControl; Loading Loading @@ -76,22 +73,29 @@ public abstract class InlineSuggestionRenderService extends Service { return; return; } } final DisplayManager displayManager = getSystemService(DisplayManager.class); // When we create the UI it should be for the IME display final Display targetDisplay = displayManager.getDisplay(displayId); updateDisplay(displayId); if (targetDisplay == null) { try { sendResult(callback, /*surface*/ null); final View suggestionView = onRenderSuggestion(presentation, width, height); if (suggestionView == null) { try { callback.onError(); } catch (RemoteException e) { Log.w(TAG, "Null suggestion view returned by renderer"); } return; return; } } final Context displayContext = createDisplayContext(targetDisplay); final SurfaceControlViewHost host = new SurfaceControlViewHost(displayContext, displayContext.getDisplay(), hostInputToken); final SurfaceControl surface = host.getSurfacePackage().getSurfaceControl(); final View suggestionView = onRenderSuggestion(presentation, width, height); final InlineSuggestionRoot suggestionRoot = new InlineSuggestionRoot(this, callback); final InlineSuggestionRoot suggestionRoot = new InlineSuggestionRoot(this, callback); suggestionRoot.addView(suggestionView); suggestionRoot.addView(suggestionView); WindowManager.LayoutParams lp = new WindowManager.LayoutParams(width, height, WindowManager.LayoutParams.TYPE_APPLICATION, 0, PixelFormat.TRANSPARENT); final SurfaceControlViewHost host = new SurfaceControlViewHost(this, getDisplay(), hostInputToken); host.addView(suggestionRoot, lp); suggestionRoot.setOnClickListener((v) -> { suggestionRoot.setOnClickListener((v) -> { try { try { callback.onAutofill(); callback.onAutofill(); Loading @@ -100,11 +104,10 @@ public abstract class InlineSuggestionRenderService extends Service { } } }); }); WindowManager.LayoutParams lp = sendResult(callback, host.getSurfacePackage().getSurfaceControl()); new WindowManager.LayoutParams(width, height, } finally { WindowManager.LayoutParams.TYPE_APPLICATION, 0, PixelFormat.TRANSPARENT); updateDisplay(Display.DEFAULT_DISPLAY); host.addView(suggestionRoot, lp); } sendResult(callback, surface); } } private void sendResult(@NonNull IInlineSuggestionUiCallback callback, private void sendResult(@NonNull IInlineSuggestionUiCallback callback, Loading Loading
core/java/android/service/autofill/InlineSuggestionRenderService.java +33 −30 Original line number Original line Diff line number Diff line Loading @@ -23,16 +23,13 @@ import android.annotation.SystemApi; import android.annotation.TestApi; import android.annotation.TestApi; import android.app.Service; import android.app.Service; import android.app.slice.Slice; import android.app.slice.Slice; import android.content.Context; import android.content.Intent; import android.content.Intent; import android.graphics.PixelFormat; import android.graphics.PixelFormat; import android.hardware.display.DisplayManager; import android.os.Bundle; import android.os.Bundle; import android.os.Handler; import android.os.Handler; import android.os.IBinder; import android.os.IBinder; import android.os.Looper; import android.os.Looper; import android.os.RemoteException; import android.os.RemoteException; import android.util.DisplayMetrics; import android.util.Log; import android.util.Log; import android.view.Display; import android.view.Display; import android.view.SurfaceControl; import android.view.SurfaceControl; Loading Loading @@ -76,22 +73,29 @@ public abstract class InlineSuggestionRenderService extends Service { return; return; } } final DisplayManager displayManager = getSystemService(DisplayManager.class); // When we create the UI it should be for the IME display final Display targetDisplay = displayManager.getDisplay(displayId); updateDisplay(displayId); if (targetDisplay == null) { try { sendResult(callback, /*surface*/ null); final View suggestionView = onRenderSuggestion(presentation, width, height); if (suggestionView == null) { try { callback.onError(); } catch (RemoteException e) { Log.w(TAG, "Null suggestion view returned by renderer"); } return; return; } } final Context displayContext = createDisplayContext(targetDisplay); final SurfaceControlViewHost host = new SurfaceControlViewHost(displayContext, displayContext.getDisplay(), hostInputToken); final SurfaceControl surface = host.getSurfacePackage().getSurfaceControl(); final View suggestionView = onRenderSuggestion(presentation, width, height); final InlineSuggestionRoot suggestionRoot = new InlineSuggestionRoot(this, callback); final InlineSuggestionRoot suggestionRoot = new InlineSuggestionRoot(this, callback); suggestionRoot.addView(suggestionView); suggestionRoot.addView(suggestionView); WindowManager.LayoutParams lp = new WindowManager.LayoutParams(width, height, WindowManager.LayoutParams.TYPE_APPLICATION, 0, PixelFormat.TRANSPARENT); final SurfaceControlViewHost host = new SurfaceControlViewHost(this, getDisplay(), hostInputToken); host.addView(suggestionRoot, lp); suggestionRoot.setOnClickListener((v) -> { suggestionRoot.setOnClickListener((v) -> { try { try { callback.onAutofill(); callback.onAutofill(); Loading @@ -100,11 +104,10 @@ public abstract class InlineSuggestionRenderService extends Service { } } }); }); WindowManager.LayoutParams lp = sendResult(callback, host.getSurfacePackage().getSurfaceControl()); new WindowManager.LayoutParams(width, height, } finally { WindowManager.LayoutParams.TYPE_APPLICATION, 0, PixelFormat.TRANSPARENT); updateDisplay(Display.DEFAULT_DISPLAY); host.addView(suggestionRoot, lp); } sendResult(callback, surface); } } private void sendResult(@NonNull IInlineSuggestionUiCallback callback, private void sendResult(@NonNull IInlineSuggestionUiCallback callback, Loading