OSDN Git Service

Add cancel button for private dns dialog
authorLei Yu <jackqdyulei@google.com>
Mon, 14 May 2018 20:08:58 +0000 (13:08 -0700)
committerLei Yu <jackqdyulei@google.com>
Mon, 14 May 2018 20:12:00 +0000 (13:12 -0700)
Also update the onclick method.

Change-Id: I69e92584e056a4d0a686153315b8df002d91e204
Fixes: 79479021
Test: RunSettingsRoboTests

res/xml/network_and_internet.xml
src/com/android/settings/network/PrivateDnsModeDialogPreference.java
tests/robotests/src/com/android/settings/network/PrivateDnsModeDialogPreferenceTest.java

index 064d625..69d8fca 100644 (file)
@@ -97,6 +97,7 @@
         android:order="15"
         android:dialogTitle="@string/select_private_dns_configuration_dialog_title"
         android:dialogLayout="@layout/private_dns_mode_dialog"
-        android:positiveButtonText="@string/save" />
+        android:positiveButtonText="@string/save"
+        android:negativeButtonText="@android:string/cancel" />
 
 </PreferenceScreen>
index 178aa27..969cb11 100644 (file)
@@ -156,16 +156,18 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreference imple
 
     @Override
     public void onClick(DialogInterface dialog, int which) {
-        final Context context = getContext();
-        if (mMode.equals(PRIVATE_DNS_MODE_PROVIDER_HOSTNAME)) {
-            // Only clickable if hostname is valid, so we could save it safely
-            Settings.Global.putString(context.getContentResolver(), HOSTNAME_KEY,
-                    mEditText.getText().toString());
-        }
+        if (which == DialogInterface.BUTTON_POSITIVE) {
+            final Context context = getContext();
+            if (mMode.equals(PRIVATE_DNS_MODE_PROVIDER_HOSTNAME)) {
+                // Only clickable if hostname is valid, so we could save it safely
+                Settings.Global.putString(context.getContentResolver(), HOSTNAME_KEY,
+                        mEditText.getText().toString());
+            }
 
-        FeatureFactory.getFactory(context).getMetricsFeatureProvider().action(context,
-                MetricsProto.MetricsEvent.ACTION_PRIVATE_DNS_MODE, mMode);
-        Settings.Global.putString(context.getContentResolver(), MODE_KEY, mMode);
+            FeatureFactory.getFactory(context).getMetricsFeatureProvider().action(context,
+                    MetricsProto.MetricsEvent.ACTION_PRIVATE_DNS_MODE, mMode);
+            Settings.Global.putString(context.getContentResolver(), MODE_KEY, mMode);
+        }
     }
 
     @Override
index e9ffa8a..dfea6fb 100644 (file)
@@ -28,7 +28,10 @@ import static org.mockito.Mockito.when;
 
 import android.app.AlertDialog;
 import android.app.Fragment;
+import android.content.ContentResolver;
 import android.content.Context;
+import android.content.DialogInterface;
+import android.net.ConnectivityManager;
 import android.provider.Settings;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -150,4 +153,36 @@ public class PrivateDnsModeDialogPreferenceTest {
             assertThat(mSaveButton.isEnabled()).named("provider: " + invalid).isFalse();
         }
     }
+
+    @Test
+    public void testOnClick_positiveButtonClicked_saveData() {
+        // Set the default settings to OFF
+        final ContentResolver contentResolver = mContext.getContentResolver();
+        Settings.Global.putString(contentResolver, Settings.Global.PRIVATE_DNS_MODE,
+                ConnectivityManager.PRIVATE_DNS_MODE_OFF);
+
+        mPreference.mMode = ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC;
+        mPreference.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        // Change to OPPORTUNISTIC
+        assertThat(Settings.Global.getString(contentResolver,
+                Settings.Global.PRIVATE_DNS_MODE)).isEqualTo(
+                ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC);
+    }
+
+    @Test
+    public void testOnClick_negativeButtonClicked_doNothing() {
+        // Set the default settings to OFF
+        final ContentResolver contentResolver = mContext.getContentResolver();
+        Settings.Global.putString(contentResolver, Settings.Global.PRIVATE_DNS_MODE,
+                ConnectivityManager.PRIVATE_DNS_MODE_OFF);
+
+        mPreference.mMode = ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC;
+        mPreference.onClick(null, DialogInterface.BUTTON_NEGATIVE);
+
+        // Still equal to OFF
+        assertThat(Settings.Global.getString(contentResolver,
+                Settings.Global.PRIVATE_DNS_MODE)).isEqualTo(
+                ConnectivityManager.PRIVATE_DNS_MODE_OFF);
+    }
 }