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

Commit 47f2ffa2 authored by Marzia Favaro's avatar Marzia Favaro
Browse files

Solve NPE caused by concurrrent access to mBar

Fix: 287126742
Test: No, minor change
Change-Id: I59f0cf3ef1055a2bebec46ec3524f496d86a1d4c
parent c7753c32
Loading
Loading
Loading
Loading
+161 −107
Original line number Diff line number Diff line
@@ -347,9 +347,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D

        @Override
        public void showScreenPinningRequest(int taskId) {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.showScreenPinningRequest(taskId);
                    bar.showScreenPinningRequest(taskId);
                } catch (RemoteException e) {
                }
            }
@@ -357,9 +358,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D

        @Override
        public void showAssistDisclosure() {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.showAssistDisclosure();
                    bar.showAssistDisclosure();
                } catch (RemoteException e) {
                }
            }
@@ -367,9 +369,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D

        @Override
        public void startAssist(Bundle args) {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.startAssist(args);
                    bar.startAssist(args);
                } catch (RemoteException e) {
                }
            }
@@ -377,9 +380,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D

        @Override
        public void onCameraLaunchGestureDetected(int source) {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.onCameraLaunchGestureDetected(source);
                    bar.onCameraLaunchGestureDetected(source);
                } catch (RemoteException e) {
                }
            }
@@ -393,9 +397,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
        @Override
        public void onEmergencyActionLaunchGestureDetected() {
            if (SPEW) Slog.d(TAG, "Launching emergency action");
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.onEmergencyActionLaunchGestureDetected();
                    bar.onEmergencyActionLaunchGestureDetected();
                } catch (RemoteException e) {
                    if (SPEW) Slog.d(TAG, "Failed to launch emergency action");
                }
@@ -410,9 +415,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
        @Override
        public void toggleSplitScreen() {
            enforceStatusBarService();
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.toggleSplitScreen();
                    bar.toggleSplitScreen();
                } catch (RemoteException ex) {}
            }
        }
@@ -420,27 +426,30 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
        @Override
        public void appTransitionFinished(int displayId) {
            enforceStatusBarService();
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.appTransitionFinished(displayId);
                    bar.appTransitionFinished(displayId);
                } catch (RemoteException ex) {}
            }
        }

        @Override
        public void toggleTaskbar() {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.toggleTaskbar();
                    bar.toggleTaskbar();
                } catch (RemoteException ex) {}
            }
        }

        @Override
        public void toggleRecentApps() {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.toggleRecentApps();
                    bar.toggleRecentApps();
                } catch (RemoteException ex) {}
            }
        }
@@ -454,45 +463,50 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D

        @Override
        public void preloadRecentApps() {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.preloadRecentApps();
                    bar.preloadRecentApps();
                } catch (RemoteException ex) {}
            }
        }

        @Override
        public void cancelPreloadRecentApps() {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.cancelPreloadRecentApps();
                    bar.cancelPreloadRecentApps();
                } catch (RemoteException ex) {}
            }
        }

        @Override
        public void showRecentApps(boolean triggeredFromAltTab) {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.showRecentApps(triggeredFromAltTab);
                    bar.showRecentApps(triggeredFromAltTab);
                } catch (RemoteException ex) {}
            }
        }

        @Override
        public void hideRecentApps(boolean triggeredFromAltTab, boolean triggeredFromHomeKey) {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.hideRecentApps(triggeredFromAltTab, triggeredFromHomeKey);
                    bar.hideRecentApps(triggeredFromAltTab, triggeredFromHomeKey);
                } catch (RemoteException ex) {}
            }
        }

        @Override
        public void collapsePanels() {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.animateCollapsePanels();
                    bar.animateCollapsePanels();
                } catch (RemoteException ex) {
                }
            }
@@ -500,18 +514,20 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D

        @Override
        public void dismissKeyboardShortcutsMenu() {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.dismissKeyboardShortcutsMenu();
                    bar.dismissKeyboardShortcutsMenu();
                } catch (RemoteException ex) {}
            }
        }

        @Override
        public void toggleKeyboardShortcutsMenu(int deviceId) {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.toggleKeyboardShortcutsMenu(deviceId);
                    bar.toggleKeyboardShortcutsMenu(deviceId);
                } catch (RemoteException ex) {}
            }
        }
@@ -539,9 +555,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D

        @Override
        public void showChargingAnimation(int batteryLevel) {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.showWirelessChargingAnimation(batteryLevel);
                    bar.showWirelessChargingAnimation(batteryLevel);
                } catch (RemoteException ex){
                }
            }
@@ -549,7 +566,8 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D

        @Override
        public void showPictureInPictureMenu() {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.showPictureInPictureMenu();
                } catch (RemoteException ex) {}
@@ -558,27 +576,30 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D

        @Override
        public void setWindowState(int displayId, int window, int state) {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.setWindowState(displayId, window, state);
                    bar.setWindowState(displayId, window, state);
                } catch (RemoteException ex) {}
            }
        }

        @Override
        public void appTransitionPending(int displayId) {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.appTransitionPending(displayId);
                    bar.appTransitionPending(displayId);
                } catch (RemoteException ex) {}
            }
        }

        @Override
        public void appTransitionCancelled(int displayId) {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.appTransitionCancelled(displayId);
                    bar.appTransitionCancelled(displayId);
                } catch (RemoteException ex) {}
            }
        }
@@ -586,9 +607,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
        @Override
        public void appTransitionStarting(int displayId, long statusBarAnimationsStartTime,
                long statusBarAnimationsDuration) {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.appTransitionStarting(
                    bar.appTransitionStarting(
                            displayId, statusBarAnimationsStartTime, statusBarAnimationsDuration);
                } catch (RemoteException ex) {}
            }
@@ -596,9 +618,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D

        @Override
        public void setTopAppHidesStatusBar(boolean hidesStatusBar) {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.setTopAppHidesStatusBar(hidesStatusBar);
                    bar.setTopAppHidesStatusBar(hidesStatusBar);
                } catch (RemoteException ex) {}
            }
        }
@@ -608,9 +631,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
            if (!mContext.getResources().getBoolean(R.bool.config_showSysuiShutdown)) {
                return false;
            }
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.showShutdownUi(isReboot, reason);
                    bar.showShutdownUi(isReboot, reason);
                    return true;
                } catch (RemoteException ex) {}
            }
@@ -629,18 +653,20 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D

        @Override
        public void onDisplayReady(int displayId) {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.onDisplayReady(displayId);
                    bar.onDisplayReady(displayId);
                } catch (RemoteException ex) {}
            }
        }

        @Override
        public void onRecentsAnimationStateChanged(boolean running) {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.onRecentsAnimationStateChanged(running);
                    bar.onRecentsAnimationStateChanged(running);
                } catch (RemoteException ex) {}
            }

@@ -654,9 +680,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
            getUiState(displayId).setBarAttributes(appearance, appearanceRegions,
                    navbarColorManagedByIme, behavior, requestedVisibleTypes, packageName,
                    letterboxDetails);
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.onSystemBarAttributesChanged(displayId, appearance, appearanceRegions,
                    bar.onSystemBarAttributesChanged(displayId, appearance, appearanceRegions,
                            navbarColorManagedByIme, behavior, requestedVisibleTypes, packageName,
                            letterboxDetails);
                } catch (RemoteException ex) { }
@@ -667,9 +694,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
        public void showTransient(int displayId, @InsetsType int types,
                boolean isGestureOnSystemBar) {
            getUiState(displayId).showTransient(types);
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.showTransient(displayId, types, isGestureOnSystemBar);
                    bar.showTransient(displayId, types, isGestureOnSystemBar);
                } catch (RemoteException ex) { }
            }
        }
@@ -677,9 +705,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
        @Override
        public void abortTransient(int displayId, @InsetsType int types) {
            getUiState(displayId).clearTransient(types);
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.abortTransient(displayId, types);
                    bar.abortTransient(displayId, types);
                } catch (RemoteException ex) { }
            }
        }
@@ -688,9 +717,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
        public void showToast(int uid, String packageName, IBinder token, CharSequence text,
                IBinder windowToken, int duration,
                @Nullable ITransientNotificationCallback callback, int displayId) {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.showToast(uid, packageName, token, text, windowToken, duration, callback,
                    bar.showToast(uid, packageName, token, text, windowToken, duration, callback,
                            displayId);
                } catch (RemoteException ex) { }
            }
@@ -698,18 +728,20 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D

        @Override
        public void hideToast(String packageName, IBinder token) {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.hideToast(packageName, token);
                    bar.hideToast(packageName, token);
                } catch (RemoteException ex) { }
            }
        }

        @Override
        public boolean requestWindowMagnificationConnection(boolean request) {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.requestWindowMagnificationConnection(request);
                    bar.requestWindowMagnificationConnection(request);
                    return true;
                } catch (RemoteException ex) { }
            }
@@ -718,9 +750,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D

        @Override
        public void setNavigationBarLumaSamplingEnabled(int displayId, boolean enable) {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.setNavigationBarLumaSamplingEnabled(displayId, enable);
                    bar.setNavigationBarLumaSamplingEnabled(displayId, enable);
                } catch (RemoteException ex) { }
            }
        }
@@ -730,45 +763,50 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
            synchronized (mLock) {
                mUdfpsRefreshRateRequestCallback = callback;
            }
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.setUdfpsRefreshRateCallback(callback);
                    bar.setUdfpsRefreshRateCallback(callback);
                } catch (RemoteException ex) { }
            }
        }

        @Override
        public void showRearDisplayDialog(int currentBaseState) {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.showRearDisplayDialog(currentBaseState);
                    bar.showRearDisplayDialog(currentBaseState);
                } catch (RemoteException ex) { }
            }
        }

        @Override
        public void goToFullscreenFromSplit() {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.goToFullscreenFromSplit();
                    bar.goToFullscreenFromSplit();
                } catch (RemoteException ex) { }
            }
        }

        @Override
        public void enterStageSplitFromRunningApp(boolean leftOrTop) {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.enterStageSplitFromRunningApp(leftOrTop);
                    bar.enterStageSplitFromRunningApp(leftOrTop);
                } catch (RemoteException ex) { }
            }
        }

        @Override
        public void showMediaOutputSwitcher(String packageName) {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.showMediaOutputSwitcher(packageName);
                    bar.showMediaOutputSwitcher(packageName);
                } catch (RemoteException ex) {
                }
            }
@@ -791,9 +829,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D

        @Override
        public void showGlobalActions() {
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.showGlobalActionsMenu();
                    bar.showGlobalActionsMenu();
                } catch (RemoteException ex) {}
            }
        }
@@ -1116,9 +1155,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
        if (!state.disableEquals(net1, net2)) {
            state.setDisabled(net1, net2);
            mHandler.post(() -> mNotificationDelegate.onSetDisabled(net1));
            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.disable(displayId, net1, net2);
                    bar.disable(displayId, net1, net2);
                } catch (RemoteException ex) {
                }
            }
@@ -1176,9 +1216,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
            //Slog.d(TAG, "setIcon slot=" + slot + " index=" + index + " icon=" + icon);
            mIcons.put(slot, icon);

            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.setIcon(slot, icon);
                    bar.setIcon(slot, icon);
                } catch (RemoteException ex) {
                }
            }
@@ -1197,9 +1238,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
            if (icon.visible != visibility) {
                icon.visible = visibility;

                if (mBar != null) {
                IStatusBar bar = mBar;
                if (bar != null) {
                    try {
                        mBar.setIcon(slot, icon);
                        bar.setIcon(slot, icon);
                    } catch (RemoteException ex) {
                    }
                }
@@ -1214,9 +1256,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
        synchronized (mIcons) {
            mIcons.remove(slot);

            if (mBar != null) {
            IStatusBar bar = mBar;
            if (bar != null) {
                try {
                    mBar.removeIcon(slot);
                    bar.removeIcon(slot);
                } catch (RemoteException ex) {
                }
            }
@@ -1823,9 +1866,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
    @Override
    public void showInattentiveSleepWarning() {
        enforceStatusBarService();
        if (mBar != null) {
        IStatusBar bar = mBar;
        if (bar != null) {
            try {
                mBar.showInattentiveSleepWarning();
                bar.showInattentiveSleepWarning();
            } catch (RemoteException ex) {
            }
        }
@@ -1834,9 +1878,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
    @Override
    public void dismissInattentiveSleepWarning(boolean animated) {
        enforceStatusBarService();
        if (mBar != null) {
        IStatusBar bar = mBar;
        if (bar != null) {
            try {
                mBar.dismissInattentiveSleepWarning(animated);
                bar.dismissInattentiveSleepWarning(animated);
            } catch (RemoteException ex) {
            }
        }
@@ -1845,9 +1890,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
    @Override
    public void suppressAmbientDisplay(boolean suppress) {
        enforceStatusBarService();
        if (mBar != null) {
        IStatusBar bar = mBar;
        if (bar != null) {
            try {
                mBar.suppressAmbientDisplay(suppress);
                bar.suppressAmbientDisplay(suppress);
            } catch (RemoteException ex) {
            }
        }
@@ -1921,9 +1967,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
                }
            }
        }
        if (mBar != null) {
        IStatusBar bar = mBar;
        if (bar != null) {
            try {
                mBar.requestTileServiceListeningState(componentName);
                bar.requestTileServiceListeningState(componentName);
            } catch (RemoteException e) {
                Slog.e(TAG, "requestTileServiceListeningState", e);
            }
@@ -2036,9 +2083,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D

        CharSequence appName = r.serviceInfo.applicationInfo
                .loadLabel(mContext.getPackageManager());
        if (mBar != null) {
        IStatusBar bar = mBar;
        if (bar != null) {
            try {
                mBar.requestAddTile(componentName, appName, label, icon, proxyCallback);
                bar.requestAddTile(componentName, appName, label, icon, proxyCallback);
                return;
            } catch (RemoteException e) {
                Slog.e(TAG, "requestAddTile", e);
@@ -2060,9 +2108,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D

    private void cancelRequestAddTileInternal(String packageName) {
        clearTileAddRequest(packageName);
        if (mBar != null) {
        IStatusBar bar = mBar;
        if (bar != null) {
            try {
                mBar.cancelRequestAddTile(packageName);
                bar.cancelRequestAddTile(packageName);
            } catch (RemoteException e) {
                Slog.e(TAG, "requestAddTile", e);
            }
@@ -2191,9 +2240,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
            @Nullable IUndoMediaTransferCallback undoCallback
    ) {
        enforceMediaContentControl();
        if (mBar != null) {
        IStatusBar bar = mBar;
        if (bar != null) {
            try {
                mBar.updateMediaTapToTransferSenderDisplay(displayState, routeInfo, undoCallback);
                bar.updateMediaTapToTransferSenderDisplay(displayState, routeInfo, undoCallback);
            } catch (RemoteException e) {
                Slog.e(TAG, "updateMediaTapToTransferSenderDisplay", e);
            }
@@ -2214,9 +2264,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
            @Nullable Icon appIcon,
            @Nullable CharSequence appName) {
        enforceMediaContentControl();
        if (mBar != null) {
        IStatusBar bar = mBar;
        if (bar != null) {
            try {
                mBar.updateMediaTapToTransferReceiverDisplay(
                bar.updateMediaTapToTransferReceiverDisplay(
                        displayState, routeInfo, appIcon, appName);
            } catch (RemoteException e) {
                Slog.e(TAG, "updateMediaTapToTransferReceiverDisplay", e);
@@ -2240,9 +2291,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
            @NonNull INearbyMediaDevicesProvider provider
    ) {
        enforceMediaContentControl();
        if (mBar != null) {
        IStatusBar bar = mBar;
        if (bar != null) {
            try {
                mBar.registerNearbyMediaDevicesProvider(provider);
                bar.registerNearbyMediaDevicesProvider(provider);
            } catch (RemoteException e) {
                Slog.e(TAG, "registerNearbyMediaDevicesProvider", e);
            }
@@ -2265,9 +2317,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
            @NonNull INearbyMediaDevicesProvider provider
    ) {
        enforceMediaContentControl();
        if (mBar != null) {
        IStatusBar bar = mBar;
        if (bar != null) {
            try {
                mBar.unregisterNearbyMediaDevicesProvider(provider);
                bar.unregisterNearbyMediaDevicesProvider(provider);
            } catch (RemoteException e) {
                Slog.e(TAG, "unregisterNearbyMediaDevicesProvider", e);
            }
@@ -2278,9 +2331,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
    @Override
    public void showRearDisplayDialog(int currentState) {
        enforceControlDeviceStatePermission();
        if (mBar != null) {
        IStatusBar bar = mBar;
        if (bar != null) {
            try {
                mBar.showRearDisplayDialog(currentState);
                bar.showRearDisplayDialog(currentState);
            } catch (RemoteException e) {
                Slog.e(TAG, "showRearDisplayDialog", e);
            }