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

Commit f7d9c87a authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Sound screen migration" into main

parents 3dc4d36a 29036fd2
Loading
Loading
Loading
Loading
+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
+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
+24 −15
Original line number Diff line number Diff line
@@ -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;
@@ -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));
@@ -210,6 +213,7 @@ public class SoundSettings extends DashboardFragment implements OnActivityResult
                getSettingsLifecycle().addObserver(controller);
            }
        }
    }

    // === Volumes ===

@@ -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;
    }
}
+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