米游社.apk(点击下载) / PlatformViewsController.java
package io.flutter.plugin.platform;
import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.util.DisplayMetrics;
import android.util.SparseArray;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import e.f1;
import e.g1;
import e.m0;
import e.o0;
import io.flutter.Log;
import io.flutter.embedding.android.AndroidTouchProcessor;
import io.flutter.embedding.android.FlutterImageView;
import io.flutter.embedding.android.FlutterView;
import io.flutter.embedding.android.MotionEventTracker;
import io.flutter.embedding.engine.FlutterOverlaySurface;
import io.flutter.embedding.engine.dart.DartExecutor;
import io.flutter.embedding.engine.mutatorsstack.FlutterMutatorView;
import io.flutter.embedding.engine.mutatorsstack.FlutterMutatorsStack;
import io.flutter.embedding.engine.renderer.FlutterRenderer;
import io.flutter.embedding.engine.systemchannels.PlatformViewsChannel;
import io.flutter.plugin.editing.TextInputPlugin;
import io.flutter.view.AccessibilityBridge;
import io.flutter.view.TextureRegistry;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
public class PlatformViewsController implements PlatformViewsAccessibilityDelegate {
private static final String TAG = "PlatformViewsController";
private final AccessibilityEventsDelegate accessibilityEventsDelegate = new AccessibilityEventsDelegate();
private AndroidTouchProcessor androidTouchProcessor;
private final PlatformViewsChannel.PlatformViewsHandler channelHandler = new PlatformViewsChannel.PlatformViewsHandler() {
/* class io.flutter.plugin.platform.PlatformViewsController.AnonymousClass1 */
private void ensureValidAndroidVersion(int i10) {
int i11 = Build.VERSION.SDK_INT;
if (i11 < i10) {
throw new IllegalStateException("Trying to use platform views with API " + i11 + ", required API level is: " + i10);
}
}
/* access modifiers changed from: private */
public /* synthetic */ void lambda$createVirtualDisplayForPlatformView$0(PlatformViewsChannel.PlatformViewCreationRequest platformViewCreationRequest, View view, boolean z10) {
if (z10) {
PlatformViewsController.this.platformViewsChannel.invokeViewFocused(platformViewCreationRequest.viewId);
}
}
@Override // io.flutter.embedding.engine.systemchannels.PlatformViewsChannel.PlatformViewsHandler
public void clearFocus(int i10) {
PlatformView platformView = (PlatformView) PlatformViewsController.this.platformViews.get(i10);
if (platformView != null) {
platformView.getView().clearFocus();
return;
}
ensureValidAndroidVersion(20);
PlatformViewsController.this.vdControllers.get(Integer.valueOf(i10)).getView().clearFocus();
}
@Override // io.flutter.embedding.engine.systemchannels.PlatformViewsChannel.PlatformViewsHandler
public void createAndroidViewForPlatformView(@m0 PlatformViewsChannel.PlatformViewCreationRequest platformViewCreationRequest) {
ensureValidAndroidVersion(19);
if (PlatformViewsController.validateDirection(platformViewCreationRequest.direction)) {
PlatformViewFactory factory = PlatformViewsController.this.registry.getFactory(platformViewCreationRequest.viewType);
if (factory != null) {
Object obj = null;
if (platformViewCreationRequest.params != null) {
obj = factory.getCreateArgsCodec().decodeMessage(platformViewCreationRequest.params);
}
PlatformViewsController.this.platformViews.put(platformViewCreationRequest.viewId, factory.create(PlatformViewsController.this.context, platformViewCreationRequest.viewId, obj));
return;
}
throw new IllegalStateException("Trying to create a platform view of unregistered type: " + platformViewCreationRequest.viewType);
}
throw new IllegalStateException("Trying to create a view with unknown direction value: " + platformViewCreationRequest.direction + "(view id: " + platformViewCreationRequest.viewId + ")");
}
@Override // io.flutter.embedding.engine.systemchannels.PlatformViewsChannel.PlatformViewsHandler
@TargetApi(17)
public long createVirtualDisplayForPlatformView(@m0 PlatformViewsChannel.PlatformViewCreationRequest platformViewCreationRequest) {
ensureValidAndroidVersion(20);
if (!PlatformViewsController.validateDirection(platformViewCreationRequest.direction)) {
throw new IllegalStateException("Trying to create a view with unknown direction value: " + platformViewCreationRequest.direction + "(view id: " + platformViewCreationRequest.viewId + ")");
} else if (!PlatformViewsController.this.vdControllers.containsKey(Integer.valueOf(platformViewCreationRequest.viewId))) {
PlatformViewFactory factory = PlatformViewsController.this.registry.getFactory(platformViewCreationRequest.viewType);
if (factory != null) {
Object obj = null;
if (platformViewCreationRequest.params != null) {
obj = factory.getCreateArgsCodec().decodeMessage(platformViewCreationRequest.params);
}
int physicalPixels = PlatformViewsController.this.toPhysicalPixels(platformViewCreationRequest.logicalWidth);
int physicalPixels2 = PlatformViewsController.this.toPhysicalPixels(platformViewCreationRequest.logicalHeight);
PlatformViewsController.this.validateVirtualDisplayDimensions(physicalPixels, physicalPixels2);
TextureRegistry.SurfaceTextureEntry createSurfaceTexture = PlatformViewsController.this.textureRegistry.createSurfaceTexture();
VirtualDisplayController create = VirtualDisplayController.create(PlatformViewsController.this.context, PlatformViewsController.this.accessibilityEventsDelegate, factory, createSurfaceTexture, physicalPixels, physicalPixels2, platformViewCreationRequest.viewId, obj, new c(this, platformViewCreationRequest));
if (create != null) {
if (PlatformViewsController.this.flutterView != null) {
create.onFlutterViewAttached(PlatformViewsController.this.flutterView);
}
PlatformViewsController.this.vdControllers.put(Integer.valueOf(platformViewCreationRequest.viewId), create);
View view = create.getView();
view.setLayoutDirection(platformViewCreationRequest.direction);
PlatformViewsController.this.contextToPlatformView.put(view.getContext(), view);
return createSurfaceTexture.id();
}
throw new IllegalStateException("Failed creating virtual display for a " + platformViewCreationRequest.viewType + " with id: " + platformViewCreationRequest.viewId);
}
throw new IllegalStateException("Trying to create a platform view of unregistered type: " + platformViewCreationRequest.viewType);
} else {
throw new IllegalStateException("Trying to create an already created platform view, view id: " + platformViewCreationRequest.viewId);
}
}
@Override // io.flutter.embedding.engine.systemchannels.PlatformViewsChannel.PlatformViewsHandler
public void disposeAndroidViewForPlatformView(int i10) {
PlatformView platformView = (PlatformView) PlatformViewsController.this.platformViews.get(i10);
FlutterMutatorView flutterMutatorView = (FlutterMutatorView) PlatformViewsController.this.platformViewParent.get(i10);
if (platformView != null) {
if (flutterMutatorView != null) {
flutterMutatorView.removeView(platformView.getView());
}
PlatformViewsController.this.platformViews.remove(i10);
platformView.dispose();
}
if (flutterMutatorView != null) {
flutterMutatorView.unsetOnDescendantFocusChangeListener();
((ViewGroup) flutterMutatorView.getParent()).removeView(flutterMutatorView);
PlatformViewsController.this.platformViewParent.remove(i10);
}
}
@Override // io.flutter.embedding.engine.systemchannels.PlatformViewsChannel.PlatformViewsHandler
public void disposeVirtualDisplayForPlatformView(int i10) {
ensureValidAndroidVersion(20);
VirtualDisplayController virtualDisplayController = PlatformViewsController.this.vdControllers.get(Integer.valueOf(i10));
if (virtualDisplayController != null) {
if (PlatformViewsController.this.textInputPlugin != null) {
PlatformViewsController.this.textInputPlugin.clearPlatformViewClient(i10);
}
PlatformViewsController.this.contextToPlatformView.remove(virtualDisplayController.getView().getContext());
virtualDisplayController.dispose();
PlatformViewsController.this.vdControllers.remove(Integer.valueOf(i10));
return;
}
throw new IllegalStateException("Trying to dispose a platform view with unknown id: " + i10);
}
@Override // io.flutter.embedding.engine.systemchannels.PlatformViewsChannel.PlatformViewsHandler
public void onTouch(@m0 PlatformViewsChannel.PlatformViewTouch platformViewTouch) {
int i10 = platformViewTouch.viewId;
float f10 = PlatformViewsController.this.context.getResources().getDisplayMetrics().density;
ensureValidAndroidVersion(20);
if (PlatformViewsController.this.vdControllers.containsKey(Integer.valueOf(i10))) {
PlatformViewsController.this.vdControllers.get(Integer.valueOf(platformViewTouch.viewId)).dispatchTouchEvent(PlatformViewsController.this.toMotionEvent(f10, platformViewTouch, true));
} else if (PlatformViewsController.this.platformViews.get(i10) != null) {
MotionEvent motionEvent = PlatformViewsController.this.toMotionEvent(f10, platformViewTouch, false);
View view = ((PlatformView) PlatformViewsController.this.platformViews.get(platformViewTouch.viewId)).getView();
if (view != null) {
view.dispatchTouchEvent(motionEvent);
}
} else {
throw new IllegalStateException("Sending touch to an unknown view with id: " + i10);
}
}
@Override // io.flutter.embedding.engine.systemchannels.PlatformViewsChannel.PlatformViewsHandler
public void resizePlatformView(@m0 PlatformViewsChannel.PlatformViewResizeRequest platformViewResizeRequest, @m0 final Runnable runnable) {
ensureValidAndroidVersion(20);
final VirtualDisplayController virtualDisplayController = PlatformViewsController.this.vdControllers.get(Integer.valueOf(platformViewResizeRequest.viewId));
if (virtualDisplayController != null) {
int physicalPixels = PlatformViewsController.this.toPhysicalPixels(platformViewResizeRequest.newLogicalWidth);
int physicalPixels2 = PlatformViewsController.this.toPhysicalPixels(platformViewResizeRequest.newLogicalHeight);
PlatformViewsController.this.validateVirtualDisplayDimensions(physicalPixels, physicalPixels2);
PlatformViewsController.this.lockInputConnection(virtualDisplayController);
virtualDisplayController.resize(physicalPixels, physicalPixels2, new Runnable() {
/* class io.flutter.plugin.platform.PlatformViewsController.AnonymousClass1.AnonymousClass1 */
public void run() {
PlatformViewsController.this.unlockInputConnection(virtualDisplayController);
runnable.run();
}
});
return;
}
throw new IllegalStateException("Trying to resize a platform view with unknown id: " + platformViewResizeRequest.viewId);
}
@Override // io.flutter.embedding.engine.systemchannels.PlatformViewsChannel.PlatformViewsHandler
@TargetApi(17)
public void setDirection(int i10, int i11) {
if (PlatformViewsController.validateDirection(i11)) {
ensureValidAndroidVersion(20);
View view = PlatformViewsController.this.vdControllers.get(Integer.valueOf(i10)).getView();
if (view != null) {
view.setLayoutDirection(i11);
return;
}
throw new IllegalStateException("Sending touch to an unknown view with id: " + i11);
}
throw new IllegalStateException("Trying to set unknown direction value: " + i11 + "(view id: " + i10 + ")");
}
@Override // io.flutter.embedding.engine.systemchannels.PlatformViewsChannel.PlatformViewsHandler
public void synchronizeToNativeViewHierarchy(boolean z10) {
PlatformViewsController.this.synchronizeToNativeViewHierarchy = z10;
}
};
private Context context;
@g1
public final HashMap<Context, View> contextToPlatformView = new HashMap<>();
private HashSet<Integer> currentFrameUsedOverlayLayerIds = new HashSet<>();
private HashSet<Integer> currentFrameUsedPlatformViewIds = new HashSet<>();
private View flutterView;
private boolean flutterViewConvertedToImageView = false;
private final MotionEventTracker motionEventTracker = MotionEventTracker.getInstance();
private int nextOverlayLayerId = 0;
private final SparseArray<FlutterImageView> overlayLayerViews = new SparseArray<>();
private final SparseArray<FlutterMutatorView> platformViewParent = new SparseArray<>();
private final SparseArray<PlatformView> platformViews = new SparseArray<>();
private PlatformViewsChannel platformViewsChannel;
private final PlatformViewRegistryImpl registry = new PlatformViewRegistryImpl();
private boolean synchronizeToNativeViewHierarchy = true;
@o0
private TextInputPlugin textInputPlugin;
@o0
private TextureRegistry textureRegistry;
@g1
public final HashMap<Integer, VirtualDisplayController> vdControllers = new HashMap<>();
private void finishFrame(boolean z10) {
for (int i10 = 0; i10 < this.overlayLayerViews.size(); i10++) {
int keyAt = this.overlayLayerViews.keyAt(i10);
FlutterImageView valueAt = this.overlayLayerViews.valueAt(i10);
if (this.currentFrameUsedOverlayLayerIds.contains(Integer.valueOf(keyAt))) {
((FlutterView) this.flutterView).attachOverlaySurfaceToRender(valueAt);
z10 &= valueAt.acquireLatestImage();
} else {
if (!this.flutterViewConvertedToImageView) {
valueAt.detachFromRenderer();
}
valueAt.setVisibility(8);
}
}
for (int i11 = 0; i11 < this.platformViewParent.size(); i11++) {
int keyAt2 = this.platformViewParent.keyAt(i11);
FlutterMutatorView flutterMutatorView = this.platformViewParent.get(keyAt2);
if (!this.currentFrameUsedPlatformViewIds.contains(Integer.valueOf(keyAt2)) || (!z10 && this.synchronizeToNativeViewHierarchy)) {
flutterMutatorView.setVisibility(8);
} else {
flutterMutatorView.setVisibility(0);
}
}
}
private void flushAllViews() {
for (VirtualDisplayController virtualDisplayController : this.vdControllers.values()) {
virtualDisplayController.dispose();
}
this.vdControllers.clear();
while (this.platformViews.size() > 0) {
this.channelHandler.disposeAndroidViewForPlatformView(this.platformViews.keyAt(0));
}
if (this.contextToPlatformView.size() > 0) {
this.contextToPlatformView.clear();
}
}
private float getDisplayDensity() {
return this.context.getResources().getDisplayMetrics().density;
}
private void initializeRootImageViewIfNeeded() {
if (this.synchronizeToNativeViewHierarchy && !this.flutterViewConvertedToImageView) {
((FlutterView) this.flutterView).convertToImageView();
this.flutterViewConvertedToImageView = true;
}
}
/* access modifiers changed from: private */
public /* synthetic */ void lambda$initializePlatformViewIfNeeded$0(int i10, View view, boolean z10) {
if (z10) {
this.platformViewsChannel.invokeViewFocused(i10);
return;
}
TextInputPlugin textInputPlugin2 = this.textInputPlugin;
if (textInputPlugin2 != null) {
textInputPlugin2.clearPlatformViewClient(i10);
}
}
/* access modifiers changed from: private */
public /* synthetic */ void lambda$onEndFrame$1() {
finishFrame(false);
}
/* access modifiers changed from: private */
/* access modifiers changed from: public */
private void lockInputConnection(@m0 VirtualDisplayController virtualDisplayController) {
TextInputPlugin textInputPlugin2 = this.textInputPlugin;
if (textInputPlugin2 != null) {
textInputPlugin2.lockPlatformViewInputConnection();
virtualDisplayController.onInputConnectionLocked();
}
}
private static MotionEvent.PointerCoords parsePointerCoords(Object obj, float f10) {
List list = (List) obj;
MotionEvent.PointerCoords pointerCoords = new MotionEvent.PointerCoords();
pointerCoords.orientation = (float) ((Double) list.get(0)).doubleValue();
pointerCoords.pressure = (float) ((Double) list.get(1)).doubleValue();
pointerCoords.size = (float) ((Double) list.get(2)).doubleValue();
pointerCoords.toolMajor = ((float) ((Double) list.get(3)).doubleValue()) * f10;
pointerCoords.toolMinor = ((float) ((Double) list.get(4)).doubleValue()) * f10;
pointerCoords.touchMajor = ((float) ((Double) list.get(5)).doubleValue()) * f10;
pointerCoords.touchMinor = ((float) ((Double) list.get(6)).doubleValue()) * f10;
pointerCoords.x = ((float) ((Double) list.get(7)).doubleValue()) * f10;
pointerCoords.y = ((float) ((Double) list.get(8)).doubleValue()) * f10;
return pointerCoords;
}
private static List<MotionEvent.PointerCoords> parsePointerCoordsList(Object obj, float f10) {
ArrayList arrayList = new ArrayList();
for (Object obj2 : (List) obj) {
arrayList.add(parsePointerCoords(obj2, f10));
}
return arrayList;
}
private static MotionEvent.PointerProperties parsePointerProperties(Object obj) {
List list = (List) obj;
MotionEvent.PointerProperties pointerProperties = new MotionEvent.PointerProperties();
pointerProperties.id = ((Integer) list.get(0)).intValue();
pointerProperties.toolType = ((Integer) list.get(1)).intValue();
return pointerProperties;
}
private static List<MotionEvent.PointerProperties> parsePointerPropertiesList(Object obj) {
ArrayList arrayList = new ArrayList();
for (Object obj2 : (List) obj) {
arrayList.add(parsePointerProperties(obj2));
}
return arrayList;
}
/* access modifiers changed from: private */
/* access modifiers changed from: public */
private int toPhysicalPixels(double d10) {
return (int) Math.round(d10 * ((double) getDisplayDensity()));
}
/* access modifiers changed from: private */
/* access modifiers changed from: public */
private void unlockInputConnection(@m0 VirtualDisplayController virtualDisplayController) {
TextInputPlugin textInputPlugin2 = this.textInputPlugin;
if (textInputPlugin2 != null) {
textInputPlugin2.unlockPlatformViewInputConnection();
virtualDisplayController.onInputConnectionUnlocked();
}
}
/* access modifiers changed from: private */
public static boolean validateDirection(int i10) {
return i10 == 0 || i10 == 1;
}
/* access modifiers changed from: private */
/* access modifiers changed from: public */
private void validateVirtualDisplayDimensions(int i10, int i11) {
DisplayMetrics displayMetrics = this.context.getResources().getDisplayMetrics();
if (i11 > displayMetrics.heightPixels || i10 > displayMetrics.widthPixels) {
Log.w(TAG, "Creating a virtual display of size: [" + i10 + ", " + i11 + "] may result in problems(https://github.com/flutter/flutter/issues/2897).It is larger than the device screen size: [" + displayMetrics.widthPixels + ", " + displayMetrics.heightPixels + "].");
}
}
public void attach(Context context2, TextureRegistry textureRegistry2, @m0 DartExecutor dartExecutor) {
if (this.context == null) {
this.context = context2;
this.textureRegistry = textureRegistry2;
PlatformViewsChannel platformViewsChannel2 = new PlatformViewsChannel(dartExecutor);
this.platformViewsChannel = platformViewsChannel2;
platformViewsChannel2.setPlatformViewsHandler(this.channelHandler);
return;
}
throw new AssertionError("A PlatformViewsController can only be attached to a single output target.\nattach was called while the PlatformViewsController was already attached.");
}
@Override // io.flutter.plugin.platform.PlatformViewsAccessibilityDelegate
public void attachAccessibilityBridge(AccessibilityBridge accessibilityBridge) {
this.accessibilityEventsDelegate.setAccessibilityBridge(accessibilityBridge);
}
public void attachTextInputPlugin(TextInputPlugin textInputPlugin2) {
this.textInputPlugin = textInputPlugin2;
}
public void attachToFlutterRenderer(FlutterRenderer flutterRenderer) {
this.androidTouchProcessor = new AndroidTouchProcessor(flutterRenderer, true);
}
public void attachToView(@m0 View view) {
this.flutterView = view;
for (VirtualDisplayController virtualDisplayController : this.vdControllers.values()) {
virtualDisplayController.onFlutterViewAttached(view);
}
}
public boolean checkInputConnectionProxy(@o0 View view) {
if (view == null || !this.contextToPlatformView.containsKey(view.getContext())) {
return false;
}
View view2 = this.contextToPlatformView.get(view.getContext());
if (view2 == view) {
return true;
}
return view2.checkInputConnectionProxy(view);
}
@g1
@TargetApi(19)
public FlutterOverlaySurface createOverlaySurface(@m0 FlutterImageView flutterImageView) {
int i10 = this.nextOverlayLayerId;
this.nextOverlayLayerId = i10 + 1;
this.overlayLayerViews.put(i10, flutterImageView);
return new FlutterOverlaySurface(i10, flutterImageView.getSurface());
}
public void destroyOverlaySurfaces() {
for (int i10 = 0; i10 < this.overlayLayerViews.size(); i10++) {
this.overlayLayerViews.keyAt(i10);
FlutterImageView valueAt = this.overlayLayerViews.valueAt(i10);
valueAt.detachFromRenderer();
View view = this.flutterView;
if (view != null) {
((FlutterView) view).removeView(valueAt);
}
}
this.overlayLayerViews.clear();
}
@f1
public void detach() {
PlatformViewsChannel platformViewsChannel2 = this.platformViewsChannel;
if (platformViewsChannel2 != null) {
platformViewsChannel2.setPlatformViewsHandler(null);
}
destroyOverlaySurfaces();
this.platformViewsChannel = null;
this.context = null;
this.textureRegistry = null;
}
@Override // io.flutter.plugin.platform.PlatformViewsAccessibilityDelegate
public void detachAccessibiltyBridge() {
this.accessibilityEventsDelegate.setAccessibilityBridge(null);
}
public void detachFromView() {
destroyOverlaySurfaces();
this.flutterView = null;
this.flutterViewConvertedToImageView = false;
for (VirtualDisplayController virtualDisplayController : this.vdControllers.values()) {
virtualDisplayController.onFlutterViewDetached();
}
}
public void detachTextInputPlugin() {
this.textInputPlugin = null;
}
@Override // io.flutter.plugin.platform.PlatformViewsAccessibilityDelegate
public View getPlatformViewById(Integer num) {
if (this.platformViews.get(num.intValue()) != null) {
return this.platformViews.get(num.intValue()).getView();
}
VirtualDisplayController virtualDisplayController = this.vdControllers.get(num);
if (virtualDisplayController == null) {
return null;
}
return virtualDisplayController.getView();
}
public PlatformViewRegistry getRegistry() {
return this.registry;
}
@g1
public void initializePlatformViewIfNeeded(int i10) {
PlatformView platformView = this.platformViews.get(i10);
if (platformView == null) {
throw new IllegalStateException("Platform view hasn't been initialized from the platform view channel.");
} else if (this.platformViewParent.get(i10) == null) {
if (platformView.getView() == null) {
throw new IllegalStateException("PlatformView#getView() returned null, but an Android view reference was expected.");
} else if (platformView.getView().getParent() == null) {
Context context2 = this.context;
FlutterMutatorView flutterMutatorView = new FlutterMutatorView(context2, context2.getResources().getDisplayMetrics().density, this.androidTouchProcessor);
flutterMutatorView.setOnDescendantFocusChangeListener(new a(this, i10));
this.platformViewParent.put(i10, flutterMutatorView);
flutterMutatorView.addView(platformView.getView());
((FlutterView) this.flutterView).addView(flutterMutatorView);
} else {
throw new IllegalStateException("The Android view returned from PlatformView#getView() was already added to a parent view.");
}
}
}
public void onAttachedToJNI() {
}
public void onBeginFrame() {
this.currentFrameUsedOverlayLayerIds.clear();
this.currentFrameUsedPlatformViewIds.clear();
}
public void onDetachedFromJNI() {
flushAllViews();
}
public void onDisplayOverlaySurface(int i10, int i11, int i12, int i13, int i14) {
if (this.overlayLayerViews.get(i10) != null) {
initializeRootImageViewIfNeeded();
FlutterImageView flutterImageView = this.overlayLayerViews.get(i10);
if (flutterImageView.getParent() == null) {
((FlutterView) this.flutterView).addView(flutterImageView);
}
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(i13, i14);
layoutParams.leftMargin = i11;
layoutParams.topMargin = i12;
flutterImageView.setLayoutParams(layoutParams);
flutterImageView.setVisibility(0);
flutterImageView.bringToFront();
this.currentFrameUsedOverlayLayerIds.add(Integer.valueOf(i10));
return;
}
throw new IllegalStateException("The overlay surface (id:" + i10 + ") doesn't exist");
}
public void onDisplayPlatformView(int i10, int i11, int i12, int i13, int i14, int i15, int i16, FlutterMutatorsStack flutterMutatorsStack) {
initializeRootImageViewIfNeeded();
initializePlatformViewIfNeeded(i10);
FlutterMutatorView flutterMutatorView = this.platformViewParent.get(i10);
flutterMutatorView.readyToDisplay(flutterMutatorsStack, i11, i12, i13, i14);
flutterMutatorView.setVisibility(0);
flutterMutatorView.bringToFront();
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(i15, i16);
View view = this.platformViews.get(i10).getView();
if (view != null) {
view.setLayoutParams(layoutParams);
view.bringToFront();
}
this.currentFrameUsedPlatformViewIds.add(Integer.valueOf(i10));
}
public void onEndFrame() {
FlutterView flutterView2 = (FlutterView) this.flutterView;
boolean z10 = false;
if (!this.flutterViewConvertedToImageView || !this.currentFrameUsedPlatformViewIds.isEmpty()) {
if (this.flutterViewConvertedToImageView && flutterView2.acquireLatestImageViewFrame()) {
z10 = true;
}
finishFrame(z10);
return;
}
this.flutterViewConvertedToImageView = false;
flutterView2.revertImageView(new b(this));
}
public void onPreEngineRestart() {
flushAllViews();
}
@g1
public MotionEvent toMotionEvent(float f10, PlatformViewsChannel.PlatformViewTouch platformViewTouch, boolean z10) {
MotionEvent pop = this.motionEventTracker.pop(MotionEventTracker.MotionEventId.from(platformViewTouch.motionEventId));
MotionEvent.PointerProperties[] pointerPropertiesArr = (MotionEvent.PointerProperties[]) parsePointerPropertiesList(platformViewTouch.rawPointerPropertiesList).toArray(new MotionEvent.PointerProperties[platformViewTouch.pointerCount]);
MotionEvent.PointerCoords[] pointerCoordsArr = (MotionEvent.PointerCoords[]) parsePointerCoordsList(platformViewTouch.rawPointerCoords, f10).toArray(new MotionEvent.PointerCoords[platformViewTouch.pointerCount]);
if (z10 || pop == null) {
return MotionEvent.obtain(platformViewTouch.downTime.longValue(), platformViewTouch.eventTime.longValue(), platformViewTouch.action, platformViewTouch.pointerCount, pointerPropertiesArr, pointerCoordsArr, platformViewTouch.metaState, platformViewTouch.buttonState, platformViewTouch.xPrecision, platformViewTouch.yPrecision, platformViewTouch.deviceId, platformViewTouch.edgeFlags, platformViewTouch.source, platformViewTouch.flags);
}
return MotionEvent.obtain(pop.getDownTime(), pop.getEventTime(), pop.getAction(), platformViewTouch.pointerCount, pointerPropertiesArr, pointerCoordsArr, pop.getMetaState(), pop.getButtonState(), pop.getXPrecision(), pop.getYPrecision(), pop.getDeviceId(), pop.getEdgeFlags(), pop.getSource(), pop.getFlags());
}
@Override // io.flutter.plugin.platform.PlatformViewsAccessibilityDelegate
public boolean usesVirtualDisplay(Integer num) {
return this.vdControllers.containsKey(num);
}
@TargetApi(19)
public FlutterOverlaySurface createOverlaySurface() {
return createOverlaySurface(new FlutterImageView(this.flutterView.getContext(), this.flutterView.getWidth(), this.flutterView.getHeight(), FlutterImageView.SurfaceKind.overlay));
}
}