Update WifiScanningRequiredFragment dialog to show help page
This CL updates the WifiScanningRequiredFragment dialog so that the learn more button is only shown when a help page is available. Additionally, we add the metrics constant for the dialog. Test: robotests Bug: 67070896 Change-Id: I7697c88b5969edaf5c06eb33251f215b776c64ee
This commit is contained in:
@@ -6690,6 +6690,8 @@
|
|||||||
<string name="help_uri_private_dns" translatable="false"></string>
|
<string name="help_uri_private_dns" translatable="false"></string>
|
||||||
<string name="help_uri_about_phone_v2" translatable="false"></string>
|
<string name="help_uri_about_phone_v2" translatable="false"></string>
|
||||||
<string name="help_uri_wifi_calling" 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] -->
|
<!-- User account title [CHAR LIMIT=30] -->
|
||||||
<string name="user_account_title">Account for content</string>
|
<string name="user_account_title">Account for content</string>
|
||||||
|
@@ -15,24 +15,31 @@
|
|||||||
*/
|
*/
|
||||||
package com.android.settings.wifi;
|
package com.android.settings.wifi;
|
||||||
|
|
||||||
import static com.android.settings.wifi.ConfigureWifiSettings.WIFI_WAKEUP_REQUEST_CODE;
|
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
|
import android.content.ActivityNotFoundException;
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
import android.support.annotation.VisibleForTesting;
|
||||||
|
import android.text.TextUtils;
|
||||||
|
import android.util.Log;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||||
|
import com.android.settingslib.HelpUtils;
|
||||||
|
|
||||||
public class WifiScanningRequiredFragment extends InstrumentedDialogFragment implements
|
public class WifiScanningRequiredFragment extends InstrumentedDialogFragment implements
|
||||||
DialogInterface.OnClickListener {
|
DialogInterface.OnClickListener {
|
||||||
|
|
||||||
|
private static final String TAG = "WifiScanReqFrag";
|
||||||
|
|
||||||
public static WifiScanningRequiredFragment newInstance() {
|
public static WifiScanningRequiredFragment newInstance() {
|
||||||
WifiScanningRequiredFragment fragment = new WifiScanningRequiredFragment();
|
WifiScanningRequiredFragment fragment = new WifiScanningRequiredFragment();
|
||||||
return fragment;
|
return fragment;
|
||||||
@@ -40,19 +47,20 @@ public class WifiScanningRequiredFragment extends InstrumentedDialogFragment imp
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
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)
|
.setTitle(R.string.wifi_settings_scanning_required_title)
|
||||||
.setView(R.layout.wifi_settings_scanning_required_view)
|
.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)
|
.setPositiveButton(R.string.wifi_settings_scanning_required_turn_on, this)
|
||||||
.setNegativeButton(R.string.cancel, null)
|
.setNegativeButton(R.string.cancel, null);
|
||||||
.create();
|
addButtonIfNeeded(builder);
|
||||||
|
|
||||||
|
|
||||||
|
return builder.create();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMetricsCategory() {
|
public int getMetricsCategory() {
|
||||||
// TODO(b/67070896): add metric code
|
return MetricsProto.MetricsEvent.WIFI_SCANNING_NEEDED_DIALOG;
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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() {
|
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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -18,17 +18,24 @@ package com.android.settings.wifi;
|
|||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.anyInt;
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
import static org.mockito.ArgumentMatchers.isNull;
|
import static org.mockito.ArgumentMatchers.isNull;
|
||||||
|
import static org.mockito.ArgumentMatchers.nullable;
|
||||||
import static org.mockito.Mockito.doReturn;
|
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.spy;
|
||||||
|
import static org.mockito.Mockito.times;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
|
import android.app.AlertDialog;
|
||||||
import android.app.Fragment;
|
import android.app.Fragment;
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
|
||||||
|
import com.android.settings.R;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.testutils.shadow.SettingsShadowResources;
|
import com.android.settings.testutils.shadow.SettingsShadowResources;
|
||||||
|
|
||||||
@@ -48,6 +55,8 @@ public class WifiScanningRequiredFragmentTest {
|
|||||||
private ContentResolver mResolver;
|
private ContentResolver mResolver;
|
||||||
@Mock
|
@Mock
|
||||||
Fragment mCallbackFragment;
|
Fragment mCallbackFragment;
|
||||||
|
@Mock
|
||||||
|
AlertDialog.Builder mBuilder;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
@@ -81,4 +90,19 @@ public class WifiScanningRequiredFragmentTest {
|
|||||||
|
|
||||||
verify(mCallbackFragment).onActivityResult(anyInt(), anyInt(), isNull());
|
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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user