Loading aconfig/catalyst/sound_screen.aconfig 0 → 100644 +9 −0 Original line number Diff line number Diff line package: "com.android.settings.flags" container: "system" flag { name: "catalyst_sound_screen" namespace: "android_settings" description: "Flag for sound and vibration page" bug: "323791114" } No newline at end of file src/com/android/settings/notification/SoundScreen.kt 0 → 100644 +47 −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.notification import android.content.Context import androidx.fragment.app.Fragment import com.android.settings.R import com.android.settings.flags.Flags import com.android.settingslib.metadata.ProvidePreferenceScreen import com.android.settingslib.metadata.preferenceHierarchy import com.android.settingslib.preference.PreferenceScreenCreator @ProvidePreferenceScreen class SoundScreen : PreferenceScreenCreator { override val key: String get() = KEY override val title: Int get() = R.string.sound_settings override val keywords: Int get() = R.string.keywords_sounds override fun isFlagEnabled(context: Context): Boolean = Flags.catalystSoundScreen() override fun fragmentClass(): Class<out Fragment>? = SoundSettings::class.java override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {} companion object { const val KEY = "sound_screen" } } No newline at end of file src/com/android/settings/notification/SoundSettings.java +24 −15 Original line number Diff line number Diff line Loading @@ -29,6 +29,8 @@ import android.os.UserHandle; import android.preference.SeekBarVolumizer; import android.text.TextUtils; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.preference.ListPreference; import androidx.preference.Preference; Loading Loading @@ -193,6 +195,7 @@ public class SoundSettings extends DashboardFragment implements OnActivityResult @Override public void onAttach(Context context) { super.onAttach(context); if (!isCatalystEnabled()) { ArrayList<VolumeSeekBarPreferenceController> volumeControllers = new ArrayList<>(); volumeControllers.add(use(AlarmVolumePreferenceController.class)); volumeControllers.add(use(MediaVolumePreferenceController.class)); Loading @@ -210,6 +213,7 @@ public class SoundSettings extends DashboardFragment implements OnActivityResult getSettingsLifecycle().addObserver(controller); } } } // === Volumes === Loading Loading @@ -321,4 +325,9 @@ public class SoundSettings extends DashboardFragment implements OnActivityResult mDialogFragment.onListPreferenceUpdated(preference); } } @Override public @Nullable String getPreferenceScreenBindingKey(@NonNull Context context) { return SoundScreen.KEY; } } tests/robotests/src/com/android/settings/notification/SoundScreenTest.kt 0 → 100644 +53 −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.notification import android.content.Context import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import android.platform.test.flag.junit.SetFlagsRule import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import com.android.settings.flags.Flags import com.google.common.truth.Truth.assertThat import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) class SoundScreenTest { @get:Rule val setFlagsRule = SetFlagsRule() private val context: Context = ApplicationProvider.getApplicationContext() private val soundScreen = SoundScreen() @Test fun key() { assertThat(soundScreen.key).isEqualTo(SoundScreen.KEY) } @Test @EnableFlags(Flags.FLAG_CATALYST_SOUND_SCREEN) fun isFlagEnabled_returnTrue() { assertThat(soundScreen.isFlagEnabled(context)).isTrue() } @Test @DisableFlags(Flags.FLAG_CATALYST_SOUND_SCREEN) fun isFlagEnabled_returnFalse() { assertThat(soundScreen.isFlagEnabled(context)).isFalse() } } No newline at end of file Loading
aconfig/catalyst/sound_screen.aconfig 0 → 100644 +9 −0 Original line number Diff line number Diff line package: "com.android.settings.flags" container: "system" flag { name: "catalyst_sound_screen" namespace: "android_settings" description: "Flag for sound and vibration page" bug: "323791114" } No newline at end of file
src/com/android/settings/notification/SoundScreen.kt 0 → 100644 +47 −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.notification import android.content.Context import androidx.fragment.app.Fragment import com.android.settings.R import com.android.settings.flags.Flags import com.android.settingslib.metadata.ProvidePreferenceScreen import com.android.settingslib.metadata.preferenceHierarchy import com.android.settingslib.preference.PreferenceScreenCreator @ProvidePreferenceScreen class SoundScreen : PreferenceScreenCreator { override val key: String get() = KEY override val title: Int get() = R.string.sound_settings override val keywords: Int get() = R.string.keywords_sounds override fun isFlagEnabled(context: Context): Boolean = Flags.catalystSoundScreen() override fun fragmentClass(): Class<out Fragment>? = SoundSettings::class.java override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {} companion object { const val KEY = "sound_screen" } } No newline at end of file
src/com/android/settings/notification/SoundSettings.java +24 −15 Original line number Diff line number Diff line Loading @@ -29,6 +29,8 @@ import android.os.UserHandle; import android.preference.SeekBarVolumizer; import android.text.TextUtils; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.preference.ListPreference; import androidx.preference.Preference; Loading Loading @@ -193,6 +195,7 @@ public class SoundSettings extends DashboardFragment implements OnActivityResult @Override public void onAttach(Context context) { super.onAttach(context); if (!isCatalystEnabled()) { ArrayList<VolumeSeekBarPreferenceController> volumeControllers = new ArrayList<>(); volumeControllers.add(use(AlarmVolumePreferenceController.class)); volumeControllers.add(use(MediaVolumePreferenceController.class)); Loading @@ -210,6 +213,7 @@ public class SoundSettings extends DashboardFragment implements OnActivityResult getSettingsLifecycle().addObserver(controller); } } } // === Volumes === Loading Loading @@ -321,4 +325,9 @@ public class SoundSettings extends DashboardFragment implements OnActivityResult mDialogFragment.onListPreferenceUpdated(preference); } } @Override public @Nullable String getPreferenceScreenBindingKey(@NonNull Context context) { return SoundScreen.KEY; } }
tests/robotests/src/com/android/settings/notification/SoundScreenTest.kt 0 → 100644 +53 −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.notification import android.content.Context import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import android.platform.test.flag.junit.SetFlagsRule import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import com.android.settings.flags.Flags import com.google.common.truth.Truth.assertThat import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) class SoundScreenTest { @get:Rule val setFlagsRule = SetFlagsRule() private val context: Context = ApplicationProvider.getApplicationContext() private val soundScreen = SoundScreen() @Test fun key() { assertThat(soundScreen.key).isEqualTo(SoundScreen.KEY) } @Test @EnableFlags(Flags.FLAG_CATALYST_SOUND_SCREEN) fun isFlagEnabled_returnTrue() { assertThat(soundScreen.isFlagEnabled(context)).isTrue() } @Test @DisableFlags(Flags.FLAG_CATALYST_SOUND_SCREEN) fun isFlagEnabled_returnFalse() { assertThat(soundScreen.isFlagEnabled(context)).isFalse() } } No newline at end of file