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

Commit b199f351 authored by XingHai Lu's avatar XingHai Lu Committed by Android (Google) Code Review
Browse files

Merge "Add FeatureProvider for onboarding related settings" into main

parents 60f98c97 10cf80af
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import androidx.preference.TwoStatePreference;

import com.android.settings.overlay.FeatureFactory;
import com.android.settings.slices.SliceData;
import com.android.settings.onboarding.OnboardingFeatureProvider;
import com.android.settings.widget.TwoStateButtonPreference;
import com.android.settingslib.PrimarySwitchPreference;
import com.android.settingslib.core.instrumentation.SettingsJankMonitor;
@@ -84,6 +85,11 @@ public abstract class TogglePreferenceController extends BasePreferenceControlle
            FeatureFactory.getFeatureFactory().getMetricsFeatureProvider()
                    .logClickedPreference(preference, getMetricsCategory());
        }
        OnboardingFeatureProvider onboardingFeatureProvider =
                FeatureFactory.getFeatureFactory().getOnboardingFeatureProvider();
        if (onboardingFeatureProvider != null) {
            onboardingFeatureProvider.markPreferenceHasChanged(mContext, mPreferenceKey);
        }
        return setChecked((boolean) newValue);
    }

+32 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2023 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.onboarding

import android.content.Context

/**
 * Provider for Onboarding related features.
 */
interface OnboardingFeatureProvider {
    /**
     * Mark this toggle preference has been changed.
     * Called after [TogglePreferenceController.onPreferenceChange()].
     *
     * @param context App context
     * @param preferenceKey The key to distinguish which preference has been changed.
     */
    fun markPreferenceHasChanged(context: Context, preferenceKey: String)
}
 No newline at end of file
+6 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import com.android.settings.biometrics.face.FaceFeatureProvider
import com.android.settings.biometrics2.factory.BiometricsRepositoryProvider
import com.android.settings.bluetooth.BluetoothFeatureProvider
import com.android.settings.connecteddevice.stylus.StylusFeatureProvider
import com.android.settings.onboarding.OnboardingFeatureProvider
import com.android.settings.dashboard.DashboardFeatureProvider
import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider
import com.android.settings.deviceinfo.hardwareinfo.HardwareInfoFeatureProvider
@@ -149,6 +150,11 @@ abstract class FeatureFactory {
     */
    abstract val stylusFeatureProvider: StylusFeatureProvider

    /**
     * Retrieves implementation for TogglePreference feature.
     */
    open val onboardingFeatureProvider: OnboardingFeatureProvider? = null

    companion object {
        private var _factory: FeatureFactory? = null

+8 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import com.android.settings.accessibility.AccessibilityMetricsFeatureProvider;
import com.android.settings.accessibility.AccessibilitySearchFeatureProvider;
import com.android.settings.accounts.AccountFeatureProvider;
import com.android.settings.applications.ApplicationFeatureProvider;
import com.android.settings.onboarding.OnboardingFeatureProvider;
import com.android.settings.biometrics.face.FaceFeatureProvider;
import com.android.settings.biometrics2.factory.BiometricsRepositoryProvider;
import com.android.settings.bluetooth.BluetoothFeatureProvider;
@@ -93,6 +94,7 @@ public class FakeFeatureFactory extends FeatureFactory {
    public WifiFeatureProvider mWifiFeatureProvider;
    public KeyboardSettingsFeatureProvider mKeyboardSettingsFeatureProvider;
    public StylusFeatureProvider mStylusFeatureProvider;
    public OnboardingFeatureProvider mOnboardingFeatureProvider;

    /**
     * Call this in {@code @Before} method of the test class to use fake factory.
@@ -137,6 +139,7 @@ public class FakeFeatureFactory extends FeatureFactory {
        mWifiFeatureProvider = mock(WifiFeatureProvider.class);
        mKeyboardSettingsFeatureProvider = mock(KeyboardSettingsFeatureProvider.class);
        mStylusFeatureProvider = mock(StylusFeatureProvider.class);
        mOnboardingFeatureProvider = mock(OnboardingFeatureProvider.class);
    }

    @Override
@@ -299,4 +302,9 @@ public class FakeFeatureFactory extends FeatureFactory {
    public StylusFeatureProvider getStylusFeatureProvider() {
        return mStylusFeatureProvider;
    }

    @Override
    public OnboardingFeatureProvider getOnboardingFeatureProvider() {
        return mOnboardingFeatureProvider;
    }
}
+8 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import com.android.settings.accessibility.AccessibilityMetricsFeatureProvider;
import com.android.settings.accessibility.AccessibilitySearchFeatureProvider;
import com.android.settings.accounts.AccountFeatureProvider;
import com.android.settings.applications.ApplicationFeatureProvider;
import com.android.settings.onboarding.OnboardingFeatureProvider;
import com.android.settings.biometrics.face.FaceFeatureProvider;
import com.android.settings.biometrics2.factory.BiometricsRepositoryProvider;
import com.android.settings.bluetooth.BluetoothFeatureProvider;
@@ -92,6 +93,7 @@ public class FakeFeatureFactory extends FeatureFactory {
    public WifiFeatureProvider mWifiFeatureProvider;
    public KeyboardSettingsFeatureProvider mKeyboardSettingsFeatureProvider;
    public StylusFeatureProvider mStylusFeatureProvider;
    public OnboardingFeatureProvider mOnboardingFeatureProvider;

    /**
     * Call this in {@code @Before} method of the test class to use fake factory.
@@ -136,6 +138,7 @@ public class FakeFeatureFactory extends FeatureFactory {
        mWifiFeatureProvider = mock(WifiFeatureProvider.class);
        mKeyboardSettingsFeatureProvider = mock(KeyboardSettingsFeatureProvider.class);
        mStylusFeatureProvider = mock(StylusFeatureProvider.class);
        mOnboardingFeatureProvider = mock(OnboardingFeatureProvider.class);
    }

    @Override
@@ -298,4 +301,9 @@ public class FakeFeatureFactory extends FeatureFactory {
    public StylusFeatureProvider getStylusFeatureProvider() {
        return mStylusFeatureProvider;
    }

    @Override
    public OnboardingFeatureProvider getOnboardingFeatureProvider() {
        return mOnboardingFeatureProvider;
    }
}