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

Commit e0f73452 authored by Menghan Li's avatar Menghan Li
Browse files

refactor(brightness suw): decouple auto brightness initialization logic for setup flow

The AccessibilitySettingsForSetupWizard class should not be responsible for managing the initial
logic of controllers, such as determining which controllers need to be dynamically added or updated
using setInSetupWizard APIs. This logic should be handled directly by the controllers themselves.

Bug: 311093618
Flag: EXEMPT bugfix
Test: atest AccessibilitySettingsForSetupWizardTest
            AutoBrightnessPreferenceControllerForSetupWizardTest
            AutoBrightnessPreferenceControllerTest
            BrightnessLevelPreferenceControllerForSetupWizardTest
            BrightnessLevelPreferenceControllerTest

Change-Id: I6065a10e72d002981c0f514543e6933d79c2aa1b
parent aa7114cf
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -43,7 +43,8 @@
        android:title="@string/auto_brightness_title"
        android:fragment="com.android.settings.accessibility.AutoBrightnessPreferenceFragmentForSetupWizard"
        settings:useAdminDisabledSummary="true"
        settings:userRestriction="no_config_brightness"/>
        settings:userRestriction="no_config_brightness"
        settings:controller="com.android.settings.display.AutoBrightnessPreferenceControllerForSetupWizard"/>

    <Preference
        android:fragment="com.android.settings.accessibility.ToggleScreenMagnificationPreferenceFragmentForSetupWizard"
+4 −11
Original line number Diff line number Diff line
@@ -41,8 +41,7 @@ import androidx.recyclerview.widget.RecyclerView;

import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.display.AutoBrightnessPreferenceController;
import com.android.settings.display.BrightnessLevelPreferenceController;
import com.android.settings.display.BrightnessLevelPreferenceControllerForSetupWizard;
import com.android.settingslib.RestrictedPreference;
import com.android.settingslib.core.AbstractPreferenceController;

@@ -168,16 +167,10 @@ public class AccessibilitySettingsForSetupWizard extends DashboardFragment

    @Override
    protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
        // Requires lifecycle, so added programmatically (normally via resId).
        final List<AbstractPreferenceController> controllers = new ArrayList<>();
        BrightnessLevelPreferenceController brightnessLevelPreferenceController =
                new BrightnessLevelPreferenceController(context, getSettingsLifecycle());
        brightnessLevelPreferenceController.setInSetupWizard(true);
        controllers.add(brightnessLevelPreferenceController);
        String autoBrightnessKey = context.getString(R.string.preference_key_auto_brightness);
        AutoBrightnessPreferenceController autoBrightnessPreferenceController =
                new AutoBrightnessPreferenceController(context, autoBrightnessKey);
        autoBrightnessPreferenceController.setInSetupWizard(true);
        controllers.add(autoBrightnessPreferenceController);
        controllers.add(new BrightnessLevelPreferenceControllerForSetupWizard(
                context, getSettingsLifecycle()));
        return controllers;
    }

+9 −16
Original line number Diff line number Diff line
@@ -22,28 +22,25 @@ import android.os.Process;
import android.os.UserManager;
import android.provider.Settings;

import androidx.annotation.NonNull;
import androidx.preference.Preference;

import com.android.settings.R;
import com.android.settings.accessibility.Flags;
import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.PrimarySwitchPreference;

/**
 * The top-level preference controller that updates the adaptive brightness.
 */
public class AutoBrightnessPreferenceController extends TogglePreferenceController {

    private final String SYSTEM_KEY = SCREEN_BRIGHTNESS_MODE;
    private final int DEFAULT_VALUE = SCREEN_BRIGHTNESS_MODE_MANUAL;

    private boolean mInSetupWizard;

    public AutoBrightnessPreferenceController(Context context, String key) {
    public AutoBrightnessPreferenceController(@NonNull Context context, @NonNull String key) {
        super(context, key);
    }

    public void setInSetupWizard(boolean inSetupWizard) {
        mInSetupWizard = inSetupWizard;
    }

    @Override
    public boolean isChecked() {
        return Settings.System.getInt(mContext.getContentResolver(),
@@ -60,14 +57,10 @@ public class AutoBrightnessPreferenceController extends TogglePreferenceControll
    @Override
    @AvailabilityStatus
    public int getAvailabilityStatus() {
        if (!mContext.getResources().getBoolean(
                com.android.internal.R.bool.config_automatic_brightness_available)) {
            return UNSUPPORTED_ON_DEVICE;
        }
        if (mInSetupWizard && !Flags.addBrightnessSettingsInSuw()) {
            return CONDITIONALLY_UNAVAILABLE;
        }
        return AVAILABLE_UNSEARCHABLE;
        return mContext.getResources().getBoolean(
                com.android.internal.R.bool.config_automatic_brightness_available)
                ? AVAILABLE_UNSEARCHABLE
                : UNSUPPORTED_ON_DEVICE;
    }

    @Override
+44 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 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.settings.display;

import android.content.Context;

import androidx.annotation.NonNull;

import com.android.settings.accessibility.Flags;

/**
 * The top-level preference controller that updates the adaptive brightness in the SetupWizard.
 */
public class AutoBrightnessPreferenceControllerForSetupWizard
        extends AutoBrightnessPreferenceController {

    public AutoBrightnessPreferenceControllerForSetupWizard(@NonNull Context context,
            @NonNull String key) {
        super(context, key);
    }

    @Override
    @AvailabilityStatus
    public int getAvailabilityStatus() {
        if (!Flags.addBrightnessSettingsInSuw()) {
            return CONDITIONALLY_UNAVAILABLE;
        }
        return super.getAvailabilityStatus();
    }
}
+9 −15
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@ import static com.android.settingslib.display.BrightnessUtils.GAMMA_SPACE_MAX;
import static com.android.settingslib.display.BrightnessUtils.GAMMA_SPACE_MIN;
import static com.android.settingslib.display.BrightnessUtils.convertLinearToGammaFloat;

import android.annotation.Nullable;
import android.app.ActivityOptions;
import android.content.ContentResolver;
import android.content.Context;
@@ -37,12 +36,13 @@ import android.os.UserManager;
import android.provider.Settings.System;
import android.text.TextUtils;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.accessibility.Flags;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.SettingsBaseActivity;
@@ -54,18 +54,17 @@ import com.android.settingslib.transition.SettingsTransitionHelper;

import java.text.NumberFormat;

/**
 * The top-level preference controller that updates the adaptive brightness level.
 */
public class BrightnessLevelPreferenceController extends BasePreferenceController implements
        PreferenceControllerMixin, LifecycleObserver, OnStart, OnStop {

    private static final String TAG = "BrightnessPrefCtrl";

    private static final Uri BRIGHTNESS_ADJ_URI;
    private final ContentResolver mContentResolver;
    private final Handler mHandler = new Handler(Looper.getMainLooper());
    private final DisplayManager mDisplayManager;
    @Nullable
    private Preference mPreference;
    private boolean mInSetupWizard;

    static {
        BRIGHTNESS_ADJ_URI = System.getUriFor(System.SCREEN_AUTO_BRIGHTNESS_ADJ);
@@ -94,11 +93,13 @@ public class BrightnessLevelPreferenceController extends BasePreferenceControlle
        }
    };

    public BrightnessLevelPreferenceController(Context context, Lifecycle lifecycle) {
    public BrightnessLevelPreferenceController(@NonNull Context context,
            @Nullable Lifecycle lifecycle) {
        this(context, context.getString(R.string.preference_key_brightness_level), lifecycle);
    }

    private BrightnessLevelPreferenceController(Context context, String key, Lifecycle lifecycle) {
    private BrightnessLevelPreferenceController(@NonNull Context context, @NonNull String key,
            @Nullable Lifecycle lifecycle) {
        super(context, key);
        mDisplayManager = context.getSystemService(DisplayManager.class);

@@ -108,15 +109,8 @@ public class BrightnessLevelPreferenceController extends BasePreferenceControlle
        mContentResolver = mContext.getContentResolver();
    }

    public void setInSetupWizard(boolean inSetupWizard) {
        mInSetupWizard = inSetupWizard;
    }

    @Override
    public int getAvailabilityStatus() {
        if (mInSetupWizard && !Flags.addBrightnessSettingsInSuw()) {
            return CONDITIONALLY_UNAVAILABLE;
        }
        return AVAILABLE;
    }

Loading