Remove `clipChildRectsIfOverflowIsHidden` feature flag and associated code

Summary:
The flag `clipChildRectsIfOverflowIsHidden` has been set to false for a little over a year. Delete it and associated callsites.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D25451696

fbshipit-source-id: a6067b2e25124f6bdef336c2ddead719dd44cca9
This commit is contained in:
Joshua Gross 2020-12-09 21:14:52 -08:00 коммит произвёл Facebook GitHub Bot
Родитель 7f0373d4ff
Коммит c1f9a4562c
5 изменённых файлов: 3 добавлений и 72 удалений

Просмотреть файл

@ -53,18 +53,6 @@ public class ReactFeatureFlags {
*/
public static boolean useViewManagerDelegatesForCommands = false;
/**
* This react flag enables a custom algorithm for the getChildVisibleRect() method in the classes
* ReactViewGroup, ReactHorizontalScrollView and ReactScrollView.
*
* <p>This new algorithm clip child rects if overflow is set to ViewProps.HIDDEN. More details in
* https://github.com/facebook/react-native/issues/23870 and
* https://github.com/facebook/react-native/pull/26334
*
* <p>The react flag is disabled by default because this is increasing ANRs (T57363204)
*/
public static boolean clipChildRectsIfOverflowIsHidden = false;
/**
* Temporary feature flat to control a fix in the transition to layoutOnlyViews TODO T61185028:
* remove this when bug is fixed

Просмотреть файл

@ -8,7 +8,6 @@
package com.facebook.react.uimanager;
import android.graphics.Rect;
import android.graphics.RectF;
import android.view.View;
import android.view.ViewParent;
import javax.annotation.concurrent.NotThreadSafe;
@ -57,51 +56,4 @@ public class ReactClippingViewGroupHelper {
}
view.getDrawingRect(outputRect);
}
public static boolean getChildVisibleRectHelper(
View child, Rect r, android.graphics.Point offset, View parent, String overflow) {
// This is based on the Android ViewGroup implementation, modified to clip child rects
// if overflow is set to ViewProps.HIDDEN. This effectively solves Issue #23870 which
// appears to have been introduced by FLAG_CLIP_CHILDREN being forced false
// regardless of whether clipping is desired.
final RectF rect = new RectF();
rect.set(r);
child.getMatrix().mapRect(rect);
final int dx = child.getLeft() - parent.getScrollX();
final int dy = child.getTop() - parent.getScrollY();
rect.offset(dx, dy);
if (offset != null) {
float[] position = new float[2];
position[0] = offset.x;
position[1] = offset.y;
child.getMatrix().mapPoints(position);
offset.x = Math.round(position[0]) + dx;
offset.y = Math.round(position[1]) + dy;
}
final int width = parent.getRight() - parent.getLeft();
final int height = parent.getBottom() - parent.getTop();
boolean rectIsVisible = true;
ViewParent grandparent = parent.getParent();
if (grandparent == null || ViewProps.HIDDEN.equals(overflow)) {
rectIsVisible = rect.intersect(0, 0, width, height);
}
r.set(
(int) Math.floor(rect.left),
(int) Math.floor(rect.top),
(int) Math.ceil(rect.right),
(int) Math.ceil(rect.bottom));
if (rectIsVisible && grandparent != null) {
rectIsVisible = grandparent.getChildVisibleRect(parent, r, offset);
}
return rectIsVisible;
}
}

Просмотреть файл

@ -34,7 +34,6 @@ import com.facebook.infer.annotation.Assertions;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.bridge.WritableNativeMap;
import com.facebook.react.common.ReactConstants;
import com.facebook.react.config.ReactFeatureFlags;
import com.facebook.react.uimanager.FabricViewStateManager;
import com.facebook.react.uimanager.MeasureSpecAssertions;
import com.facebook.react.uimanager.PixelUtil;
@ -546,9 +545,7 @@ public class ReactHorizontalScrollView extends HorizontalScrollView
@Override
public boolean getChildVisibleRect(View child, Rect r, android.graphics.Point offset) {
return ReactFeatureFlags.clipChildRectsIfOverflowIsHidden
? ReactClippingViewGroupHelper.getChildVisibleRectHelper(child, r, offset, this, mOverflow)
: super.getChildVisibleRect(child, r, offset);
return super.getChildVisibleRect(child, r, offset);
}
private int getSnapInterval() {

Просмотреть файл

@ -30,7 +30,6 @@ import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.bridge.WritableNativeMap;
import com.facebook.react.common.ReactConstants;
import com.facebook.react.config.ReactFeatureFlags;
import com.facebook.react.uimanager.FabricViewStateManager;
import com.facebook.react.uimanager.MeasureSpecAssertions;
import com.facebook.react.uimanager.PixelUtil;
@ -383,9 +382,7 @@ public class ReactScrollView extends ScrollView
@Override
public boolean getChildVisibleRect(View child, Rect r, android.graphics.Point offset) {
return ReactFeatureFlags.clipChildRectsIfOverflowIsHidden
? ReactClippingViewGroupHelper.getChildVisibleRectHelper(child, r, offset, this, mOverflow)
: super.getChildVisibleRect(child, r, offset);
return super.getChildVisibleRect(child, r, offset);
}
@Override

Просмотреть файл

@ -31,7 +31,6 @@ import com.facebook.infer.annotation.Assertions;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.UiThreadUtil;
import com.facebook.react.common.annotations.VisibleForTesting;
import com.facebook.react.config.ReactFeatureFlags;
import com.facebook.react.modules.i18nmanager.I18nUtil;
import com.facebook.react.touch.OnInterceptTouchEventListener;
import com.facebook.react.touch.ReactHitSlopView;
@ -419,9 +418,7 @@ public class ReactViewGroup extends ViewGroup
@Override
public boolean getChildVisibleRect(View child, Rect r, android.graphics.Point offset) {
return ReactFeatureFlags.clipChildRectsIfOverflowIsHidden
? ReactClippingViewGroupHelper.getChildVisibleRectHelper(child, r, offset, this, mOverflow)
: super.getChildVisibleRect(child, r, offset);
return super.getChildVisibleRect(child, r, offset);
}
@Override