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

Commit 6226188c authored by Goven Liu's avatar Goven Liu Committed by Android (Google) Code Review
Browse files

Merge "[Wi-Fi] Add multiple networks request case for adding Wi-Fi for apps feature."

parents 5a71dd44 c45672be
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -3076,6 +3076,7 @@
                  android:theme="@style/Theme.Panel"
                  android:launchMode="singleInstance"
                  android:excludeFromRecents="true"
                  android:configChanges="orientation|keyboardHidden|screenSize"
                  android:permission="android.permission.CHANGE_WIFI_STATE">
            <intent-filter>
                <action android:name="android.settings.WIFI_ADD_NETWORKS" />
+13 −0
Original line number Diff line number Diff line
@@ -118,6 +118,19 @@
                android:textColor="?android:attr/textColorSecondary"/>
        </LinearLayout>

        <LinearLayout
            android:id="@+id/multiple_networks"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <ListView
                android:id="@+id/config_list"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:divider="@null"
                android:scrollbarStyle="insideOverlay"/>
        </LinearLayout>

        <include layout="@layout/horizontal_divider"/>

        <LinearLayout
+9 −1
Original line number Diff line number Diff line
@@ -2345,7 +2345,15 @@
    <!-- Summary for saved status when saving single network   [CHAR LIMIT=30] -->
    <string name="wifi_add_app_single_network_saved_summary">Saved</string>
    <!-- Summary for save failed status when saving single network [CHAR LIMIT=50] -->
    <string name="wifi_add_app_single_network_save_failed_summary">Couldn\u2019t save. Try again.</string>
    <string name="wifi_add_app_network_save_failed_summary">Couldn\u2019t save. Try again.</string>
    <!--  Title for the panel of add multiple Wi-Fi networks from APP [CHAR LIMIT=50] -->
    <string name="wifi_add_app_networks_title">Save networks?</string>
    <!-- Summary for the panel of add multiple Wi-Fi networks from APP [CHAR LIMIT=NONE] -->
    <string name="wifi_add_app_networks_summary"><xliff:g id="appName" example="ThirdPartyAppName">%1$s</xliff:g> would like to save these networks to your phone</string>
    <!-- Summary for the panel of add Wi-Fi networks from APP [CHAR LIMIT=NONE] -->
    <string name="wifi_add_app_networks_saving_summary">Saving <xliff:g id="number" example="3">%d</xliff:g> networks\u2026</string>
    <!-- Summary for saved status when saving multiple networks   [CHAR LIMIT=NONE] -->
    <string name="wifi_add_app_networks_saved_summary">Networks saved</string>
    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary
         Wi-Fi Testing on the diagnostic screen-->
+275 −67

File changed.

Preview size limit exceeded, changes collapsed.

+73 −22
Original line number Diff line number Diff line
@@ -21,13 +21,14 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;

import android.content.Context;
import android.net.wifi.WifiConfiguration;
import android.os.Bundle;
import android.os.Parcelable;
import android.provider.Settings;
import android.widget.TextView;

import androidx.annotation.NonNull;

import com.android.settings.R;

import org.junit.Before;
@@ -42,18 +43,34 @@ import java.util.List;
@RunWith(RobolectricTestRunner.class)
public class AddAppNetworksFragmentTest {
    private static final String FAKE_APP_NAME = "fake_app_name";
    private static final String FAKE_SSID = "fake_ssid";
    private static final String FAKE_NEW_WPA_SSID = "fake_new_wpa_ssid";
    private static final String FAKE_NEW_OPEN_SSID = "fake_new_open_ssid";
    private static final String FAKE_NEW_SAVED_WPA_SSID = "\"fake_new_wpa_ssid\"";

    private AddAppNetworksFragment mAddAppNetworksFragment;
    private Context mContext;
    private List<WifiConfiguration> mFakedSpecifiedNetworksList;
    private List<WifiConfiguration> mFakeSavedNetworksList;
    private WifiConfiguration mNewWpaConfigEntry;
    private WifiConfiguration mNewOpenConfigEntry;
    private WifiConfiguration mSavedWpaConfigEntry;
    private Bundle mBundle;
    private ArrayList<Integer> mFakedResultArrayList = new ArrayList<>();

    @Before
    public void setUp() {
        mAddAppNetworksFragment = spy(new AddAppNetworksFragment());
        mNewWpaConfigEntry = generateWifiConfig(FAKE_NEW_WPA_SSID,
                WifiConfiguration.KeyMgmt.WPA_PSK, "\"1234567890\"");
        mNewOpenConfigEntry = generateWifiConfig(FAKE_NEW_OPEN_SSID,
                WifiConfiguration.KeyMgmt.NONE, null);
        mSavedWpaConfigEntry = generateWifiConfig(FAKE_NEW_SAVED_WPA_SSID,
                WifiConfiguration.KeyMgmt.WPA_PSK, "\"1234567890\"");
    }

    @Test
    public void callingPackageName_onCreateView_shouldBeCorrect() {
        setUpOneNetworkBundle();
        addOneSpecifiedNetworkConfig(mNewWpaConfigEntry);
        setUpBundle(mFakedSpecifiedNetworksList);
        setupFragment();

        assertThat(mAddAppNetworksFragment.mCallingPackageName).isEqualTo(FAKE_APP_NAME);
@@ -61,7 +78,8 @@ public class AddAppNetworksFragmentTest {

    @Test
    public void launchFragment_shouldShowSaveButton() {
        setUpOneNetworkBundle();
        addOneSpecifiedNetworkConfig(mNewWpaConfigEntry);
        setUpBundle(mFakedSpecifiedNetworksList);
        setupFragment();

        assertThat(mAddAppNetworksFragment.mSaveButton).isNotNull();
@@ -69,7 +87,8 @@ public class AddAppNetworksFragmentTest {

    @Test
    public void launchFragment_shouldShowCancelButton() {
        setUpOneNetworkBundle();
        addOneSpecifiedNetworkConfig(mNewWpaConfigEntry);
        setUpBundle(mFakedSpecifiedNetworksList);
        setupFragment();

        assertThat(mAddAppNetworksFragment.mCancelButton).isNotNull();
@@ -77,40 +96,72 @@ public class AddAppNetworksFragmentTest {

    @Test
    public void requestOneNetwork_shouldShowCorrectSSID() {
        setUpOneNetworkBundle();
        addOneSpecifiedNetworkConfig(mNewWpaConfigEntry);
        setUpBundle(mFakedSpecifiedNetworksList);
        setupFragment();
        TextView ssidView = (TextView) mAddAppNetworksFragment.mLayoutView.findViewById(
                R.id.single_ssid);

        assertThat(ssidView.getText()).isEqualTo(FAKE_SSID);
        assertThat(ssidView.getText()).isEqualTo(FAKE_NEW_WPA_SSID);
    }

    @Test
    public void withNoExtra_requestNetwork_shouldFinished() {
        setUpNoNetworkBundle();
        addOneSpecifiedNetworkConfig(null);
        setUpBundle(mFakedSpecifiedNetworksList);
        setupFragment();

        assertThat(mAddAppNetworksFragment.mActivity.isFinishing()).isTrue();
    }

    private void setUpOneNetworkBundle() {
        // Setup one network.
        List<WifiConfiguration> wifiConfigurationList = new ArrayList<>();
        wifiConfigurationList.add(
                generateWifiConfig(FAKE_SSID, WifiConfiguration.KeyMgmt.WPA_PSK, "\"1234567890\""));
        // Set up bundle.
        final Bundle bundle = new Bundle();
        bundle.putString(AddAppNetworksActivity.KEY_CALLING_PACKAGE_NAME, FAKE_APP_NAME);
        bundle.putParcelableArrayList(Settings.EXTRA_WIFI_CONFIGURATION_LIST,
                (ArrayList<? extends Parcelable>) wifiConfigurationList);
        doReturn(bundle).when(mAddAppNetworksFragment).getArguments();
    @Test
    public void withOneHalfSavedNetworks_uiListAndResultListShouldBeCorrect() {
        // Arrange
        // Setup a fake saved network list and assign to fragment.
        addOneSavedNetworkConfig(mSavedWpaConfigEntry);
        // Setup two specified networks and their results and assign to fragment.
        addOneSpecifiedNetworkConfig(mNewWpaConfigEntry);
        addOneSpecifiedNetworkConfig(mNewOpenConfigEntry);
        mAddAppNetworksFragment.mAllSpecifiedNetworksList = mFakedSpecifiedNetworksList;
        mFakedResultArrayList.add(mAddAppNetworksFragment.RESULT_NETWORK_INITIAL);
        mFakedResultArrayList.add(mAddAppNetworksFragment.RESULT_NETWORK_INITIAL);
        mAddAppNetworksFragment.mResultCodeArrayList = mFakedResultArrayList;

        // Act
        mAddAppNetworksFragment.mUiToRequestedList = mAddAppNetworksFragment.filterSavedNetworks(
                mFakeSavedNetworksList);

        // Assert
        assertThat(mAddAppNetworksFragment.mUiToRequestedList).hasSize(1);
        assertThat(mAddAppNetworksFragment.mResultCodeArrayList.get(0)).isEqualTo(
                mAddAppNetworksFragment.RESULT_NETWORK_ALREADY_EXISTS);
        assertThat(mAddAppNetworksFragment.mUiToRequestedList.get(
                0).mWifiConfiguration.SSID).isEqualTo(FAKE_NEW_OPEN_SSID);
    }

    private void setUpNoNetworkBundle() {
    private void addOneSavedNetworkConfig(@NonNull WifiConfiguration wifiConfiguration) {
        if (mFakeSavedNetworksList == null) {
            mFakeSavedNetworksList = new ArrayList<>();
        }

        mFakeSavedNetworksList.add(wifiConfiguration);
    }

    private void addOneSpecifiedNetworkConfig(@NonNull WifiConfiguration wifiConfiguration) {
        if (wifiConfiguration != null) {
            if (mFakedSpecifiedNetworksList == null) {
                mFakedSpecifiedNetworksList = new ArrayList<>();
            }
            mFakedSpecifiedNetworksList.add(wifiConfiguration);
        }
    }

    private void setUpBundle(List<WifiConfiguration> allFakedNetworksList) {
        // Set up bundle.
        final Bundle bundle = new Bundle();
        bundle.putString(AddAppNetworksActivity.KEY_CALLING_PACKAGE_NAME, FAKE_APP_NAME);
        bundle.putParcelableArrayList(Settings.EXTRA_WIFI_CONFIGURATION_LIST, null);
        bundle.putParcelableArrayList(Settings.EXTRA_WIFI_CONFIGURATION_LIST,
                (ArrayList<? extends Parcelable>) allFakedNetworksList);
        doReturn(bundle).when(mAddAppNetworksFragment).getArguments();
    }