diff --git a/src/com/android/settings/wifi/NetworkRequestDialogActivity.java b/src/com/android/settings/wifi/NetworkRequestDialogActivity.java index b160d904293..30f38d299e5 100644 --- a/src/com/android/settings/wifi/NetworkRequestDialogActivity.java +++ b/src/com/android/settings/wifi/NetworkRequestDialogActivity.java @@ -58,12 +58,17 @@ public class NetworkRequestDialogActivity extends FragmentActivity implements final static String EXTRA_IS_SPECIFIED_SSID = "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 boolean mIsSpecifiedSsid; - private boolean mShowingErrorDialog; private WifiConfiguration mMatchedConfig; - @VisibleForTesting ProgressDialog mProgressDialog; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { @@ -103,7 +108,8 @@ public class NetworkRequestDialogActivity extends FragmentActivity implements mDialogFragment.show(getSupportFragmentManager(), TAG); } - private void dismissDialogs() { + @VisibleForTesting + void dismissDialogs() { if (mDialogFragment != null) { mDialogFragment.dismiss(); mDialogFragment = null; @@ -174,7 +180,9 @@ public class NetworkRequestDialogActivity extends FragmentActivity implements return; } - mDialogFragment.onUserSelectionCallbackRegistration(userSelectionCallback); + if (mDialogFragment != null) { + mDialogFragment.onUserSelectionCallbackRegistration(userSelectionCallback); + } } @Override @@ -201,7 +209,9 @@ public class NetworkRequestDialogActivity extends FragmentActivity implements return; } - mDialogFragment.onMatch(scanResults); + if (mDialogFragment != null) { + mDialogFragment.onMatch(scanResults); + } } @Override diff --git a/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogActivityTest.java b/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogActivityTest.java index fb200453d4d..616cb0bde39 100644 --- a/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogActivityTest.java +++ b/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogActivityTest.java @@ -25,7 +25,6 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import android.content.Context; import android.content.Intent; import android.net.wifi.ScanResult; import android.net.wifi.WifiConfiguration; @@ -42,9 +41,12 @@ import com.android.settings.wifi.NetworkRequestErrorDialogFragment.ERROR_DIALOG_ import com.android.wifitrackerlib.WifiPickerTracker; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; 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.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; @@ -61,25 +63,26 @@ public class NetworkRequestDialogActivityTest { private static final String TEST_SSID = "testssid"; private static final String TEST_CAPABILITY = "wep"; - NetworkRequestDialogActivity mActivity; + @Rule + public MockitoRule mRule = MockitoJUnit.rule(); + @Mock WifiManager mWifiManager; - Context mContext; + @Mock + NetworkRequestUserSelectionCallback mNetworkRequestUserSelectionCallback; + + NetworkRequestDialogActivity mActivity; + List mScanResults = new ArrayList<>(); @Before public void setUp() { - MockitoAnnotations.initMocks(this); - mContext = spy(RuntimeEnvironment.application); FakeFeatureFactory fakeFeatureFactory = FakeFeatureFactory.setupForTest(); when(fakeFeatureFactory.wifiTrackerLibProvider.createWifiPickerTracker( any(), any(), any(), any(), any(), anyLong(), anyLong(), any())) .thenReturn(mock(WifiPickerTracker.class)); + mScanResults.add(getScanResult(TEST_SSID, TEST_CAPABILITY)); - NetworkRequestDialogActivity activity = - Robolectric.setupActivity(NetworkRequestDialogActivity.class); - mActivity = spy(activity); - - mWifiManager = mock(WifiManager.class); - when(mActivity.getSystemService(Context.WIFI_SERVICE)).thenReturn(mWifiManager); + mActivity = spy(Robolectric.setupActivity(NetworkRequestDialogActivity.class)); + when(mActivity.getSystemService(WifiManager.class)).thenReturn(mWifiManager); } @Test @@ -169,10 +172,7 @@ public class NetworkRequestDialogActivityTest { public void specifiedSsid_onMatch_shouldShowDialogFragment() { startSpecifiedActivity(); - final List scanResults = new ArrayList<>(); - scanResults.add(getScanResult(TEST_SSID, TEST_CAPABILITY)); - - mActivity.onMatch(scanResults); + mActivity.onMatch(mScanResults); assertThat(mActivity.mProgressDialog).isNull(); assertThat(mActivity.mDialogFragment).isNotNull(); @@ -193,9 +193,7 @@ public class NetworkRequestDialogActivityTest { public void onUserSelectionConnectFailure_shouldShowDialogFragment() { WifiConfiguration wifiConfiguration = mock(WifiConfiguration.class); startSpecifiedActivity(); - final List scanResults = new ArrayList<>(); - scanResults.add(getScanResult(TEST_SSID, TEST_CAPABILITY)); - mActivity.onMatch(scanResults); + mActivity.onMatch(mScanResults); mActivity.onUserSelectionConnectFailure(wifiConfiguration); @@ -205,13 +203,9 @@ public class NetworkRequestDialogActivityTest { @Test public void onClickConnectButton_shouldShowProgressDialog() { - NetworkRequestUserSelectionCallback networkRequestUserSelectionCallback = mock( - NetworkRequestUserSelectionCallback.class); startSpecifiedActivity(); - final List scanResults = new ArrayList<>(); - scanResults.add(getScanResult(TEST_SSID, TEST_CAPABILITY)); - mActivity.onMatch(scanResults); - mActivity.onUserSelectionCallbackRegistration(networkRequestUserSelectionCallback); + mActivity.onMatch(mScanResults); + mActivity.onUserSelectionCallbackRegistration(mNetworkRequestUserSelectionCallback); mActivity.onClickConnectButton(); @@ -222,9 +216,7 @@ public class NetworkRequestDialogActivityTest { @Test public void onCancel_shouldCloseAllUI() { startSpecifiedActivity(); - final List scanResults = new ArrayList<>(); - scanResults.add(getScanResult(TEST_SSID, TEST_CAPABILITY)); - mActivity.onMatch(scanResults); + mActivity.onMatch(mScanResults); mActivity.onCancel(); @@ -240,4 +232,20 @@ public class NetworkRequestDialogActivityTest { 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); + } }