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

Commit 2b25a238 authored by Shivangi Dubey's avatar Shivangi Dubey Committed by Android (Google) Code Review
Browse files

Merge "Disable DeviceStateRotationLockSettingController under refactor flag" into main

parents d2fe6571 7a27a2b7
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