Merge "Use display context all the way" into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
214fe98184
@@ -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;
|
||||||
@@ -76,35 +73,41 @@ 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);
|
||||||
return;
|
if (suggestionView == null) {
|
||||||
}
|
try {
|
||||||
final Context displayContext = createDisplayContext(targetDisplay);
|
callback.onError();
|
||||||
|
} catch (RemoteException e) {
|
||||||
final SurfaceControlViewHost host = new SurfaceControlViewHost(displayContext,
|
Log.w(TAG, "Null suggestion view returned by renderer");
|
||||||
displayContext.getDisplay(), hostInputToken);
|
}
|
||||||
final SurfaceControl surface = host.getSurfacePackage().getSurfaceControl();
|
return;
|
||||||
|
|
||||||
final View suggestionView = onRenderSuggestion(presentation, width, height);
|
|
||||||
|
|
||||||
final InlineSuggestionRoot suggestionRoot = new InlineSuggestionRoot(this, callback);
|
|
||||||
suggestionRoot.addView(suggestionView);
|
|
||||||
suggestionRoot.setOnClickListener((v) -> {
|
|
||||||
try {
|
|
||||||
callback.onAutofill();
|
|
||||||
} catch (RemoteException e) {
|
|
||||||
Log.w(TAG, "RemoteException calling onAutofill()");
|
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
|
||||||
WindowManager.LayoutParams lp =
|
final InlineSuggestionRoot suggestionRoot = new InlineSuggestionRoot(this, callback);
|
||||||
new WindowManager.LayoutParams(width, height,
|
suggestionRoot.addView(suggestionView);
|
||||||
WindowManager.LayoutParams.TYPE_APPLICATION, 0, PixelFormat.TRANSPARENT);
|
WindowManager.LayoutParams lp =
|
||||||
host.addView(suggestionRoot, lp);
|
new WindowManager.LayoutParams(width, height,
|
||||||
sendResult(callback, surface);
|
WindowManager.LayoutParams.TYPE_APPLICATION, 0,
|
||||||
|
PixelFormat.TRANSPARENT);
|
||||||
|
|
||||||
|
final SurfaceControlViewHost host = new SurfaceControlViewHost(this, getDisplay(),
|
||||||
|
hostInputToken);
|
||||||
|
host.addView(suggestionRoot, lp);
|
||||||
|
suggestionRoot.setOnClickListener((v) -> {
|
||||||
|
try {
|
||||||
|
callback.onAutofill();
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
Log.w(TAG, "RemoteException calling onAutofill()");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
sendResult(callback, host.getSurfacePackage().getSurfaceControl());
|
||||||
|
} finally {
|
||||||
|
updateDisplay(Display.DEFAULT_DISPLAY);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendResult(@NonNull IInlineSuggestionUiCallback callback,
|
private void sendResult(@NonNull IInlineSuggestionUiCallback callback,
|
||||||
|
|||||||
Reference in New Issue
Block a user