Rabbit-R1/android (non root)/java/sources/io/flutter/view/FlutterView.java
2024-05-21 17:08:36 -04:00

704 lines
30 KiB
Java

package io.flutter.view;
import android.app.Activity;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.Insets;
import android.graphics.Rect;
import android.graphics.SurfaceTexture;
import android.os.Handler;
import android.text.format.DateFormat;
import android.util.AttributeSet;
import android.util.SparseArray;
import android.view.DisplayCutout;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.PointerIcon;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.ViewStructure;
import android.view.WindowInsets;
import android.view.WindowManager;
import android.view.accessibility.AccessibilityManager;
import android.view.accessibility.AccessibilityNodeProvider;
import android.view.autofill.AutofillValue;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
import android.view.inputmethod.InputMethodManager;
import io.flutter.Log;
import io.flutter.app.FlutterPluginRegistry;
import io.flutter.embedding.android.AndroidTouchProcessor;
import io.flutter.embedding.android.KeyboardManager;
import io.flutter.embedding.engine.dart.DartExecutor;
import io.flutter.embedding.engine.renderer.FlutterRenderer;
import io.flutter.embedding.engine.renderer.SurfaceTextureWrapper;
import io.flutter.embedding.engine.systemchannels.AccessibilityChannel;
import io.flutter.embedding.engine.systemchannels.LifecycleChannel;
import io.flutter.embedding.engine.systemchannels.LocalizationChannel;
import io.flutter.embedding.engine.systemchannels.MouseCursorChannel;
import io.flutter.embedding.engine.systemchannels.NavigationChannel;
import io.flutter.embedding.engine.systemchannels.PlatformChannel;
import io.flutter.embedding.engine.systemchannels.SettingsChannel;
import io.flutter.embedding.engine.systemchannels.SystemChannel;
import io.flutter.embedding.engine.systemchannels.TextInputChannel;
import io.flutter.plugin.common.ActivityLifecycleListener;
import io.flutter.plugin.common.BinaryMessenger;
import io.flutter.plugin.editing.TextInputPlugin;
import io.flutter.plugin.localization.LocalizationPlugin;
import io.flutter.plugin.mouse.MouseCursorPlugin;
import io.flutter.plugin.platform.PlatformPlugin;
import io.flutter.plugin.platform.PlatformViewsController;
import io.flutter.util.ViewUtils;
import io.flutter.view.AccessibilityBridge;
import io.flutter.view.TextureRegistry;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.atomic.AtomicLong;
@Deprecated
/* loaded from: classes3.dex */
public class FlutterView extends SurfaceView implements BinaryMessenger, TextureRegistry, MouseCursorPlugin.MouseCursorViewDelegate, KeyboardManager.ViewDelegate {
private static final String TAG = "FlutterView";
private final AndroidTouchProcessor androidTouchProcessor;
private final DartExecutor dartExecutor;
private boolean didRenderFirstFrame;
private final FlutterRenderer flutterRenderer;
private final LifecycleChannel lifecycleChannel;
private final LocalizationChannel localizationChannel;
private AccessibilityBridge mAccessibilityNodeProvider;
private final List<ActivityLifecycleListener> mActivityLifecycleListeners;
private final List<FirstFrameListener> mFirstFrameListeners;
private final InputMethodManager mImm;
private boolean mIsSoftwareRenderingEnabled;
private final KeyboardManager mKeyboardManager;
private final LocalizationPlugin mLocalizationPlugin;
private final ViewportMetrics mMetrics;
private final MouseCursorPlugin mMouseCursorPlugin;
private FlutterNativeView mNativeView;
private final SurfaceHolder.Callback mSurfaceCallback;
private final TextInputPlugin mTextInputPlugin;
private final NavigationChannel navigationChannel;
private final AtomicLong nextTextureId;
private final AccessibilityBridge.OnAccessibilityChangeListener onAccessibilityChangeListener;
private final PlatformChannel platformChannel;
private final SettingsChannel settingsChannel;
private final SystemChannel systemChannel;
/* loaded from: classes3.dex */
public interface FirstFrameListener {
void onFirstFrame();
}
/* loaded from: classes3.dex */
public interface Provider {
FlutterView getFlutterView();
}
/* loaded from: classes3.dex */
private enum ZeroSides {
NONE,
LEFT,
RIGHT,
BOTH
}
private void postRun() {
}
@Override // io.flutter.plugin.common.BinaryMessenger
public void disableBufferingIncomingMessages() {
}
@Override // io.flutter.plugin.common.BinaryMessenger
public void enableBufferingIncomingMessages() {
}
@Override // io.flutter.embedding.android.KeyboardManager.ViewDelegate
public BinaryMessenger getBinaryMessenger() {
return this;
}
public DartExecutor getDartExecutor() {
return this.dartExecutor;
}
public FlutterNativeView getFlutterNativeView() {
return this.mNativeView;
}
public boolean hasRenderedFirstFrame() {
return this.didRenderFirstFrame;
}
@Override // io.flutter.plugin.common.BinaryMessenger
public BinaryMessenger.TaskQueue makeBackgroundTaskQueue(BinaryMessenger.TaskQueueOptions taskQueueOptions) {
return null;
}
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes3.dex */
public static final class ViewportMetrics {
float devicePixelRatio = 1.0f;
int physicalWidth = 0;
int physicalHeight = 0;
int physicalViewPaddingTop = 0;
int physicalViewPaddingRight = 0;
int physicalViewPaddingBottom = 0;
int physicalViewPaddingLeft = 0;
int physicalViewInsetTop = 0;
int physicalViewInsetRight = 0;
int physicalViewInsetBottom = 0;
int physicalViewInsetLeft = 0;
int systemGestureInsetTop = 0;
int systemGestureInsetRight = 0;
int systemGestureInsetBottom = 0;
int systemGestureInsetLeft = 0;
int physicalTouchSlop = -1;
ViewportMetrics() {
}
}
public FlutterView(Context context) {
this(context, null);
}
public FlutterView(Context context, AttributeSet attributeSet) {
this(context, attributeSet, null);
}
public FlutterView(Context context, AttributeSet attributeSet, FlutterNativeView flutterNativeView) {
super(context, attributeSet);
this.nextTextureId = new AtomicLong(0L);
this.mIsSoftwareRenderingEnabled = false;
this.didRenderFirstFrame = false;
this.onAccessibilityChangeListener = new AccessibilityBridge.OnAccessibilityChangeListener() { // from class: io.flutter.view.FlutterView.1
@Override // io.flutter.view.AccessibilityBridge.OnAccessibilityChangeListener
public void onAccessibilityChanged(boolean z, boolean z2) {
FlutterView.this.resetWillNotDraw(z, z2);
}
};
Activity activity = ViewUtils.getActivity(getContext());
if (activity == null) {
throw new IllegalArgumentException("Bad context");
}
if (flutterNativeView == null) {
this.mNativeView = new FlutterNativeView(activity.getApplicationContext());
} else {
this.mNativeView = flutterNativeView;
}
DartExecutor dartExecutor = this.mNativeView.getDartExecutor();
this.dartExecutor = dartExecutor;
FlutterRenderer flutterRenderer = new FlutterRenderer(this.mNativeView.getFlutterJNI());
this.flutterRenderer = flutterRenderer;
this.mIsSoftwareRenderingEnabled = this.mNativeView.getFlutterJNI().getIsSoftwareRenderingEnabled();
ViewportMetrics viewportMetrics = new ViewportMetrics();
this.mMetrics = viewportMetrics;
viewportMetrics.devicePixelRatio = context.getResources().getDisplayMetrics().density;
viewportMetrics.physicalTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
setFocusable(true);
setFocusableInTouchMode(true);
this.mNativeView.attachViewAndActivity(this, activity);
SurfaceHolder.Callback callback = new SurfaceHolder.Callback() { // from class: io.flutter.view.FlutterView.2
@Override // android.view.SurfaceHolder.Callback
public void surfaceCreated(SurfaceHolder surfaceHolder) {
FlutterView.this.assertAttached();
FlutterView.this.mNativeView.getFlutterJNI().onSurfaceCreated(surfaceHolder.getSurface());
}
@Override // android.view.SurfaceHolder.Callback
public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i2, int i3) {
FlutterView.this.assertAttached();
FlutterView.this.mNativeView.getFlutterJNI().onSurfaceChanged(i2, i3);
}
@Override // android.view.SurfaceHolder.Callback
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
FlutterView.this.assertAttached();
FlutterView.this.mNativeView.getFlutterJNI().onSurfaceDestroyed();
}
};
this.mSurfaceCallback = callback;
getHolder().addCallback(callback);
this.mActivityLifecycleListeners = new ArrayList();
this.mFirstFrameListeners = new ArrayList();
this.navigationChannel = new NavigationChannel(dartExecutor);
this.lifecycleChannel = new LifecycleChannel(dartExecutor);
LocalizationChannel localizationChannel = new LocalizationChannel(dartExecutor);
this.localizationChannel = localizationChannel;
PlatformChannel platformChannel = new PlatformChannel(dartExecutor);
this.platformChannel = platformChannel;
this.systemChannel = new SystemChannel(dartExecutor);
this.settingsChannel = new SettingsChannel(dartExecutor);
final PlatformPlugin platformPlugin = new PlatformPlugin(activity, platformChannel);
addActivityLifecycleListener(new ActivityLifecycleListener() { // from class: io.flutter.view.FlutterView.3
@Override // io.flutter.plugin.common.ActivityLifecycleListener
public void onPostResume() {
platformPlugin.updateSystemUiOverlays();
}
});
this.mImm = (InputMethodManager) getContext().getSystemService("input_method");
PlatformViewsController platformViewsController = this.mNativeView.getPluginRegistry().getPlatformViewsController();
TextInputPlugin textInputPlugin = new TextInputPlugin(this, new TextInputChannel(dartExecutor), platformViewsController);
this.mTextInputPlugin = textInputPlugin;
this.mKeyboardManager = new KeyboardManager(this);
this.mMouseCursorPlugin = new MouseCursorPlugin(this, new MouseCursorChannel(dartExecutor));
LocalizationPlugin localizationPlugin = new LocalizationPlugin(context, localizationChannel);
this.mLocalizationPlugin = localizationPlugin;
this.androidTouchProcessor = new AndroidTouchProcessor(flutterRenderer, false);
platformViewsController.attachToFlutterRenderer(flutterRenderer);
this.mNativeView.getPluginRegistry().getPlatformViewsController().attachTextInputPlugin(textInputPlugin);
this.mNativeView.getFlutterJNI().setLocalizationPlugin(localizationPlugin);
localizationPlugin.sendLocalesToFlutter(getResources().getConfiguration());
sendUserPlatformSettingsToDart();
}
@Override // android.view.View
public boolean dispatchKeyEvent(KeyEvent keyEvent) {
Log.e(TAG, "dispatchKeyEvent: " + keyEvent.toString());
if (keyEvent.getAction() == 0 && keyEvent.getRepeatCount() == 0) {
getKeyDispatcherState().startTracking(keyEvent, this);
} else if (keyEvent.getAction() == 1) {
getKeyDispatcherState().handleUpEvent(keyEvent);
}
return (isAttached() && this.mKeyboardManager.handleEvent(keyEvent)) || super.dispatchKeyEvent(keyEvent);
}
public FlutterPluginRegistry getPluginRegistry() {
return this.mNativeView.getPluginRegistry();
}
public String getLookupKeyForAsset(String str) {
return FlutterMain.getLookupKeyForAsset(str);
}
public String getLookupKeyForAsset(String str, String str2) {
return FlutterMain.getLookupKeyForAsset(str, str2);
}
public void addActivityLifecycleListener(ActivityLifecycleListener activityLifecycleListener) {
this.mActivityLifecycleListeners.add(activityLifecycleListener);
}
public void onStart() {
this.lifecycleChannel.appIsInactive();
}
public void onPause() {
this.lifecycleChannel.appIsInactive();
}
public void onPostResume() {
Iterator<ActivityLifecycleListener> it = this.mActivityLifecycleListeners.iterator();
while (it.hasNext()) {
it.next().onPostResume();
}
this.lifecycleChannel.appIsResumed();
}
public void onStop() {
this.lifecycleChannel.appIsPaused();
}
public void onMemoryPressure() {
this.mNativeView.getFlutterJNI().notifyLowMemoryWarning();
this.systemChannel.sendMemoryPressureWarning();
}
public void addFirstFrameListener(FirstFrameListener firstFrameListener) {
this.mFirstFrameListeners.add(firstFrameListener);
}
public void removeFirstFrameListener(FirstFrameListener firstFrameListener) {
this.mFirstFrameListeners.remove(firstFrameListener);
}
public void disableTransparentBackground() {
setZOrderOnTop(false);
getHolder().setFormat(-1);
}
public void setInitialRoute(String str) {
this.navigationChannel.setInitialRoute(str);
}
public void pushRoute(String str) {
this.navigationChannel.pushRoute(str);
}
public void popRoute() {
this.navigationChannel.popRoute();
}
private void sendUserPlatformSettingsToDart() {
SettingsChannel.PlatformBrightness platformBrightness;
if ((getResources().getConfiguration().uiMode & 48) == 32) {
platformBrightness = SettingsChannel.PlatformBrightness.dark;
} else {
platformBrightness = SettingsChannel.PlatformBrightness.light;
}
this.settingsChannel.startMessage().setTextScaleFactor(getResources().getConfiguration().fontScale).setUse24HourFormat(DateFormat.is24HourFormat(getContext())).setPlatformBrightness(platformBrightness).send();
}
@Override // android.view.View
protected void onConfigurationChanged(Configuration configuration) {
super.onConfigurationChanged(configuration);
this.mLocalizationPlugin.sendLocalesToFlutter(configuration);
sendUserPlatformSettingsToDart();
}
float getDevicePixelRatio() {
return this.mMetrics.devicePixelRatio;
}
public FlutterNativeView detach() {
if (!isAttached()) {
return null;
}
getHolder().removeCallback(this.mSurfaceCallback);
this.mNativeView.detachFromFlutterView();
FlutterNativeView flutterNativeView = this.mNativeView;
this.mNativeView = null;
return flutterNativeView;
}
public void destroy() {
if (isAttached()) {
getHolder().removeCallback(this.mSurfaceCallback);
releaseAccessibilityNodeProvider();
this.mNativeView.destroy();
this.mNativeView = null;
}
}
@Override // android.view.View
public InputConnection onCreateInputConnection(EditorInfo editorInfo) {
return this.mTextInputPlugin.createInputConnection(this, this.mKeyboardManager, editorInfo);
}
@Override // android.view.View
public boolean checkInputConnectionProxy(View view) {
return this.mNativeView.getPluginRegistry().getPlatformViewsController().checkInputConnectionProxy(view);
}
@Override // android.view.View
public void onProvideAutofillVirtualStructure(ViewStructure viewStructure, int i) {
super.onProvideAutofillVirtualStructure(viewStructure, i);
this.mTextInputPlugin.onProvideAutofillVirtualStructure(viewStructure, i);
}
@Override // android.view.View
public void autofill(SparseArray<AutofillValue> sparseArray) {
this.mTextInputPlugin.autofill(sparseArray);
}
@Override // android.view.View
public boolean onTouchEvent(MotionEvent motionEvent) {
if (!isAttached()) {
return super.onTouchEvent(motionEvent);
}
requestUnbufferedDispatch(motionEvent);
return this.androidTouchProcessor.onTouchEvent(motionEvent);
}
@Override // android.view.View
public boolean onHoverEvent(MotionEvent motionEvent) {
if (!isAttached()) {
return super.onHoverEvent(motionEvent);
}
return this.mAccessibilityNodeProvider.onAccessibilityHoverEvent(motionEvent);
}
@Override // android.view.View
public boolean onGenericMotionEvent(MotionEvent motionEvent) {
if (isAttached() && this.androidTouchProcessor.onGenericMotionEvent(motionEvent, getContext())) {
return true;
}
return super.onGenericMotionEvent(motionEvent);
}
@Override // android.view.View
protected void onSizeChanged(int i, int i2, int i3, int i4) {
this.mMetrics.physicalWidth = i;
this.mMetrics.physicalHeight = i2;
updateViewportMetrics();
super.onSizeChanged(i, i2, i3, i4);
}
private ZeroSides calculateShouldZeroSides() {
Context context = getContext();
int i = context.getResources().getConfiguration().orientation;
int rotation = ((WindowManager) context.getSystemService("window")).getDefaultDisplay().getRotation();
if (i == 2) {
if (rotation == 1) {
return ZeroSides.RIGHT;
}
if (rotation == 3) {
return ZeroSides.LEFT;
}
if (rotation == 0 || rotation == 2) {
return ZeroSides.BOTH;
}
}
return ZeroSides.NONE;
}
private int guessBottomKeyboardInset(WindowInsets windowInsets) {
if (windowInsets.getSystemWindowInsetBottom() < getRootView().getHeight() * 0.18d) {
return 0;
}
return windowInsets.getSystemWindowInsetBottom();
}
@Override // android.view.View
public final WindowInsets onApplyWindowInsets(WindowInsets windowInsets) {
boolean z = (getWindowSystemUiVisibility() & 4) == 0;
int navigationBars = (getWindowSystemUiVisibility() & 2) == 0 ? WindowInsets.Type.navigationBars() : 0;
if (z) {
navigationBars |= WindowInsets.Type.statusBars();
}
Insets insets = windowInsets.getInsets(navigationBars);
this.mMetrics.physicalViewPaddingTop = insets.top;
this.mMetrics.physicalViewPaddingRight = insets.right;
this.mMetrics.physicalViewPaddingBottom = insets.bottom;
this.mMetrics.physicalViewPaddingLeft = insets.left;
Insets insets2 = windowInsets.getInsets(WindowInsets.Type.ime());
this.mMetrics.physicalViewInsetTop = insets2.top;
this.mMetrics.physicalViewInsetRight = insets2.right;
this.mMetrics.physicalViewInsetBottom = insets2.bottom;
this.mMetrics.physicalViewInsetLeft = insets2.left;
Insets insets3 = windowInsets.getInsets(WindowInsets.Type.systemGestures());
this.mMetrics.systemGestureInsetTop = insets3.top;
this.mMetrics.systemGestureInsetRight = insets3.right;
this.mMetrics.systemGestureInsetBottom = insets3.bottom;
this.mMetrics.systemGestureInsetLeft = insets3.left;
DisplayCutout displayCutout = windowInsets.getDisplayCutout();
if (displayCutout != null) {
Insets waterfallInsets = displayCutout.getWaterfallInsets();
ViewportMetrics viewportMetrics = this.mMetrics;
viewportMetrics.physicalViewPaddingTop = Math.max(Math.max(viewportMetrics.physicalViewPaddingTop, waterfallInsets.top), displayCutout.getSafeInsetTop());
ViewportMetrics viewportMetrics2 = this.mMetrics;
viewportMetrics2.physicalViewPaddingRight = Math.max(Math.max(viewportMetrics2.physicalViewPaddingRight, waterfallInsets.right), displayCutout.getSafeInsetRight());
ViewportMetrics viewportMetrics3 = this.mMetrics;
viewportMetrics3.physicalViewPaddingBottom = Math.max(Math.max(viewportMetrics3.physicalViewPaddingBottom, waterfallInsets.bottom), displayCutout.getSafeInsetBottom());
ViewportMetrics viewportMetrics4 = this.mMetrics;
viewportMetrics4.physicalViewPaddingLeft = Math.max(Math.max(viewportMetrics4.physicalViewPaddingLeft, waterfallInsets.left), displayCutout.getSafeInsetLeft());
}
updateViewportMetrics();
return super.onApplyWindowInsets(windowInsets);
}
@Override // android.view.View
protected boolean fitSystemWindows(Rect rect) {
return super.fitSystemWindows(rect);
}
private boolean isAttached() {
FlutterNativeView flutterNativeView = this.mNativeView;
return flutterNativeView != null && flutterNativeView.isAttached();
}
void assertAttached() {
if (!isAttached()) {
throw new AssertionError("Platform view is not attached");
}
}
private void preRun() {
resetAccessibilityTree();
}
/* JADX INFO: Access modifiers changed from: package-private */
public void resetAccessibilityTree() {
AccessibilityBridge accessibilityBridge = this.mAccessibilityNodeProvider;
if (accessibilityBridge != null) {
accessibilityBridge.reset();
}
}
public void runFromBundle(FlutterRunArguments flutterRunArguments) {
assertAttached();
preRun();
this.mNativeView.runFromBundle(flutterRunArguments);
postRun();
}
public Bitmap getBitmap() {
assertAttached();
return this.mNativeView.getFlutterJNI().getBitmap();
}
private void updateViewportMetrics() {
if (isAttached()) {
this.mNativeView.getFlutterJNI().setViewportMetrics(this.mMetrics.devicePixelRatio, this.mMetrics.physicalWidth, this.mMetrics.physicalHeight, this.mMetrics.physicalViewPaddingTop, this.mMetrics.physicalViewPaddingRight, this.mMetrics.physicalViewPaddingBottom, this.mMetrics.physicalViewPaddingLeft, this.mMetrics.physicalViewInsetTop, this.mMetrics.physicalViewInsetRight, this.mMetrics.physicalViewInsetBottom, this.mMetrics.physicalViewInsetLeft, this.mMetrics.systemGestureInsetTop, this.mMetrics.systemGestureInsetRight, this.mMetrics.systemGestureInsetBottom, this.mMetrics.systemGestureInsetLeft, this.mMetrics.physicalTouchSlop, new int[0], new int[0], new int[0]);
}
}
public void onFirstFrame() {
this.didRenderFirstFrame = true;
Iterator it = new ArrayList(this.mFirstFrameListeners).iterator();
while (it.hasNext()) {
((FirstFrameListener) it.next()).onFirstFrame();
}
}
@Override // android.view.SurfaceView, android.view.View
protected void onAttachedToWindow() {
super.onAttachedToWindow();
AccessibilityBridge accessibilityBridge = new AccessibilityBridge(this, new AccessibilityChannel(this.dartExecutor, getFlutterNativeView().getFlutterJNI()), (AccessibilityManager) getContext().getSystemService("accessibility"), getContext().getContentResolver(), getPluginRegistry().getPlatformViewsController());
this.mAccessibilityNodeProvider = accessibilityBridge;
accessibilityBridge.setOnAccessibilityChangeListener(this.onAccessibilityChangeListener);
resetWillNotDraw(this.mAccessibilityNodeProvider.isAccessibilityEnabled(), this.mAccessibilityNodeProvider.isTouchExplorationEnabled());
}
@Override // android.view.SurfaceView, android.view.View
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
releaseAccessibilityNodeProvider();
}
/* JADX INFO: Access modifiers changed from: private */
public void resetWillNotDraw(boolean z, boolean z2) {
boolean z3 = false;
if (!this.mIsSoftwareRenderingEnabled) {
if (!z && !z2) {
z3 = true;
}
setWillNotDraw(z3);
return;
}
setWillNotDraw(false);
}
@Override // android.view.View
public AccessibilityNodeProvider getAccessibilityNodeProvider() {
AccessibilityBridge accessibilityBridge = this.mAccessibilityNodeProvider;
if (accessibilityBridge == null || !accessibilityBridge.isAccessibilityEnabled()) {
return null;
}
return this.mAccessibilityNodeProvider;
}
private void releaseAccessibilityNodeProvider() {
AccessibilityBridge accessibilityBridge = this.mAccessibilityNodeProvider;
if (accessibilityBridge != null) {
accessibilityBridge.release();
this.mAccessibilityNodeProvider = null;
}
}
@Override // io.flutter.plugin.mouse.MouseCursorPlugin.MouseCursorViewDelegate
public PointerIcon getSystemPointerIcon(int i) {
return PointerIcon.getSystemIcon(getContext(), i);
}
@Override // io.flutter.embedding.android.KeyboardManager.ViewDelegate
public boolean onTextInputKeyEvent(KeyEvent keyEvent) {
return this.mTextInputPlugin.handleKeyEvent(keyEvent);
}
@Override // io.flutter.embedding.android.KeyboardManager.ViewDelegate
public void redispatch(KeyEvent keyEvent) {
getRootView().dispatchKeyEvent(keyEvent);
}
@Override // io.flutter.plugin.common.BinaryMessenger
public void send(String str, ByteBuffer byteBuffer) {
send(str, byteBuffer, null);
}
@Override // io.flutter.plugin.common.BinaryMessenger
public void send(String str, ByteBuffer byteBuffer, BinaryMessenger.BinaryReply binaryReply) {
if (!isAttached()) {
Log.d(TAG, "FlutterView.send called on a detached view, channel=" + str);
} else {
this.mNativeView.send(str, byteBuffer, binaryReply);
}
}
@Override // io.flutter.plugin.common.BinaryMessenger
public void setMessageHandler(String str, BinaryMessenger.BinaryMessageHandler binaryMessageHandler) {
this.mNativeView.setMessageHandler(str, binaryMessageHandler);
}
@Override // io.flutter.plugin.common.BinaryMessenger
public void setMessageHandler(String str, BinaryMessenger.BinaryMessageHandler binaryMessageHandler, BinaryMessenger.TaskQueue taskQueue) {
this.mNativeView.setMessageHandler(str, binaryMessageHandler, taskQueue);
}
@Override // io.flutter.view.TextureRegistry
public TextureRegistry.SurfaceTextureEntry createSurfaceTexture() {
return registerSurfaceTexture(new SurfaceTexture(0));
}
@Override // io.flutter.view.TextureRegistry
public TextureRegistry.ImageTextureEntry createImageTexture() {
throw new UnsupportedOperationException("Image textures are not supported in this mode.");
}
@Override // io.flutter.view.TextureRegistry
public TextureRegistry.SurfaceProducer createSurfaceProducer() {
throw new UnsupportedOperationException("SurfaceProducer textures are not supported in this mode.");
}
@Override // io.flutter.view.TextureRegistry
public TextureRegistry.SurfaceTextureEntry registerSurfaceTexture(SurfaceTexture surfaceTexture) {
surfaceTexture.detachFromGLContext();
SurfaceTextureRegistryEntry surfaceTextureRegistryEntry = new SurfaceTextureRegistryEntry(this.nextTextureId.getAndIncrement(), surfaceTexture);
this.mNativeView.getFlutterJNI().registerTexture(surfaceTextureRegistryEntry.id(), surfaceTextureRegistryEntry.textureWrapper());
return surfaceTextureRegistryEntry;
}
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes3.dex */
public final class SurfaceTextureRegistryEntry implements TextureRegistry.SurfaceTextureEntry {
private final long id;
private SurfaceTexture.OnFrameAvailableListener onFrameListener = new SurfaceTexture.OnFrameAvailableListener() { // from class: io.flutter.view.FlutterView.SurfaceTextureRegistryEntry.1
@Override // android.graphics.SurfaceTexture.OnFrameAvailableListener
public void onFrameAvailable(SurfaceTexture surfaceTexture) {
if (SurfaceTextureRegistryEntry.this.released || FlutterView.this.mNativeView == null) {
return;
}
FlutterView.this.mNativeView.getFlutterJNI().markTextureFrameAvailable(SurfaceTextureRegistryEntry.this.id);
}
};
private boolean released;
private final SurfaceTextureWrapper textureWrapper;
@Override // io.flutter.view.TextureRegistry.SurfaceTextureEntry, io.flutter.view.TextureRegistry.TextureEntry
public long id() {
return this.id;
}
public SurfaceTextureWrapper textureWrapper() {
return this.textureWrapper;
}
SurfaceTextureRegistryEntry(long j, SurfaceTexture surfaceTexture) {
this.id = j;
this.textureWrapper = new SurfaceTextureWrapper(surfaceTexture);
surfaceTexture().setOnFrameAvailableListener(this.onFrameListener, new Handler());
}
@Override // io.flutter.view.TextureRegistry.SurfaceTextureEntry
public SurfaceTexture surfaceTexture() {
return this.textureWrapper.surfaceTexture();
}
@Override // io.flutter.view.TextureRegistry.SurfaceTextureEntry, io.flutter.view.TextureRegistry.TextureEntry
public void release() {
if (this.released) {
return;
}
this.released = true;
surfaceTexture().setOnFrameAvailableListener(null);
this.textureWrapper.release();
FlutterView.this.mNativeView.getFlutterJNI().unregisterTexture(this.id);
}
}
}