diff --git a/res/values/strings.xml b/res/values/strings.xml index 1e65b3779d1..1d0612ee693 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -6690,6 +6690,8 @@ + + Account for content diff --git a/src/com/android/settings/wifi/WifiScanningRequiredFragment.java b/src/com/android/settings/wifi/WifiScanningRequiredFragment.java index e0b804aec26..4ff023d3ef9 100644 --- a/src/com/android/settings/wifi/WifiScanningRequiredFragment.java +++ b/src/com/android/settings/wifi/WifiScanningRequiredFragment.java @@ -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; @@ -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 @@ -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()); } } diff --git a/tests/robotests/src/com/android/settings/wifi/WifiScanningRequiredFragmentTest.java b/tests/robotests/src/com/android/settings/wifi/WifiScanningRequiredFragmentTest.java index f9d2176c199..0c42c3485ed 100644 --- a/tests/robotests/src/com/android/settings/wifi/WifiScanningRequiredFragmentTest.java +++ b/tests/robotests/src/com/android/settings/wifi/WifiScanningRequiredFragmentTest.java @@ -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; @@ -48,6 +55,8 @@ public class WifiScanningRequiredFragmentTest { private ContentResolver mResolver; @Mock Fragment mCallbackFragment; + @Mock + AlertDialog.Builder mBuilder; @Before public void setUp() { @@ -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)); + } }