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

Commit 764d7f4b authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix ConnectivityManager.requestNetwork crash issue when try again" into tm-dev

parents 53fa29af 98d30c88
Loading
Loading
Loading
Loading
+17 −7
Original line number Original line Diff line number Diff line
@@ -58,12 +58,17 @@ public class NetworkRequestDialogActivity extends FragmentActivity implements
    final static String EXTRA_IS_SPECIFIED_SSID =
    final static String EXTRA_IS_SPECIFIED_SSID =
        "com.android.settings.wifi.extra.REQUEST_IS_FOR_SINGLE_NETWORK";
        "com.android.settings.wifi.extra.REQUEST_IS_FOR_SINGLE_NETWORK";


    @VisibleForTesting NetworkRequestDialogBaseFragment mDialogFragment;
    @VisibleForTesting
    NetworkRequestDialogBaseFragment mDialogFragment;
    @VisibleForTesting
    boolean mIsSpecifiedSsid;
    @VisibleForTesting
    boolean mShowingErrorDialog;
    @VisibleForTesting
    ProgressDialog mProgressDialog;

    private NetworkRequestUserSelectionCallback mUserSelectionCallback;
    private NetworkRequestUserSelectionCallback mUserSelectionCallback;
    private boolean mIsSpecifiedSsid;
    private boolean mShowingErrorDialog;
    private WifiConfiguration mMatchedConfig;
    private WifiConfiguration mMatchedConfig;
    @VisibleForTesting ProgressDialog mProgressDialog;


    @Override
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
    protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -103,7 +108,8 @@ public class NetworkRequestDialogActivity extends FragmentActivity implements
        mDialogFragment.show(getSupportFragmentManager(), TAG);
        mDialogFragment.show(getSupportFragmentManager(), TAG);
    }
    }


    private void dismissDialogs() {
    @VisibleForTesting
    void dismissDialogs() {
        if (mDialogFragment != null) {
        if (mDialogFragment != null) {
            mDialogFragment.dismiss();
            mDialogFragment.dismiss();
            mDialogFragment = null;
            mDialogFragment = null;
@@ -174,8 +180,10 @@ public class NetworkRequestDialogActivity extends FragmentActivity implements
            return;
            return;
        }
        }


        if (mDialogFragment != null) {
            mDialogFragment.onUserSelectionCallbackRegistration(userSelectionCallback);
            mDialogFragment.onUserSelectionCallbackRegistration(userSelectionCallback);
        }
        }
    }


    @Override
    @Override
    public void onAbort() {
    public void onAbort() {
@@ -201,8 +209,10 @@ public class NetworkRequestDialogActivity extends FragmentActivity implements
            return;
            return;
        }
        }


        if (mDialogFragment != null) {
            mDialogFragment.onMatch(scanResults);
            mDialogFragment.onMatch(scanResults);
        }
        }
    }


    @Override
    @Override
    public void onUserSelectionConnectSuccess(WifiConfiguration wificonfiguration) {
    public void onUserSelectionConnectSuccess(WifiConfiguration wificonfiguration) {
+36 −28
Original line number Original line Diff line number Diff line
@@ -25,7 +25,6 @@ import static org.mockito.Mockito.spy;
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.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.net.wifi.ScanResult;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiConfiguration;
@@ -42,9 +41,12 @@ import com.android.settings.wifi.NetworkRequestErrorDialogFragment.ERROR_DIALOG_
import com.android.wifitrackerlib.WifiPickerTracker;
import com.android.wifitrackerlib.WifiPickerTracker;


import org.junit.Before;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runner.RunWith;
import org.mockito.MockitoAnnotations;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.Robolectric;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.RuntimeEnvironment;
@@ -61,25 +63,26 @@ public class NetworkRequestDialogActivityTest {
    private static final String TEST_SSID = "testssid";
    private static final String TEST_SSID = "testssid";
    private static final String TEST_CAPABILITY = "wep";
    private static final String TEST_CAPABILITY = "wep";


    NetworkRequestDialogActivity mActivity;
    @Rule
    public MockitoRule mRule = MockitoJUnit.rule();
    @Mock
    WifiManager mWifiManager;
    WifiManager mWifiManager;
    Context mContext;
    @Mock
    NetworkRequestUserSelectionCallback mNetworkRequestUserSelectionCallback;

    NetworkRequestDialogActivity mActivity;
    List<ScanResult> mScanResults = new ArrayList<>();


    @Before
    @Before
    public void setUp() {
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mContext = spy(RuntimeEnvironment.application);
        FakeFeatureFactory fakeFeatureFactory = FakeFeatureFactory.setupForTest();
        FakeFeatureFactory fakeFeatureFactory = FakeFeatureFactory.setupForTest();
        when(fakeFeatureFactory.wifiTrackerLibProvider.createWifiPickerTracker(
        when(fakeFeatureFactory.wifiTrackerLibProvider.createWifiPickerTracker(
                any(), any(), any(), any(), any(), anyLong(), anyLong(), any()))
                any(), any(), any(), any(), any(), anyLong(), anyLong(), any()))
                .thenReturn(mock(WifiPickerTracker.class));
                .thenReturn(mock(WifiPickerTracker.class));
        mScanResults.add(getScanResult(TEST_SSID, TEST_CAPABILITY));


        NetworkRequestDialogActivity activity =
        mActivity = spy(Robolectric.setupActivity(NetworkRequestDialogActivity.class));
            Robolectric.setupActivity(NetworkRequestDialogActivity.class);
        when(mActivity.getSystemService(WifiManager.class)).thenReturn(mWifiManager);
        mActivity = spy(activity);

        mWifiManager = mock(WifiManager.class);
        when(mActivity.getSystemService(Context.WIFI_SERVICE)).thenReturn(mWifiManager);
    }
    }


    @Test
    @Test
@@ -169,10 +172,7 @@ public class NetworkRequestDialogActivityTest {
    public void specifiedSsid_onMatch_shouldShowDialogFragment() {
    public void specifiedSsid_onMatch_shouldShowDialogFragment() {
        startSpecifiedActivity();
        startSpecifiedActivity();


        final List<ScanResult> scanResults = new ArrayList<>();
        mActivity.onMatch(mScanResults);
        scanResults.add(getScanResult(TEST_SSID, TEST_CAPABILITY));

        mActivity.onMatch(scanResults);


        assertThat(mActivity.mProgressDialog).isNull();
        assertThat(mActivity.mProgressDialog).isNull();
        assertThat(mActivity.mDialogFragment).isNotNull();
        assertThat(mActivity.mDialogFragment).isNotNull();
@@ -193,9 +193,7 @@ public class NetworkRequestDialogActivityTest {
    public void onUserSelectionConnectFailure_shouldShowDialogFragment() {
    public void onUserSelectionConnectFailure_shouldShowDialogFragment() {
        WifiConfiguration wifiConfiguration = mock(WifiConfiguration.class);
        WifiConfiguration wifiConfiguration = mock(WifiConfiguration.class);
        startSpecifiedActivity();
        startSpecifiedActivity();
        final List<ScanResult> scanResults = new ArrayList<>();
        mActivity.onMatch(mScanResults);
        scanResults.add(getScanResult(TEST_SSID, TEST_CAPABILITY));
        mActivity.onMatch(scanResults);


        mActivity.onUserSelectionConnectFailure(wifiConfiguration);
        mActivity.onUserSelectionConnectFailure(wifiConfiguration);


@@ -205,13 +203,9 @@ public class NetworkRequestDialogActivityTest {


    @Test
    @Test
    public void onClickConnectButton_shouldShowProgressDialog() {
    public void onClickConnectButton_shouldShowProgressDialog() {
        NetworkRequestUserSelectionCallback networkRequestUserSelectionCallback = mock(
                NetworkRequestUserSelectionCallback.class);
        startSpecifiedActivity();
        startSpecifiedActivity();
        final List<ScanResult> scanResults = new ArrayList<>();
        mActivity.onMatch(mScanResults);
        scanResults.add(getScanResult(TEST_SSID, TEST_CAPABILITY));
        mActivity.onUserSelectionCallbackRegistration(mNetworkRequestUserSelectionCallback);
        mActivity.onMatch(scanResults);
        mActivity.onUserSelectionCallbackRegistration(networkRequestUserSelectionCallback);


        mActivity.onClickConnectButton();
        mActivity.onClickConnectButton();


@@ -222,9 +216,7 @@ public class NetworkRequestDialogActivityTest {
    @Test
    @Test
    public void onCancel_shouldCloseAllUI() {
    public void onCancel_shouldCloseAllUI() {
        startSpecifiedActivity();
        startSpecifiedActivity();
        final List<ScanResult> scanResults = new ArrayList<>();
        mActivity.onMatch(mScanResults);
        scanResults.add(getScanResult(TEST_SSID, TEST_CAPABILITY));
        mActivity.onMatch(scanResults);


        mActivity.onCancel();
        mActivity.onCancel();


@@ -240,4 +232,20 @@ public class NetworkRequestDialogActivityTest {


        verify(mActivity).finish();
        verify(mActivity).finish();
    }
    }

    @Test
    public void onUserSelectionCallbackRegistration_dismissDialogsAndDialogIsNull_shouldNotCrash() {
        mActivity.dismissDialogs();

        mActivity.onUserSelectionCallbackRegistration(mNetworkRequestUserSelectionCallback);
    }

    @Test
    public void onMatch_dismissDialogsAndDialogIsNull_shouldNotCrash() {
        mActivity.mIsSpecifiedSsid = false;
        mActivity.mShowingErrorDialog = false;
        mActivity.dismissDialogs();

        mActivity.onMatch(mScanResults);
    }
}
}