ReactScrollView.smali
.class public Lcom/facebook/react/views/scroll/ReactScrollView;
.super Landroid/widget/ScrollView;
.source "SourceFile"
# interfaces
.implements Lcom/facebook/react/uimanager/ReactClippingViewGroup;
.implements Landroid/view/ViewGroup$OnHierarchyChangeListener;
.implements Landroid/view/View$OnLayoutChangeListener;
# static fields
.field private static final CONTENT_OFFSET_LEFT:Ljava/lang/String; = "contentOffsetLeft"
.field private static final CONTENT_OFFSET_TOP:Ljava/lang/String; = "contentOffsetTop"
.field private static sScrollerField:Ljava/lang/reflect/Field; = null
.field private static sTriedToGetScrollerField:Z = false
# instance fields
.field private mActivelyScrolling:Z
.field private mClippingRect:Landroid/graphics/Rect;
.field private mContentView:Landroid/view/View;
.field private mDecelerationRate:F
.field private mDisableIntervalMomentum:Z
.field private mDragging:Z
.field private mEndBackground:Landroid/graphics/drawable/Drawable;
.field private mEndFillColor:I
.field private mFpsListener:Lcom/facebook/react/views/scroll/FpsListener;
.field private final mOnScrollDispatchHelper:Lcom/facebook/react/views/scroll/OnScrollDispatchHelper;
.field private mOverflow:Ljava/lang/String;
.field private mPagingEnabled:Z
.field private mPostTouchRunnable:Ljava/lang/Runnable;
.field private mReactBackgroundManager:Lcom/facebook/react/views/view/ReactViewBackgroundManager;
.field private final mRect:Landroid/graphics/Rect;
.field private mRemoveClippedSubviews:Z
.field private mScrollEnabled:Z
.field private mScrollPerfTag:Ljava/lang/String;
.field private mScrollViewListeners:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List<",
"Lcom/facebook/react/views/scroll/ScrollViewListener;",
">;"
}
.end annotation
.end field
.field private final mScroller:Landroid/widget/OverScroller;
.field private mSendMomentumEvents:Z
.field private mSnapInterval:I
.field private mSnapOffsets:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List<",
"Ljava/lang/Integer;",
">;"
}
.end annotation
.end field
.field private mSnapToEnd:Z
.field private mSnapToStart:Z
.field private mStateWrapper:Lcom/facebook/react/uimanager/StateWrapper;
.field private final mVelocityHelper:Lcom/facebook/react/views/scroll/VelocityHelper;
# direct methods
.method public constructor <init>(Lcom/facebook/react/bridge/ReactContext;)V
.registers 3
const/4 v0, 0x0
.line 1
invoke-direct {p0, p1, v0}, Lcom/facebook/react/views/scroll/ReactScrollView;-><init>(Lcom/facebook/react/bridge/ReactContext;Lcom/facebook/react/views/scroll/FpsListener;)V
return-void
.end method
.method public constructor <init>(Lcom/facebook/react/bridge/ReactContext;Lcom/facebook/react/views/scroll/FpsListener;)V
.registers 4
.line 2
invoke-direct {p0, p1}, Landroid/widget/ScrollView;-><init>(Landroid/content/Context;)V
.line 3
new-instance p1, Lcom/facebook/react/views/scroll/OnScrollDispatchHelper;
invoke-direct {p1}, Lcom/facebook/react/views/scroll/OnScrollDispatchHelper;-><init>()V
iput-object p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mOnScrollDispatchHelper:Lcom/facebook/react/views/scroll/OnScrollDispatchHelper;
.line 4
new-instance p1, Lcom/facebook/react/views/scroll/VelocityHelper;
invoke-direct {p1}, Lcom/facebook/react/views/scroll/VelocityHelper;-><init>()V
iput-object p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mVelocityHelper:Lcom/facebook/react/views/scroll/VelocityHelper;
.line 5
new-instance p1, Landroid/graphics/Rect;
invoke-direct {p1}, Landroid/graphics/Rect;-><init>()V
iput-object p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mRect:Landroid/graphics/Rect;
const-string p1, "hidden"
.line 6
iput-object p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mOverflow:Ljava/lang/String;
const/4 p1, 0x0
.line 7
iput-boolean p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mPagingEnabled:Z
const/4 v0, 0x1
.line 8
iput-boolean v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mScrollEnabled:Z
.line 9
iput p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mEndFillColor:I
.line 10
iput-boolean p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mDisableIntervalMomentum:Z
.line 11
iput p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mSnapInterval:I
const p1, 0x3f7c28f6 # 0.985f
.line 12
iput p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mDecelerationRate:F
.line 13
iput-boolean v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mSnapToStart:Z
.line 14
iput-boolean v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mSnapToEnd:Z
.line 15
iput-object p2, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mFpsListener:Lcom/facebook/react/views/scroll/FpsListener;
.line 16
new-instance p1, Lcom/facebook/react/views/view/ReactViewBackgroundManager;
invoke-direct {p1, p0}, Lcom/facebook/react/views/view/ReactViewBackgroundManager;-><init>(Landroid/view/View;)V
iput-object p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mReactBackgroundManager:Lcom/facebook/react/views/view/ReactViewBackgroundManager;
.line 17
invoke-direct {p0}, Lcom/facebook/react/views/scroll/ReactScrollView;->getOverScrollerFromParent()Landroid/widget/OverScroller;
move-result-object p1
iput-object p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mScroller:Landroid/widget/OverScroller;
.line 18
invoke-virtual {p0, p0}, Landroid/view/ViewGroup;->setOnHierarchyChangeListener(Landroid/view/ViewGroup$OnHierarchyChangeListener;)V
const/high16 p1, 0x2000000
.line 19
invoke-virtual {p0, p1}, Landroid/view/View;->setScrollBarStyle(I)V
return-void
.end method
.method public static synthetic access$000(Lcom/facebook/react/views/scroll/ReactScrollView;)Z
.registers 1
iget-boolean p0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mActivelyScrolling:Z
return p0
.end method
.method public static synthetic access$002(Lcom/facebook/react/views/scroll/ReactScrollView;Z)Z
.registers 2
iput-boolean p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mActivelyScrolling:Z
return p1
.end method
.method public static synthetic access$100(Lcom/facebook/react/views/scroll/ReactScrollView;II)V
.registers 3
invoke-direct {p0, p1, p2}, Lcom/facebook/react/views/scroll/ReactScrollView;->updateStateOnScroll(II)V
return-void
.end method
.method public static synthetic access$200(Lcom/facebook/react/views/scroll/ReactScrollView;)Z
.registers 1
iget-boolean p0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mPagingEnabled:Z
return p0
.end method
.method public static synthetic access$300(Lcom/facebook/react/views/scroll/ReactScrollView;I)V
.registers 2
invoke-direct {p0, p1}, Lcom/facebook/react/views/scroll/ReactScrollView;->flingAndSnap(I)V
return-void
.end method
.method public static synthetic access$400(Lcom/facebook/react/views/scroll/ReactScrollView;)Z
.registers 1
iget-boolean p0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mSendMomentumEvents:Z
return p0
.end method
.method public static synthetic access$502(Lcom/facebook/react/views/scroll/ReactScrollView;Ljava/lang/Runnable;)Ljava/lang/Runnable;
.registers 2
iput-object p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mPostTouchRunnable:Ljava/lang/Runnable;
return-object p1
.end method
.method public static synthetic access$600(Lcom/facebook/react/views/scroll/ReactScrollView;)V
.registers 1
invoke-direct {p0}, Lcom/facebook/react/views/scroll/ReactScrollView;->disableFpsListener()V
return-void
.end method
.method private disableFpsListener()V
.registers 3
.line 1
invoke-direct {p0}, Lcom/facebook/react/views/scroll/ReactScrollView;->isScrollPerfLoggingEnabled()Z
move-result v0
if-eqz v0, :cond_17
.line 2
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mFpsListener:Lcom/facebook/react/views/scroll/FpsListener;
invoke-static {v0}, Lcom/facebook/infer/annotation/Assertions;->assertNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 3
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mScrollPerfTag:Ljava/lang/String;
invoke-static {v0}, Lcom/facebook/infer/annotation/Assertions;->assertNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 4
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mFpsListener:Lcom/facebook/react/views/scroll/FpsListener;
iget-object v1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mScrollPerfTag:Ljava/lang/String;
invoke-interface {v0, v1}, Lcom/facebook/react/views/scroll/FpsListener;->disable(Ljava/lang/String;)V
:cond_17
return-void
.end method
.method private enableFpsListener()V
.registers 3
.line 1
invoke-direct {p0}, Lcom/facebook/react/views/scroll/ReactScrollView;->isScrollPerfLoggingEnabled()Z
move-result v0
if-eqz v0, :cond_17
.line 2
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mFpsListener:Lcom/facebook/react/views/scroll/FpsListener;
invoke-static {v0}, Lcom/facebook/infer/annotation/Assertions;->assertNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 3
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mScrollPerfTag:Ljava/lang/String;
invoke-static {v0}, Lcom/facebook/infer/annotation/Assertions;->assertNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 4
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mFpsListener:Lcom/facebook/react/views/scroll/FpsListener;
iget-object v1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mScrollPerfTag:Ljava/lang/String;
invoke-interface {v0, v1}, Lcom/facebook/react/views/scroll/FpsListener;->enable(Ljava/lang/String;)V
:cond_17
return-void
.end method
.method private flingAndSnap(I)V
.registers 19
move-object/from16 v0, p0
.line 1
invoke-virtual/range {p0 .. p0}, Landroid/view/ViewGroup;->getChildCount()I
move-result v1
if-gtz v1, :cond_9
return-void
.line 2
:cond_9
iget v1, v0, Lcom/facebook/react/views/scroll/ReactScrollView;->mSnapInterval:I
if-nez v1, :cond_15
iget-object v1, v0, Lcom/facebook/react/views/scroll/ReactScrollView;->mSnapOffsets:Ljava/util/List;
if-nez v1, :cond_15
.line 3
invoke-direct/range {p0 .. p1}, Lcom/facebook/react/views/scroll/ReactScrollView;->smoothScrollAndSnap(I)V
return-void
.line 4
:cond_15
invoke-direct/range {p0 .. p0}, Lcom/facebook/react/views/scroll/ReactScrollView;->getMaxScrollY()I
move-result v1
.line 5
invoke-direct/range {p0 .. p1}, Lcom/facebook/react/views/scroll/ReactScrollView;->predictFinalScrollPosition(I)I
move-result v2
.line 6
iget-boolean v3, v0, Lcom/facebook/react/views/scroll/ReactScrollView;->mDisableIntervalMomentum:Z
if-eqz v3, :cond_25
.line 7
invoke-virtual/range {p0 .. p0}, Landroid/view/View;->getScrollY()I
move-result v2
.line 8
:cond_25
invoke-virtual/range {p0 .. p0}, Landroid/view/View;->getHeight()I
move-result v3
invoke-virtual/range {p0 .. p0}, Landroid/view/View;->getPaddingBottom()I
move-result v4
sub-int/2addr v3, v4
invoke-virtual/range {p0 .. p0}, Landroid/view/View;->getPaddingTop()I
move-result v4
sub-int/2addr v3, v4
.line 9
iget-object v4, v0, Lcom/facebook/react/views/scroll/ReactScrollView;->mSnapOffsets:Ljava/util/List;
const/4 v5, 0x1
const/4 v6, 0x0
if-eqz v4, :cond_80
.line 10
invoke-interface {v4, v6}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v4
check-cast v4, Ljava/lang/Integer;
invoke-virtual {v4}, Ljava/lang/Integer;->intValue()I
move-result v4
.line 11
iget-object v7, v0, Lcom/facebook/react/views/scroll/ReactScrollView;->mSnapOffsets:Ljava/util/List;
invoke-interface {v7}, Ljava/util/List;->size()I
move-result v8
sub-int/2addr v8, v5
invoke-interface {v7, v8}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v7
check-cast v7, Ljava/lang/Integer;
invoke-virtual {v7}, Ljava/lang/Integer;->intValue()I
move-result v7
const/4 v8, 0x0
const/4 v9, 0x0
move v10, v1
.line 12
:goto_57
iget-object v11, v0, Lcom/facebook/react/views/scroll/ReactScrollView;->mSnapOffsets:Ljava/util/List;
invoke-interface {v11}, Ljava/util/List;->size()I
move-result v11
if-ge v8, v11, :cond_9d
.line 13
iget-object v11, v0, Lcom/facebook/react/views/scroll/ReactScrollView;->mSnapOffsets:Ljava/util/List;
invoke-interface {v11, v8}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v11
check-cast v11, Ljava/lang/Integer;
invoke-virtual {v11}, Ljava/lang/Integer;->intValue()I
move-result v11
if-gt v11, v2, :cond_74
sub-int v12, v2, v11
sub-int v13, v2, v9
if-ge v12, v13, :cond_74
move v9, v11
:cond_74
if-lt v11, v2, :cond_7d
sub-int v12, v11, v2
sub-int v13, v10, v2
if-ge v12, v13, :cond_7d
move v10, v11
:cond_7d
add-int/lit8 v8, v8, 0x1
goto :goto_57
.line 14
:cond_80
invoke-direct/range {p0 .. p0}, Lcom/facebook/react/views/scroll/ReactScrollView;->getSnapInterval()I
move-result v4
int-to-double v7, v4
int-to-double v9, v2
div-double/2addr v9, v7
.line 15
invoke-static {v9, v10}, Ljava/lang/Math;->floor(D)D
move-result-wide v11
mul-double v11, v11, v7
double-to-int v4, v11
.line 16
invoke-static {v9, v10}, Ljava/lang/Math;->ceil(D)D
move-result-wide v9
mul-double v9, v9, v7
double-to-int v7, v9
invoke-static {v7, v1}, Ljava/lang/Math;->min(II)I
move-result v10
const/4 v7, 0x0
move v7, v1
move v9, v4
const/4 v4, 0x0
:cond_9d
sub-int v8, v2, v9
sub-int v11, v10, v2
if-ge v8, v11, :cond_a5
move v12, v9
goto :goto_a6
:cond_a5
move v12, v10
.line 17
:goto_a6
iget-boolean v13, v0, Lcom/facebook/react/views/scroll/ReactScrollView;->mSnapToEnd:Z
if-nez v13, :cond_b6
if-lt v2, v7, :cond_b6
.line 18
invoke-virtual/range {p0 .. p0}, Landroid/view/View;->getScrollY()I
move-result v4
if-lt v4, v7, :cond_b3
goto :goto_c4
:cond_b3
:goto_b3
move/from16 v2, p1
goto :goto_df
.line 19
:cond_b6
iget-boolean v7, v0, Lcom/facebook/react/views/scroll/ReactScrollView;->mSnapToStart:Z
if-nez v7, :cond_c6
if-gt v2, v4, :cond_c6
.line 20
invoke-virtual/range {p0 .. p0}, Landroid/view/View;->getScrollY()I
move-result v7
if-gt v7, v4, :cond_c3
goto :goto_c4
:cond_c3
move v2, v4
:goto_c4
move v7, v2
goto :goto_b3
:cond_c6
const-wide/high16 v13, 0x4024000000000000L # 10.0
if-lez p1, :cond_d2
int-to-double v7, v11
mul-double v7, v7, v13
double-to-int v2, v7
add-int v2, p1, v2
move v7, v10
goto :goto_df
:cond_d2
if-gez p1, :cond_dc
int-to-double v7, v8
mul-double v7, v7, v13
double-to-int v2, v7
sub-int v2, p1, v2
move v7, v9
goto :goto_df
:cond_dc
move/from16 v2, p1
move v7, v12
.line 21
:goto_df
invoke-static {v6, v7}, Ljava/lang/Math;->max(II)I
move-result v4
invoke-static {v4, v1}, Ljava/lang/Math;->min(II)I
move-result v14
.line 22
iget-object v6, v0, Lcom/facebook/react/views/scroll/ReactScrollView;->mScroller:Landroid/widget/OverScroller;
if-eqz v6, :cond_118
.line 23
iput-boolean v5, v0, Lcom/facebook/react/views/scroll/ReactScrollView;->mActivelyScrolling:Z
.line 24
invoke-virtual/range {p0 .. p0}, Landroid/view/View;->getScrollX()I
move-result v7
.line 25
invoke-virtual/range {p0 .. p0}, Landroid/view/View;->getScrollY()I
move-result v8
const/4 v9, 0x0
if-eqz v2, :cond_f9
goto :goto_ff
.line 26
:cond_f9
invoke-virtual/range {p0 .. p0}, Landroid/view/View;->getScrollY()I
move-result v2
sub-int v2, v14, v2
:goto_ff
move v10, v2
const/4 v11, 0x0
const/4 v12, 0x0
const/4 v15, 0x0
if-eqz v14, :cond_10c
if-ne v14, v1, :cond_108
goto :goto_10c
:cond_108
const/4 v1, 0x0
const/16 v16, 0x0
goto :goto_110
.line 27
:cond_10c
:goto_10c
div-int/lit8 v3, v3, 0x2
move/from16 v16, v3
:goto_110
move v13, v14
.line 28
invoke-virtual/range {v6 .. v16}, Landroid/widget/OverScroller;->fling(IIIIIIIIII)V
.line 29
invoke-virtual/range {p0 .. p0}, Landroid/view/View;->postInvalidateOnAnimation()V
goto :goto_11f
.line 30
:cond_118
invoke-virtual/range {p0 .. p0}, Landroid/view/View;->getScrollX()I
move-result v1
invoke-virtual {v0, v1, v14}, Lcom/facebook/react/views/scroll/ReactScrollView;->reactSmoothScrollTo(II)V
:goto_11f
return-void
.end method
.method private getMaxScrollY()I
.registers 4
.line 1
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mContentView:Landroid/view/View;
invoke-virtual {v0}, Landroid/view/View;->getHeight()I
move-result v0
.line 2
invoke-virtual {p0}, Landroid/view/View;->getHeight()I
move-result v1
invoke-virtual {p0}, Landroid/view/View;->getPaddingBottom()I
move-result v2
sub-int/2addr v1, v2
invoke-virtual {p0}, Landroid/view/View;->getPaddingTop()I
move-result v2
sub-int/2addr v1, v2
sub-int/2addr v0, v1
const/4 v1, 0x0
.line 3
invoke-static {v1, v0}, Ljava/lang/Math;->max(II)I
move-result v0
return v0
.end method
.method private getOverScrollerFromParent()Landroid/widget/OverScroller;
.registers 5
.line 1
sget-boolean v0, Lcom/facebook/react/views/scroll/ReactScrollView;->sTriedToGetScrollerField:Z
const-string v1, "ReactNative"
if-nez v0, :cond_1c
const/4 v0, 0x1
.line 2
sput-boolean v0, Lcom/facebook/react/views/scroll/ReactScrollView;->sTriedToGetScrollerField:Z
.line 3
:try_start_9
const-class v2, Landroid/widget/ScrollView;
const-string v3, "mScroller"
invoke-virtual {v2, v3}, Ljava/lang/Class;->getDeclaredField(Ljava/lang/String;)Ljava/lang/reflect/Field;
move-result-object v2
sput-object v2, Lcom/facebook/react/views/scroll/ReactScrollView;->sScrollerField:Ljava/lang/reflect/Field;
.line 4
invoke-virtual {v2, v0}, Ljava/lang/reflect/AccessibleObject;->setAccessible(Z)V
:try_end_16
.catch Ljava/lang/NoSuchFieldException; {:try_start_9 .. :try_end_16} :catch_17
goto :goto_1c
:catch_17
const-string v0, "Failed to get mScroller field for ScrollView! This app will exhibit the bounce-back scrolling bug :("
.line 5
invoke-static {v1, v0}, Lcom/facebook/common/logging/FLog;->w(Ljava/lang/String;Ljava/lang/String;)V
.line 6
:cond_1c
:goto_1c
sget-object v0, Lcom/facebook/react/views/scroll/ReactScrollView;->sScrollerField:Ljava/lang/reflect/Field;
const/4 v2, 0x0
if-eqz v0, :cond_3c
.line 7
:try_start_21
invoke-virtual {v0, p0}, Ljava/lang/reflect/Field;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
.line 8
instance-of v3, v0, Landroid/widget/OverScroller;
if-eqz v3, :cond_2d
.line 9
check-cast v0, Landroid/widget/OverScroller;
move-object v2, v0
goto :goto_3c
:cond_2d
const-string v0, "Failed to cast mScroller field in ScrollView (probably due to OEM changes to AOSP)! This app will exhibit the bounce-back scrolling bug :("
.line 10
invoke-static {v1, v0}, Lcom/facebook/common/logging/FLog;->w(Ljava/lang/String;Ljava/lang/String;)V
:try_end_32
.catch Ljava/lang/IllegalAccessException; {:try_start_21 .. :try_end_32} :catch_33
goto :goto_3c
:catch_33
move-exception v0
.line 11
new-instance v1, Ljava/lang/RuntimeException;
const-string v2, "Failed to get mScroller from ScrollView!"
invoke-direct {v1, v2, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
:cond_3c
:goto_3c
return-object v2
.end method
.method private getSnapInterval()I
.registers 2
.line 1
iget v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mSnapInterval:I
if-eqz v0, :cond_5
return v0
.line 2
:cond_5
invoke-virtual {p0}, Landroid/view/View;->getHeight()I
move-result v0
return v0
.end method
.method private handlePostTouchScrolling(II)V
.registers 5
.line 1
iget-boolean v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mSendMomentumEvents:Z
if-nez v0, :cond_f
iget-boolean v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mPagingEnabled:Z
if-nez v0, :cond_f
invoke-direct {p0}, Lcom/facebook/react/views/scroll/ReactScrollView;->isScrollPerfLoggingEnabled()Z
move-result v0
if-nez v0, :cond_f
return-void
.line 2
:cond_f
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mPostTouchRunnable:Ljava/lang/Runnable;
if-eqz v0, :cond_14
return-void
.line 3
:cond_14
iget-boolean v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mSendMomentumEvents:Z
if-eqz v0, :cond_1e
.line 4
invoke-direct {p0}, Lcom/facebook/react/views/scroll/ReactScrollView;->enableFpsListener()V
.line 5
invoke-static {p0, p1, p2}, Lcom/facebook/react/views/scroll/ReactScrollViewHelper;->emitScrollMomentumBeginEvent(Landroid/view/ViewGroup;II)V
:cond_1e
const/4 p1, 0x0
.line 6
iput-boolean p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mActivelyScrolling:Z
.line 7
new-instance p1, Lcom/facebook/react/views/scroll/ReactScrollView$1;
invoke-direct {p1, p0}, Lcom/facebook/react/views/scroll/ReactScrollView$1;-><init>(Lcom/facebook/react/views/scroll/ReactScrollView;)V
iput-object p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mPostTouchRunnable:Ljava/lang/Runnable;
const-wide/16 v0, 0x14
.line 8
sget-object p2, Landroidx/core/view/y;->a:Ljava/util/WeakHashMap;
.line 9
invoke-static {p0, p1, v0, v1}, Landroidx/core/view/y$c;->n(Landroid/view/View;Ljava/lang/Runnable;J)V
return-void
.end method
.method private isScrollPerfLoggingEnabled()Z
.registers 2
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mFpsListener:Lcom/facebook/react/views/scroll/FpsListener;
if-eqz v0, :cond_10
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mScrollPerfTag:Ljava/lang/String;
if-eqz v0, :cond_10
invoke-virtual {v0}, Ljava/lang/String;->isEmpty()Z
move-result v0
if-nez v0, :cond_10
const/4 v0, 0x1
goto :goto_11
:cond_10
const/4 v0, 0x0
:goto_11
return v0
.end method
.method private predictFinalScrollPosition(I)I
.registers 14
.line 1
new-instance v11, Landroid/widget/OverScroller;
invoke-virtual {p0}, Landroid/view/View;->getContext()Landroid/content/Context;
move-result-object v0
invoke-direct {v11, v0}, Landroid/widget/OverScroller;-><init>(Landroid/content/Context;)V
.line 2
iget v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mDecelerationRate:F
const/high16 v1, 0x3f800000 # 1.0f
sub-float/2addr v1, v0
invoke-virtual {v11, v1}, Landroid/widget/OverScroller;->setFriction(F)V
.line 3
invoke-direct {p0}, Lcom/facebook/react/views/scroll/ReactScrollView;->getMaxScrollY()I
move-result v8
.line 4
invoke-virtual {p0}, Landroid/view/View;->getHeight()I
move-result v0
invoke-virtual {p0}, Landroid/view/View;->getPaddingBottom()I
move-result v1
sub-int/2addr v0, v1
invoke-virtual {p0}, Landroid/view/View;->getPaddingTop()I
move-result v1
sub-int/2addr v0, v1
.line 5
invoke-virtual {p0}, Landroid/view/View;->getScrollX()I
move-result v1
.line 6
invoke-virtual {p0}, Landroid/view/View;->getScrollY()I
move-result v2
div-int/lit8 v10, v0, 0x2
const/4 v3, 0x0
const/4 v5, 0x0
const/4 v6, 0x0
const/4 v7, 0x0
const/4 v9, 0x0
move-object v0, v11
move v4, p1
.line 7
invoke-virtual/range {v0 .. v10}, Landroid/widget/OverScroller;->fling(IIIIIIIIII)V
.line 8
invoke-virtual {v11}, Landroid/widget/OverScroller;->getFinalY()I
move-result p1
return p1
.end method
.method private scrollToChild(Landroid/view/View;)V
.registers 3
.line 1
new-instance v0, Landroid/graphics/Rect;
invoke-direct {v0}, Landroid/graphics/Rect;-><init>()V
.line 2
invoke-virtual {p1, v0}, Landroid/view/View;->getDrawingRect(Landroid/graphics/Rect;)V
.line 3
invoke-virtual {p0, p1, v0}, Landroid/view/ViewGroup;->offsetDescendantRectToMyCoords(Landroid/view/View;Landroid/graphics/Rect;)V
.line 4
invoke-virtual {p0, v0}, Landroid/widget/ScrollView;->computeScrollDeltaToGetChildRectOnScreen(Landroid/graphics/Rect;)I
move-result p1
if-eqz p1, :cond_15
const/4 v0, 0x0
.line 5
invoke-virtual {p0, v0, p1}, Landroid/view/View;->scrollBy(II)V
:cond_15
return-void
.end method
.method private smoothScrollAndSnap(I)V
.registers 13
.line 1
invoke-direct {p0}, Lcom/facebook/react/views/scroll/ReactScrollView;->getSnapInterval()I
move-result v0
int-to-double v0, v0
.line 2
invoke-virtual {p0}, Landroid/view/View;->getScrollY()I
move-result v2
int-to-double v2, v2
.line 3
invoke-direct {p0, p1}, Lcom/facebook/react/views/scroll/ReactScrollView;->predictFinalScrollPosition(I)I
move-result v4
int-to-double v4, v4
div-double v6, v2, v0
.line 4
invoke-static {v6, v7}, Ljava/lang/Math;->floor(D)D
move-result-wide v8
double-to-int v8, v8
.line 5
invoke-static {v6, v7}, Ljava/lang/Math;->ceil(D)D
move-result-wide v9
double-to-int v9, v9
.line 6
invoke-static {v6, v7}, Ljava/lang/Math;->round(D)J
move-result-wide v6
long-to-int v7, v6
div-double/2addr v4, v0
.line 7
invoke-static {v4, v5}, Ljava/lang/Math;->round(D)J
move-result-wide v4
long-to-int v5, v4
if-lez p1, :cond_2d
if-ne v9, v8, :cond_2d
add-int/lit8 v9, v9, 0x1
goto :goto_33
:cond_2d
if-gez p1, :cond_33
if-ne v8, v9, :cond_33
add-int/lit8 v8, v8, -0x1
:cond_33
:goto_33
if-lez p1, :cond_3b
if-ge v7, v9, :cond_3b
if-le v5, v8, :cond_3b
move v7, v9
goto :goto_42
:cond_3b
if-gez p1, :cond_42
if-le v7, v8, :cond_42
if-ge v5, v9, :cond_42
move v7, v8
:cond_42
:goto_42
int-to-double v4, v7
mul-double v4, v4, v0
cmpl-double p1, v4, v2
if-eqz p1, :cond_54
const/4 p1, 0x1
.line 8
iput-boolean p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mActivelyScrolling:Z
.line 9
invoke-virtual {p0}, Landroid/view/View;->getScrollX()I
move-result p1
double-to-int v0, v4
invoke-virtual {p0, p1, v0}, Lcom/facebook/react/views/scroll/ReactScrollView;->reactSmoothScrollTo(II)V
:cond_54
return-void
.end method
.method private updateStateOnScroll(II)V
.registers 6
.line 1
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mStateWrapper:Lcom/facebook/react/uimanager/StateWrapper;
if-nez v0, :cond_5
return-void
.line 2
:cond_5
new-instance v0, Lcom/facebook/react/bridge/WritableNativeMap;
invoke-direct {v0}, Lcom/facebook/react/bridge/WritableNativeMap;-><init>()V
int-to-float p1, p1
.line 3
invoke-static {p1}, Lcom/facebook/react/uimanager/PixelUtil;->toDIPFromPixel(F)F
move-result p1
float-to-double v1, p1
const-string p1, "contentOffsetLeft"
invoke-interface {v0, p1, v1, v2}, Lcom/facebook/react/bridge/WritableMap;->putDouble(Ljava/lang/String;D)V
int-to-float p1, p2
.line 4
invoke-static {p1}, Lcom/facebook/react/uimanager/PixelUtil;->toDIPFromPixel(F)F
move-result p1
float-to-double p1, p1
const-string v1, "contentOffsetTop"
invoke-interface {v0, v1, p1, p2}, Lcom/facebook/react/bridge/WritableMap;->putDouble(Ljava/lang/String;D)V
.line 5
iget-object p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mStateWrapper:Lcom/facebook/react/uimanager/StateWrapper;
invoke-interface {p1, v0}, Lcom/facebook/react/uimanager/StateWrapper;->updateState(Lcom/facebook/react/bridge/WritableMap;)V
return-void
.end method
# virtual methods
.method public addScrollViewListener(Lcom/facebook/react/views/scroll/ScrollViewListener;)V
.registers 3
.line 1
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mScrollViewListeners:Ljava/util/List;
if-nez v0, :cond_b
.line 2
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mScrollViewListeners:Ljava/util/List;
.line 3
:cond_b
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mScrollViewListeners:Ljava/util/List;
invoke-interface {v0, p1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
return-void
.end method
.method public draw(Landroid/graphics/Canvas;)V
.registers 7
.line 1
iget v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mEndFillColor:I
if-eqz v0, :cond_2f
const/4 v0, 0x0
.line 2
invoke-virtual {p0, v0}, Landroid/view/ViewGroup;->getChildAt(I)Landroid/view/View;
move-result-object v1
.line 3
iget-object v2, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mEndBackground:Landroid/graphics/drawable/Drawable;
if-eqz v2, :cond_2f
if-eqz v1, :cond_2f
invoke-virtual {v1}, Landroid/view/View;->getBottom()I
move-result v2
invoke-virtual {p0}, Landroid/view/View;->getHeight()I
move-result v3
if-ge v2, v3, :cond_2f
.line 4
iget-object v2, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mEndBackground:Landroid/graphics/drawable/Drawable;
invoke-virtual {v1}, Landroid/view/View;->getBottom()I
move-result v1
invoke-virtual {p0}, Landroid/view/View;->getWidth()I
move-result v3
invoke-virtual {p0}, Landroid/view/View;->getHeight()I
move-result v4
invoke-virtual {v2, v0, v1, v3, v4}, Landroid/graphics/drawable/Drawable;->setBounds(IIII)V
.line 5
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mEndBackground:Landroid/graphics/drawable/Drawable;
invoke-virtual {v0, p1}, Landroid/graphics/drawable/Drawable;->draw(Landroid/graphics/Canvas;)V
.line 6
:cond_2f
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mRect:Landroid/graphics/Rect;
invoke-virtual {p0, v0}, Landroid/view/View;->getDrawingRect(Landroid/graphics/Rect;)V
.line 7
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mOverflow:Ljava/lang/String;
invoke-static {v0}, Ljava/util/Objects;->requireNonNull(Ljava/lang/Object;)Ljava/lang/Object;
const-string/jumbo v1, "visible"
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_47
.line 8
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mRect:Landroid/graphics/Rect;
invoke-virtual {p1, v0}, Landroid/graphics/Canvas;->clipRect(Landroid/graphics/Rect;)Z
.line 9
:cond_47
invoke-super {p0, p1}, Landroid/widget/ScrollView;->draw(Landroid/graphics/Canvas;)V
return-void
.end method
.method public executeKeyEvent(Landroid/view/KeyEvent;)Z
.registers 4
.line 1
invoke-virtual {p1}, Landroid/view/KeyEvent;->getKeyCode()I
move-result v0
.line 2
iget-boolean v1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mScrollEnabled:Z
if-nez v1, :cond_12
const/16 v1, 0x13
if-eq v0, v1, :cond_10
const/16 v1, 0x14
if-ne v0, v1, :cond_12
:cond_10
const/4 p1, 0x0
return p1
.line 3
:cond_12
invoke-super {p0, p1}, Landroid/widget/ScrollView;->executeKeyEvent(Landroid/view/KeyEvent;)Z
move-result p1
return p1
.end method
.method public flashScrollIndicators()V
.registers 1
invoke-virtual {p0}, Landroid/view/View;->awakenScrollBars()Z
return-void
.end method
.method public fling(I)V
.registers 13
.line 1
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mOnScrollDispatchHelper:Lcom/facebook/react/views/scroll/OnScrollDispatchHelper;
invoke-virtual {v0}, Lcom/facebook/react/views/scroll/OnScrollDispatchHelper;->getYFlingVelocity()F
move-result v0
invoke-static {v0}, Ljava/lang/Math;->signum(F)F
move-result v0
const/4 v1, 0x0
cmpl-float v1, v0, v1
if-nez v1, :cond_14
int-to-float v0, p1
.line 2
invoke-static {v0}, Ljava/lang/Math;->signum(F)F
move-result v0
.line 3
:cond_14
invoke-static {p1}, Ljava/lang/Math;->abs(I)I
move-result p1
int-to-float p1, p1
mul-float p1, p1, v0
float-to-int p1, p1
.line 4
iget-boolean v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mPagingEnabled:Z
if-eqz v0, :cond_24
.line 5
invoke-direct {p0, p1}, Lcom/facebook/react/views/scroll/ReactScrollView;->flingAndSnap(I)V
goto :goto_5b
.line 6
:cond_24
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mScroller:Landroid/widget/OverScroller;
if-eqz v0, :cond_58
.line 7
invoke-virtual {p0}, Landroid/view/View;->getHeight()I
move-result v0
invoke-virtual {p0}, Landroid/view/View;->getPaddingBottom()I
move-result v1
sub-int/2addr v0, v1
invoke-virtual {p0}, Landroid/view/View;->getPaddingTop()I
move-result v1
sub-int/2addr v0, v1
.line 8
iget-object v1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mScroller:Landroid/widget/OverScroller;
.line 9
invoke-virtual {p0}, Landroid/view/View;->getScrollX()I
move-result v2
.line 10
invoke-virtual {p0}, Landroid/view/View;->getScrollY()I
move-result v3
const/4 v4, 0x0
const/4 v5, 0x0
const/4 v6, 0x0
const/4 v7, 0x0
const v8, 0x7fffffff
const/4 v9, 0x0
div-int/lit8 v10, v0, 0x2
move-object v0, v1
move v1, v2
move v2, v3
move v3, v4
move v4, p1
.line 11
invoke-virtual/range {v0 .. v10}, Landroid/widget/OverScroller;->fling(IIIIIIIIII)V
.line 12
sget-object v0, Landroidx/core/view/y;->a:Ljava/util/WeakHashMap;
.line 13
invoke-static {p0}, Landroidx/core/view/y$c;->k(Landroid/view/View;)V
goto :goto_5b
.line 14
:cond_58
invoke-super {p0, p1}, Landroid/widget/ScrollView;->fling(I)V
:goto_5b
const/4 v0, 0x0
.line 15
invoke-direct {p0, v0, p1}, Lcom/facebook/react/views/scroll/ReactScrollView;->handlePostTouchScrolling(II)V
return-void
.end method
.method public getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;)Z
.registers 5
.line 1
sget-boolean v0, Lcom/facebook/react/config/ReactFeatureFlags;->clipChildRectsIfOverflowIsHidden:Z
if-eqz v0, :cond_b
.line 2
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mOverflow:Ljava/lang/String;
invoke-static {p1, p2, p3, p0, v0}, Lcom/facebook/react/uimanager/ReactClippingViewGroupHelper;->getChildVisibleRectHelper(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;Landroid/view/View;Ljava/lang/String;)Z
move-result p1
goto :goto_f
.line 3
:cond_b
invoke-super {p0, p1, p2, p3}, Landroid/view/ViewGroup;->getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;)Z
move-result p1
:goto_f
return p1
.end method
.method public getClippingRect(Landroid/graphics/Rect;)V
.registers 3
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mClippingRect:Landroid/graphics/Rect;
invoke-static {v0}, Lcom/facebook/infer/annotation/Assertions;->assertNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/graphics/Rect;
invoke-virtual {p1, v0}, Landroid/graphics/Rect;->set(Landroid/graphics/Rect;)V
return-void
.end method
.method public getRemoveClippedSubviews()Z
.registers 2
iget-boolean v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mRemoveClippedSubviews:Z
return v0
.end method
.method public onAttachedToWindow()V
.registers 2
.line 1
invoke-super {p0}, Landroid/view/ViewGroup;->onAttachedToWindow()V
.line 2
iget-boolean v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mRemoveClippedSubviews:Z
if-eqz v0, :cond_a
.line 3
invoke-virtual {p0}, Lcom/facebook/react/views/scroll/ReactScrollView;->updateClippingRect()V
:cond_a
return-void
.end method
.method public onChildViewAdded(Landroid/view/View;Landroid/view/View;)V
.registers 3
.line 1
iput-object p2, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mContentView:Landroid/view/View;
.line 2
invoke-virtual {p2, p0}, Landroid/view/View;->addOnLayoutChangeListener(Landroid/view/View$OnLayoutChangeListener;)V
return-void
.end method
.method public onChildViewRemoved(Landroid/view/View;Landroid/view/View;)V
.registers 3
.line 1
iget-object p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mContentView:Landroid/view/View;
invoke-virtual {p1, p0}, Landroid/view/View;->removeOnLayoutChangeListener(Landroid/view/View$OnLayoutChangeListener;)V
const/4 p1, 0x0
.line 2
iput-object p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mContentView:Landroid/view/View;
return-void
.end method
.method public onInterceptTouchEvent(Landroid/view/MotionEvent;)Z
.registers 5
.line 1
iget-boolean v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mScrollEnabled:Z
const/4 v1, 0x0
if-nez v0, :cond_6
return v1
.line 2
:cond_6
:try_start_6
invoke-super {p0, p1}, Landroid/widget/ScrollView;->onInterceptTouchEvent(Landroid/view/MotionEvent;)Z
move-result v0
if-eqz v0, :cond_21
.line 3
invoke-static {p0, p1}, Lcom/facebook/react/uimanager/events/NativeGestureUtil;->notifyNativeGestureStarted(Landroid/view/View;Landroid/view/MotionEvent;)V
.line 4
invoke-static {p0}, Lcom/facebook/react/views/scroll/ReactScrollViewHelper;->emitScrollBeginDragEvent(Landroid/view/ViewGroup;)V
const/4 p1, 0x1
.line 5
iput-boolean p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mDragging:Z
.line 6
invoke-direct {p0}, Lcom/facebook/react/views/scroll/ReactScrollView;->enableFpsListener()V
:try_end_18
.catch Ljava/lang/IllegalArgumentException; {:try_start_6 .. :try_end_18} :catch_19
return p1
:catch_19
move-exception p1
const-string v0, "ReactNative"
const-string v2, "Error intercepting touch event."
.line 7
invoke-static {v0, v2, p1}, Lcom/facebook/common/logging/FLog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
:cond_21
return v1
.end method
.method public onLayout(ZIIII)V
.registers 6
invoke-virtual {p0}, Landroid/view/View;->getScrollX()I
move-result p1
invoke-virtual {p0}, Landroid/view/View;->getScrollY()I
move-result p2
invoke-virtual {p0, p1, p2}, Lcom/facebook/react/views/scroll/ReactScrollView;->reactScrollTo(II)V
return-void
.end method
.method public onLayoutChange(Landroid/view/View;IIIIIIII)V
.registers 10
.line 1
iget-object p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mContentView:Landroid/view/View;
if-nez p1, :cond_5
return-void
.line 2
:cond_5
invoke-virtual {p0}, Landroid/view/View;->getScrollY()I
move-result p1
.line 3
invoke-direct {p0}, Lcom/facebook/react/views/scroll/ReactScrollView;->getMaxScrollY()I
move-result p2
if-le p1, p2, :cond_16
.line 4
invoke-virtual {p0}, Landroid/view/View;->getScrollX()I
move-result p1
invoke-virtual {p0, p1, p2}, Lcom/facebook/react/views/scroll/ReactScrollView;->reactScrollTo(II)V
:cond_16
return-void
.end method
.method public onMeasure(II)V
.registers 3
.line 1
invoke-static {p1, p2}, Lcom/facebook/react/uimanager/MeasureSpecAssertions;->assertExplicitMeasureSpec(II)V
.line 2
invoke-static {p1}, Landroid/view/View$MeasureSpec;->getSize(I)I
move-result p1
invoke-static {p2}, Landroid/view/View$MeasureSpec;->getSize(I)I
move-result p2
.line 3
invoke-virtual {p0, p1, p2}, Landroid/view/View;->setMeasuredDimension(II)V
return-void
.end method
.method public onOverScrolled(IIZZ)V
.registers 7
.line 1
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mScroller:Landroid/widget/OverScroller;
if-eqz v0, :cond_28
iget-object v1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mContentView:Landroid/view/View;
if-eqz v1, :cond_28
.line 2
invoke-virtual {v0}, Landroid/widget/OverScroller;->isFinished()Z
move-result v0
if-nez v0, :cond_28
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mScroller:Landroid/widget/OverScroller;
invoke-virtual {v0}, Landroid/widget/OverScroller;->getCurrY()I
move-result v0
iget-object v1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mScroller:Landroid/widget/OverScroller;
invoke-virtual {v1}, Landroid/widget/OverScroller;->getFinalY()I
move-result v1
if-eq v0, v1, :cond_28
.line 3
invoke-direct {p0}, Lcom/facebook/react/views/scroll/ReactScrollView;->getMaxScrollY()I
move-result v0
if-lt p2, v0, :cond_28
.line 4
iget-object p2, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mScroller:Landroid/widget/OverScroller;
invoke-virtual {p2}, Landroid/widget/OverScroller;->abortAnimation()V
move p2, v0
.line 5
:cond_28
invoke-super {p0, p1, p2, p3, p4}, Landroid/widget/ScrollView;->onOverScrolled(IIZZ)V
return-void
.end method
.method public onScrollChanged(IIII)V
.registers 7
.line 1
invoke-super {p0, p1, p2, p3, p4}, Landroid/view/View;->onScrollChanged(IIII)V
const/4 v0, 0x1
.line 2
iput-boolean v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mActivelyScrolling:Z
.line 3
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mOnScrollDispatchHelper:Lcom/facebook/react/views/scroll/OnScrollDispatchHelper;
invoke-virtual {v0, p1, p2}, Lcom/facebook/react/views/scroll/OnScrollDispatchHelper;->onScrollChanged(II)Z
move-result v0
if-eqz v0, :cond_24
.line 4
iget-boolean v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mRemoveClippedSubviews:Z
if-eqz v0, :cond_15
.line 5
invoke-virtual {p0}, Lcom/facebook/react/views/scroll/ReactScrollView;->updateClippingRect()V
.line 6
:cond_15
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mOnScrollDispatchHelper:Lcom/facebook/react/views/scroll/OnScrollDispatchHelper;
.line 7
invoke-virtual {v0}, Lcom/facebook/react/views/scroll/OnScrollDispatchHelper;->getXFlingVelocity()F
move-result v0
iget-object v1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mOnScrollDispatchHelper:Lcom/facebook/react/views/scroll/OnScrollDispatchHelper;
.line 8
invoke-virtual {v1}, Lcom/facebook/react/views/scroll/OnScrollDispatchHelper;->getYFlingVelocity()F
move-result v1
.line 9
invoke-static {p0, v0, v1}, Lcom/facebook/react/views/scroll/ReactScrollViewHelper;->emitScrollEvent(Landroid/view/ViewGroup;FF)V
.line 10
:cond_24
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mScrollViewListeners:Ljava/util/List;
if-eqz v0, :cond_3c
.line 11
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v0
:goto_2c
invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_3c
invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lcom/facebook/react/views/scroll/ScrollViewListener;
.line 12
invoke-interface {v1, p1, p2, p3, p4}, Lcom/facebook/react/views/scroll/ScrollViewListener;->onScrollChanged(IIII)V
goto :goto_2c
:cond_3c
return-void
.end method
.method public onSizeChanged(IIII)V
.registers 5
.line 1
invoke-super {p0, p1, p2, p3, p4}, Landroid/widget/ScrollView;->onSizeChanged(IIII)V
.line 2
iget-boolean p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mRemoveClippedSubviews:Z
if-eqz p1, :cond_a
.line 3
invoke-virtual {p0}, Lcom/facebook/react/views/scroll/ReactScrollView;->updateClippingRect()V
:cond_a
return-void
.end method
.method public onTouchEvent(Landroid/view/MotionEvent;)Z
.registers 5
.line 1
iget-boolean v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mScrollEnabled:Z
const/4 v1, 0x0
if-nez v0, :cond_6
return v1
.line 2
:cond_6
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mVelocityHelper:Lcom/facebook/react/views/scroll/VelocityHelper;
invoke-virtual {v0, p1}, Lcom/facebook/react/views/scroll/VelocityHelper;->calculateVelocity(Landroid/view/MotionEvent;)V
.line 3
invoke-virtual {p1}, Landroid/view/MotionEvent;->getAction()I
move-result v0
and-int/lit16 v0, v0, 0xff
const/4 v2, 0x1
if-ne v0, v2, :cond_3f
.line 4
iget-boolean v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mDragging:Z
if-eqz v0, :cond_3f
.line 5
invoke-virtual {p0}, Landroid/view/View;->getScrollX()I
move-result v0
invoke-virtual {p0}, Landroid/view/View;->getScrollY()I
move-result v2
invoke-direct {p0, v0, v2}, Lcom/facebook/react/views/scroll/ReactScrollView;->updateStateOnScroll(II)V
.line 6
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mVelocityHelper:Lcom/facebook/react/views/scroll/VelocityHelper;
invoke-virtual {v0}, Lcom/facebook/react/views/scroll/VelocityHelper;->getXVelocity()F
move-result v0
.line 7
iget-object v2, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mVelocityHelper:Lcom/facebook/react/views/scroll/VelocityHelper;
invoke-virtual {v2}, Lcom/facebook/react/views/scroll/VelocityHelper;->getYVelocity()F
move-result v2
.line 8
invoke-static {p0, v0, v2}, Lcom/facebook/react/views/scroll/ReactScrollViewHelper;->emitScrollEndDragEvent(Landroid/view/ViewGroup;FF)V
.line 9
iput-boolean v1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mDragging:Z
.line 10
invoke-static {v0}, Ljava/lang/Math;->round(F)I
move-result v0
invoke-static {v2}, Ljava/lang/Math;->round(F)I
move-result v1
invoke-direct {p0, v0, v1}, Lcom/facebook/react/views/scroll/ReactScrollView;->handlePostTouchScrolling(II)V
.line 11
:cond_3f
invoke-super {p0, p1}, Landroid/widget/ScrollView;->onTouchEvent(Landroid/view/MotionEvent;)Z
move-result p1
return p1
.end method
.method public reactScrollTo(II)V
.registers 3
.line 1
invoke-virtual {p0, p1, p2}, Landroid/view/View;->scrollTo(II)V
.line 2
invoke-direct {p0, p1, p2}, Lcom/facebook/react/views/scroll/ReactScrollView;->updateStateOnScroll(II)V
return-void
.end method
.method public reactSmoothScrollTo(II)V
.registers 3
.line 1
invoke-virtual {p0, p1, p2}, Landroid/widget/ScrollView;->smoothScrollTo(II)V
.line 2
invoke-direct {p0, p1, p2}, Lcom/facebook/react/views/scroll/ReactScrollView;->updateStateOnScroll(II)V
return-void
.end method
.method public requestChildFocus(Landroid/view/View;Landroid/view/View;)V
.registers 3
if-eqz p2, :cond_5
.line 1
invoke-direct {p0, p2}, Lcom/facebook/react/views/scroll/ReactScrollView;->scrollToChild(Landroid/view/View;)V
.line 2
:cond_5
invoke-super {p0, p1, p2}, Landroid/widget/ScrollView;->requestChildFocus(Landroid/view/View;Landroid/view/View;)V
return-void
.end method
.method public setBackgroundColor(I)V
.registers 3
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mReactBackgroundManager:Lcom/facebook/react/views/view/ReactViewBackgroundManager;
invoke-virtual {v0, p1}, Lcom/facebook/react/views/view/ReactViewBackgroundManager;->setBackgroundColor(I)V
return-void
.end method
.method public setBorderColor(IFF)V
.registers 5
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mReactBackgroundManager:Lcom/facebook/react/views/view/ReactViewBackgroundManager;
invoke-virtual {v0, p1, p2, p3}, Lcom/facebook/react/views/view/ReactViewBackgroundManager;->setBorderColor(IFF)V
return-void
.end method
.method public setBorderRadius(F)V
.registers 3
.line 1
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mReactBackgroundManager:Lcom/facebook/react/views/view/ReactViewBackgroundManager;
invoke-virtual {v0, p1}, Lcom/facebook/react/views/view/ReactViewBackgroundManager;->setBorderRadius(F)V
return-void
.end method
.method public setBorderRadius(FI)V
.registers 4
.line 2
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mReactBackgroundManager:Lcom/facebook/react/views/view/ReactViewBackgroundManager;
invoke-virtual {v0, p1, p2}, Lcom/facebook/react/views/view/ReactViewBackgroundManager;->setBorderRadius(FI)V
return-void
.end method
.method public setBorderStyle(Ljava/lang/String;)V
.registers 3
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mReactBackgroundManager:Lcom/facebook/react/views/view/ReactViewBackgroundManager;
invoke-virtual {v0, p1}, Lcom/facebook/react/views/view/ReactViewBackgroundManager;->setBorderStyle(Ljava/lang/String;)V
return-void
.end method
.method public setBorderWidth(IF)V
.registers 4
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mReactBackgroundManager:Lcom/facebook/react/views/view/ReactViewBackgroundManager;
invoke-virtual {v0, p1, p2}, Lcom/facebook/react/views/view/ReactViewBackgroundManager;->setBorderWidth(IF)V
return-void
.end method
.method public setDecelerationRate(F)V
.registers 4
.line 1
iput p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mDecelerationRate:F
.line 2
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mScroller:Landroid/widget/OverScroller;
if-eqz v0, :cond_c
const/high16 v1, 0x3f800000 # 1.0f
sub-float/2addr v1, p1
.line 3
invoke-virtual {v0, v1}, Landroid/widget/OverScroller;->setFriction(F)V
:cond_c
return-void
.end method
.method public setDisableIntervalMomentum(Z)V
.registers 2
iput-boolean p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mDisableIntervalMomentum:Z
return-void
.end method
.method public setEndFillColor(I)V
.registers 3
.line 1
iget v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mEndFillColor:I
if-eq p1, v0, :cond_f
.line 2
iput p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mEndFillColor:I
.line 3
new-instance p1, Landroid/graphics/drawable/ColorDrawable;
iget v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mEndFillColor:I
invoke-direct {p1, v0}, Landroid/graphics/drawable/ColorDrawable;-><init>(I)V
iput-object p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mEndBackground:Landroid/graphics/drawable/Drawable;
:cond_f
return-void
.end method
.method public setOverflow(Ljava/lang/String;)V
.registers 2
.line 1
iput-object p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mOverflow:Ljava/lang/String;
.line 2
invoke-virtual {p0}, Landroid/view/View;->invalidate()V
return-void
.end method
.method public setPagingEnabled(Z)V
.registers 2
iput-boolean p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mPagingEnabled:Z
return-void
.end method
.method public setRemoveClippedSubviews(Z)V
.registers 3
if-eqz p1, :cond_d
.line 1
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mClippingRect:Landroid/graphics/Rect;
if-nez v0, :cond_d
.line 2
new-instance v0, Landroid/graphics/Rect;
invoke-direct {v0}, Landroid/graphics/Rect;-><init>()V
iput-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mClippingRect:Landroid/graphics/Rect;
.line 3
:cond_d
iput-boolean p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mRemoveClippedSubviews:Z
.line 4
invoke-virtual {p0}, Lcom/facebook/react/views/scroll/ReactScrollView;->updateClippingRect()V
return-void
.end method
.method public setScrollEnabled(Z)V
.registers 2
iput-boolean p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mScrollEnabled:Z
return-void
.end method
.method public setScrollPerfTag(Ljava/lang/String;)V
.registers 2
iput-object p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mScrollPerfTag:Ljava/lang/String;
return-void
.end method
.method public setSendMomentumEvents(Z)V
.registers 2
iput-boolean p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mSendMomentumEvents:Z
return-void
.end method
.method public setSnapInterval(I)V
.registers 2
iput p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mSnapInterval:I
return-void
.end method
.method public setSnapOffsets(Ljava/util/List;)V
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List<",
"Ljava/lang/Integer;",
">;)V"
}
.end annotation
iput-object p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mSnapOffsets:Ljava/util/List;
return-void
.end method
.method public setSnapToEnd(Z)V
.registers 2
iput-boolean p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mSnapToEnd:Z
return-void
.end method
.method public setSnapToStart(Z)V
.registers 2
iput-boolean p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mSnapToStart:Z
return-void
.end method
.method public updateClippingRect()V
.registers 3
.line 1
iget-boolean v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mRemoveClippedSubviews:Z
if-nez v0, :cond_5
return-void
.line 2
:cond_5
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mClippingRect:Landroid/graphics/Rect;
invoke-static {v0}, Lcom/facebook/infer/annotation/Assertions;->assertNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 3
iget-object v0, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mClippingRect:Landroid/graphics/Rect;
invoke-static {p0, v0}, Lcom/facebook/react/uimanager/ReactClippingViewGroupHelper;->calculateClippingRect(Landroid/view/View;Landroid/graphics/Rect;)V
const/4 v0, 0x0
.line 4
invoke-virtual {p0, v0}, Landroid/view/ViewGroup;->getChildAt(I)Landroid/view/View;
move-result-object v0
.line 5
instance-of v1, v0, Lcom/facebook/react/uimanager/ReactClippingViewGroup;
if-eqz v1, :cond_1d
.line 6
check-cast v0, Lcom/facebook/react/uimanager/ReactClippingViewGroup;
invoke-interface {v0}, Lcom/facebook/react/uimanager/ReactClippingViewGroup;->updateClippingRect()V
:cond_1d
return-void
.end method
.method public updateState(Lcom/facebook/react/uimanager/StateWrapper;)V
.registers 2
iput-object p1, p0, Lcom/facebook/react/views/scroll/ReactScrollView;->mStateWrapper:Lcom/facebook/react/uimanager/StateWrapper;
return-void
.end method