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

Commit 926c56f0 authored by Daichi Hirono's avatar Daichi Hirono
Browse files

Add nullchecks to ScreenPinningRequest.

To make ScreenPinningRequest workable with devices that does not have
the recent view and navigation bar.

Also mark ScreenPinningNotify methods as public so that it can be
invoked from vendor customized code.

Bug: 78248081
Test: Manually invoke Activity#startLockTask()
Change-Id: I7b3578bfe32dffb32ca1c21f5e30f98aa452efb0
parent 4f9d750e
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -217,7 +217,8 @@ public class ScreenPinningRequest implements View.OnClickListener {
            mLayout.findViewById(R.id.screen_pinning_text_area)
                    .setLayoutDirection(View.LAYOUT_DIRECTION_LOCALE);
            View buttons = mLayout.findViewById(R.id.screen_pinning_buttons);
            if (Recents.getSystemServices().hasSoftNavigationBar()) {
            if (Recents.getSystemServices() != null &&
                    Recents.getSystemServices().hasSoftNavigationBar()) {
                buttons.setLayoutDirection(View.LAYOUT_DIRECTION_LOCALE);
                swapChildrenIfRtlAndVertical(buttons);
            } else {
@@ -235,7 +236,8 @@ public class ScreenPinningRequest implements View.OnClickListener {
            }

            StatusBar statusBar = SysUiServiceProvider.getComponent(mContext, StatusBar.class);
            NavigationBarView navigationBarView = statusBar.getNavigationBarView();
            NavigationBarView navigationBarView =
                    statusBar != null ? statusBar.getNavigationBarView() : null;
            final boolean recentsVisible = navigationBarView != null
                    && navigationBarView.isRecentsButtonVisible();
            boolean touchExplorationEnabled = mAccessibilityService.isTouchExplorationEnabled();
@@ -256,10 +258,12 @@ public class ScreenPinningRequest implements View.OnClickListener {
                        : R.string.screen_pinning_description_recents_invisible;
            }

            if (navigationBarView != null) {
                ((ImageView) mLayout.findViewById(R.id.screen_pinning_back_icon))
                        .setImageDrawable(navigationBarView.getBackDrawable(mContext));
                ((ImageView) mLayout.findViewById(R.id.screen_pinning_home_icon))
                        .setImageDrawable(navigationBarView.getHomeDrawable(mContext));
            }

            ((TextView) mLayout.findViewById(R.id.screen_pinning_description))
                    .setText(descriptionStringResId);
+3 −3
Original line number Diff line number Diff line
@@ -42,17 +42,17 @@ public class ScreenPinningNotify {
    }

    /** Show "Screen pinned" toast. */
    void showPinningStartToast() {
    public void showPinningStartToast() {
        makeAllUserToastAndShow(R.string.screen_pinning_start);
    }

    /** Show "Screen unpinned" toast. */
    void showPinningExitToast() {
    public void showPinningExitToast() {
        makeAllUserToastAndShow(R.string.screen_pinning_exit);
    }

    /** Show a toast that describes the gesture the user should use to escape pinned mode. */
    void showEscapeToast(boolean isRecentsButtonVisible) {
    public void showEscapeToast(boolean isRecentsButtonVisible) {
        long showToastTime = SystemClock.elapsedRealtime();
        if ((showToastTime - mLastShowToastTime) < SHOW_TOAST_MINIMUM_INTERVAL) {
            Slog.i(TAG, "Ignore toast since it is requested in very short interval.");