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

Commit 16e32fae authored by noshinmir's avatar noshinmir
Browse files

Add nested toggle switches under Adaptive connectivity settings UI

Bug: 393645580
Flag: com.android.settings.flags.enable_nested_toggle_switches
Test: Manual testing
atest AdaptiveConnectivityScreenTest
hsv: https://hsv.googleplex.com/5165236934934528

Change-Id: I12403f5c80290ebccc04f11771ec3f06ee216610
parent fe36b334
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
package: "com.android.settings.flags"
container: "system_ext"

flag {
  name: "enable_nested_toggle_switches"
  namespace: "android_settings"
  description: "Enable nested toggle switches in Adaptive connectivity settings UI"
  bug: "393645580"
}
+9 −1
Original line number Diff line number Diff line
@@ -6771,7 +6771,15 @@
    <string name="adaptive_connectivity_switch_off">Off</string>
    <!-- Title for adaptive connectivity main switch preferences. [CHAR LIMIT=50] -->
    <string name="adaptive_connectivity_main_switch_title">Use adaptive connectivity</string>
    <!-- Title for adaptive connectivity wi-fi switch preferences. [CHAR LIMIT=50] -->
    <string name="adaptive_connectivity_wifi_switch_title">Auto\u2011switch Wi\u2011Fi to Cellular</string>
    <!-- Summary for adaptive connectivity wi-fi switch preferences. [CHAR LIMIT=NONE] -->
    <string name="adaptive_connectivity_wifi_switch_summary">Automatically use cellular data when Wi\u2011Fi connection is poor or unavailable.
Data usage charges may apply.</string>
    <!-- Title for adaptive connectivity mobile network switch preferences. [CHAR LIMIT=50] -->
    <string name="adaptive_connectivity_mobile_network_switch_title">Auto\u2011switch mobile network for battery life</string>
    <!-- Summary for adaptive connectivity mobile network switch preferences. [CHAR LIMIT=NONE] -->
    <string name="adaptive_connectivity_mobile_network_switch_summary">Extend battery life by automatically managing network connections</string>
    <!-- Cellular security related strings -->
    <!-- Title of Cellular security tile in Network & Internet settings page. [CHAR LIMIT=60]-->
    <string name="cellular_security_title">Mobile network security</string>
+11 −0
Original line number Diff line number Diff line
@@ -33,4 +33,15 @@
        android:title="@string/adaptive_connectivity_main_switch_title"
        settings:controller="com.android.settings.network.AdaptiveConnectivityTogglePreferenceController"/>

    <SwitchPreferenceCompat
        android:key="adaptive_connectivity_wifi_enabled"
        android:title="@string/adaptive_connectivity_wifi_switch_title"
        android:summary="@string/adaptive_connectivity_wifi_switch_summary"
        settings:isPreferenceVisible="false"/>

    <SwitchPreferenceCompat
        android:key="adaptive_connectivity_mobile_network_enabled"
        android:title="@string/adaptive_connectivity_mobile_network_switch_title"
        android:summary="@string/adaptive_connectivity_mobile_network_switch_summary"
        settings:isPreferenceVisible="false"/>
</PreferenceScreen>
+44 −23
Original line number Diff line number Diff line
@@ -17,22 +17,26 @@ package com.android.settings.network;

import android.app.settings.SettingsEnums;
import android.content.Context;

import android.os.Bundle;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import androidx.preference.SwitchPreferenceCompat;
import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.flags.Flags;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.search.SearchIndexable;

/**
 * Adaptive connectivity is a feature which automatically manages network connections.
 */
/** Adaptive connectivity is a feature which automatically manages network connections. */
@SearchIndexable
public class AdaptiveConnectivitySettings extends DashboardFragment {

  private static final String TAG = "AdaptiveConnectivitySettings";
  protected static final String ADAPTIVE_CONNECTIVITY_WIFI_ENABLED =
      "adaptive_connectivity_wifi_enabled";
  protected static final String ADAPTIVE_CONNECTIVITY_MOBILE_NETWORK_ENABLED =
      "adaptive_connectivity_mobile_network_enabled";

  @Override
  public int getMetricsCategory() {
@@ -56,4 +60,21 @@ public class AdaptiveConnectivitySettings extends DashboardFragment {
  public @Nullable String getPreferenceScreenBindingKey(@NonNull Context context) {
    return AdaptiveConnectivityScreen.KEY;
  }

  @Override
  public void onCreatePreferences(@NonNull Bundle savedInstanceState, @NonNull String rootKey) {
    Log.i("Settings", "onCreatePreferences");
    super.onCreatePreferences(savedInstanceState, rootKey);
    if (Flags.enableNestedToggleSwitches()) {
      setSwitchVisibility(ADAPTIVE_CONNECTIVITY_WIFI_ENABLED, true);
      setSwitchVisibility(ADAPTIVE_CONNECTIVITY_MOBILE_NETWORK_ENABLED, true);
    }
  }

  private void setSwitchVisibility(String key, boolean isVisible) {
    SwitchPreferenceCompat switchPreference = findPreference(key);
    if (switchPreference != null) {
      switchPreference.setVisible(isVisible);
    }
  }
}
+23 −0
Original line number Diff line number Diff line
@@ -16,13 +16,17 @@

package com.android.settings.network

import androidx.preference.SwitchPreferenceCompat
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.settings.flags.Flags
import com.android.settings.network.AdaptiveConnectivitySettings.ADAPTIVE_CONNECTIVITY_MOBILE_NETWORK_ENABLED
import com.android.settings.network.AdaptiveConnectivitySettings.ADAPTIVE_CONNECTIVITY_WIFI_ENABLED
import com.android.settingslib.preference.CatalystScreenTestCase
import com.google.common.truth.Truth.assertThat
import org.junit.Test
import org.junit.runner.RunWith

@Suppress("DEPRECATION")
@RunWith(AndroidJUnit4::class)
class AdaptiveConnectivityScreenTest : CatalystScreenTestCase() {
    override val preferenceScreenCreator = AdaptiveConnectivityScreen()
@@ -35,4 +39,23 @@ class AdaptiveConnectivityScreenTest : CatalystScreenTestCase() {
    fun key() {
        assertThat(preferenceScreenCreator.key).isEqualTo(AdaptiveConnectivityScreen.KEY)
    }

    @Test
    fun flagDefaultDisabled_noSwitchPreferenceCompatExists() {
        // create fragment
        val fragment: AdaptiveConnectivitySettings =
            preferenceScreenCreator.fragmentClass().newInstance()
        // check if switch preference exists
        assertSwitchPreferenceCompatIsNull(ADAPTIVE_CONNECTIVITY_WIFI_ENABLED, fragment)
        assertSwitchPreferenceCompatIsNull(ADAPTIVE_CONNECTIVITY_MOBILE_NETWORK_ENABLED, fragment)
    }

    private fun assertSwitchPreferenceCompatIsNull(
        key: String,
        fragment: AdaptiveConnectivitySettings
    ) {
        val switchPreference = fragment.findPreference<SwitchPreferenceCompat>(key)
        assertThat(switchPreference).isNull()
    }

}