From 6794ce8233014dff258e11b81e5f09096818590a Mon Sep 17 00:00:00 2001 From: govenliu Date: Tue, 10 Mar 2020 13:30:19 +0800 Subject: [PATCH] [Wi-Fi] Use startActivityForResult instead of startActivity to launch google help page The startActivity API can not launch the help page. Change to use startActivityForResult to launch. Bug: 143784389 Test: Add learnMore_launchesHelp_shouldStartActivityForResult unit test to check if startActivityForResult be called. Change-Id: Ia3ef82f94d4c8feb71131b44be26df74d6259805 --- .../wifi/WifiScanningRequiredFragment.java | 2 +- .../WifiScanningRequiredFragmentTest.java | 25 ++++++++++++++----- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/com/android/settings/wifi/WifiScanningRequiredFragment.java b/src/com/android/settings/wifi/WifiScanningRequiredFragment.java index 0f81edba021..954a5ded12f 100644 --- a/src/com/android/settings/wifi/WifiScanningRequiredFragment.java +++ b/src/com/android/settings/wifi/WifiScanningRequiredFragment.java @@ -99,7 +99,7 @@ public class WifiScanningRequiredFragment extends InstrumentedDialogFragment imp Intent intent = getHelpIntent(getContext()); if (intent != null) { try { - startActivity(intent); + getActivity().startActivityForResult(intent, 0); } catch (ActivityNotFoundException e) { Log.e(TAG, "Activity was not found for intent, " + intent.toString()); } diff --git a/tests/robotests/src/com/android/settings/wifi/WifiScanningRequiredFragmentTest.java b/tests/robotests/src/com/android/settings/wifi/WifiScanningRequiredFragmentTest.java index e5c730f7283..6969e1425bb 100644 --- a/tests/robotests/src/com/android/settings/wifi/WifiScanningRequiredFragmentTest.java +++ b/tests/robotests/src/com/android/settings/wifi/WifiScanningRequiredFragmentTest.java @@ -15,12 +15,12 @@ */ package com.android.settings.wifi; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.isNull; import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; @@ -30,11 +30,13 @@ import static org.mockito.Mockito.when; import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; +import android.content.Intent; import android.net.wifi.WifiManager; import android.provider.Settings; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentActivity; import com.android.settings.R; @@ -58,6 +60,8 @@ public class WifiScanningRequiredFragmentTest { private Fragment mCallbackFragment; @Mock private AlertDialog.Builder mBuilder; + @Mock + private FragmentActivity mActivity; @Before public void setUp() { @@ -66,6 +70,7 @@ public class WifiScanningRequiredFragmentTest { mContext = spy(RuntimeEnvironment.application); when(mContext.getSystemService(WifiManager.class)).thenReturn(mWifiManager); mResolver = mContext.getContentResolver(); + doReturn(mActivity).when(mFragment).getActivity(); doReturn(mContext).when(mFragment).getContext(); mFragment.setTargetFragment(mCallbackFragment, 1000); @@ -77,7 +82,7 @@ public class WifiScanningRequiredFragmentTest { throws Settings.SettingNotFoundException { mFragment.onClick(null, DialogInterface.BUTTON_POSITIVE); - verify(mWifiManager).setScanAlwaysAvailable(false); + verify(mWifiManager).setScanAlwaysAvailable(true); } @Test @@ -89,16 +94,24 @@ public class WifiScanningRequiredFragmentTest { @Test public void learnMore_launchesHelpWhenIntentFound() { - Context context = mock(Context.class); - doReturn(context).when(mFragment).getContext(); - doReturn("").when(context).getString(eq(R.string.help_uri_wifi_scanning_required)); + doReturn("").when(mContext).getString(eq(R.string.help_uri_wifi_scanning_required)); mFragment.addButtonIfNeeded(mBuilder); verify(mBuilder, never()) .setNeutralButton(anyInt(), nullable(DialogInterface.OnClickListener.class)); - doReturn("help").when(context).getString(eq(R.string.help_uri_wifi_scanning_required)); + doReturn("help").when(mContext).getString(eq(R.string.help_uri_wifi_scanning_required)); mFragment.addButtonIfNeeded(mBuilder); verify(mBuilder, times(1)) .setNeutralButton(anyInt(), nullable(DialogInterface.OnClickListener.class)); } + + @Test + public void learnMore_launchesHelp_shouldStartActivityForResult() { + doReturn(new Intent()).when(mFragment).getHelpIntent(mContext); + mFragment.addButtonIfNeeded(mBuilder); + + mFragment.onClick(null, DialogInterface.BUTTON_NEUTRAL); + + verify(mActivity, times(1)).startActivityForResult(any(), anyInt()); + } }