Skip to content

Commit f70abcd

Browse files
cortinicofacebook-github-bot
authored andcommitted
Add @nullable to ScrollView getChildVisibleRect offset parameter
Summary: The `offset` parameter in `getChildVisibleRect` overrides was missing the `Nullable` annotation. The Android framework contract for `ViewGroup.getChildVisibleRect(View, Rect, Point)` allows `offset` to be null, and `View.getGlobalVisibleRect(Rect)` legitimately passes null. The `Nullsafe` instrumentation injected a non-null assertion that crashed when null was passed. Changelog: [Android][Fixed] - Fix NullPointerException in ScrollView `getChildVisibleRect` when `offset` is null Reviewed By: javache Differential Revision: D107507935
1 parent 3fd8e9b commit f70abcd

3 files changed

Lines changed: 10 additions & 4 deletions

File tree

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import android.animation.ObjectAnimator;
1717
import android.animation.ValueAnimator;
18+
import android.annotation.SuppressLint;
1819
import android.content.Context;
1920
import android.graphics.Canvas;
2021
import android.graphics.Color;
@@ -1054,7 +1055,8 @@ public void getClippingRect(Rect outClippingRect) {
10541055
}
10551056

10561057
@Override
1057-
public boolean getChildVisibleRect(View child, Rect r, android.graphics.Point offset) {
1058+
@SuppressLint("NullsafeMismatch")
1059+
public boolean getChildVisibleRect(View child, Rect r, @Nullable android.graphics.Point offset) {
10581060
return super.getChildVisibleRect(child, r, offset);
10591061
}
10601062

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactNestedScrollView.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<ee631e2aaec71e0722c894a07f4f7022>>
7+
* @generated SignedSource<<73693667f092b5c8a9f5b10c479e8174>>
88
*/
99

1010
/**
@@ -23,6 +23,7 @@
2323

2424
import android.animation.ObjectAnimator;
2525
import android.animation.ValueAnimator;
26+
import android.annotation.SuppressLint;
2627
import android.content.Context;
2728
import android.graphics.Canvas;
2829
import android.graphics.Color;
@@ -807,7 +808,8 @@ public void getClippingRect(Rect outClippingRect) {
807808
}
808809

809810
@Override
810-
public boolean getChildVisibleRect(View child, Rect r, android.graphics.Point offset) {
811+
@SuppressLint("NullsafeMismatch")
812+
public boolean getChildVisibleRect(View child, Rect r, @Nullable android.graphics.Point offset) {
811813
return super.getChildVisibleRect(child, r, offset);
812814
}
813815

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import android.animation.ObjectAnimator;
1717
import android.animation.ValueAnimator;
18+
import android.annotation.SuppressLint;
1819
import android.content.Context;
1920
import android.graphics.Canvas;
2021
import android.graphics.Color;
@@ -799,7 +800,8 @@ public void getClippingRect(Rect outClippingRect) {
799800
}
800801

801802
@Override
802-
public boolean getChildVisibleRect(View child, Rect r, android.graphics.Point offset) {
803+
@SuppressLint("NullsafeMismatch")
804+
public boolean getChildVisibleRect(View child, Rect r, @Nullable android.graphics.Point offset) {
803805
return super.getChildVisibleRect(child, r, offset);
804806
}
805807

0 commit comments

Comments
 (0)