Add impression to track when users explicitly disable assisted dialing.

Test: new unit tests
PiperOrigin-RevId: 176438950
Change-Id: Ic0747302170593b91da4148029396c36ab070c6e
diff --git a/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingFragment.java b/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingFragment.java
index a70844f..05ca6d9 100644
--- a/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingFragment.java
+++ b/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingFragment.java
@@ -19,7 +19,10 @@
 import android.preference.ListPreference;
 import android.preference.Preference;
 import android.preference.PreferenceFragment;
+import android.preference.SwitchPreference;
 import android.text.TextUtils;
+import com.android.dialer.logging.DialerImpression;
+import com.android.dialer.logging.Logger;
 
 /** The setting for Assisted Dialing */
 public class AssistedDialingSettingFragment extends PreferenceFragment {
@@ -30,6 +33,10 @@
 
     // Load the preferences from an XML resource
     addPreferencesFromResource(R.xml.assisted_dialing_setting);
+    SwitchPreference switchPref =
+        (SwitchPreference)
+            findPreference(getContext().getString(R.string.assisted_dialing_setting_toggle_key));
+
     ListPreference countryChooserPref =
         (ListPreference)
             findPreference(getContext().getString(R.string.assisted_dialing_setting_cc_key));
@@ -38,6 +45,7 @@
       countryChooserPref.setSummary(countryChooserPref.getEntry());
     }
     countryChooserPref.setOnPreferenceChangeListener(this::updateListSummary);
+    switchPref.setOnPreferenceChangeListener(this::logIfUserDisabledFeature);
   }
 
   boolean updateListSummary(Preference pref, Object newValue) {
@@ -46,4 +54,13 @@
     listPref.setSummary(entries[listPref.findIndexOfValue(newValue.toString())]);
     return true;
   }
+
+  boolean logIfUserDisabledFeature(Preference pref, Object newValue) {
+    if (!((boolean) newValue)) {
+      Logger.get(getActivity().getApplicationContext())
+          .logImpression(DialerImpression.Type.ASSISTED_DIALING_FEATURE_DISABLED_BY_USER);
+    }
+
+    return true;
+  }
 }
diff --git a/java/com/android/dialer/logging/dialer_impression.proto b/java/com/android/dialer/logging/dialer_impression.proto
index 3dd645e..c2456d8 100644
--- a/java/com/android/dialer/logging/dialer_impression.proto
+++ b/java/com/android/dialer/logging/dialer_impression.proto
@@ -12,6 +12,7 @@
   // Event enums to be used for Impression Logging in Dialer.
   // It's perfectly acceptable for this enum to be large
   // Values should be from 1000 to 100000.
+  // Next Tag: 1293
   enum Type {
     UNKNOWN_AOSP_EVENT_TYPE = 1000;
 
@@ -589,6 +590,8 @@
     // Indicates that the number attempting to be assisted dialed had an
     // extension.
     ASSISTED_DIALING_CONSTRAINT_NUMBER_HAS_EXTENSION = 1289;
+    // Indicates that the user disabled the feature.
+    ASSISTED_DIALING_FEATURE_DISABLED_BY_USER = 1292;
 
     // User reports a same prefix call as spam from call history
     REPORT_SAME_PREFIX_CALL_AS_SPAM_VIA_CALL_HISTORY =