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

Commit c9ac8d3d authored by Rahul Banerjee's avatar Rahul Banerjee
Browse files

Migrate ScreenshotController to Predictive Back

Bug: 258493176
Test: Tested manually, as discussed with gwasserman@, it is not feasible to write a test for this right now.
Change-Id: I30e5a587ae8121dbbfc61e15f6b904e67ee52a91
parent c4588f70
Loading
Loading
Loading
Loading
+34 −1
Original line number Original line Diff line number Diff line
@@ -84,6 +84,8 @@ import android.view.WindowManager;
import android.view.WindowManagerGlobal;
import android.view.WindowManagerGlobal;
import android.view.accessibility.AccessibilityManager;
import android.view.accessibility.AccessibilityManager;
import android.widget.Toast;
import android.widget.Toast;
import android.window.OnBackInvokedCallback;
import android.window.OnBackInvokedDispatcher;
import android.window.WindowContext;
import android.window.WindowContext;


import androidx.concurrent.futures.CallbackToFutureAdapter;
import androidx.concurrent.futures.CallbackToFutureAdapter;
@@ -279,6 +281,13 @@ public class ScreenshotController {
    private final ActionIntentExecutor mActionExecutor;
    private final ActionIntentExecutor mActionExecutor;
    private final UserManager mUserManager;
    private final UserManager mUserManager;


    private final OnBackInvokedCallback mOnBackInvokedCallback = () -> {
        if (DEBUG_INPUT) {
            Log.d(TAG, "Predictive Back callback dispatched");
        }
        respondToBack();
    };

    private ScreenshotView mScreenshotView;
    private ScreenshotView mScreenshotView;
    private Bitmap mScreenBitmap;
    private Bitmap mScreenBitmap;
    private SaveImageInBackgroundTask mSaveInBgTask;
    private SaveImageInBackgroundTask mSaveInBgTask;
@@ -465,6 +474,10 @@ public class ScreenshotController {
        }
        }
    }
    }


    private void respondToBack() {
        dismissScreenshot(SCREENSHOT_DISMISSED_OTHER);
    }

    /**
    /**
     * Update resources on configuration change. Reinflate for theme/color changes.
     * Update resources on configuration change. Reinflate for theme/color changes.
     */
     */
@@ -476,6 +489,26 @@ public class ScreenshotController {
        // Inflate the screenshot layout
        // Inflate the screenshot layout
        mScreenshotView = (ScreenshotView)
        mScreenshotView = (ScreenshotView)
                LayoutInflater.from(mContext).inflate(R.layout.screenshot, null);
                LayoutInflater.from(mContext).inflate(R.layout.screenshot, null);
        mScreenshotView.addOnAttachStateChangeListener(
                new View.OnAttachStateChangeListener() {
                    @Override
                    public void onViewAttachedToWindow(@NonNull View v) {
                        if (DEBUG_INPUT) {
                            Log.d(TAG, "Registering Predictive Back callback");
                        }
                        mScreenshotView.findOnBackInvokedDispatcher().registerOnBackInvokedCallback(
                                OnBackInvokedDispatcher.PRIORITY_DEFAULT, mOnBackInvokedCallback);
                    }

                    @Override
                    public void onViewDetachedFromWindow(@NonNull View v) {
                        if (DEBUG_INPUT) {
                            Log.d(TAG, "Unregistering Predictive Back callback");
                        }
                        mScreenshotView.findOnBackInvokedDispatcher()
                                .unregisterOnBackInvokedCallback(mOnBackInvokedCallback);
                    }
                });
        mScreenshotView.init(mUiEventLogger, new ScreenshotView.ScreenshotViewCallback() {
        mScreenshotView.init(mUiEventLogger, new ScreenshotView.ScreenshotViewCallback() {
            @Override
            @Override
            public void onUserInteraction() {
            public void onUserInteraction() {
@@ -503,7 +536,7 @@ public class ScreenshotController {
                if (DEBUG_INPUT) {
                if (DEBUG_INPUT) {
                    Log.d(TAG, "onKeyEvent: KeyEvent.KEYCODE_BACK");
                    Log.d(TAG, "onKeyEvent: KeyEvent.KEYCODE_BACK");
                }
                }
                dismissScreenshot(SCREENSHOT_DISMISSED_OTHER);
                respondToBack();
                return true;
                return true;
            }
            }
            return false;
            return false;