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

Commit 0ad0a505 authored by Zhen Zhang's avatar Zhen Zhang Committed by Android (Google) Code Review
Browse files

Merge "Log some actions for changing wifi hotspot config" into rvc-dev

parents a84c219c 63c7c202
Loading
Loading
Loading
Loading
+18 −0
Original line number Original line Diff line number Diff line
@@ -18,18 +18,22 @@ package com.android.settings.wifi.tether;


import static com.android.settings.AllInOneTetherSettings.DEDUP_POSTFIX;
import static com.android.settings.AllInOneTetherSettings.DEDUP_POSTFIX;


import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.Context;
import android.net.wifi.SoftApConfiguration;
import android.net.wifi.SoftApConfiguration;
import android.text.TextUtils;
import android.text.TextUtils;
import android.util.FeatureFlagUtils;
import android.util.FeatureFlagUtils;


import androidx.annotation.VisibleForTesting;
import androidx.preference.EditTextPreference;
import androidx.preference.EditTextPreference;
import androidx.preference.Preference;
import androidx.preference.Preference;


import com.android.settings.R;
import com.android.settings.R;
import com.android.settings.core.FeatureFlags;
import com.android.settings.core.FeatureFlags;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.widget.ValidatedEditTextPreference;
import com.android.settings.widget.ValidatedEditTextPreference;
import com.android.settings.wifi.WifiUtils;
import com.android.settings.wifi.WifiUtils;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;


import java.util.UUID;
import java.util.UUID;


@@ -40,9 +44,19 @@ public class WifiTetherPasswordPreferenceController extends WifiTetherBasePrefer


    private String mPassword;
    private String mPassword;


    private final MetricsFeatureProvider mMetricsFeatureProvider;

    @VisibleForTesting
    WifiTetherPasswordPreferenceController(Context context, OnTetherConfigUpdateListener listener,
            MetricsFeatureProvider provider) {
        super(context, listener);
        mMetricsFeatureProvider = provider;
    }

    public WifiTetherPasswordPreferenceController(Context context,
    public WifiTetherPasswordPreferenceController(Context context,
            OnTetherConfigUpdateListener listener) {
            OnTetherConfigUpdateListener listener) {
        super(context, listener);
        super(context, listener);
        mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
    }
    }


    @Override
    @Override
@@ -69,6 +83,10 @@ public class WifiTetherPasswordPreferenceController extends WifiTetherBasePrefer


    @Override
    @Override
    public boolean onPreferenceChange(Preference preference, Object newValue) {
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        if (!TextUtils.equals(mPassword, (String) newValue)) {
            mMetricsFeatureProvider.action(mContext,
                    SettingsEnums.ACTION_SETTINGS_CHANGE_WIFI_HOTSPOT_PASSWORD);
        }
        mPassword = (String) newValue;
        mPassword = (String) newValue;
        updatePasswordDisplay((EditTextPreference) mPreference);
        updatePasswordDisplay((EditTextPreference) mPreference);
        mListener.onTetherConfigUpdated(this);
        mListener.onTetherConfigUpdated(this);
+14 −0
Original line number Original line Diff line number Diff line
@@ -22,6 +22,7 @@ import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.net.wifi.SoftApConfiguration;
import android.net.wifi.SoftApConfiguration;
import android.text.TextUtils;
import android.util.FeatureFlagUtils;
import android.util.FeatureFlagUtils;
import android.util.Log;
import android.util.Log;


@@ -48,6 +49,15 @@ public class WifiTetherSSIDPreferenceController extends WifiTetherBasePreference


    private final MetricsFeatureProvider mMetricsFeatureProvider;
    private final MetricsFeatureProvider mMetricsFeatureProvider;


    // This constructor is used for testing.
    @VisibleForTesting
    WifiTetherSSIDPreferenceController(Context context, OnTetherConfigUpdateListener listener,
            MetricsFeatureProvider provider) {
        super(context, listener);
        mWifiDeviceNameTextValidator = new WifiDeviceNameTextValidator();
        mMetricsFeatureProvider = provider;
    }

    public WifiTetherSSIDPreferenceController(Context context,
    public WifiTetherSSIDPreferenceController(Context context,
            OnTetherConfigUpdateListener listener) {
            OnTetherConfigUpdateListener listener) {
        super(context, listener);
        super(context, listener);
@@ -93,6 +103,10 @@ public class WifiTetherSSIDPreferenceController extends WifiTetherBasePreference


    @Override
    @Override
    public boolean onPreferenceChange(Preference preference, Object newValue) {
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        if (!TextUtils.equals(mSSID, (String) newValue)) {
            mMetricsFeatureProvider.action(mContext,
                    SettingsEnums.ACTION_SETTINGS_CHANGE_WIFI_HOTSPOT_NAME);
        }
        mSSID = (String) newValue;
        mSSID = (String) newValue;
        updateSsidDisplay((EditTextPreference) preference);
        updateSsidDisplay((EditTextPreference) preference);
        mListener.onTetherConfigUpdated(this);
        mListener.onTetherConfigUpdated(this);
+26 −2
Original line number Original line Diff line number Diff line
@@ -19,10 +19,12 @@ package com.android.settings.wifi.tether;
import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertThat;


import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.when;


import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.ConnectivityManager;
import android.net.wifi.SoftApConfiguration;
import android.net.wifi.SoftApConfiguration;
@@ -31,6 +33,7 @@ import android.net.wifi.WifiManager;
import androidx.preference.PreferenceScreen;
import androidx.preference.PreferenceScreen;


import com.android.settings.widget.ValidatedEditTextPreference;
import com.android.settings.widget.ValidatedEditTextPreference;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;


import org.junit.Before;
import org.junit.Before;
import org.junit.Test;
import org.junit.Test;
@@ -46,6 +49,7 @@ public class WifiTetherPasswordPreferenceControllerTest {


    private static final String VALID_PASS = "12345678";
    private static final String VALID_PASS = "12345678";
    private static final String VALID_PASS2 = "23456789";
    private static final String VALID_PASS2 = "23456789";
    private static final String INITIAL_PASSWORD = "test_password";
    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
    private Context mContext;
    private Context mContext;
    @Mock
    @Mock
@@ -56,6 +60,8 @@ public class WifiTetherPasswordPreferenceControllerTest {
    private WifiTetherBasePreferenceController.OnTetherConfigUpdateListener mListener;
    private WifiTetherBasePreferenceController.OnTetherConfigUpdateListener mListener;
    @Mock
    @Mock
    private PreferenceScreen mScreen;
    private PreferenceScreen mScreen;
    @Mock
    private MetricsFeatureProvider mMetricsFeatureProvider;


    private WifiTetherPasswordPreferenceController mController;
    private WifiTetherPasswordPreferenceController mController;
    private ValidatedEditTextPreference mPreference;
    private ValidatedEditTextPreference mPreference;
@@ -66,7 +72,8 @@ public class WifiTetherPasswordPreferenceControllerTest {
        MockitoAnnotations.initMocks(this);
        MockitoAnnotations.initMocks(this);
        mPreference = new ValidatedEditTextPreference(RuntimeEnvironment.application);
        mPreference = new ValidatedEditTextPreference(RuntimeEnvironment.application);
        mConfig = new SoftApConfiguration.Builder().setSsid("test_1234")
        mConfig = new SoftApConfiguration.Builder().setSsid("test_1234")
                .setPassphrase("test_password", SoftApConfiguration.SECURITY_TYPE_WPA2_PSK).build();
                .setPassphrase(INITIAL_PASSWORD, SoftApConfiguration.SECURITY_TYPE_WPA2_PSK)
                .build();


        when(mContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mWifiManager);
        when(mContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mWifiManager);
        when(mWifiManager.getSoftApConfiguration()).thenReturn(mConfig);
        when(mWifiManager.getSoftApConfiguration()).thenReturn(mConfig);
@@ -76,7 +83,8 @@ public class WifiTetherPasswordPreferenceControllerTest {
        when(mContext.getResources()).thenReturn(RuntimeEnvironment.application.getResources());
        when(mContext.getResources()).thenReturn(RuntimeEnvironment.application.getResources());
        when(mScreen.findPreference(anyString())).thenReturn(mPreference);
        when(mScreen.findPreference(anyString())).thenReturn(mPreference);


        mController = new WifiTetherPasswordPreferenceController(mContext, mListener);
        mController = new WifiTetherPasswordPreferenceController(mContext, mListener,
                mMetricsFeatureProvider);
    }
    }


    @Test
    @Test
@@ -101,6 +109,22 @@ public class WifiTetherPasswordPreferenceControllerTest {
        verify(mListener, times(2)).onTetherConfigUpdated(mController);
        verify(mListener, times(2)).onTetherConfigUpdated(mController);
    }
    }


    @Test
    public void changePreference_shouldLogActionWhenChanged() {
        mController.displayPreference(mScreen);
        mController.onPreferenceChange(mPreference, VALID_PASS);
        verify(mMetricsFeatureProvider).action(mContext,
                SettingsEnums.ACTION_SETTINGS_CHANGE_WIFI_HOTSPOT_PASSWORD);
    }

    @Test
    public void changePreference_shouldNotLogActionWhenNotChanged() {
        mController.displayPreference(mScreen);
        mController.onPreferenceChange(mPreference, INITIAL_PASSWORD);
        verify(mMetricsFeatureProvider, never()).action(mContext,
                SettingsEnums.ACTION_SETTINGS_CHANGE_WIFI_HOTSPOT_PASSWORD);
    }

    @Test
    @Test
    public void updateDisplay_shouldUpdateValue() {
    public void updateDisplay_shouldUpdateValue() {
        // Set controller password to anything and verify is set.
        // Set controller password to anything and verify is set.
+25 −2
Original line number Original line Diff line number Diff line
@@ -19,10 +19,12 @@ package com.android.settings.wifi.tether;
import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertThat;


import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.when;


import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.ConnectivityManager;
import android.net.wifi.SoftApConfiguration;
import android.net.wifi.SoftApConfiguration;
@@ -30,6 +32,8 @@ import android.net.wifi.WifiManager;


import androidx.preference.PreferenceScreen;
import androidx.preference.PreferenceScreen;


import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;

import org.junit.Before;
import org.junit.Before;
import org.junit.Test;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runner.RunWith;
@@ -52,6 +56,8 @@ public class WifiTetherSSIDPreferenceControllerTest {
    private WifiTetherBasePreferenceController.OnTetherConfigUpdateListener mListener;
    private WifiTetherBasePreferenceController.OnTetherConfigUpdateListener mListener;
    @Mock
    @Mock
    private PreferenceScreen mScreen;
    private PreferenceScreen mScreen;
    @Mock
    private MetricsFeatureProvider mMetricsFeatureProvider;


    private WifiTetherSSIDPreferenceController mController;
    private WifiTetherSSIDPreferenceController mController;
    private WifiTetherSsidPreference mPreference;
    private WifiTetherSsidPreference mPreference;
@@ -67,8 +73,8 @@ public class WifiTetherSSIDPreferenceControllerTest {
        when(mConnectivityManager.getTetherableWifiRegexs()).thenReturn(new String[]{"1", "2"});
        when(mConnectivityManager.getTetherableWifiRegexs()).thenReturn(new String[]{"1", "2"});
        when(mContext.getResources()).thenReturn(RuntimeEnvironment.application.getResources());
        when(mContext.getResources()).thenReturn(RuntimeEnvironment.application.getResources());
        when(mScreen.findPreference(anyString())).thenReturn(mPreference);
        when(mScreen.findPreference(anyString())).thenReturn(mPreference);

        mController = new WifiTetherSSIDPreferenceController(mContext, mListener,
        mController = new WifiTetherSSIDPreferenceController(mContext, mListener);
                mMetricsFeatureProvider);
    }
    }


    @Test
    @Test
@@ -102,6 +108,23 @@ public class WifiTetherSSIDPreferenceControllerTest {
        verify(mListener, times(2)).onTetherConfigUpdated(mController);
        verify(mListener, times(2)).onTetherConfigUpdated(mController);
    }
    }


    @Test
    public void changePreference_shouldLogActionWhenChanged() {
        mController.displayPreference(mScreen);
        mController.onPreferenceChange(mPreference, "1");
        verify(mMetricsFeatureProvider).action(mContext,
                SettingsEnums.ACTION_SETTINGS_CHANGE_WIFI_HOTSPOT_NAME);
    }

    @Test
    public void changePreference_shouldNotLogActionWhenNotChanged() {
        mController.displayPreference(mScreen);
        mController.onPreferenceChange(mPreference,
                WifiTetherSSIDPreferenceController.DEFAULT_SSID);
        verify(mMetricsFeatureProvider, never()).action(mContext,
                SettingsEnums.ACTION_SETTINGS_CHANGE_WIFI_HOTSPOT_NAME);
    }

    @Test
    @Test
    public void updateDisplay_shouldUpdateValue() {
    public void updateDisplay_shouldUpdateValue() {
        // Set controller ssid to anything and verify is set.
        // Set controller ssid to anything and verify is set.