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));
+ }
}