Merge "[permissions-ui] use new API for the unused apps footer link" into sc-dev am: 7cb1442c4b

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Permission/+/14926445

Change-Id: I180295c23c0198a138bfc5cac6e4febec874de97
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManageStandardPermissionsFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManageStandardPermissionsFragment.java
index 2333d12..f7959cd 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManageStandardPermissionsFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManageStandardPermissionsFragment.java
@@ -25,14 +25,10 @@
 import android.app.Application;
 import android.content.Intent;
 import android.os.Bundle;
-import android.text.SpannableStringBuilder;
-import android.text.Spanned;
-import android.text.style.ClickableSpan;
 import android.util.Log;
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
-import android.view.View;
 
 import androidx.lifecycle.ViewModelProvider;
 import androidx.preference.Preference;
@@ -170,7 +166,12 @@
         Preference autoRevokePreference = screen.findPreference(AUTO_REVOKE_KEY);
         if (numAutoRevoked != null && numAutoRevoked != 0) {
             if (autoRevokePreference == null) {
-                autoRevokePreference = createAutoRevokeFooterPreference();
+                if (SdkLevel.isAtLeastS()) {
+                    autoRevokePreference = createAutoRevokeFooterPreferenceForSPlus();
+                } else {
+                    autoRevokePreference = createAutoRevokeFooterPreferenceForR();
+                }
+                autoRevokePreference.setKey(AUTO_REVOKE_KEY);
                 screen.addPreference(autoRevokePreference);
             }
         } else if (numAutoRevoked != null && autoRevokePreference != null) {
@@ -180,51 +181,29 @@
         return screen;
     }
 
-    private Preference createAutoRevokeFooterPreference() {
-        Preference autoRevokePreference;
-        if (SdkLevel.isAtLeastS()) {
-            FooterPreference.Builder autoRevokePreferenceBuilder =
-                    new FooterPreference.Builder(getContext());
-            autoRevokePreferenceBuilder.setKey(AUTO_REVOKE_KEY);
-            // Description contains a "Learn more" link
-            CharSequence descriptionText = getContext().getText(
-                    R.string.auto_revoked_apps_page_summary);
-            SpannableStringBuilder sb = new SpannableStringBuilder();
-            sb.append(descriptionText);
-            sb.append("\n\n");
-            CharSequence learnMoreText = getContext().getText(
-                    R.string.permission_usage_access_dialog_learn_more);
-            ClickableSpan link = new ClickableSpan() {
-                @Override
-                public void onClick(View view) {
-                    mViewModel.showAutoRevoke(ManageStandardPermissionsFragment.this,
-                            UnusedAppsFragment.createArgs(
-                                    getArguments().getLong(EXTRA_SESSION_ID,
-                                            INVALID_SESSION_ID)));
-
-                }
-            };
-            sb.append(learnMoreText, link, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
-            autoRevokePreferenceBuilder.setTitle(sb);
-            autoRevokePreference = autoRevokePreferenceBuilder.build();
-            autoRevokePreference.setIcon(R.drawable.ic_info_outline_accent);
-        } else {
-            autoRevokePreference = new FixedSizeIconPreference(
-                    getPreferenceManager().getContext(), true, true);
-            autoRevokePreference.setOrder(-1);
-            autoRevokePreference.setKey(AUTO_REVOKE_KEY);
-            autoRevokePreference.setSingleLineTitle(false);
-            autoRevokePreference.setIcon(R.drawable.ic_info_outline_accent);
-            autoRevokePreference.setTitle(
-                    R.string.auto_revoke_permission_notification_title);
-            autoRevokePreference.setSummary(
-                    R.string.auto_revoke_setting_subtitle);
-            autoRevokePreference.setOnPreferenceClickListener(preference -> {
-                mViewModel.showAutoRevoke(this, UnusedAppsFragment.createArgs(
-                        getArguments().getLong(EXTRA_SESSION_ID, INVALID_SESSION_ID)));
-                return true;
+    private FooterPreference createAutoRevokeFooterPreferenceForSPlus() {
+        FooterPreference autoRevokePreference = new FooterPreference(getContext());
+        autoRevokePreference.setSummary(R.string.auto_revoked_apps_page_summary);
+        autoRevokePreference.setLearnMoreAction(view -> {
+            mViewModel.showAutoRevoke(this, UnusedAppsFragment.createArgs(
+                            getArguments().getLong(EXTRA_SESSION_ID, INVALID_SESSION_ID)));
             });
-        }
+        return autoRevokePreference;
+    }
+
+    private Preference createAutoRevokeFooterPreferenceForR() {
+        Preference autoRevokePreference = new FixedSizeIconPreference(
+                getPreferenceManager().getContext(), true, true);
+        autoRevokePreference.setOrder(-1);
+        autoRevokePreference.setSingleLineTitle(false);
+        autoRevokePreference.setIcon(R.drawable.ic_info_outline_accent);
+        autoRevokePreference.setTitle(R.string.auto_revoke_permission_notification_title);
+        autoRevokePreference.setSummary(R.string.auto_revoke_setting_subtitle);
+        autoRevokePreference.setOnPreferenceClickListener(preference -> {
+            mViewModel.showAutoRevoke(this, UnusedAppsFragment.createArgs(
+                    getArguments().getLong(EXTRA_SESSION_ID, INVALID_SESSION_ID)));
+            return true;
+        });
         return autoRevokePreference;
     }