Files
Suwayomi-Server/AndroidCompat/src/main/java/android/view/ViewGroup.java
T
Constantin Piber a2fadbe513 Implement WebView via Playwright (#1434)
* Implement Android's Looper

Looper handles thread messaging. This is used by extensions when they
want to enqueue actions e.g. for sleeping while WebView does someting

* Stub WebView

* Continue stubbing ViewGroup for WebView

* Implement WebView via Playwright

* Lint

* Implement request interception

Supports Yidan

* Support WebChromeClient

For Bokugen

* Fix onPageStarted

* Make Playwright configurable

* Subscribe to config changes

* Fix exposing of functions

* Support data urls

* Looper: Fix infinite sleep

* Looper: Avoid killing the loop on exception

Just log it and continue

* Pump playwright's message queue periodically

https://playwright.dev/java/docs/multithreading#pagewaitfortimeout-vs-threadsleep

* Update server/src/main/kotlin/suwayomi/tachidesk/graphql/types/SettingsType.kt

Co-authored-by: Mitchell Syer <Syer10@users.noreply.github.com>

* Stub a KCef WebViewProvider

* Initial Kcef Webview implementation

Still buggy, on the second call it just seems to fall over

* Format, restructure to create browser on load

This is much more consistent, before we would sometimes see errors from
about:blank, which block the actual page

* Implement some small useful properties

* Move inline objects to class

* Handle requests in Kcef

* Move Playwright implementation

* Document Playwright settings, fix deprecated warnings

* Inject default user agent from NetworkHelper

* Move playwright to libs.versions.toml

* Lint

* Fix missing imports after lint

* Update server/src/main/kotlin/suwayomi/tachidesk/server/ServerSetup.kt

Co-authored-by: Mitchell Syer <Syer10@users.noreply.github.com>

* Fix default user agent set/get

Use System.getProperty instead of SystemProperties.get

* Configurable WebView provider implementation

* Simplify Playwright settings init

* Minor cleanup and improvements

* Remove playwright WebView impl

* Document WebView for Linux

---------

Co-authored-by: Mitchell Syer <Syer10@users.noreply.github.com>
2025-06-12 11:38:54 -04:00

1788 lines
49 KiB
Java

/*
* Copyright (C) 2006 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.view;
import android.animation.LayoutTransition;
import android.annotation.CallSuper;
import android.annotation.IdRes;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.TestApi;
import android.annotation.UiThread;
import android.content.ClipData;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Insets;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.PointF;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Region;
import android.os.Build;
import android.os.Bundle;
import android.os.Parcelable;
import android.os.SystemClock;
import android.util.AttributeSet;
import android.util.Log;
import android.util.SparseArray;
import android.view.WindowInsetsAnimation.Bounds;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
import android.view.accessibility.AccessibilityNodeInfo;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.LayoutAnimationController;
import android.view.animation.Transformation;
import android.view.autofill.AutofillId;
import android.view.autofill.AutofillManager;
import android.webkit.WebView;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Predicate;
@UiThread
public abstract class ViewGroup extends View implements ViewParent, ViewManager {
protected ArrayList<View> mDisappearingChildren;
protected OnHierarchyChangeListener mOnHierarchyChangeListener;
// The last child of this ViewGroup which held focus within the current cluster
View mFocusedInCluster;
RectF mInvalidateRegion;
Transformation mInvalidationTransformation;
protected int mGroupFlags;
// When set, ViewGroup invalidates only the child's rectangle
// Set by default
static final int FLAG_CLIP_CHILDREN = 0x1;
// When set, dispatchDraw() will invoke invalidate(); this is set by drawChild() when
// a child needs to be invalidated and FLAG_OPTIMIZE_INVALIDATE is set
static final int FLAG_INVALIDATE_REQUIRED = 0x4;
// When set, there is either no layout animation on the ViewGroup or the layout
// animation is over
// Set by default
static final int FLAG_ANIMATION_DONE = 0x10;
// When set, this ViewGroup converts calls to invalidate(Rect) to invalidate() during a
// layout animation; this avoid clobbering the hierarchy
// Automatically set when the layout animation starts, depending on the animation's
// characteristics
static final int FLAG_OPTIMIZE_INVALIDATE = 0x80;
// When set, the next call to drawChild() will clear mChildTransformation's matrix
static final int FLAG_CLEAR_TRANSFORMATION = 0x100;
protected static final int FLAG_USE_CHILD_DRAWING_ORDER = 0x400;
protected static final int FLAG_SUPPORT_STATIC_TRANSFORMATIONS = 0x800;
// UNUSED FLAG VALUE: 0x1000;
public static final int FOCUS_BEFORE_DESCENDANTS = 0x20000;
public static final int FOCUS_AFTER_DESCENDANTS = 0x40000;
public static final int FOCUS_BLOCK_DESCENDANTS = 0x60000;
protected static final int FLAG_DISALLOW_INTERCEPT = 0x80000;
static final int FLAG_IS_TRANSITION_GROUP = 0x1000000;
static final int FLAG_IS_TRANSITION_GROUP_SET = 0x2000000;
static final int FLAG_TOUCHSCREEN_BLOCKS_FOCUS = 0x4000000;
protected int mPersistentDrawingCache;
@Deprecated
public static final int PERSISTENT_NO_CACHE = 0x0;
@Deprecated
public static final int PERSISTENT_ANIMATION_CACHE = 0x1;
@Deprecated
public static final int PERSISTENT_SCROLLING_CACHE = 0x2;
@Deprecated
public static final int PERSISTENT_ALL_CACHES = 0x3;
// Layout Modes
public static final int LAYOUT_MODE_CLIP_BOUNDS = 0;
public static final int LAYOUT_MODE_OPTICAL_BOUNDS = 1;
/** @hide */
public static int LAYOUT_MODE_DEFAULT = LAYOUT_MODE_CLIP_BOUNDS;
protected static final int CLIP_TO_PADDING_MASK = 0;
// Whether layout calls are currently being suppressed, controlled by calls to
// suppressLayout()
boolean mSuppressLayout = false;
// Used to draw cached views
Paint mCachePaint;
int mChildUnhandledKeyListeners = 0;
public ViewGroup(Context context) {
this(context, null);
}
public ViewGroup(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public ViewGroup(Context context, AttributeSet attrs, int defStyleAttr) {
this(context, attrs, defStyleAttr, 0);
}
public ViewGroup(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
public int getDescendantFocusability() {
throw new RuntimeException("Stub!");
}
public void setDescendantFocusability(int focusability) {
throw new RuntimeException("Stub!");
}
@Override
void handleFocusGainInternal(int direction, Rect previouslyFocusedRect) {
throw new RuntimeException("Stub!");
}
@Override
public void requestChildFocus(View child, View focused) {
throw new RuntimeException("Stub!");
}
void setDefaultFocus(View child) {
throw new RuntimeException("Stub!");
}
void clearDefaultFocus(View child) {
throw new RuntimeException("Stub!");
}
@Override
boolean hasDefaultFocus() {
throw new RuntimeException("Stub!");
}
void clearFocusedInCluster(View child) {
throw new RuntimeException("Stub!");
}
void clearFocusedInCluster() {
throw new RuntimeException("Stub!");
}
@Override
public void focusableViewAvailable(View v) {
throw new RuntimeException("Stub!");
}
@Override
public boolean showContextMenuForChild(View originalView) {
throw new RuntimeException("Stub!");
}
public final boolean isShowingContextMenuWithCoords() {
throw new RuntimeException("Stub!");
}
@Override
public boolean showContextMenuForChild(View originalView, float x, float y) {
throw new RuntimeException("Stub!");
}
@Override
public ActionMode startActionModeForChild(View originalView, ActionMode.Callback callback) {
throw new RuntimeException("Stub!");
}
@Override
public ActionMode startActionModeForChild(
View originalView, ActionMode.Callback callback, int type) {
throw new RuntimeException("Stub!");
}
@Override
public boolean dispatchActivityResult(
String who, int requestCode, int resultCode, Intent data) {
throw new RuntimeException("Stub!");
}
@Override
public View focusSearch(View focused, int direction) {
throw new RuntimeException("Stub!");
}
@Override
public boolean requestChildRectangleOnScreen(View child, Rect rectangle, boolean immediate) {
return false;
}
@Override
public boolean requestSendAccessibilityEvent(View child, AccessibilityEvent event) {
throw new RuntimeException("Stub!");
}
public boolean onRequestSendAccessibilityEvent(View child, AccessibilityEvent event) {
throw new RuntimeException("Stub!");
}
public boolean onRequestSendAccessibilityEventInternal(View child, AccessibilityEvent event) {
return true;
}
@Override
public void childHasTransientStateChanged(View child, boolean childHasTransientState) {
throw new RuntimeException("Stub!");
}
@Override
public boolean hasTransientState() {
throw new RuntimeException("Stub!");
}
@Override
public boolean dispatchUnhandledMove(View focused, int direction) {
throw new RuntimeException("Stub!");
}
@Override
public void clearChildFocus(View child) {
throw new RuntimeException("Stub!");
}
@Override
public void clearFocus() {
throw new RuntimeException("Stub!");
}
@Override
void unFocus(View focused) {
throw new RuntimeException("Stub!");
}
public View getFocusedChild() {
throw new RuntimeException("Stub!");
}
View getDeepestFocusedChild() {
throw new RuntimeException("Stub!");
}
@Override
public boolean hasFocus() {
throw new RuntimeException("Stub!");
}
/*
* (non-Javadoc)
*
* @see android.view.View#findFocus()
*/
@Override
public View findFocus() {
throw new RuntimeException("Stub!");
}
@Override
boolean hasFocusable(boolean allowAutoFocus, boolean dispatchExplicit) {
throw new RuntimeException("Stub!");
}
boolean hasFocusableChild(boolean dispatchExplicit) {
throw new RuntimeException("Stub!");
}
@Override
public void addFocusables(ArrayList<View> views, int direction, int focusableMode) {
throw new RuntimeException("Stub!");
}
@Override
public void addKeyboardNavigationClusters(Collection<View> views, int direction) {
throw new RuntimeException("Stub!");
}
public void setTouchscreenBlocksFocus(boolean touchscreenBlocksFocus) {
throw new RuntimeException("Stub!");
}
@ViewDebug.ExportedProperty(category = "focus")
public boolean getTouchscreenBlocksFocus() {
throw new RuntimeException("Stub!");
}
boolean shouldBlockFocusForTouchscreen() {
throw new RuntimeException("Stub!");
}
@Override
public void findViewsWithText(ArrayList<View> outViews, CharSequence text, int flags) {
throw new RuntimeException("Stub!");
}
/** @hide */
@Override
public View findViewByAccessibilityIdTraversal(int accessibilityId) {
throw new RuntimeException("Stub!");
}
/** @hide */
@Override
public View findViewByAutofillIdTraversal(int autofillId) {
throw new RuntimeException("Stub!");
}
/** @hide */
@Override
public void findAutofillableViewsByTraversal(@NonNull List<View> autofillableViews) {
throw new RuntimeException("Stub!");
}
@Override
public void dispatchWindowFocusChanged(boolean hasFocus) {
throw new RuntimeException("Stub!");
}
@Override
public void addTouchables(ArrayList<View> views) {
throw new RuntimeException("Stub!");
}
@Override
public void makeOptionalFitsSystemWindows() {
throw new RuntimeException("Stub!");
}
@Override
public void makeFrameworkOptionalFitsSystemWindows() {
throw new RuntimeException("Stub!");
}
@Override
public void dispatchDisplayHint(int hint) {
throw new RuntimeException("Stub!");
}
protected void onChildVisibilityChanged(View child, int oldVisibility, int newVisibility) {
throw new RuntimeException("Stub!");
}
@Override
protected void dispatchVisibilityChanged(View changedView, int visibility) {
throw new RuntimeException("Stub!");
}
@Override
public void dispatchWindowVisibilityChanged(int visibility) {
throw new RuntimeException("Stub!");
}
@Override
boolean dispatchVisibilityAggregated(boolean isVisible) {
throw new RuntimeException("Stub!");
}
@Override
public void dispatchConfigurationChanged(Configuration newConfig) {
throw new RuntimeException("Stub!");
}
@Override
public void recomputeViewAttributes(View child) {
throw new RuntimeException("Stub!");
}
// @Override
// void dispatchCollectViewAttributes(AttachInfo attachInfo, int visibility) {
// throw new RuntimeException("Stub!");
// }
@Override
public void bringChildToFront(View child) {
throw new RuntimeException("Stub!");
}
@Override
boolean dispatchDragEnterExitInPreN(DragEvent event) {
throw new RuntimeException("Stub!");
}
// TODO: Write real docs
@Override
public boolean dispatchDragEvent(DragEvent event) {
throw new RuntimeException("Stub!");
}
// Find the frontmost child view that lies under the given point, and calculate
// the position within its own local coordinate system.
View findFrontmostDroppableChildAt(float x, float y, PointF outLocalPoint) {
throw new RuntimeException("Stub!");
}
boolean notifyChildOfDragStart(View child) {
throw new RuntimeException("Stub!");
}
@Override
@Deprecated
public void dispatchWindowSystemUiVisiblityChanged(int visible) {
throw new RuntimeException("Stub!");
}
@Override
@Deprecated
public void dispatchSystemUiVisibilityChanged(int visible) {
throw new RuntimeException("Stub!");
}
@Override
boolean updateLocalSystemUiVisibility(int localValue, int localChanges) {
throw new RuntimeException("Stub!");
}
@Override
public boolean dispatchKeyEventPreIme(KeyEvent event) {
throw new RuntimeException("Stub!");
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
throw new RuntimeException("Stub!");
}
@Override
public boolean dispatchKeyShortcutEvent(KeyEvent event) {
throw new RuntimeException("Stub!");
}
@Override
public boolean dispatchTrackballEvent(MotionEvent event) {
throw new RuntimeException("Stub!");
}
@Override
public boolean dispatchCapturedPointerEvent(MotionEvent event) {
throw new RuntimeException("Stub!");
}
@Override
public void dispatchPointerCaptureChanged(boolean hasCapture) {
throw new RuntimeException("Stub!");
}
@Override
public PointerIcon onResolvePointerIcon(MotionEvent event, int pointerIndex) {
throw new RuntimeException("Stub!");
}
@SuppressWarnings({"ConstantConditions"})
@Override
protected boolean dispatchHoverEvent(MotionEvent event) {
throw new RuntimeException("Stub!");
}
@Override
boolean dispatchTooltipHoverEvent(MotionEvent event) {
throw new RuntimeException("Stub!");
}
/** @hide */
@Override
protected boolean hasHoveredChild() {
throw new RuntimeException("Stub!");
}
/** @hide */
@Override
protected boolean pointInHoveredChild(MotionEvent event) {
throw new RuntimeException("Stub!");
}
@Override
public void addChildrenForAccessibility(ArrayList<View> outChildren) {
throw new RuntimeException("Stub!");
}
public boolean onInterceptHoverEvent(MotionEvent event) {
throw new RuntimeException("Stub!");
}
@Override
protected boolean dispatchGenericPointerEvent(MotionEvent event) {
throw new RuntimeException("Stub!");
}
@Override
protected boolean dispatchGenericFocusedEvent(MotionEvent event) {
throw new RuntimeException("Stub!");
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
throw new RuntimeException("Stub!");
}
public ArrayList<View> buildTouchDispatchChildList() {
throw new RuntimeException("Stub!");
}
protected boolean isTransformedTouchPointInView(float x, float y, View child,
PointF outLocalPoint) {
throw new RuntimeException("Stub!");
}
public void transformPointToViewLocal(float[] point, View child) {
throw new RuntimeException("Stub!");
}
public void setMotionEventSplittingEnabled(boolean split) {
throw new RuntimeException("Stub!");
}
public boolean isMotionEventSplittingEnabled() {
throw new RuntimeException("Stub!");
}
public boolean isTransitionGroup() {
throw new RuntimeException("Stub!");
}
public void setTransitionGroup(boolean isTransitionGroup) {
throw new RuntimeException("Stub!");
}
@Override
public void requestDisallowInterceptTouchEvent(boolean disallowIntercept) {
throw new RuntimeException("Stub!");
}
public boolean onInterceptTouchEvent(MotionEvent ev) {
throw new RuntimeException("Stub!");
}
@Override
public boolean requestFocus(int direction, Rect previouslyFocusedRect) {
throw new RuntimeException("Stub!");
}
@SuppressWarnings({"ConstantConditions"})
protected boolean onRequestFocusInDescendants(int direction,
Rect previouslyFocusedRect) {
throw new RuntimeException("Stub!");
}
@Override
public boolean restoreDefaultFocus() {
throw new RuntimeException("Stub!");
}
@TestApi
@Override
public boolean restoreFocusInCluster(@FocusRealDirection int direction) {
throw new RuntimeException("Stub!");
}
@Override
public boolean restoreFocusNotInCluster() {
throw new RuntimeException("Stub!");
}
@Override
public void dispatchStartTemporaryDetach() {
throw new RuntimeException("Stub!");
}
@Override
public void dispatchFinishTemporaryDetach() {
throw new RuntimeException("Stub!");
}
// @Override
// void dispatchAttachedToWindow(AttachInfo info, int visibility) {
// throw new RuntimeException("Stub!");
// }
@Override
void dispatchScreenStateChanged(int screenState) {
throw new RuntimeException("Stub!");
}
@Override
void dispatchMovedToDisplay(Display display, Configuration config) {
throw new RuntimeException("Stub!");
}
/** @hide */
@Override
public boolean dispatchPopulateAccessibilityEventInternal(AccessibilityEvent event) {
throw new RuntimeException("Stub!");
}
@Override
public void dispatchProvideStructure(ViewStructure structure) {
throw new RuntimeException("Stub!");
}
@Override
public void dispatchProvideAutofillStructure(ViewStructure structure,
@AutofillFlags int flags) {
throw new RuntimeException("Stub!");
}
/** @hide */
@Override
public void dispatchProvideContentCaptureStructure() {
throw new RuntimeException("Stub!");
}
/** @hide */
@Override
public void resetSubtreeAutofillIds() {
throw new RuntimeException("Stub!");
}
/** @hide */
@Override
public void onInitializeAccessibilityNodeInfoInternal(AccessibilityNodeInfo info) {
throw new RuntimeException("Stub!");
}
@Override
public void addExtraDataToAccessibilityNodeInfo(@NonNull AccessibilityNodeInfo info,
@NonNull String extraDataKey, @Nullable Bundle arguments) {
throw new RuntimeException("Stub!");
}
@Override
public CharSequence getAccessibilityClassName() {
throw new RuntimeException("Stub!");
}
@Override
public void notifySubtreeAccessibilityStateChanged(View child, View source, int changeType) {
throw new RuntimeException("Stub!");
}
/** @hide */
@Override
public void notifySubtreeAccessibilityStateChangedIfNeeded() {
throw new RuntimeException("Stub!");
}
@Override
void resetSubtreeAccessibilityStateChanged() {
throw new RuntimeException("Stub!");
}
int getNumChildrenForAccessibility() {
throw new RuntimeException("Stub!");
}
@Override
public boolean onNestedPrePerformAccessibilityAction(View target, int action, Bundle args) {
return false;
}
@Override
void calculateAccessibilityDataSensitive() {
throw new RuntimeException("Stub!");
}
@Override
void dispatchDetachedFromWindow() {
throw new RuntimeException("Stub!");
}
@Override
protected void internalSetPadding(int left, int top, int right, int bottom) {
throw new RuntimeException("Stub!");
}
@Override
protected void dispatchSaveInstanceState(SparseArray<Parcelable> container) {
throw new RuntimeException("Stub!");
}
protected void dispatchFreezeSelfOnly(SparseArray<Parcelable> container) {
throw new RuntimeException("Stub!");
}
@Override
protected void dispatchRestoreInstanceState(SparseArray<Parcelable> container) {
throw new RuntimeException("Stub!");
}
protected void dispatchThawSelfOnly(SparseArray<Parcelable> container) {
throw new RuntimeException("Stub!");
}
@Deprecated
protected void setChildrenDrawingCacheEnabled(boolean enabled) {
throw new RuntimeException("Stub!");
}
// @Override
// public Bitmap createSnapshot(ViewDebug.CanvasProvider canvasProvider, boolean skipChildren) {
// throw new RuntimeException("Stub!");
// }
/** Return true if this ViewGroup is laying out using optical bounds. */
boolean isLayoutModeOptical() {
throw new RuntimeException("Stub!");
}
@Override
Insets computeOpticalInsets() {
throw new RuntimeException("Stub!");
}
protected void onDebugDrawMargins(@NonNull Canvas canvas, Paint paint) {
throw new RuntimeException("Stub!");
}
protected void onDebugDraw(@NonNull Canvas canvas) {
throw new RuntimeException("Stub!");
}
@Override
protected void dispatchDraw(@NonNull Canvas canvas) {
throw new RuntimeException("Stub!");
}
@Override
public ViewGroupOverlay getOverlay() {
throw new RuntimeException("Stub!");
}
protected int getChildDrawingOrder(int childCount, int drawingPosition) {
throw new RuntimeException("Stub!");
}
public final int getChildDrawingOrder(int drawingPosition) {
throw new RuntimeException("Stub!");
}
ArrayList<View> buildOrderedChildList() {
throw new RuntimeException("Stub!");
}
@Override
protected void dispatchGetDisplayList() {
throw new RuntimeException("Stub!");
}
protected boolean drawChild(@NonNull Canvas canvas, View child, long drawingTime) {
throw new RuntimeException("Stub!");
}
@Override
void getScrollIndicatorBounds(@NonNull Rect out) {
throw new RuntimeException("Stub!");
}
@ViewDebug.ExportedProperty(category = "drawing")
public boolean getClipChildren() {
throw new RuntimeException("Stub!");
}
public void setClipChildren(boolean clipChildren) {
throw new RuntimeException("Stub!");
}
public void setClipToPadding(boolean clipToPadding) {
throw new RuntimeException("Stub!");
}
@ViewDebug.ExportedProperty(category = "drawing")
public boolean getClipToPadding() {
throw new RuntimeException("Stub!");
}
@Override
public void dispatchSetSelected(boolean selected) {
throw new RuntimeException("Stub!");
}
@Override
public void dispatchSetActivated(boolean activated) {
throw new RuntimeException("Stub!");
}
@Override
protected void dispatchSetPressed(boolean pressed) {
throw new RuntimeException("Stub!");
}
@Override
public void dispatchDrawableHotspotChanged(float x, float y) {
throw new RuntimeException("Stub!");
}
@Override
void dispatchCancelPendingInputEvents() {
throw new RuntimeException("Stub!");
}
protected void setStaticTransformationsEnabled(boolean enabled) {
throw new RuntimeException("Stub!");
}
protected boolean getChildStaticTransformation(View child, Transformation t) {
return false;
}
Transformation getChildTransformation() {
throw new RuntimeException("Stub!");
}
@Override
protected <T extends View> T findViewTraversal(@IdRes int id) {
throw new RuntimeException("Stub!");
}
@Override
protected <T extends View> T findViewWithTagTraversal(Object tag) {
throw new RuntimeException("Stub!");
}
@Override
protected <T extends View> T findViewByPredicateTraversal(Predicate<View> predicate,
View childToSkip) {
throw new RuntimeException("Stub!");
}
public void addTransientView(View view, int index) {
throw new RuntimeException("Stub!");
}
public void removeTransientView(View view) {
throw new RuntimeException("Stub!");
}
public int getTransientViewCount() {
throw new RuntimeException("Stub!");
}
public int getTransientViewIndex(int position) {
throw new RuntimeException("Stub!");
}
public View getTransientView(int position) {
throw new RuntimeException("Stub!");
}
public void addView(View child) {
throw new RuntimeException("Stub!");
}
public void addView(View child, int index) {
throw new RuntimeException("Stub!");
}
public void addView(View child, int width, int height) {
throw new RuntimeException("Stub!");
}
@Override
public void addView(View child, LayoutParams params) {
throw new RuntimeException("Stub!");
}
public void addView(View child, int index, LayoutParams params) {
throw new RuntimeException("Stub!");
}
@Override
public void updateViewLayout(View view, ViewGroup.LayoutParams params) {
throw new RuntimeException("Stub!");
}
protected boolean checkLayoutParams(ViewGroup.LayoutParams p) {
throw new RuntimeException("Stub!");
}
public interface OnHierarchyChangeListener {
void onChildViewAdded(View parent, View child);
void onChildViewRemoved(View parent, View child);
}
public void setOnHierarchyChangeListener(OnHierarchyChangeListener listener) {
throw new RuntimeException("Stub!");
}
void dispatchViewAdded(View child) {
throw new RuntimeException("Stub!");
}
public void onViewAdded(View child) {
}
void dispatchViewRemoved(View child) {
throw new RuntimeException("Stub!");
}
public void onViewRemoved(View child) {
}
@Override
protected void onAttachedToWindow() {
throw new RuntimeException("Stub!");
}
@Override
protected void onDetachedFromWindow() {
throw new RuntimeException("Stub!");
}
/** @hide */
@Override
protected void destroyHardwareResources() {
throw new RuntimeException("Stub!");
}
protected boolean addViewInLayout(View child, int index, LayoutParams params) {
throw new RuntimeException("Stub!");
}
protected boolean addViewInLayout(View child, int index, LayoutParams params,
boolean preventRequestLayout) {
throw new RuntimeException("Stub!");
}
protected void cleanupLayoutState(View child) {
throw new RuntimeException("Stub!");
}
protected void attachLayoutAnimationParameters(View child,
LayoutParams params, int index, int count) {
throw new RuntimeException("Stub!");
}
@Override
public void removeView(View view) {
throw new RuntimeException("Stub!");
}
public void removeViewInLayout(View view) {
throw new RuntimeException("Stub!");
}
public void removeViewsInLayout(int start, int count) {
throw new RuntimeException("Stub!");
}
public void removeViewAt(int index) {
throw new RuntimeException("Stub!");
}
public void removeViews(int start, int count) {
throw new RuntimeException("Stub!");
}
public void setLayoutTransition(LayoutTransition transition) {
throw new RuntimeException("Stub!");
}
public LayoutTransition getLayoutTransition() {
throw new RuntimeException("Stub!");
}
public void removeAllViews() {
throw new RuntimeException("Stub!");
}
public void removeAllViewsInLayout() {
throw new RuntimeException("Stub!");
}
protected void removeDetachedView(View child, boolean animate) {
throw new RuntimeException("Stub!");
}
protected void attachViewToParent(View child, int index, LayoutParams params) {
throw new RuntimeException("Stub!");
}
protected void detachViewFromParent(View child) {
throw new RuntimeException("Stub!");
}
protected void detachViewFromParent(int index) {
throw new RuntimeException("Stub!");
}
protected void detachViewsFromParent(int start, int count) {
throw new RuntimeException("Stub!");
}
protected void detachAllViewsFromParent() {
throw new RuntimeException("Stub!");
}
@Override
@CallSuper
public void onDescendantInvalidated(@NonNull View child, @NonNull View target) {
throw new RuntimeException("Stub!");
}
@Deprecated
@Override
public final void invalidateChild(View child, final Rect dirty) {
throw new RuntimeException("Stub!");
}
@Deprecated
@Override
public ViewParent invalidateChildInParent(final int[] location, final Rect dirty) {
throw new RuntimeException("Stub!");
}
public final void offsetDescendantRectToMyCoords(View descendant, Rect rect) {
throw new RuntimeException("Stub!");
}
public final void offsetRectIntoDescendantCoords(View descendant, Rect rect) {
throw new RuntimeException("Stub!");
}
void offsetRectBetweenParentAndChild(View descendant, Rect rect,
boolean offsetFromChildToParent, boolean clipToBounds) {
throw new RuntimeException("Stub!");
}
public void offsetChildrenTopAndBottom(int offset) {
throw new RuntimeException("Stub!");
}
@Override
public boolean getChildVisibleRect(View child, Rect r, android.graphics.Point offset) {
throw new RuntimeException("Stub!");
}
public boolean getChildVisibleRect(
View child, Rect r, android.graphics.Point offset, boolean forceParentCheck) {
throw new RuntimeException("Stub!");
}
@Override
public final void layout(int l, int t, int r, int b) {
throw new RuntimeException("Stub!");
}
@Override
protected abstract void onLayout(boolean changed,
int l, int t, int r, int b);
protected boolean canAnimate() {
throw new RuntimeException("Stub!");
}
public void startLayoutAnimation() {
throw new RuntimeException("Stub!");
}
public void scheduleLayoutAnimation() {
throw new RuntimeException("Stub!");
}
public void setLayoutAnimation(LayoutAnimationController controller) {
throw new RuntimeException("Stub!");
}
public LayoutAnimationController getLayoutAnimation() {
throw new RuntimeException("Stub!");
}
@Deprecated
public boolean isAnimationCacheEnabled() {
throw new RuntimeException("Stub!");
}
@Deprecated
public void setAnimationCacheEnabled(boolean enabled) {
throw new RuntimeException("Stub!");
}
@Deprecated
public boolean isAlwaysDrawnWithCacheEnabled() {
throw new RuntimeException("Stub!");
}
@Deprecated
public void setAlwaysDrawnWithCacheEnabled(boolean always) {
throw new RuntimeException("Stub!");
}
@Deprecated
protected boolean isChildrenDrawnWithCacheEnabled() {
throw new RuntimeException("Stub!");
}
@Deprecated
protected void setChildrenDrawnWithCacheEnabled(boolean enabled) {
throw new RuntimeException("Stub!");
}
@ViewDebug.ExportedProperty(category = "drawing")
protected boolean isChildrenDrawingOrderEnabled() {
throw new RuntimeException("Stub!");
}
protected void setChildrenDrawingOrderEnabled(boolean enabled) {
throw new RuntimeException("Stub!");
}
@Deprecated
@ViewDebug.ExportedProperty(category = "drawing", mapping = {
@ViewDebug.IntToString(from = PERSISTENT_NO_CACHE, to = "NONE"),
@ViewDebug.IntToString(from = PERSISTENT_ANIMATION_CACHE, to = "ANIMATION"),
@ViewDebug.IntToString(from = PERSISTENT_SCROLLING_CACHE, to = "SCROLLING"),
@ViewDebug.IntToString(from = PERSISTENT_ALL_CACHES, to = "ALL")
})
public int getPersistentDrawingCache() {
throw new RuntimeException("Stub!");
}
@Deprecated
public void setPersistentDrawingCache(int drawingCacheToKeep) {
throw new RuntimeException("Stub!");
}
// @Override
void invalidateInheritedLayoutMode(int layoutModeOfRoot) {
throw new RuntimeException("Stub!");
}
public int getLayoutMode() {
throw new RuntimeException("Stub!");
}
public void setLayoutMode(int layoutMode) {
throw new RuntimeException("Stub!");
}
public LayoutParams generateLayoutParams(AttributeSet attrs) {
throw new RuntimeException("Stub!");
}
protected LayoutParams generateLayoutParams(ViewGroup.LayoutParams p) {
throw new RuntimeException("Stub!");
}
protected LayoutParams generateDefaultLayoutParams() {
throw new RuntimeException("Stub!");
}
@Override
protected void debug(int depth) {
throw new RuntimeException("Stub!");
}
public int indexOfChild(View child) {
throw new RuntimeException("Stub!");
}
public int getChildCount() {
throw new RuntimeException("Stub!");
}
public View getChildAt(int index) {
throw new RuntimeException("Stub!");
}
protected void measureChildren(int widthMeasureSpec, int heightMeasureSpec) {
throw new RuntimeException("Stub!");
}
protected void measureChild(View child, int parentWidthMeasureSpec,
int parentHeightMeasureSpec) {
throw new RuntimeException("Stub!");
}
protected void measureChildWithMargins(View child,
int parentWidthMeasureSpec, int widthUsed,
int parentHeightMeasureSpec, int heightUsed) {
throw new RuntimeException("Stub!");
}
public static int getChildMeasureSpec(int spec, int padding, int childDimension) {
throw new RuntimeException("Stub!");
}
public void clearDisappearingChildren() {
throw new RuntimeException("Stub!");
}
void finishAnimatingView(final View view, Animation animation) {
throw new RuntimeException("Stub!");
}
boolean isViewTransitioning(View view) {
throw new RuntimeException("Stub!");
}
public void startViewTransition(View view) {
throw new RuntimeException("Stub!");
}
public void endViewTransition(View view) {
throw new RuntimeException("Stub!");
}
public void suppressLayout(boolean suppress) {
throw new RuntimeException("Stub!");
}
public boolean isLayoutSuppressed() {
throw new RuntimeException("Stub!");
}
@Override
public boolean gatherTransparentRegion(Region region) {
throw new RuntimeException("Stub!");
}
@Override
public void requestTransparentRegion(View child) {
throw new RuntimeException("Stub!");
}
// @Override
public void subtractObscuredTouchableRegion(Region touchableRegion, View view) {
throw new RuntimeException("Stub!");
}
// @Override
public boolean getChildLocalHitRegion(@NonNull View child, @NonNull Region region,
@NonNull Matrix matrix, boolean isHover) {
throw new RuntimeException("Stub!");
}
@Override
public WindowInsets dispatchApplyWindowInsets(WindowInsets insets) {
throw new RuntimeException("Stub!");
}
@Override
public void setWindowInsetsAnimationCallback(
@Nullable WindowInsetsAnimation.Callback callback) {
throw new RuntimeException("Stub!");
}
@Override
public boolean hasWindowInsetsAnimationCallback() {
throw new RuntimeException("Stub!");
}
@Override
public void dispatchWindowInsetsAnimationPrepare(
@NonNull WindowInsetsAnimation animation) {
throw new RuntimeException("Stub!");
}
@Override
@NonNull
public Bounds dispatchWindowInsetsAnimationStart(
@NonNull WindowInsetsAnimation animation, @NonNull Bounds bounds) {
throw new RuntimeException("Stub!");
}
@Override
@NonNull
public WindowInsets dispatchWindowInsetsAnimationProgress(@NonNull WindowInsets insets,
@NonNull List<WindowInsetsAnimation> runningAnimations) {
throw new RuntimeException("Stub!");
}
@Override
public void dispatchWindowInsetsAnimationEnd(@NonNull WindowInsetsAnimation animation) {
throw new RuntimeException("Stub!");
}
// @Override
// public void dispatchScrollCaptureSearch(
// @NonNull Rect localVisibleRect, @NonNull Point windowOffset,
// @NonNull Consumer<ScrollCaptureTarget> targets) {
// throw new RuntimeException("Stub!");
// }
public Animation.AnimationListener getLayoutAnimationListener() {
throw new RuntimeException("Stub!");
}
@Override
protected void drawableStateChanged() {
throw new RuntimeException("Stub!");
}
@Override
public void jumpDrawablesToCurrentState() {
throw new RuntimeException("Stub!");
}
@Override
protected int[] onCreateDrawableState(int extraSpace) {
throw new RuntimeException("Stub!");
}
public void setAddStatesFromChildren(boolean addsStates) {
throw new RuntimeException("Stub!");
}
public boolean addStatesFromChildren() {
throw new RuntimeException("Stub!");
}
@Override
public void childDrawableStateChanged(View child) {
throw new RuntimeException("Stub!");
}
public void setLayoutAnimationListener(Animation.AnimationListener animationListener) {
throw new RuntimeException("Stub!");
}
public void requestTransitionStart(LayoutTransition transition) {
throw new RuntimeException("Stub!");
}
@Override
public boolean resolveRtlPropertiesIfNeeded() {
throw new RuntimeException("Stub!");
}
@Override
public boolean resolveLayoutDirection() {
throw new RuntimeException("Stub!");
}
@Override
public boolean resolveTextDirection() {
throw new RuntimeException("Stub!");
}
@Override
public boolean resolveTextAlignment() {
throw new RuntimeException("Stub!");
}
@Override
public void resolvePadding() {
throw new RuntimeException("Stub!");
}
@Override
protected void resolveDrawables() {
throw new RuntimeException("Stub!");
}
@Override
public void resolveLayoutParams() {
throw new RuntimeException("Stub!");
}
@TestApi
@Override
public void resetResolvedLayoutDirection() {
throw new RuntimeException("Stub!");
}
@TestApi
@Override
public void resetResolvedTextDirection() {
throw new RuntimeException("Stub!");
}
@TestApi
@Override
public void resetResolvedTextAlignment() {
throw new RuntimeException("Stub!");
}
@TestApi
@Override
public void resetResolvedPadding() {
throw new RuntimeException("Stub!");
}
@TestApi
@Override
protected void resetResolvedDrawables() {
throw new RuntimeException("Stub!");
}
public boolean shouldDelayChildPressedState() {
return true;
}
@Override
public boolean onStartNestedScroll(View child, View target, int nestedScrollAxes) {
return false;
}
@Override
public void onNestedScrollAccepted(View child, View target, int axes) {
throw new RuntimeException("Stub!");
}
@Override
public void onStopNestedScroll(View child) {
throw new RuntimeException("Stub!");
}
@Override
public void onNestedScroll(View target, int dxConsumed, int dyConsumed,
int dxUnconsumed, int dyUnconsumed) {
throw new RuntimeException("Stub!");
}
@Override
public void onNestedPreScroll(View target, int dx, int dy, int[] consumed) {
throw new RuntimeException("Stub!");
}
@Override
public boolean onNestedFling(View target, float velocityX, float velocityY, boolean consumed) {
throw new RuntimeException("Stub!");
}
@Override
public boolean onNestedPreFling(View target, float velocityX, float velocityY) {
throw new RuntimeException("Stub!");
}
public int getNestedScrollAxes() {
throw new RuntimeException("Stub!");
}
/** @hide */
protected void onSetLayoutParams(View child, LayoutParams layoutParams) {
throw new RuntimeException("Stub!");
}
/** @hide */
@Override
public void captureTransitioningViews(List<View> transitioningViews) {
throw new RuntimeException("Stub!");
}
/** @hide */
@Override
public void findNamedViews(Map<String, View> namedElements) {
throw new RuntimeException("Stub!");
}
@Override
boolean hasUnhandledKeyListener() {
throw new RuntimeException("Stub!");
}
void incrementChildUnhandledKeyListeners() {
throw new RuntimeException("Stub!");
}
void decrementChildUnhandledKeyListeners() {
throw new RuntimeException("Stub!");
}
@Override
View dispatchUnhandledKeyEvent(KeyEvent evt) {
throw new RuntimeException("Stub!");
}
public static class LayoutParams {
@SuppressWarnings({"UnusedDeclaration"})
@Deprecated
public static final int FILL_PARENT = -1;
public static final int MATCH_PARENT = -1;
public static final int WRAP_CONTENT = -2;
public int width;
public int height;
public LayoutAnimationController.AnimationParameters layoutAnimationParameters;
public LayoutParams(Context c, AttributeSet attrs) {
throw new RuntimeException("Stub!");
}
public LayoutParams(int width, int height) {
this.width = width;
this.height = height;
}
public LayoutParams(LayoutParams source) {
this.width = source.width;
this.height = source.height;
}
LayoutParams() {
}
protected void setBaseAttributes(TypedArray a, int widthAttr, int heightAttr) {
throw new RuntimeException("Stub!");
}
public void resolveLayoutDirection(int layoutDirection) {
}
public String debug(String output) {
return output + "ViewGroup.LayoutParams={ width="
+ sizeToString(width) + ", height=" + sizeToString(height) + " }";
}
public void onDebugDraw(View view, Canvas canvas, Paint paint) {
}
protected static String sizeToString(int size) {
if (size == WRAP_CONTENT) {
return "wrap-content";
}
if (size == MATCH_PARENT) {
return "match-parent";
}
return String.valueOf(size);
}
// /** @hide */
// void encode(@NonNull ViewHierarchyEncoder encoder) {
// throw new RuntimeException("Stub!");
// }
// /** @hide */
// protected void encodeProperties(@NonNull ViewHierarchyEncoder encoder) {
// throw new RuntimeException("Stub!");
// }
}
public static class MarginLayoutParams extends ViewGroup.LayoutParams {
@ViewDebug.ExportedProperty(category = "layout")
public int leftMargin;
@ViewDebug.ExportedProperty(category = "layout")
public int topMargin;
@ViewDebug.ExportedProperty(category = "layout")
public int rightMargin;
@ViewDebug.ExportedProperty(category = "layout")
public int bottomMargin;
byte mMarginFlags;
public MarginLayoutParams(Context c, AttributeSet attrs) {
throw new RuntimeException("Stub!");
}
public MarginLayoutParams(int width, int height) {
super(width, height);
throw new RuntimeException("Stub!");
}
public MarginLayoutParams(MarginLayoutParams source) {
throw new RuntimeException("Stub!");
}
public MarginLayoutParams(LayoutParams source) {
super(source);
throw new RuntimeException("Stub!");
}
public final void copyMarginsFrom(MarginLayoutParams source) {
throw new RuntimeException("Stub!");
}
public void setMargins(int left, int top, int right, int bottom) {
throw new RuntimeException("Stub!");
}
public void setMarginsRelative(int start, int top, int end, int bottom) {
throw new RuntimeException("Stub!");
}
public void setMarginStart(int start) {
throw new RuntimeException("Stub!");
}
public int getMarginStart() {
throw new RuntimeException("Stub!");
}
public void setMarginEnd(int end) {
throw new RuntimeException("Stub!");
}
public int getMarginEnd() {
throw new RuntimeException("Stub!");
}
public boolean isMarginRelative() {
throw new RuntimeException("Stub!");
}
public void setLayoutDirection(int layoutDirection) {
throw new RuntimeException("Stub!");
}
public int getLayoutDirection() {
throw new RuntimeException("Stub!");
}
@Override
public void resolveLayoutDirection(int layoutDirection) {
throw new RuntimeException("Stub!");
}
public boolean isLayoutRtl() {
throw new RuntimeException("Stub!");
}
@Override
public void onDebugDraw(View view, Canvas canvas, Paint paint) {
throw new RuntimeException("Stub!");
}
// /** @hide */
// @Override
// protected void encodeProperties(@NonNull ViewHierarchyEncoder encoder) {
// throw new RuntimeException("Stub!");
// }
}
static class ChildListForAccessibility {
public static ChildListForAccessibility obtain(ViewGroup parent, boolean sort) {
throw new RuntimeException("Stub!");
}
public void recycle() {
throw new RuntimeException("Stub!");
}
public int getChildCount() {
throw new RuntimeException("Stub!");
}
public View getChildAt(int index) {
throw new RuntimeException("Stub!");
}
}
static class ViewLocationHolder implements Comparable<ViewLocationHolder> {
public static final int COMPARISON_STRATEGY_STRIPE = 1;
public static final int COMPARISON_STRATEGY_LOCATION = 2;
public View mView;
public static ViewLocationHolder obtain(ViewGroup root, View view) {
throw new RuntimeException("Stub!");
}
public static void setComparisonStrategy(int strategy) {
throw new RuntimeException("Stub!");
}
public void recycle() {
throw new RuntimeException("Stub!");
}
@Override
public int compareTo(ViewLocationHolder another) {
throw new RuntimeException("Stub!");
}
}
// /** @hide */
// @Override
// protected void encodeProperties(@NonNull ViewHierarchyEncoder encoder) {
// throw new RuntimeException("Stub!");
// }
/** @hide */
// @Override
public final void onDescendantUnbufferedRequested() {
throw new RuntimeException("Stub!");
}
// @Override
// public void dispatchCreateViewTranslationRequest(@NonNull Map<AutofillId, long[]> viewIds,
// @NonNull int[] supportedFormats,
// @Nullable TranslationCapability capability,
// @NonNull List<ViewTranslationRequest> requests) {
// throw new RuntimeException("Stub!");
// }
// @Nullable
// @Override
// public OnBackInvokedDispatcher findOnBackInvokedDispatcherForChild(@NonNull View child,
// @NonNull View requester) {
// throw new RuntimeException("Stub!");
// }
@Override
public void setRequestedFrameRate(float frameRate) {
throw new RuntimeException("Stub!");
}
public void propagateRequestedFrameRate(float frameRate, boolean forceOverride) {
throw new RuntimeException("Stub!");
}
@Override
void overrideFrameRate(float frameRate, boolean forceOverride) {
throw new RuntimeException("Stub!");
}
}