Loading res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -6690,6 +6690,8 @@ <string name="help_uri_private_dns" translatable="false"></string> <string name="help_uri_about_phone_v2" translatable="false"></string> <string name="help_uri_wifi_calling" translatable="false"></string> <!-- url for the wifi scanning required dialog help page --> <string name="help_uri_wifi_scanning_required" translatable="false"></string> <!-- User account title [CHAR LIMIT=30] --> <string name="user_account_title">Account for content</string> src/com/android/settings/wifi/WifiScanningRequiredFragment.java +39 −9 Original line number Diff line number Diff line Loading @@ -15,24 +15,31 @@ */ package com.android.settings.wifi; import static com.android.settings.wifi.ConfigureWifiSettings.WIFI_WAKEUP_REQUEST_CODE; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.ActivityNotFoundException; import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.provider.Settings; import android.support.annotation.VisibleForTesting; import android.text.TextUtils; import android.util.Log; import android.widget.Toast; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settingslib.HelpUtils; public class WifiScanningRequiredFragment extends InstrumentedDialogFragment implements DialogInterface.OnClickListener { private static final String TAG = "WifiScanReqFrag"; public static WifiScanningRequiredFragment newInstance() { WifiScanningRequiredFragment fragment = new WifiScanningRequiredFragment(); return fragment; Loading @@ -40,19 +47,20 @@ public class WifiScanningRequiredFragment extends InstrumentedDialogFragment imp @Override public Dialog onCreateDialog(Bundle savedInstanceState) { return new AlertDialog.Builder(getContext()) AlertDialog.Builder builder = new AlertDialog.Builder(getContext()) .setTitle(R.string.wifi_settings_scanning_required_title) .setView(R.layout.wifi_settings_scanning_required_view) .setNeutralButton(R.string.do_disclosure_learn_more, this) .setPositiveButton(R.string.wifi_settings_scanning_required_turn_on, this) .setNegativeButton(R.string.cancel, null) .create(); .setNegativeButton(R.string.cancel, null); addButtonIfNeeded(builder); return builder.create(); } @Override public int getMetricsCategory() { // TODO(b/67070896): add metric code return 0; return MetricsProto.MetricsEvent.WIFI_SCANNING_NEEDED_DIALOG; } @Override Loading Loading @@ -81,7 +89,29 @@ public class WifiScanningRequiredFragment extends InstrumentedDialogFragment imp } } void addButtonIfNeeded(AlertDialog.Builder builder) { // Only show "learn more" if there is a help page to show if (!TextUtils.isEmpty(getContext().getString(R.string.help_uri_wifi_scanning_required))) { builder.setNeutralButton(R.string.do_disclosure_learn_more, this); } } private void openHelpPage() { // TODO(b/67070896): actually open help page on Pixel only Intent intent = getHelpIntent(getContext()); if (intent != null) { try { startActivity(intent); } catch (ActivityNotFoundException e) { Log.e(TAG, "Activity was not found for intent, " + intent.toString()); } } } @VisibleForTesting Intent getHelpIntent(Context context) { return HelpUtils.getHelpIntent( context, context.getString(R.string.help_uri_wifi_scanning_required), context.getClass().getName()); } } tests/robotests/src/com/android/settings/wifi/WifiScanningRequiredFragmentTest.java +24 −0 Original line number Diff line number Diff line Loading @@ -18,17 +18,24 @@ package com.android.settings.wifi; import static com.google.common.truth.Truth.assertThat; 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; import static org.mockito.Mockito.verify; import android.app.AlertDialog; import android.app.Fragment; import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; import android.provider.Settings; import com.android.settings.R; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.SettingsShadowResources; Loading @@ -48,6 +55,8 @@ public class WifiScanningRequiredFragmentTest { private ContentResolver mResolver; @Mock Fragment mCallbackFragment; @Mock AlertDialog.Builder mBuilder; @Before public void setUp() { Loading Loading @@ -81,4 +90,19 @@ public class WifiScanningRequiredFragmentTest { verify(mCallbackFragment).onActivityResult(anyInt(), anyInt(), isNull()); } @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)); 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)); mFragment.addButtonIfNeeded(mBuilder); verify(mBuilder, times(1)) .setNeutralButton(anyInt(), nullable(DialogInterface.OnClickListener.class)); } } Loading
res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -6690,6 +6690,8 @@ <string name="help_uri_private_dns" translatable="false"></string> <string name="help_uri_about_phone_v2" translatable="false"></string> <string name="help_uri_wifi_calling" translatable="false"></string> <!-- url for the wifi scanning required dialog help page --> <string name="help_uri_wifi_scanning_required" translatable="false"></string> <!-- User account title [CHAR LIMIT=30] --> <string name="user_account_title">Account for content</string>
src/com/android/settings/wifi/WifiScanningRequiredFragment.java +39 −9 Original line number Diff line number Diff line Loading @@ -15,24 +15,31 @@ */ package com.android.settings.wifi; import static com.android.settings.wifi.ConfigureWifiSettings.WIFI_WAKEUP_REQUEST_CODE; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.ActivityNotFoundException; import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.provider.Settings; import android.support.annotation.VisibleForTesting; import android.text.TextUtils; import android.util.Log; import android.widget.Toast; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settingslib.HelpUtils; public class WifiScanningRequiredFragment extends InstrumentedDialogFragment implements DialogInterface.OnClickListener { private static final String TAG = "WifiScanReqFrag"; public static WifiScanningRequiredFragment newInstance() { WifiScanningRequiredFragment fragment = new WifiScanningRequiredFragment(); return fragment; Loading @@ -40,19 +47,20 @@ public class WifiScanningRequiredFragment extends InstrumentedDialogFragment imp @Override public Dialog onCreateDialog(Bundle savedInstanceState) { return new AlertDialog.Builder(getContext()) AlertDialog.Builder builder = new AlertDialog.Builder(getContext()) .setTitle(R.string.wifi_settings_scanning_required_title) .setView(R.layout.wifi_settings_scanning_required_view) .setNeutralButton(R.string.do_disclosure_learn_more, this) .setPositiveButton(R.string.wifi_settings_scanning_required_turn_on, this) .setNegativeButton(R.string.cancel, null) .create(); .setNegativeButton(R.string.cancel, null); addButtonIfNeeded(builder); return builder.create(); } @Override public int getMetricsCategory() { // TODO(b/67070896): add metric code return 0; return MetricsProto.MetricsEvent.WIFI_SCANNING_NEEDED_DIALOG; } @Override Loading Loading @@ -81,7 +89,29 @@ public class WifiScanningRequiredFragment extends InstrumentedDialogFragment imp } } void addButtonIfNeeded(AlertDialog.Builder builder) { // Only show "learn more" if there is a help page to show if (!TextUtils.isEmpty(getContext().getString(R.string.help_uri_wifi_scanning_required))) { builder.setNeutralButton(R.string.do_disclosure_learn_more, this); } } private void openHelpPage() { // TODO(b/67070896): actually open help page on Pixel only Intent intent = getHelpIntent(getContext()); if (intent != null) { try { startActivity(intent); } catch (ActivityNotFoundException e) { Log.e(TAG, "Activity was not found for intent, " + intent.toString()); } } } @VisibleForTesting Intent getHelpIntent(Context context) { return HelpUtils.getHelpIntent( context, context.getString(R.string.help_uri_wifi_scanning_required), context.getClass().getName()); } }
tests/robotests/src/com/android/settings/wifi/WifiScanningRequiredFragmentTest.java +24 −0 Original line number Diff line number Diff line Loading @@ -18,17 +18,24 @@ package com.android.settings.wifi; import static com.google.common.truth.Truth.assertThat; 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; import static org.mockito.Mockito.verify; import android.app.AlertDialog; import android.app.Fragment; import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; import android.provider.Settings; import com.android.settings.R; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.SettingsShadowResources; Loading @@ -48,6 +55,8 @@ public class WifiScanningRequiredFragmentTest { private ContentResolver mResolver; @Mock Fragment mCallbackFragment; @Mock AlertDialog.Builder mBuilder; @Before public void setUp() { Loading Loading @@ -81,4 +90,19 @@ public class WifiScanningRequiredFragmentTest { verify(mCallbackFragment).onActivityResult(anyInt(), anyInt(), isNull()); } @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)); 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)); mFragment.addButtonIfNeeded(mBuilder); verify(mBuilder, times(1)) .setNeutralButton(anyInt(), nullable(DialogInterface.OnClickListener.class)); } }