Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a65c198f authored by Saumya Prakash's avatar Saumya Prakash
Browse files

Check status of mEdgeBackGestureHandler to prevent NPE

Sometimes onAttachedToWindow() can be called before
mEdgeBackGestureHandler is created, which led to a NPE. This change adds
a null check to prevent the crash.

Fix: 303820749
Test: Set mEdgeBackGestureHandler to null and ensured no NPE occured in
onAttachedWindow()

Change-Id: I43ab8bcfc4d720bc537a7ca36e08068a6a27fbea
parent 9f34a29d
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -84,6 +84,7 @@ abstract class TutorialFragment extends GestureSandboxFragment implements OnTouc
    private DeviceProfile mDeviceProfile;
    private boolean mIsLargeScreen;
    private boolean mIsFoldable;
    private boolean mOnAttachedToWindowPendingCreate;

    public static TutorialFragment newInstance(
            TutorialType tutorialType, boolean gestureComplete, boolean fromTutorialMenu) {
@@ -174,6 +175,11 @@ abstract class TutorialFragment extends GestureSandboxFragment implements OnTouc
                .getDeviceProfile(getContext());
        mIsLargeScreen = mDeviceProfile.isTablet;
        mIsFoldable = mDeviceProfile.isTwoPanels;

        if (mOnAttachedToWindowPendingCreate) {
            mOnAttachedToWindowPendingCreate = false;
            onAttachedToWindow();
        }
    }

    public boolean isLargeScreen() {
@@ -373,6 +379,10 @@ abstract class TutorialFragment extends GestureSandboxFragment implements OnTouc

    @Override
    void onAttachedToWindow() {
        if (mEdgeBackGestureHandler == null) {
            mOnAttachedToWindowPendingCreate = true;
            return;
        }
        StatsLogManager statsLogManager = getStatsLogManager();
        if (statsLogManager != null) {
            logTutorialStepShown(statsLogManager);
@@ -382,6 +392,7 @@ abstract class TutorialFragment extends GestureSandboxFragment implements OnTouc

    @Override
    void onDetachedFromWindow() {
        mOnAttachedToWindowPendingCreate = false;
        mEdgeBackGestureHandler.setViewGroupParent(null);
    }