Snap for 12602378 from af080edfe0
to 25Q1-release
Change-Id: I94f279c674c355be140a739f1d43b1b788df08f1
This commit is contained in:
@@ -1930,6 +1930,20 @@
|
||||
android:value="@string/menu_key_apps"/>
|
||||
</activity-alias>
|
||||
|
||||
<activity android:name="Settings$AppStorageSettingsActivity"
|
||||
android:label="@string/storage_label"
|
||||
android:exported="true">
|
||||
<intent-filter android:priority="1">
|
||||
<action android:name="com.android.settings.APP_STORAGE_SETTINGS" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<data android:scheme="package" />
|
||||
</intent-filter>
|
||||
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
|
||||
android:value="com.android.settings.applications.AppStorageSettings" />
|
||||
<meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
|
||||
android:value="@string/menu_key_apps"/>
|
||||
</activity>
|
||||
|
||||
<activity android:name=".applications.InstalledAppOpenByDefaultActivity"
|
||||
android:label="@string/application_info_label"
|
||||
android:exported="true">
|
||||
|
30
res/values/styles_preference_expressive.xml
Normal file
30
res/values/styles_preference_expressive.xml
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
|
||||
<!-- This file only contains custom attribute and style definition for preferences -->
|
||||
<!-- Things unrelated to preference framework UI customization should go to other styles files -->
|
||||
<resources>
|
||||
|
||||
<style name="SettingsPreferenceTheme.Expressive" parent="@style/PreferenceTheme.SettingsLib.Expressive">
|
||||
<item name="apnPreferenceStyle">@style/ApnPreference</item>
|
||||
<item name="cardPreferenceStyle">@style/CardPreference</item>
|
||||
<item name="slicePreferenceStyle">@style/SlicePreference</item>
|
||||
<item name="seekBarPreferenceStyle">@style/SettingsSeekBarPreference</item>
|
||||
<item name="twoStateButtonPreferenceStyle">@style/TwoStateButtonPreference</item>
|
||||
<item name="preferenceFragmentCompatStyle">@style/SettingsPreferenceFragmentStyle</item>
|
||||
</style>
|
||||
</resources>
|
88
res/values/themes_expressive.xml
Normal file
88
res/values/themes_expressive.xml
Normal file
@@ -0,0 +1,88 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- 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.
|
||||
-->
|
||||
|
||||
<resources
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
|
||||
<style name="Theme.Settings.Expressive" parent="Theme.SettingsBase.Expressive">
|
||||
<item name="android:clipToPadding">false</item>
|
||||
<item name="android:clipChildren">false</item>
|
||||
<item name="preferenceTheme">@style/SettingsPreferenceTheme.Expressive</item>
|
||||
<item name="android:listPreferredItemHeight">72dip</item>
|
||||
<item name="android:homeAsUpIndicator">@drawable/ic_arrow_back</item>
|
||||
<item name="android:navigationBarColor">@android:color/transparent</item>
|
||||
<item name="android:datePickerDialogTheme">@style/PickerDialogTheme.Settings</item>
|
||||
|
||||
<item name="fingerprint_layout_theme">@style/FingerprintLayoutTheme</item>
|
||||
<item name="face_layout_theme">@style/FaceLayoutTheme</item>
|
||||
<item name="ic_menu_moreoverflow">@*android:drawable/ic_menu_moreoverflow_holo_dark</item>
|
||||
|
||||
<!-- For edge-to-edge -->
|
||||
<item name="android:navigationBarColor">@android:color/transparent</item>
|
||||
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||
|
||||
<!-- For wifi icon -->
|
||||
<item name="wifi_signal">@drawable/wifi_signal</item>
|
||||
<item name="wifi_signal_color">?android:attr/colorAccent</item>
|
||||
<item name="wifi_friction">@drawable/wifi_friction</item>
|
||||
|
||||
<item name="side_margin">0dp</item>
|
||||
<item name="sudListItemIconColor">?android:attr/colorAccent</item>
|
||||
|
||||
<!-- Redefine the ActionBar style for contentInsetStart -->
|
||||
<item name="android:actionBarStyle">@style/Widget.ActionBar</item>
|
||||
|
||||
<item name="preferenceBackgroundColor">@drawable/preference_background</item>
|
||||
|
||||
<!-- For AndroidX AlertDialog -->
|
||||
<item name="alertDialogTheme">@style/Theme.AlertDialog</item>
|
||||
|
||||
<item name="*android:lockPatternStyle">@style/LockPatternStyle</item>
|
||||
|
||||
<!-- For AppBarLayout -->
|
||||
<item name="colorPrimary">@*android:color/primary_device_default_settings_light</item>
|
||||
<item name="colorPrimaryVariant">@android:color/white</item>
|
||||
|
||||
<!-- For slice view in settings -->
|
||||
<item name="sliceViewStyle">@style/Widget.SliceView.Settings</item>
|
||||
|
||||
<item name="notification_importance_button_background_color_unselected">@android:color/transparent</item>
|
||||
<item name="notification_importance_button_border_color_unselected">?androidprv:attr/materialColorOutlineVariant</item>
|
||||
<item name="notification_importance_button_foreground_color_unselected">?androidprv:attr/materialColorOnSurfaceVariant</item>
|
||||
|
||||
<item name="notification_importance_button_background_color_selected">?androidprv:attr/materialColorSecondaryContainer</item>
|
||||
<item name="notification_importance_button_border_color_selected">?androidprv:attr/materialColorOnSecondaryContainer</item>
|
||||
<item name="notification_importance_button_foreground_color_selected">?androidprv:attr/materialColorOnSecondaryContainer</item>
|
||||
|
||||
<!-- For AppCompat widgets, e.g. TextInputLayout -->
|
||||
<item name="colorAccent">?android:attr/colorAccent</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Settings.Expressive.NoActionBar">
|
||||
<item name="android:windowActionBar">false</item>
|
||||
<item name="android:windowNoTitle">true</item>
|
||||
<item name="colorSurface">@color/settingslib_colorSurface</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.SubSettings.Expressive.Base" parent="Theme.Settings.Expressive.NoActionBar">
|
||||
<!-- Redefine the ActionBar style for contentInsetStart -->
|
||||
<item name="android:actionBarStyle">@style/Widget.ActionBar.SubSettings</item>
|
||||
|
||||
<item name="android:navigationBarColor">@android:color/transparent</item>
|
||||
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.SubSettings.Expressive" parent="Theme.SubSettings.Expressive.Base"/>
|
||||
</resources>
|
@@ -21,7 +21,8 @@
|
||||
|
||||
<com.android.settingslib.widget.TopIntroPreference
|
||||
android:key="accessibility_autoclick_intro"
|
||||
android:title="@string/accessibility_autoclick_intro_text"/>
|
||||
android:title="@string/accessibility_autoclick_intro_text"
|
||||
settings:searchable="false"/>
|
||||
|
||||
<com.android.settingslib.widget.IllustrationPreference
|
||||
android:key="accessibility_autoclick_banner"
|
||||
@@ -29,32 +30,42 @@
|
||||
settings:searchable="false"
|
||||
settings:lottie_rawRes="@drawable/accessibility_dwell"/>
|
||||
|
||||
<!-- Items in a list should not be searchable. -->
|
||||
<com.android.settingslib.widget.SelectorWithWidgetPreference
|
||||
android:key="accessibility_control_autoclick_default"
|
||||
android:title="@string/accessibility_autoclick_default_title"
|
||||
settings:searchable="false"
|
||||
settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
|
||||
|
||||
<!-- Items in a list should not be searchable. -->
|
||||
<com.android.settingslib.widget.SelectorWithWidgetPreference
|
||||
android:key="accessibility_control_autoclick_200ms"
|
||||
android:title="@string/accessibility_autoclick_short_title"
|
||||
android:summary="@string/accessibility_autoclick_short_summary"
|
||||
settings:searchable="false"
|
||||
settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
|
||||
|
||||
<!-- Items in a list should not be searchable. -->
|
||||
<com.android.settingslib.widget.SelectorWithWidgetPreference
|
||||
android:key="accessibility_control_autoclick_600ms"
|
||||
android:title="@string/accessibility_autoclick_medium_title"
|
||||
android:summary="@string/accessibility_autoclick_medium_summary"
|
||||
settings:searchable="false"
|
||||
settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
|
||||
|
||||
<!-- Items in a list should not be searchable. -->
|
||||
<com.android.settingslib.widget.SelectorWithWidgetPreference
|
||||
android:key="accessibility_control_autoclick_1sec"
|
||||
android:title="@string/accessibility_autoclick_long_title"
|
||||
android:summary="@string/accessibility_autoclick_long_summary"
|
||||
settings:searchable="false"
|
||||
settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
|
||||
|
||||
<!-- Items in a list should not be searchable. -->
|
||||
<com.android.settingslib.widget.SelectorWithWidgetPreference
|
||||
android:key="accessibility_control_autoclick_custom"
|
||||
android:title="@string/accessibility_autoclick_custom_title"
|
||||
settings:searchable="false"
|
||||
settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
|
||||
|
||||
<com.android.settingslib.widget.LayoutPreference
|
||||
@@ -62,6 +73,7 @@
|
||||
android:layout="@layout/accessibility_autoclick_custom_seekbar"
|
||||
android:selectable="false"
|
||||
android:visibility="gone"
|
||||
settings:searchable="false"
|
||||
settings:controller="com.android.settings.accessibility.ToggleAutoclickCustomSeekbarController"/>
|
||||
|
||||
<com.android.settings.accessibility.AccessibilityFooterPreference
|
||||
|
@@ -111,6 +111,7 @@ public class Settings extends SettingsActivity {
|
||||
public static class ModuleLicensesActivity extends SettingsActivity { /* empty */ }
|
||||
public static class ApplicationSettingsActivity extends SettingsActivity { /* empty */ }
|
||||
public static class ManageApplicationsActivity extends SettingsActivity { /* empty */ }
|
||||
public static class AppStorageSettingsActivity extends SettingsActivity { /* empty */ }
|
||||
public static class ManageAssistActivity extends SettingsActivity { /* empty */ }
|
||||
public static class HighPowerApplicationsActivity extends SettingsActivity { /* empty */ }
|
||||
public static class BackgroundCheckSummaryActivity extends SettingsActivity { /* empty */ }
|
||||
|
@@ -73,6 +73,7 @@ import com.android.settings.widget.SettingsMainSwitchBar;
|
||||
import com.android.settingslib.core.instrumentation.Instrumentable;
|
||||
import com.android.settingslib.core.instrumentation.SharedPreferencesLogger;
|
||||
import com.android.settingslib.drawer.DashboardCategory;
|
||||
import com.android.settingslib.widget.SettingsThemeHelper;
|
||||
|
||||
import com.google.android.setupcompat.util.WizardManagerHelper;
|
||||
|
||||
@@ -169,6 +170,9 @@ public class SettingsActivity extends SettingsBaseActivity
|
||||
|
||||
private static final String EXTRA_UI_OPTIONS = "settings:ui_options";
|
||||
|
||||
private static final int EXPRESSIVE_BACK_ICON =
|
||||
com.android.settingslib.collapsingtoolbar.R.drawable.settingslib_expressive_icon_back;
|
||||
|
||||
private String mFragmentClass;
|
||||
private String mHighlightMenuKey;
|
||||
|
||||
@@ -301,7 +305,9 @@ public class SettingsActivity extends SettingsBaseActivity
|
||||
// If this is in setup flow, don't apply theme. Because light theme needs to be applied
|
||||
// in SettingsBaseActivity#onCreate().
|
||||
if (isSubSettings(intent) && !WizardManagerHelper.isAnySetupWizard(getIntent())) {
|
||||
setTheme(R.style.Theme_SubSettings);
|
||||
int themeId = SettingsThemeHelper.isExpressiveTheme(this)
|
||||
? R.style.Theme_SubSettings_Expressive : R.style.Theme_SubSettings;
|
||||
setTheme(themeId);
|
||||
}
|
||||
|
||||
setContentView(R.layout.settings_main_prefs);
|
||||
@@ -388,6 +394,9 @@ public class SettingsActivity extends SettingsBaseActivity
|
||||
if (actionBar != null) {
|
||||
actionBar.setDisplayHomeAsUpEnabled(isActionBarButtonEnabled);
|
||||
actionBar.setHomeButtonEnabled(isActionBarButtonEnabled);
|
||||
if (SettingsThemeHelper.isExpressiveTheme(this)) {
|
||||
actionBar.setHomeAsUpIndicator(EXPRESSIVE_BACK_ICON);
|
||||
}
|
||||
actionBar.setDisplayShowTitleEnabled(true);
|
||||
}
|
||||
}
|
||||
|
@@ -46,6 +46,7 @@ import com.android.settings.Utils;
|
||||
import com.android.settings.core.CategoryMixin.CategoryHandler;
|
||||
import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin;
|
||||
import com.android.settingslib.transition.SettingsTransitionHelper.TransitionType;
|
||||
import com.android.settingslib.widget.SettingsThemeHelper;
|
||||
import com.android.window.flags.Flags;
|
||||
|
||||
import com.google.android.material.appbar.AppBarLayout;
|
||||
@@ -68,6 +69,12 @@ public class SettingsBaseActivity extends FragmentActivity implements CategoryHa
|
||||
private static final int DEFAULT_REQUEST = -1;
|
||||
private static final float TOOLBAR_LINE_SPACING_MULTIPLIER = 1.1f;
|
||||
|
||||
private static final int EXPRESSIVE_LAYOUT_ID =
|
||||
com.android.settingslib.collapsingtoolbar.R.layout.settingslib_expressive_collapsing_toolbar_base_layout;
|
||||
private static final int COLLAPSING_LAYOUT_ID =
|
||||
com.android.settingslib.collapsingtoolbar.R.layout.collapsing_toolbar_base_layout;
|
||||
|
||||
|
||||
protected CategoryMixin mCategoryMixin;
|
||||
protected CollapsingToolbarLayout mCollapsingToolbarLayout;
|
||||
protected AppBarLayout mAppBarLayout;
|
||||
@@ -116,8 +123,9 @@ public class SettingsBaseActivity extends FragmentActivity implements CategoryHa
|
||||
}
|
||||
|
||||
if (isToolbarEnabled() && !isAnySetupWizard) {
|
||||
super.setContentView(
|
||||
com.android.settingslib.collapsingtoolbar.R.layout.collapsing_toolbar_base_layout);
|
||||
int resId = SettingsThemeHelper.isExpressiveTheme(getApplicationContext())
|
||||
? EXPRESSIVE_LAYOUT_ID : COLLAPSING_LAYOUT_ID;
|
||||
super.setContentView(resId);
|
||||
mCollapsingToolbarLayout =
|
||||
findViewById(com.android.settingslib.collapsingtoolbar.R.id.collapsing_toolbar);
|
||||
mAppBarLayout = findViewById(R.id.app_bar);
|
||||
|
@@ -44,6 +44,7 @@ import com.android.settings.accounts.AccountSyncSettings;
|
||||
import com.android.settings.accounts.ChooseAccountFragment;
|
||||
import com.android.settings.accounts.ManagedProfileSettings;
|
||||
import com.android.settings.applications.AppDashboardFragment;
|
||||
import com.android.settings.applications.AppStorageSettings;
|
||||
import com.android.settings.applications.ProcessStatsSummary;
|
||||
import com.android.settings.applications.ProcessStatsUi;
|
||||
import com.android.settings.applications.UsageAccessDetails;
|
||||
@@ -245,6 +246,7 @@ public class SettingsGateway {
|
||||
MyDeviceInfoFragment.class.getName(),
|
||||
ModuleLicensesDashboard.class.getName(),
|
||||
ManageApplications.class.getName(),
|
||||
AppStorageSettings.class.getName(),
|
||||
FirmwareVersionSettings.class.getName(),
|
||||
ManageAssist.class.getName(),
|
||||
ProcessStatsUi.class.getName(),
|
||||
@@ -437,6 +439,7 @@ public class SettingsGateway {
|
||||
Settings.UserSettingsActivity.class.getName(),
|
||||
Settings.ConfigureNotificationSettingsActivity.class.getName(),
|
||||
Settings.ManageApplicationsActivity.class.getName(),
|
||||
Settings.AppStorageSettingsActivity.class.getName(),
|
||||
Settings.PaymentSettingsActivity.class.getName(),
|
||||
// Home page > Display
|
||||
Settings.AdaptiveBrightnessActivity.class.getName(),
|
||||
|
@@ -37,6 +37,7 @@ import com.android.settingslib.metadata.PreferenceAvailabilityProvider
|
||||
import com.android.settingslib.metadata.PreferenceMetadata
|
||||
import com.android.settingslib.metadata.PreferenceRestrictionProvider
|
||||
import com.android.settingslib.metadata.ProvidePreferenceScreen
|
||||
import com.android.settingslib.metadata.ReadWritePermit
|
||||
import com.android.settingslib.metadata.preferenceHierarchy
|
||||
import com.android.settingslib.preference.PreferenceScreenBinding
|
||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||
@@ -66,6 +67,9 @@ class AutoBrightnessScreen :
|
||||
override fun storage(context: Context): KeyValueStore =
|
||||
AutoBrightnessDataStore(SettingsSystemStore.get(context))
|
||||
|
||||
override fun getWritePermit(context: Context, value: Boolean?, myUid: Int, callingUid: Int) =
|
||||
ReadWritePermit.ALLOW
|
||||
|
||||
override fun isAvailable(context: Context) =
|
||||
context.resources.getBoolean(
|
||||
com.android.internal.R.bool.config_automatic_brightness_available
|
||||
|
@@ -30,7 +30,7 @@ import com.android.settingslib.metadata.preferenceHierarchy
|
||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||
|
||||
@ProvidePreferenceScreen
|
||||
class DisplayScreen :
|
||||
open class DisplayScreen :
|
||||
PreferenceScreenCreator, PreferenceAvailabilityProvider, PreferenceIconProvider {
|
||||
override val key: String
|
||||
get() = KEY
|
||||
|
@@ -33,6 +33,7 @@ import com.android.settingslib.metadata.PreferenceAvailabilityProvider
|
||||
import com.android.settingslib.metadata.PreferenceLifecycleContext
|
||||
import com.android.settingslib.metadata.PreferenceLifecycleProvider
|
||||
import com.android.settingslib.metadata.PreferenceSummaryProvider
|
||||
import com.android.settingslib.metadata.ReadWritePermit
|
||||
import com.android.settingslib.metadata.SwitchPreference
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
@@ -48,6 +49,9 @@ class PeakRefreshRateSwitchPreference :
|
||||
override fun storage(context: Context): KeyValueStore =
|
||||
PeakRefreshRateStore(context, SettingsSystemStore.get(context))
|
||||
|
||||
override fun getWritePermit(context: Context, value: Boolean?, myUid: Int, callingUid: Int) =
|
||||
ReadWritePermit.ALLOW
|
||||
|
||||
override fun isAvailable(context: Context) =
|
||||
context.resources.getBoolean(R.bool.config_show_smooth_display) &&
|
||||
context.peakRefreshRate > DEFAULT_REFRESH_RATE
|
||||
|
@@ -36,6 +36,7 @@ import com.android.settingslib.metadata.PreferenceLifecycleProvider
|
||||
import com.android.settingslib.metadata.PreferenceMetadata
|
||||
import com.android.settingslib.metadata.PreferenceSummaryProvider
|
||||
import com.android.settingslib.metadata.ProvidePreferenceScreen
|
||||
import com.android.settingslib.metadata.ReadWritePermit
|
||||
import com.android.settingslib.metadata.preferenceHierarchy
|
||||
import com.android.settingslib.preference.PreferenceScreenBinding
|
||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||
@@ -69,6 +70,9 @@ class DarkModeScreen :
|
||||
override val keywords: Int
|
||||
get() = R.string.keywords_dark_ui_mode
|
||||
|
||||
override fun getWritePermit(context: Context, value: Boolean?, myUid: Int, callingUid: Int) =
|
||||
ReadWritePermit.ALLOW
|
||||
|
||||
override fun isFlagEnabled(context: Context) = Flags.catalystDarkUiMode()
|
||||
|
||||
override fun fragmentClass() = DarkModeSettingsFragment::class.java
|
||||
|
@@ -33,6 +33,7 @@ import com.android.settingslib.metadata.PreferenceIconProvider
|
||||
import com.android.settingslib.metadata.PreferenceMetadata
|
||||
import com.android.settingslib.metadata.PreferenceRestrictionProvider
|
||||
import com.android.settingslib.metadata.RangeValue
|
||||
import com.android.settingslib.metadata.ReadWritePermit
|
||||
import com.android.settingslib.preference.PreferenceBinding
|
||||
|
||||
// LINT.IfChange
|
||||
@@ -82,6 +83,9 @@ open class CallVolumePreference :
|
||||
}
|
||||
}
|
||||
|
||||
override fun getWritePermit(context: Context, value: Int?, myUid: Int, callingUid: Int) =
|
||||
ReadWritePermit.ALLOW
|
||||
|
||||
override fun getMinValue(context: Context) =
|
||||
createAudioHelper(context).getMinVolume(getAudioStream(context))
|
||||
|
||||
|
@@ -25,7 +25,13 @@ import com.android.settings.R
|
||||
import com.android.settingslib.RestrictedLockUtilsInternal
|
||||
import com.android.settingslib.datastore.KeyValueStore
|
||||
import com.android.settingslib.datastore.NoOpKeyedObservable
|
||||
import com.android.settingslib.metadata.*
|
||||
import com.android.settingslib.metadata.PersistentPreference
|
||||
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
|
||||
import com.android.settingslib.metadata.PreferenceIconProvider
|
||||
import com.android.settingslib.metadata.PreferenceMetadata
|
||||
import com.android.settingslib.metadata.PreferenceRestrictionProvider
|
||||
import com.android.settingslib.metadata.RangeValue
|
||||
import com.android.settingslib.metadata.ReadWritePermit
|
||||
import com.android.settingslib.preference.PreferenceBinding
|
||||
|
||||
// LINT.IfChange
|
||||
@@ -79,6 +85,9 @@ open class MediaVolumePreference :
|
||||
}
|
||||
}
|
||||
|
||||
override fun getWritePermit(context: Context, value: Int?, myUid: Int, callingUid: Int) =
|
||||
ReadWritePermit.ALLOW
|
||||
|
||||
override fun getMinValue(context: Context) =
|
||||
createAudioHelper(context).getMinVolume(STREAM_MUSIC)
|
||||
|
||||
|
@@ -40,6 +40,7 @@ import com.android.settingslib.metadata.PreferenceIconProvider
|
||||
import com.android.settingslib.metadata.PreferenceMetadata
|
||||
import com.android.settingslib.metadata.PreferenceRestrictionProvider
|
||||
import com.android.settingslib.metadata.RangeValue
|
||||
import com.android.settingslib.metadata.ReadWritePermit
|
||||
import com.android.settingslib.preference.PreferenceBinding
|
||||
|
||||
// LINT.IfChange
|
||||
@@ -94,6 +95,9 @@ open class SeparateRingVolumePreference :
|
||||
}
|
||||
}
|
||||
|
||||
override fun getWritePermit(context: Context, value: Int?, myUid: Int, callingUid: Int) =
|
||||
ReadWritePermit.ALLOW
|
||||
|
||||
override fun getMinValue(context: Context) =
|
||||
createAudioHelper(context).getMinVolume(STREAM_RING)
|
||||
|
||||
|
@@ -18,8 +18,11 @@ package com.android.settings.notification
|
||||
import android.content.Context
|
||||
import androidx.fragment.app.Fragment
|
||||
import com.android.settings.R
|
||||
import com.android.settings.Settings.SoundSettingsActivity
|
||||
import com.android.settings.flags.Flags
|
||||
import com.android.settings.utils.makeLaunchIntent
|
||||
import com.android.settingslib.metadata.PreferenceIconProvider
|
||||
import com.android.settingslib.metadata.PreferenceMetadata
|
||||
import com.android.settingslib.metadata.ProvidePreferenceScreen
|
||||
import com.android.settingslib.metadata.preferenceHierarchy
|
||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||
@@ -55,6 +58,9 @@ class SoundScreen : PreferenceScreenCreator, PreferenceIconProvider {
|
||||
+DialPadTonePreference() order -50
|
||||
}
|
||||
|
||||
override fun getLaunchIntent(context: Context, metadata: PreferenceMetadata?) =
|
||||
makeLaunchIntent(context, SoundSettingsActivity::class.java, metadata?.key)
|
||||
|
||||
companion object {
|
||||
const val KEY = "sound_screen"
|
||||
}
|
||||
|
@@ -15,7 +15,8 @@
|
||||
*/
|
||||
package com.android.settings.display
|
||||
|
||||
import android.content.Context
|
||||
import android.content.ContextWrapper
|
||||
import android.content.res.Resources
|
||||
import android.provider.Settings
|
||||
import android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC
|
||||
import android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL
|
||||
@@ -23,26 +24,30 @@ import android.view.LayoutInflater
|
||||
import androidx.preference.PreferenceViewHolder
|
||||
import androidx.test.core.app.ApplicationProvider
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import com.android.settings.testutils.shadow.SettingsShadowResources
|
||||
import com.android.settingslib.PrimarySwitchPreference
|
||||
import com.android.settingslib.preference.PreferenceDataStoreAdapter
|
||||
import com.android.settingslib.widget.SettingsThemeHelper.isExpressiveTheme
|
||||
import com.android.settingslib.widget.theme.R
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
import org.junit.Ignore
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.robolectric.annotation.Config
|
||||
import org.mockito.kotlin.any
|
||||
import org.mockito.kotlin.doReturn
|
||||
import org.mockito.kotlin.mock
|
||||
|
||||
// LINT.IfChange
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
@Config(shadows = [SettingsShadowResources::class])
|
||||
@Ignore("robolectric runtime")
|
||||
class AutoBrightnessScreenTest {
|
||||
|
||||
private val context: Context = ApplicationProvider.getApplicationContext()
|
||||
|
||||
private val preferenceScreenCreator = AutoBrightnessScreen()
|
||||
|
||||
private var mockResources: Resources? = null
|
||||
|
||||
private val context =
|
||||
object : ContextWrapper(ApplicationProvider.getApplicationContext()) {
|
||||
override fun getResources(): Resources = mockResources ?: super.getResources()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun switchClick_defaultScreenBrightnessModeTurnOffAuto_returnTrue() {
|
||||
setScreenBrightnessMode(SCREEN_BRIGHTNESS_MODE_MANUAL)
|
||||
@@ -100,20 +105,14 @@ class AutoBrightnessScreenTest {
|
||||
|
||||
@Test
|
||||
fun isAvailable_configTrueSet_shouldReturnTrue() {
|
||||
SettingsShadowResources.overrideResource(
|
||||
com.android.internal.R.bool.config_automatic_brightness_available,
|
||||
true,
|
||||
)
|
||||
mockResources = mock { on { getBoolean(any()) } doReturn true }
|
||||
|
||||
assertThat(preferenceScreenCreator.isAvailable(context)).isTrue()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun isAvailable_configFalseSet_shouldReturnFalse() {
|
||||
SettingsShadowResources.overrideResource(
|
||||
com.android.internal.R.bool.config_automatic_brightness_available,
|
||||
false,
|
||||
)
|
||||
mockResources = mock { on { getBoolean(any()) } doReturn false }
|
||||
|
||||
assertThat(preferenceScreenCreator.isAvailable(context)).isFalse()
|
||||
}
|
||||
@@ -121,6 +120,7 @@ class AutoBrightnessScreenTest {
|
||||
private fun getPrimarySwitchPreference(): PrimarySwitchPreference =
|
||||
preferenceScreenCreator.run {
|
||||
val preference = createWidget(context)
|
||||
preference.preferenceDataStore = PreferenceDataStoreAdapter(storage(context))
|
||||
bind(preference, this)
|
||||
val holder =
|
||||
PreferenceViewHolder.createInstanceForTests(
|
||||
|
@@ -22,6 +22,7 @@ import android.platform.test.flag.junit.SetFlagsRule
|
||||
import android.provider.Settings
|
||||
import androidx.test.core.app.ApplicationProvider
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import com.android.settingslib.preference.createAndBindWidget
|
||||
import com.android.settingslib.widget.MainSwitchPreference
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
import org.junit.Before
|
||||
@@ -78,10 +79,6 @@ class AdaptiveConnectivityTogglePreferenceTest {
|
||||
}
|
||||
|
||||
private fun getMainSwitchPreferenceCompat(): MainSwitchPreference =
|
||||
adaptiveConnectivityTogglePreference.run {
|
||||
val preference = createWidget(appContext)
|
||||
bind(preference, this)
|
||||
preference as MainSwitchPreference
|
||||
}
|
||||
adaptiveConnectivityTogglePreference.createAndBindWidget(appContext)
|
||||
}
|
||||
// LINT.ThenChange(AdaptiveConnectivityTogglePreferenceControllerTest.java)
|
||||
|
@@ -23,7 +23,7 @@ import androidx.preference.SwitchPreferenceCompat
|
||||
import androidx.test.core.app.ApplicationProvider
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import com.android.settingslib.datastore.SettingsSystemStore
|
||||
import com.android.settingslib.preference.DefaultPreferenceBindingFactory
|
||||
import com.android.settingslib.preference.createAndBindWidget
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
@@ -93,11 +93,7 @@ class DialPadTonePreferenceTest {
|
||||
}
|
||||
|
||||
private fun getSwitchPreference(): SwitchPreferenceCompat =
|
||||
DefaultPreferenceBindingFactory.getPreferenceBinding(dialPadTonePreference).run {
|
||||
val preference = createWidget(context)
|
||||
bind(preference, dialPadTonePreference)
|
||||
preference as SwitchPreferenceCompat
|
||||
}
|
||||
dialPadTonePreference.createAndBindWidget(context)
|
||||
|
||||
private fun enableDialPadTone(enabled: Boolean) =
|
||||
SettingsSystemStore.get(context).setBoolean(DTMF_TONE_WHEN_DIALING, enabled)
|
||||
|
Reference in New Issue
Block a user