Add a "Do not show" checkbox in support disclaimer dialog.

Bug: 28762823
Change-Id: I8fe0a82efbb47c8b2f9e34480005fa108583b203
diff --git a/res/layout/support_disclaimer_content.xml b/res/layout/support_disclaimer_content.xml
index c7a5689..4fed865 100644
--- a/res/layout/support_disclaimer_content.xml
+++ b/res/layout/support_disclaimer_content.xml
@@ -24,6 +24,14 @@
         android:id="@+id/support_disclaimer_text"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
+        android:paddingBottom="24dp"
         android:text="@string/support_disclaimer_content"/>
 
+    <CheckBox
+        android:id="@+id/support_disclaimer_do_not_show_again"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/support_disclaimer_do_not_show"
+        android:textColor="?android:attr/textColorSecondary"/>
+
 </LinearLayout>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 10d8db7..91f6af4 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -7545,6 +7545,9 @@
     <!-- Dialog content displayed before initiating real time support  [CHAR LIMIT=NONE]-->
     <string name="support_disclaimer_content">To help address your issue quickly, we need system information for diagnosis.</string>
 
+    <!-- Checkbox text, when checked dialog will not show again [CHAR LIMIT=80] -->
+    <string name="support_disclaimer_do_not_show">Do not show again</string>
+
     <!-- [CHAR LIMIT=60] Title of work profile setting page -->
     <string name="managed_profile_settings_title">Work profile settings</string>
     <!-- [CHAR LIMIT=60] The preference title for enabling cross-profile remote contact search -->
diff --git a/src/com/android/settings/overlay/SupportFeatureProvider.java b/src/com/android/settings/overlay/SupportFeatureProvider.java
index 245aba3..a45b8c4 100644
--- a/src/com/android/settings/overlay/SupportFeatureProvider.java
+++ b/src/com/android/settings/overlay/SupportFeatureProvider.java
@@ -59,6 +59,11 @@
     boolean shouldShowDisclaimerDialog(Context context);
 
     /**
+     * Sets whether or not a disclaimer dialog should be displayed.
+     */
+    void setShouldShowDisclaimerDialog(Context context, boolean shouldShow);
+
+    /**
      * Returns an {@link Account} that's eligible for support options.
      */
     Account getSupportEligibleAccount(Context context);
diff --git a/src/com/android/settings/support/SupportDisclaimerDialogFragment.java b/src/com/android/settings/support/SupportDisclaimerDialogFragment.java
index 98f34bc..6387337 100644
--- a/src/com/android/settings/support/SupportDisclaimerDialogFragment.java
+++ b/src/com/android/settings/support/SupportDisclaimerDialogFragment.java
@@ -29,6 +29,7 @@
 import android.text.style.URLSpan;
 import android.view.LayoutInflater;
 import android.view.View;
+import android.widget.CheckBox;
 import android.widget.TextView;
 
 import com.android.settings.R;
@@ -67,15 +68,18 @@
         disclaimer.setMovementMethod(LinkMovementMethod.getInstance());
         stripUnderlines((Spannable) disclaimer.getText());
         return builder
-            .setView(content)
-            .create();
+                .setView(content)
+                .create();
     }
 
     @Override
     public void onClick(DialogInterface dialog, int which) {
         final Activity activity = getActivity();
+        final CheckBox doNotShow =
+                (CheckBox) getDialog().findViewById(R.id.support_disclaimer_do_not_show_again);
         final SupportFeatureProvider supportFeatureProvider =
                 FeatureFactory.getFactory(activity).getSupportFeatureProvider(activity);
+        supportFeatureProvider.setShouldShowDisclaimerDialog(getContext(), !doNotShow.isChecked());
         final Bundle bundle = getArguments();
         supportFeatureProvider.startSupport(getActivity(),
                 (Account) bundle.getParcelable(EXTRA_ACCOUNT), bundle.getInt(EXTRA_TYPE));