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

Commit 7f00ac7f authored by shreerag@google.com's avatar shreerag@google.com Committed by Josh Yang
Browse files

Nullcheck for StatusBarManagerInternal in InsetsPolicy

Wear does not support StatusBarManagerService

Bug: 158866039
Test: salmon boots successfully
Change-Id: I76a44c4cbc0f8eeeda6b9c35b2c29ce87f0db8de
(cherry picked from commit 3d40a967c3c111e205f577ab96daf7f2b696ee3e)
parent 47eaa5e8
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -2240,7 +2240,10 @@ public class DisplayPolicy {
    void notifyDisplayReady() {
        mHandler.post(() -> {
            final int displayId = getDisplayId();
            getStatusBarManagerInternal().onDisplayReady(displayId);
            StatusBarManagerInternal statusBar = getStatusBarManagerInternal();
            if (statusBar != null) {
                statusBar.onDisplayReady(displayId);
            }
            final WallpaperManagerInternal wpMgr = LocalServices
                    .getService(WallpaperManagerInternal.class);
            if (wpMgr != null) {
+23 −9
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ import android.view.WindowManager;
import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting;
import com.android.server.DisplayThread;
import com.android.server.statusbar.StatusBarManagerInternal;

/**
 * Policy that implements who gets control over the windows generating insets.
@@ -167,8 +168,12 @@ class InsetsPolicy {
            changed = true;
        }
        if (changed) {
            mPolicy.getStatusBarManagerInternal().showTransient(mDisplayContent.getDisplayId(),
                    mShowingTransientTypes.toArray());
            StatusBarManagerInternal statusBarManagerInternal =
                    mPolicy.getStatusBarManagerInternal();
            if (statusBarManagerInternal != null) {
                statusBarManagerInternal.showTransient(
                        mDisplayContent.getDisplayId(), mShowingTransientTypes.toArray());
            }
            updateBarControlTarget(mFocusedWin);

            // The leashes can be created while updating bar control target. The surface transaction
@@ -282,9 +287,11 @@ class InsetsPolicy {
                    abortTypes.add(type);
                }
            }
            if (abortTypes.size() > 0) {
                mPolicy.getStatusBarManagerInternal().abortTransient(mDisplayContent.getDisplayId(),
                        abortTypes.toArray());
            StatusBarManagerInternal statusBarManagerInternal =
                    mPolicy.getStatusBarManagerInternal();
            if (abortTypes.size() > 0 && statusBarManagerInternal != null) {
                statusBarManagerInternal.abortTransient(
                        mDisplayContent.getDisplayId(), abortTypes.toArray());
            }
        }
    }
@@ -294,8 +301,11 @@ class InsetsPolicy {
     * updateBarControlTarget(mFocusedWin) after this invocation.
     */
    private void abortTransient() {
        mPolicy.getStatusBarManagerInternal().abortTransient(mDisplayContent.getDisplayId(),
                mShowingTransientTypes.toArray());
        StatusBarManagerInternal statusBarManagerInternal = mPolicy.getStatusBarManagerInternal();
        if (statusBarManagerInternal != null) {
            statusBarManagerInternal.abortTransient(
                    mDisplayContent.getDisplayId(), mShowingTransientTypes.toArray());
        }
        mShowingTransientTypes.clear();
    }

@@ -474,11 +484,15 @@ class InsetsPolicy {
            final int state = visible ? WINDOW_STATE_SHOWING : WINDOW_STATE_HIDDEN;
            if (mState != state) {
                mState = state;
                mPolicy.getStatusBarManagerInternal().setWindowState(
                StatusBarManagerInternal statusBarManagerInternal =
                        mPolicy.getStatusBarManagerInternal();
                if (statusBarManagerInternal != null) {
                    statusBarManagerInternal.setWindowState(
                            mDisplayContent.getDisplayId(), mId, state);
                }
            }
        }
    }

    private class InsetsPolicyAnimationControlListener extends
            InsetsController.InternalAnimationControlListener {