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

Commit 7e705565 authored by Oleg Petšjonkin's avatar Oleg Petšjonkin Committed by Android (Google) Code Review
Browse files

Merge "DisplayModeDirector: moving static services access to injector" into main

parents 3a063c6e bef4cf79
Loading
Loading
Loading
Loading
+25 −6
Original line number Original line Diff line number Diff line
@@ -2322,8 +2322,7 @@ public class DisplayModeDirector {
        private final SparseBooleanArray mAuthenticationPossible = new SparseBooleanArray();
        private final SparseBooleanArray mAuthenticationPossible = new SparseBooleanArray();


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


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


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


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


        boolean supportsFrameRateOverride();
        boolean supportsFrameRateOverride();

        DisplayManagerInternal getDisplayManagerInternal();

        StatusBarManagerInternal getStatusBarManagerInternal();

        SensorManagerInternal getSensorManagerInternal();
    }
    }


    @VisibleForTesting
    @VisibleForTesting
@@ -2885,6 +2889,21 @@ public class DisplayModeDirector {
            return SurfaceFlingerProperties.enable_frame_rate_override().orElse(true);
            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() {
        private DisplayManager getDisplayManager() {
            if (mDisplayManager == null) {
            if (mDisplayManager == null) {
                mDisplayManager = mContext.getSystemService(DisplayManager.class);
                mDisplayManager = mContext.getSystemService(DisplayManager.class);
+30 −10
Original line number Original line 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.Preconditions;
import com.android.internal.util.test.FakeSettingsProvider;
import com.android.internal.util.test.FakeSettingsProvider;
import com.android.internal.util.test.FakeSettingsProviderRule;
import com.android.internal.util.test.FakeSettingsProviderRule;
import com.android.server.LocalServices;
import com.android.server.display.DisplayDeviceConfig;
import com.android.server.display.DisplayDeviceConfig;
import com.android.server.display.TestUtils;
import com.android.server.display.TestUtils;
import com.android.server.display.mode.DisplayModeDirector.BrightnessObserver;
import com.android.server.display.mode.DisplayModeDirector.BrightnessObserver;
@@ -149,15 +148,9 @@ public class DisplayModeDirectorTest {
        mContext = spy(new ContextWrapper(ApplicationProvider.getApplicationContext()));
        mContext = spy(new ContextWrapper(ApplicationProvider.getApplicationContext()));
        final MockContentResolver resolver = mSettingsProviderRule.mockContentResolver(mContext);
        final MockContentResolver resolver = mSettingsProviderRule.mockContentResolver(mContext);
        when(mContext.getContentResolver()).thenReturn(resolver);
        when(mContext.getContentResolver()).thenReturn(resolver);
        mInjector = spy(new FakesInjector());
        mInjector = spy(new FakesInjector(mDisplayManagerInternalMock, mStatusBarMock,
                mSensorManagerInternalMock));
        mHandler = new Handler(Looper.getMainLooper());
        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(
    private DisplayModeDirector createDirectorFromRefreshRateArray(
@@ -2831,16 +2824,28 @@ public class DisplayModeDirectorTest {
        private final DisplayInfo mDisplayInfo;
        private final DisplayInfo mDisplayInfo;
        private final Display mDisplay;
        private final Display mDisplay;
        private boolean mDisplayInfoValid = true;
        private boolean mDisplayInfoValid = true;
        private ContentObserver mBrightnessObserver;
        private final DisplayManagerInternal mDisplayManagerInternal;
        private final StatusBarManagerInternal mStatusBarManagerInternal;
        private final SensorManagerInternal mSensorManagerInternal;

        private ContentObserver mPeakRefreshRateObserver;
        private ContentObserver mPeakRefreshRateObserver;


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

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


        @NonNull
        @NonNull
@@ -2896,6 +2901,21 @@ public class DisplayModeDirectorTest {
            return true;
            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) {
        protected Display createDisplay(int id) {
            return new Display(DisplayManagerGlobal.getInstance(), id, mDisplayInfo,
            return new Display(DisplayManagerGlobal.getInstance(), id, mDisplayInfo,
                    ApplicationProvider.getApplicationContext().getResources());
                    ApplicationProvider.getApplicationContext().getResources());