Commit 4de81498 authored by Natalie Chouinard's avatar Natalie Chouinard Committed by Commit Bot

Migrate Payment methods Settings to SL

Migrate the Payment methods preference fragment from the deprecated
framework preferences to support library preferences.

Bug: 968592
Change-Id: Id59253744c2cf278ad6bcbcad2a897887139c004
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1680673Reviewed-by: default avatarTheresa <twellington@chromium.org>
Commit-Queue: Natalie Chouinard <chouinard@chromium.org>
Cr-Commit-Position: refs/heads/master@{#673421}
parent 6f794b0f
...@@ -190,7 +190,7 @@ public class PreferencesLauncher { ...@@ -190,7 +190,7 @@ public class PreferencesLauncher {
@CalledByNative @CalledByNative
private static void showAutofillCreditCardSettings(WebContents webContents) { private static void showAutofillCreditCardSettings(WebContents webContents) {
RecordUserAction.record("AutofillCreditCardsViewed"); RecordUserAction.record("AutofillCreditCardsViewed");
showSettingSubpage(webContents, AutofillPaymentMethodsFragment.class); showSettingSubpageCompat(webContents, AutofillPaymentMethodsFragment.class);
} }
@CalledByNative @CalledByNative
...@@ -202,6 +202,8 @@ public class PreferencesLauncher { ...@@ -202,6 +202,8 @@ public class PreferencesLauncher {
showPasswordSettings(currentActivity.get(), referrer); showPasswordSettings(currentActivity.get(), referrer);
} }
// TODO(crbug.com/967022): Remove this method when Preference Support Library migration is
// complete.
private static void showSettingSubpage( private static void showSettingSubpage(
WebContents webContents, Class<? extends Fragment> fragment) { WebContents webContents, Class<? extends Fragment> fragment) {
WeakReference<Activity> currentActivity = WeakReference<Activity> currentActivity =
...@@ -209,6 +211,13 @@ public class PreferencesLauncher { ...@@ -209,6 +211,13 @@ public class PreferencesLauncher {
launchSettingsPage(currentActivity.get(), fragment); launchSettingsPage(currentActivity.get(), fragment);
} }
private static void showSettingSubpageCompat(
WebContents webContents, Class<? extends android.support.v4.app.Fragment> fragment) {
WeakReference<Activity> currentActivity =
webContents.getTopLevelNativeWindow().getActivity();
launchSettingsPageCompat(currentActivity.get(), fragment);
}
private static boolean isSyncingPasswordsWithoutCustomPassphrase() { private static boolean isSyncingPasswordsWithoutCustomPassphrase() {
ChromeSigninController signInController = ChromeSigninController.get(); ChromeSigninController signInController = ChromeSigninController.get();
if (signInController == null || !signInController.isSignedIn()) return false; if (signInController == null || !signInController.isSignedIn()) return false;
......
...@@ -4,13 +4,14 @@ ...@@ -4,13 +4,14 @@
package org.chromium.chrome.browser.preferences.autofill; package org.chromium.chrome.browser.preferences.autofill;
import android.content.Context;
import android.graphics.PorterDuff; import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.Bundle; import android.os.Bundle;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceFragment;
import android.support.v7.content.res.AppCompatResources; import android.support.v7.content.res.AppCompatResources;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceFragmentCompat;
import android.support.v7.preference.PreferenceScreen;
import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.chrome.R; import org.chromium.chrome.R;
...@@ -19,24 +20,33 @@ import org.chromium.chrome.browser.autofill.PersonalDataManager; ...@@ -19,24 +20,33 @@ import org.chromium.chrome.browser.autofill.PersonalDataManager;
import org.chromium.chrome.browser.autofill.PersonalDataManager.CreditCard; import org.chromium.chrome.browser.autofill.PersonalDataManager.CreditCard;
import org.chromium.chrome.browser.payments.AndroidPaymentAppFactory; import org.chromium.chrome.browser.payments.AndroidPaymentAppFactory;
import org.chromium.chrome.browser.payments.ServiceWorkerPaymentAppBridge; import org.chromium.chrome.browser.payments.ServiceWorkerPaymentAppBridge;
import org.chromium.chrome.browser.preferences.ChromeSwitchPreference; import org.chromium.chrome.browser.preferences.ChromeSwitchPreferenceCompat;
import org.chromium.chrome.browser.preferences.MainPreferences; import org.chromium.chrome.browser.preferences.MainPreferences;
import org.chromium.chrome.browser.preferences.ManagedPreferenceDelegate; import org.chromium.chrome.browser.preferences.ManagedPreferenceDelegateCompat;
import org.chromium.chrome.browser.preferences.PreferenceUtils;
/** /**
* Autofill credit cards fragment, which allows the user to edit credit cards and control * Autofill credit cards fragment, which allows the user to edit credit cards and control
* payment apps. * payment apps.
*/ */
public class AutofillPaymentMethodsFragment public class AutofillPaymentMethodsFragment extends PreferenceFragmentCompat
extends PreferenceFragment implements PersonalDataManager.PersonalDataManagerObserver { implements PersonalDataManager.PersonalDataManagerObserver {
private static final String PREF_PAYMENT_APPS = "payment_apps"; private static final String PREF_PAYMENT_APPS = "payment_apps";
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
PreferenceUtils.addPreferencesFromResource(this, R.xml.blank_preference_fragment_screen); }
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
getActivity().setTitle(R.string.autofill_payment_methods); getActivity().setTitle(R.string.autofill_payment_methods);
PreferenceScreen screen = getPreferenceManager().createPreferenceScreen(getStyledContext());
// Suppresses unwanted animations while Preferences are removed from and re-added to the
// screen.
screen.setShouldUseGeneratedIds(false);
setPreferenceScreen(screen);
} }
@Override @Override
...@@ -52,19 +62,17 @@ public class AutofillPaymentMethodsFragment ...@@ -52,19 +62,17 @@ public class AutofillPaymentMethodsFragment
getPreferenceScreen().removeAll(); getPreferenceScreen().removeAll();
getPreferenceScreen().setOrderingAsAdded(true); getPreferenceScreen().setOrderingAsAdded(true);
ChromeSwitchPreference autofillSwitch = new ChromeSwitchPreference(getActivity(), null); ChromeSwitchPreferenceCompat autofillSwitch =
new ChromeSwitchPreferenceCompat(getStyledContext(), null);
autofillSwitch.setTitle(R.string.autofill_enable_credit_cards_toggle_label); autofillSwitch.setTitle(R.string.autofill_enable_credit_cards_toggle_label);
autofillSwitch.setSummary( autofillSwitch.setSummary(
getActivity().getString(R.string.autofill_enable_credit_cards_toggle_sublabel)); getActivity().getString(R.string.autofill_enable_credit_cards_toggle_sublabel));
autofillSwitch.setChecked(PersonalDataManager.isAutofillCreditCardEnabled()); autofillSwitch.setChecked(PersonalDataManager.isAutofillCreditCardEnabled());
autofillSwitch.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { autofillSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
@Override PersonalDataManager.setAutofillCreditCardEnabled((boolean) newValue);
public boolean onPreferenceChange(Preference preference, Object newValue) { return true;
PersonalDataManager.setAutofillCreditCardEnabled((boolean) newValue);
return true;
}
}); });
autofillSwitch.setManagedPreferenceDelegate(new ManagedPreferenceDelegate() { autofillSwitch.setManagedPreferenceDelegate(new ManagedPreferenceDelegateCompat() {
@Override @Override
public boolean isPreferenceControlledByPolicy(Preference preference) { public boolean isPreferenceControlledByPolicy(Preference preference) {
return PersonalDataManager.isAutofillCreditCardManaged(); return PersonalDataManager.isAutofillCreditCardManaged();
...@@ -126,6 +134,10 @@ public class AutofillPaymentMethodsFragment ...@@ -126,6 +134,10 @@ public class AutofillPaymentMethodsFragment
} }
} }
private Context getStyledContext() {
return getPreferenceManager().getContext();
}
private void refreshPaymentAppsPrefForAndroidPaymentApps(Preference pref) { private void refreshPaymentAppsPrefForAndroidPaymentApps(Preference pref) {
if (AndroidPaymentAppFactory.hasAndroidPaymentApps()) { if (AndroidPaymentAppFactory.hasAndroidPaymentApps()) {
setPaymentAppsPrefStatus(pref, true); setPaymentAppsPrefStatus(pref, true);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment