diff options
author | 2024-05-09 12:51:44 -0400 | |
---|---|---|
committer | 2024-05-16 20:21:52 +0000 | |
commit | 646174c97a5c63a86f0a0ac7454263e6b61464a6 (patch) | |
tree | 577aaf6d26f667e44ba2a366eb16a73b22a92709 | |
parent | d30667a58d6313277e991a9ff8b46a3210213c18 (diff) |
Mitigate CropView invalid Range crash
Bug: 232633995
Flag: com.android.systemui.screenshot_scroll_crop_view_crash_fix
Change-Id: I9c836c2e77eb5bff6152d27620383c22e83ae17f
-rw-r--r-- | packages/SystemUI/aconfig/systemui.aconfig | 9 | ||||
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/screenshot/scroll/CropView.java | 11 |
2 files changed, 18 insertions, 2 deletions
diff --git a/packages/SystemUI/aconfig/systemui.aconfig b/packages/SystemUI/aconfig/systemui.aconfig index a72bc8ac0365..286f3e480ec3 100644 --- a/packages/SystemUI/aconfig/systemui.aconfig +++ b/packages/SystemUI/aconfig/systemui.aconfig @@ -479,6 +479,15 @@ flag { } } +flag { + name: "screenshot_scroll_crop_view_crash_fix" + namespace: "systemui" + description: "Mitigate crash on invalid computed range in CropView" + bug: "232633995" + metadata { + purpose: PURPOSE_BUGFIX + } +} flag { name: "screenshot_private_profile_behavior_fix" diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/scroll/CropView.java b/packages/SystemUI/src/com/android/systemui/screenshot/scroll/CropView.java index 5e561cfb14a1..ee1944e0b5cf 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/scroll/CropView.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/scroll/CropView.java @@ -45,6 +45,7 @@ import androidx.customview.widget.ExploreByTouchHelper; import androidx.interpolator.view.animation.FastOutSlowInInterpolator; import com.android.internal.graphics.ColorUtils; +import com.android.systemui.Flags; import com.android.systemui.res.R; import java.util.List; @@ -378,8 +379,14 @@ public class CropView extends View { upper = 1; break; } - Log.i(TAG, "getAllowedValues: " + boundary + ", " - + "result=[lower=" + lower + ", upper=" + upper + "]"); + if (lower >= upper) { + Log.wtf(TAG, "getAllowedValues computed an invalid range " + + "[" + lower + ", " + upper + "]"); + if (Flags.screenshotScrollCropViewCrashFix()) { + lower = Math.min(lower, upper); + upper = lower; + } + } return new Range<>(lower, upper); } |