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

Commit bef4cf79 authored by petsjonkin's avatar petsjonkin
Browse files

DisplayModeDirector: moving static services access to injector

Bug: b/287945043
Test: atest DisplayModeDirectorTest
Change-Id: I941d15176fc1afed693906509ff6046a9c31aaf1
parent 49e61e47
Loading
Loading
Loading
Loading
+25 −6
Original line number Diff line number Diff line
@@ -2322,8 +2322,7 @@ public class DisplayModeDirector {
        private final SparseBooleanArray mAuthenticationPossible = new SparseBooleanArray();

        public void observe() {
            StatusBarManagerInternal statusBar =
                    LocalServices.getService(StatusBarManagerInternal.class);
            StatusBarManagerInternal statusBar = mInjector.getStatusBarManagerInternal();
            if (statusBar == null) {
                return;
            }
@@ -2427,10 +2426,9 @@ public class DisplayModeDirector {

        public void observe() {
            mDisplayManager = mContext.getSystemService(DisplayManager.class);
            mDisplayManagerInternal = LocalServices.getService(DisplayManagerInternal.class);
            mDisplayManagerInternal = mInjector.getDisplayManagerInternal();

            final SensorManagerInternal sensorManager =
                    LocalServices.getService(SensorManagerInternal.class);
            final SensorManagerInternal sensorManager = mInjector.getSensorManagerInternal();
            sensorManager.addProximityActiveListener(BackgroundThread.getExecutor(), this);

            synchronized (mSensorObserverLock) {
@@ -2547,7 +2545,7 @@ public class DisplayModeDirector {
            synchronized (mLock) {
                setupHdrRefreshRates(mDefaultDisplayDeviceConfig);
            }
            mDisplayManagerInternal = LocalServices.getService(DisplayManagerInternal.class);
            mDisplayManagerInternal = mInjector.getDisplayManagerInternal();
            mInjector.registerDisplayListener(this, mHandler,
                    DisplayManager.EVENT_FLAG_DISPLAY_BRIGHTNESS
                    | DisplayManager.EVENT_FLAG_DISPLAY_REMOVED);
@@ -2788,6 +2786,12 @@ public class DisplayModeDirector {
        boolean registerThermalServiceListener(IThermalEventListener listener);

        boolean supportsFrameRateOverride();

        DisplayManagerInternal getDisplayManagerInternal();

        StatusBarManagerInternal getStatusBarManagerInternal();

        SensorManagerInternal getSensorManagerInternal();
    }

    @VisibleForTesting
@@ -2885,6 +2889,21 @@ public class DisplayModeDirector {
            return SurfaceFlingerProperties.enable_frame_rate_override().orElse(true);
        }

        @Override
        public DisplayManagerInternal getDisplayManagerInternal() {
            return LocalServices.getService(DisplayManagerInternal.class);
        }

        @Override
        public StatusBarManagerInternal getStatusBarManagerInternal() {
            return LocalServices.getService(StatusBarManagerInternal.class);
        }

        @Override
        public SensorManagerInternal getSensorManagerInternal() {
            return LocalServices.getService(SensorManagerInternal.class);
        }

        private DisplayManager getDisplayManager() {
            if (mDisplayManager == null) {
                mDisplayManager = mContext.getSystemService(DisplayManager.class);
+30 −10
Original line number Diff line number Diff line
@@ -88,7 +88,6 @@ import com.android.internal.os.BackgroundThread;
import com.android.internal.util.Preconditions;
import com.android.internal.util.test.FakeSettingsProvider;
import com.android.internal.util.test.FakeSettingsProviderRule;
import com.android.server.LocalServices;
import com.android.server.display.DisplayDeviceConfig;
import com.android.server.display.TestUtils;
import com.android.server.display.mode.DisplayModeDirector.BrightnessObserver;
@@ -149,15 +148,9 @@ public class DisplayModeDirectorTest {
        mContext = spy(new ContextWrapper(ApplicationProvider.getApplicationContext()));
        final MockContentResolver resolver = mSettingsProviderRule.mockContentResolver(mContext);
        when(mContext.getContentResolver()).thenReturn(resolver);
        mInjector = spy(new FakesInjector());
        mInjector = spy(new FakesInjector(mDisplayManagerInternalMock, mStatusBarMock,
                mSensorManagerInternalMock));
        mHandler = new Handler(Looper.getMainLooper());

        LocalServices.removeServiceForTest(StatusBarManagerInternal.class);
        LocalServices.addService(StatusBarManagerInternal.class, mStatusBarMock);
        LocalServices.removeServiceForTest(SensorManagerInternal.class);
        LocalServices.addService(SensorManagerInternal.class, mSensorManagerInternalMock);
        LocalServices.removeServiceForTest(DisplayManagerInternal.class);
        LocalServices.addService(DisplayManagerInternal.class, mDisplayManagerInternalMock);
    }

    private DisplayModeDirector createDirectorFromRefreshRateArray(
@@ -2831,16 +2824,28 @@ public class DisplayModeDirectorTest {
        private final DisplayInfo mDisplayInfo;
        private final Display mDisplay;
        private boolean mDisplayInfoValid = true;
        private ContentObserver mBrightnessObserver;
        private final DisplayManagerInternal mDisplayManagerInternal;
        private final StatusBarManagerInternal mStatusBarManagerInternal;
        private final SensorManagerInternal mSensorManagerInternal;

        private ContentObserver mPeakRefreshRateObserver;

        FakesInjector() {
            this(null, null, null);
        }

        FakesInjector(DisplayManagerInternal displayManagerInternal,
                StatusBarManagerInternal statusBarManagerInternal,
                SensorManagerInternal sensorManagerInternal) {
            mDeviceConfig = new FakeDeviceConfig();
            mDisplayInfo = new DisplayInfo();
            mDisplayInfo.defaultModeId = MODE_ID;
            mDisplayInfo.supportedModes = new Display.Mode[] {new Display.Mode(MODE_ID,
                    800, 600, /* refreshRate= */ 60)};
            mDisplay = createDisplay(DISPLAY_ID);
            mDisplayManagerInternal = displayManagerInternal;
            mStatusBarManagerInternal = statusBarManagerInternal;
            mSensorManagerInternal = sensorManagerInternal;
        }

        @NonNull
@@ -2896,6 +2901,21 @@ public class DisplayModeDirectorTest {
            return true;
        }

        @Override
        public DisplayManagerInternal getDisplayManagerInternal() {
            return mDisplayManagerInternal;
        }

        @Override
        public StatusBarManagerInternal getStatusBarManagerInternal() {
            return mStatusBarManagerInternal;
        }

        @Override
        public SensorManagerInternal getSensorManagerInternal() {
            return mSensorManagerInternal;
        }

        protected Display createDisplay(int id) {
            return new Display(DisplayManagerGlobal.getInstance(), id, mDisplayInfo,
                    ApplicationProvider.getApplicationContext().getResources());