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

Commit 7a27a2b7 authored by Shivangi Dubey's avatar Shivangi Dubey
Browse files

Disable DeviceStateRotationLockSettingController under refactor flag

Disable DeviceStateRotationLockSettingController that reads and writes into both auto-rotate persisted setting.
For more info:go/auto-rotate-refactor
Bug: 394303723
Flag: com.android.window.flags.enable_device_state_auto_rotate_setting_refactor
Test: atest RotationLockControllerImplTest

Change-Id: Ic49178ccb62718ac1a379245153d9eb6a5d98cd6
parent bac00a2e
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

import java.util.List;
import java.util.Optional;

import platform.test.runner.parameterized.ParameterizedAndroidJunit4;
import platform.test.runner.parameterized.Parameters;
@@ -100,7 +101,7 @@ public class RotationLockTileTest extends SysuiTestCase {
    @Mock
    private BatteryController mBatteryController;
    @Mock
    DeviceStateRotationLockSettingController mDeviceStateRotationLockSettingController;
    Optional<DeviceStateRotationLockSettingController> mDeviceStateRotationLockSettingController;
    @Mock
    RotationPolicyWrapper mRotationPolicyWrapper;
    @Mock
+8 −4
Original line number Diff line number Diff line
@@ -37,6 +37,8 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

import java.util.Optional;

@RunWith(AndroidJUnit4.class)
@TestableLooper.RunWithLooper
@SmallTest
@@ -44,8 +46,10 @@ public class RotationLockControllerImplTest extends SysuiTestCase {

    private static final String[] DEFAULT_SETTINGS = new String[]{"0:0", "1:2"};

    @Mock RotationPolicyWrapper mRotationPolicyWrapper;
    @Mock DeviceStateRotationLockSettingController mDeviceStateRotationLockSettingController;
    @Mock
    RotationPolicyWrapper mRotationPolicyWrapper;
    @Mock
    DeviceStateRotationLockSettingController mDeviceStateRotationLockSettingController;

    private ArgumentCaptor<RotationPolicy.RotationPolicyListener> mRotationPolicyListenerCaptor;

@@ -93,7 +97,7 @@ public class RotationLockControllerImplTest extends SysuiTestCase {
    private void createRotationLockController(String[] deviceStateRotationLockDefaults) {
        new RotationLockControllerImpl(
                mRotationPolicyWrapper,
                mDeviceStateRotationLockSettingController,
                Optional.of(mDeviceStateRotationLockSettingController),
                deviceStateRotationLockDefaults);
    }
}
+2 −0
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ import com.android.systemui.reardisplay.RearDisplayModule;
import com.android.systemui.recents.Recents;
import com.android.systemui.recents.RecentsImplementation;
import com.android.systemui.recents.RecentsModule;
import com.android.systemui.rotationlock.DeviceStateAutoRotateModule;
import com.android.systemui.rotationlock.RotationLockModule;
import com.android.systemui.rotationlock.RotationLockNewModule;
import com.android.systemui.scene.SceneContainerFrameworkModule;
@@ -132,6 +133,7 @@ import javax.inject.Named;
        CollapsedStatusBarFragmentStartableModule.class,
        ConnectingDisplayViewModel.StartableModule.class,
        DefaultBlueprintModule.class,
        DeviceStateAutoRotateModule.class,
        EmergencyGestureModule.class,
        GestureModule.class,
        HeadsUpModule.class,
+17 −0
Original line number Diff line number Diff line
@@ -105,6 +105,7 @@ import com.android.systemui.qs.footer.dagger.FooterActionsModule;
import com.android.systemui.recents.Recents;
import com.android.systemui.recordissue.RecordIssueModule;
import com.android.systemui.retail.RetailModeModule;
import com.android.systemui.rotationlock.DeviceStateAutoRotateModule.BoundsDeviceStateAutoRotateModule;
import com.android.systemui.scene.shared.model.SceneContainerConfig;
import com.android.systemui.scene.shared.model.SceneDataSource;
import com.android.systemui.scene.shared.model.SceneDataSourceDelegator;
@@ -145,6 +146,7 @@ import com.android.systemui.statusbar.phone.CentralSurfaces;
import com.android.systemui.statusbar.phone.ConfigurationControllerModule;
import com.android.systemui.statusbar.phone.LetterboxModule;
import com.android.systemui.statusbar.pipeline.dagger.StatusBarPipelineModule;
import com.android.systemui.statusbar.policy.DeviceStateRotationLockSettingController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.PolicyModule;
import com.android.systemui.statusbar.policy.SensitiveNotificationProtectionController;
@@ -391,6 +393,11 @@ public abstract class SystemUIModule {
    @BindsOptionalOf
    abstract LockscreenContent optionalLockscreenContent();

    @BindsOptionalOf
    @BoundsDeviceStateAutoRotateModule
    abstract Optional<DeviceStateRotationLockSettingController>
            optionalDeviceStateRotationLockSettingController();

    @SysUISingleton
    @Binds
    abstract SystemClock bindSystemClock(SystemClockImpl systemClock);
@@ -466,6 +473,16 @@ public abstract class SystemUIModule {
        return new SceneDataSourceDelegator(applicationScope, config);
    }

    @Provides
    @SysUISingleton
    static Optional<DeviceStateRotationLockSettingController>
            provideDeviceStateRotationLockSettingController(
            @BoundsDeviceStateAutoRotateModule
            Optional<Optional<DeviceStateRotationLockSettingController>> optionalOfOptional
    ) {
        return optionalOfOptional.orElseGet(Optional::empty);
    }

    @Binds
    abstract SceneDataSource bindSceneDataSource(SceneDataSourceDelegator delegator);

+55 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2025 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.systemui.rotationlock

import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.statusbar.policy.DeviceStateRotationLockSettingController
import com.android.window.flags.Flags
import dagger.Module
import dagger.Provides
import java.util.Optional
import javax.inject.Provider
import javax.inject.Qualifier

@Module
class DeviceStateAutoRotateModule {
    /** Qualifier for dependencies to be bound with [DeviceStateAutoRotateModule]. */
    @Qualifier
    @MustBeDocumented
    @Retention(AnnotationRetention.RUNTIME)
    annotation class BoundsDeviceStateAutoRotateModule

    /**
     * Provides an instance of [DeviceStateRotationLockSettingController].
     *
     * @param controllerProvider The provider for [DeviceStateRotationLockSettingController].
     * @return An [Optional] containing the [DeviceStateRotationLockSettingController] instance if
     *   the `Flags.enableDeviceStateAutoRotateSettingRefactor()` flag is disabled, or an empty
     *   [Optional] otherwise.
     */
    @Provides
    @BoundsDeviceStateAutoRotateModule
    @SysUISingleton
    fun provideDeviceStateRotationLockSettingController(
        controllerProvider: Provider<DeviceStateRotationLockSettingController>
    ): Optional<DeviceStateRotationLockSettingController> =
        if (Flags.enableDeviceStateAutoRotateSettingRefactor()) {
            Optional.empty()
        } else {
            Optional.of(controllerProvider.get())
        }
}
Loading