From b415befd5324091938fc441999d13fecd9b01cd3 Mon Sep 17 00:00:00 2001 From: David Liu Date: Wed, 23 Oct 2024 02:00:44 +0000 Subject: [PATCH] Migrate Adaptive Connectivity Add the skeleton of the Adaptive Connectivity Bug: 368359961 Test: atest AdaptiveConnectivityScreenTest Flag: com.android.settings.flags.catalyst_adaptive_connectivity Change-Id: I45aa92635780230c8b89205cd13b7d968438e424 --- aconfig/catalyst/network_and_internet.aconfig | 7 +++ .../network/AdaptiveConnectivityScreen.kt | 45 +++++++++++++++++++ .../network/AdaptiveConnectivitySettings.java | 11 ++++- .../network/AdaptiveConnectivityScreenTest.kt | 38 ++++++++++++++++ 4 files changed, 99 insertions(+), 2 deletions(-) create mode 100644 src/com/android/settings/network/AdaptiveConnectivityScreen.kt create mode 100644 tests/robotests/src/com/android/settings/network/AdaptiveConnectivityScreenTest.kt diff --git a/aconfig/catalyst/network_and_internet.aconfig b/aconfig/catalyst/network_and_internet.aconfig index a5183f3738a..e6a190aeb7b 100644 --- a/aconfig/catalyst/network_and_internet.aconfig +++ b/aconfig/catalyst/network_and_internet.aconfig @@ -14,3 +14,10 @@ flag { description: "Flag for SIMs" bug: "323791114" } + +flag { + name: "catalyst_adaptive_connectivity" + namespace: "android_settings" + description: "Flag for Adaptive connectivity" + bug: "323791114" +} diff --git a/src/com/android/settings/network/AdaptiveConnectivityScreen.kt b/src/com/android/settings/network/AdaptiveConnectivityScreen.kt new file mode 100644 index 00000000000..99f402f3f65 --- /dev/null +++ b/src/com/android/settings/network/AdaptiveConnectivityScreen.kt @@ -0,0 +1,45 @@ +/* + * 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.network + +import android.content.Context +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 AdaptiveConnectivityScreen : PreferenceScreenCreator { + override val key + get() = KEY + + override val title + get() = R.string.adaptive_connectivity_title + + override fun isFlagEnabled(context: Context) = Flags.catalystAdaptiveConnectivity() + + override fun fragmentClass() = AdaptiveConnectivitySettings::class.java + + override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {} + + override fun hasCompleteHierarchy() = false + + companion object { + const val KEY = "adaptive_connectivity" + } +} diff --git a/src/com/android/settings/network/AdaptiveConnectivitySettings.java b/src/com/android/settings/network/AdaptiveConnectivitySettings.java index 5e1dc124f3b..a4e872c67cb 100644 --- a/src/com/android/settings/network/AdaptiveConnectivitySettings.java +++ b/src/com/android/settings/network/AdaptiveConnectivitySettings.java @@ -16,6 +16,10 @@ package com.android.settings.network; import android.app.settings.SettingsEnums; +import android.content.Context; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; @@ -30,8 +34,6 @@ public class AdaptiveConnectivitySettings extends DashboardFragment { private static final String TAG = "AdaptiveConnectivitySettings"; - private static final String KEY_ADAPTIVE_CONNECTIVITY_PREFERENCE = "adaptive_connectivity"; - @Override public int getMetricsCategory() { return SettingsEnums.ADAPTIVE_CONNECTIVITY_CATEGORY; @@ -49,4 +51,9 @@ public class AdaptiveConnectivitySettings extends DashboardFragment { public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = new BaseSearchIndexProvider(R.xml.adaptive_connectivity_settings); + + @Override + public @Nullable String getPreferenceScreenBindingKey(@NonNull Context context) { + return AdaptiveConnectivityScreen.KEY; + } } diff --git a/tests/robotests/src/com/android/settings/network/AdaptiveConnectivityScreenTest.kt b/tests/robotests/src/com/android/settings/network/AdaptiveConnectivityScreenTest.kt new file mode 100644 index 00000000000..f575fe78256 --- /dev/null +++ b/tests/robotests/src/com/android/settings/network/AdaptiveConnectivityScreenTest.kt @@ -0,0 +1,38 @@ +/* + * 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.network + +import androidx.test.ext.junit.runners.AndroidJUnit4 +import com.android.settings.flags.Flags +import com.android.settingslib.preference.CatalystScreenTestCase +import com.google.common.truth.Truth.assertThat +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +class AdaptiveConnectivityScreenTest : CatalystScreenTestCase() { + override val preferenceScreenCreator = AdaptiveConnectivityScreen() + override val flagName + get() = Flags.FLAG_CATALYST_ADAPTIVE_CONNECTIVITY + + override fun migration() {} + + @Test + fun key() { + assertThat(preferenceScreenCreator.key).isEqualTo(AdaptiveConnectivityScreen.KEY) + } +}