Commit 788d7625 authored by Natalie Chouinard's avatar Natalie Chouinard Committed by Commit Bot

Migrate Privacy settings fragment

Migrate the Privacy Settings page from deprecated Framework
preferences to the Preferences Support Library.

Bug: 968592
Change-Id: I5d6b2875120c1d20b667792e65f1c1c8e678493b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1647145
Commit-Queue: Natalie Chouinard <chouinard@chromium.org>
Reviewed-by: default avatarTheresa <twellington@chromium.org>
Cr-Commit-Position: refs/heads/master@{#669003}
parent 05642374
......@@ -1205,6 +1205,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/preferences/ButtonPreference.java",
"java/src/org/chromium/chrome/browser/preferences/ButtonPreferenceCompat.java",
"java/src/org/chromium/chrome/browser/preferences/ChromeBaseCheckBoxPreference.java",
"java/src/org/chromium/chrome/browser/preferences/ChromeBaseCheckBoxPreferenceCompat.java",
"java/src/org/chromium/chrome/browser/preferences/ChromeBaseListPreference.java",
"java/src/org/chromium/chrome/browser/preferences/ChromeBaseListPreferenceCompat.java",
"java/src/org/chromium/chrome/browser/preferences/ChromeBasePreference.java",
......
......@@ -35,7 +35,7 @@
style="@style/Theme.Chromium.PreferenceWidgetCompat"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:gravity="center"
android:orientation="vertical" />
</LinearLayout>
......@@ -246,6 +246,7 @@
<item name="preferenceFragmentCompatStyle">@style/Theme.Chromium.PreferenceFragment</item>
<item name="preferenceFragmentListStyle">@style/Theme.Chromium.PreferenceFragmentList</item>
<item name="dialogPreferenceStyle">@style/Theme.Chromium.DialogPreference</item>
<item name="checkBoxPreferenceStyle">@style/Theme.Chromium.CheckBoxPreferenceCompat</item>
<item name="switchPreferenceCompatStyle">@style/Theme.Chromium.SwitchPreferenceCompat</item>
</style>
......@@ -270,11 +271,11 @@
<style name="Theme.Chromium.PreferenceDescriptionCompat">
<item name="android:paddingTop">6dp</item>
<item name="android:paddingBottom">6dp</item>
<item name="android:paddingEnd">8dp</item>
</style>
<style name="Theme.Chromium.PreferenceWidgetCompat">
<item name="android:paddingStart">0dp</item>
<item name="android:paddingEnd">0dp</item>
<item name="android:minWidth">48dp</item>
</style>
<style name="Theme.Chromium.PreferenceFragmentList">
......@@ -292,6 +293,11 @@
<item name="android:negativeButtonText">@android:string/cancel</item>
</style>
<style name="Theme.Chromium.CheckBoxPreferenceCompat">
<item name="android:layout">@layout/preference_compat</item>
<item name="android:widgetLayout">@layout/preference_widget_checkbox</item>
</style>
<style name="Theme.Chromium.Preferences.AlertDialog" parent="Theme.Chromium.AlertDialog">
<item name="buttonBarButtonStyle">@style/TextAppearance.DialogButtonCompat</item>
</style>
......
......@@ -50,7 +50,6 @@
<style name="Theme.Chromium.PreferenceWidgetCompat">
<item name="android:paddingStart">16dp</item>
<item name="android:paddingEnd">0dp</item>
</style>
<style name="PreferenceCategoryWithButtonStyle">
......
......@@ -3,63 +3,63 @@
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file. -->
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<android.support.v7.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
<org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreferenceCompat
android:key="navigation_error"
android:title="@string/navigation_error_title"
android:summary="@string/navigation_error_summary"
android:defaultValue="true" />
<org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
<org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreferenceCompat
android:key="search_suggestions"
android:title="@string/search_suggestions_title"
android:summary="@string/search_suggestions_summary"
android:defaultValue="true" />
<org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
<org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreferenceCompat
android:key="safe_browsing_scout_reporting"
android:title="@string/safe_browsing_scout_reporting_title"
android:summary="@string/safe_browsing_scout_reporting_summary" />
<org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
<org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreferenceCompat
android:key="safe_browsing"
android:title="@string/safe_browsing_title"
android:summary="@string/safe_browsing_summary" />
<org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
<org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreferenceCompat
android:key="network_predictions"
android:title="@string/network_predictions_title"
android:summary="@string/network_predictions_summary"
android:persistent="false" />
<org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
<org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreferenceCompat
android:key="can_make_payment"
android:title="@string/can_make_payment_title"
android:summary="@string/settings_can_make_payment_toggle_label" />
<org.chromium.chrome.browser.preferences.ChromeBasePreference
<org.chromium.chrome.browser.preferences.ChromeBasePreferenceCompat
android:key="usage_stats_reporting"
android:title="@string/usage_stats_setting_title"
android:persistent="false" />
<Preference
<android.support.v7.preference.Preference
android:key="usage_and_crash_reports"
android:title="@string/usage_and_crash_reports_title_legacy"
android:fragment="org.chromium.chrome.browser.preferences.privacy.UsageAndCrashReportsPreferenceFragment" />
<Preference
<android.support.v7.preference.Preference
android:fragment="org.chromium.chrome.browser.preferences.privacy.DoNotTrackPreference"
android:key="do_not_track"
android:title="@string/do_not_track_title" />
<Preference
<android.support.v7.preference.Preference
android:key="contextual_search"
android:title="@string/contextual_search_title"
android:fragment="org.chromium.chrome.browser.preferences.privacy.ContextualSearchPreferenceFragment" />
<Preference
<android.support.v7.preference.Preference
android:key="clear_browsing_data"
android:title="@string/clear_browsing_data_title"
android:summary="@string/clear_browsing_data_summary"
android:fragment="org.chromium.chrome.browser.preferences.privacy.ClearBrowsingDataTabsFragment" />
<Preference
<android.support.v7.preference.Preference
android:key="sync_and_services_link_divider"
android:layout="@layout/divider_preference"
android:selectable="false"/>
<org.chromium.chrome.browser.preferences.TextMessagePreference
<org.chromium.chrome.browser.preferences.TextMessagePreferenceCompat
android:key="sync_and_services_link"
tools:summary="@string/privacy_sync_and_services_link"/>
</PreferenceScreen>
android:summary="@string/privacy_sync_and_services_link"
app:allowDividerBelow="false" />
</android.support.v7.preference.PreferenceScreen>
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.preferences;
import android.content.Context;
import android.support.v7.preference.CheckBoxPreference;
import android.support.v7.preference.PreferenceViewHolder;
import android.util.AttributeSet;
import android.widget.TextView;
/**
* Contains the basic functionality that should be shared by all CheckBoxPreference in Chrome.
*
* TODO(crbug.com/967022): This class is a duplicate of {@link ChromeBaseCheckBoxPreference} that
* extends the Preference Support Library instead of the Framework Preference classes. {@link
* ChromeBaseCheckBoxPreference} will be removed in favor of this class once migration to the
* Preference Support library is complete.
*/
public class ChromeBaseCheckBoxPreferenceCompat extends CheckBoxPreference {
private ManagedPreferenceDelegateCompat mManagedPrefDelegate;
/**
* Constructor for inflating from XML.
*/
public ChromeBaseCheckBoxPreferenceCompat(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* Sets the ManagedPreferenceDelegate which will determine whether this preference is managed.
*/
public void setManagedPreferenceDelegate(ManagedPreferenceDelegateCompat delegate) {
mManagedPrefDelegate = delegate;
ManagedPreferencesUtils.initPreference(mManagedPrefDelegate, this);
}
@Override
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
((TextView) holder.findViewById(android.R.id.title)).setSingleLine(false);
ManagedPreferencesUtils.onBindViewToPreference(mManagedPrefDelegate, this, holder.itemView);
}
@Override
protected void onClick() {
if (ManagedPreferencesUtils.onClickPreference(mManagedPrefDelegate, this)) return;
super.onClick();
}
}
......@@ -5,12 +5,11 @@
package org.chromium.chrome.browser.preferences.privacy;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen;
import android.support.graphics.drawable.VectorDrawableCompat;
import android.support.v7.preference.CheckBoxPreference;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceFragmentCompat;
import android.support.v7.preference.PreferenceScreen;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
......@@ -21,8 +20,8 @@ import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.contextualsearch.ContextualSearchFieldTrial;
import org.chromium.chrome.browser.help.HelpAndFeedback;
import org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference;
import org.chromium.chrome.browser.preferences.ManagedPreferenceDelegate;
import org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreferenceCompat;
import org.chromium.chrome.browser.preferences.ManagedPreferenceDelegateCompat;
import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.preferences.PreferenceUtils;
......@@ -36,8 +35,8 @@ import org.chromium.ui.text.SpanApplier;
/**
* Fragment to keep track of the all the privacy related preferences.
*/
public class PrivacyPreferences extends PreferenceFragment
implements OnPreferenceChangeListener {
public class PrivacyPreferences
extends PreferenceFragmentCompat implements Preference.OnPreferenceChangeListener {
private static final String PREF_NAVIGATION_ERROR = "navigation_error";
private static final String PREF_SEARCH_SUGGESTIONS = "search_suggestions";
private static final String PREF_SAFE_BROWSING_SCOUT_REPORTING =
......@@ -54,11 +53,10 @@ public class PrivacyPreferences extends PreferenceFragment
private static final String PREF_SYNC_AND_SERVICES_LINK = "sync_and_services_link";
private static final String PREF_USAGE_STATS = "usage_stats_reporting";
private ManagedPreferenceDelegate mManagedPreferenceDelegate;
private ManagedPreferenceDelegateCompat mManagedPreferenceDelegate;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
PrivacyPreferencesManager privacyPrefManager = PrivacyPreferencesManager.getInstance();
privacyPrefManager.migrateNetworkPredictionPreferences();
PreferenceUtils.addPreferencesFromResource(this, R.xml.privacy_preferences);
......@@ -69,12 +67,12 @@ public class PrivacyPreferences extends PreferenceFragment
mManagedPreferenceDelegate = createManagedPreferenceDelegate();
ChromeBaseCheckBoxPreference canMakePaymentPref =
(ChromeBaseCheckBoxPreference) findPreference(PREF_CAN_MAKE_PAYMENT);
ChromeBaseCheckBoxPreferenceCompat canMakePaymentPref =
(ChromeBaseCheckBoxPreferenceCompat) findPreference(PREF_CAN_MAKE_PAYMENT);
canMakePaymentPref.setOnPreferenceChangeListener(this);
ChromeBaseCheckBoxPreference networkPredictionPref =
(ChromeBaseCheckBoxPreference) findPreference(PREF_NETWORK_PREDICTIONS);
ChromeBaseCheckBoxPreferenceCompat networkPredictionPref =
(ChromeBaseCheckBoxPreferenceCompat) findPreference(PREF_NETWORK_PREDICTIONS);
networkPredictionPref.setChecked(prefServiceBridge.getNetworkPredictionEnabled());
networkPredictionPref.setOnPreferenceChangeListener(this);
networkPredictionPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
......@@ -117,13 +115,13 @@ public class PrivacyPreferences extends PreferenceFragment
preferenceScreen.removePreference(findPreference(PREF_SYNC_AND_SERVICES_LINK_DIVIDER));
preferenceScreen.removePreference(findPreference(PREF_SYNC_AND_SERVICES_LINK));
ChromeBaseCheckBoxPreference navigationErrorPref =
(ChromeBaseCheckBoxPreference) findPreference(PREF_NAVIGATION_ERROR);
ChromeBaseCheckBoxPreferenceCompat navigationErrorPref =
(ChromeBaseCheckBoxPreferenceCompat) findPreference(PREF_NAVIGATION_ERROR);
navigationErrorPref.setOnPreferenceChangeListener(this);
navigationErrorPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
ChromeBaseCheckBoxPreference searchSuggestionsPref =
(ChromeBaseCheckBoxPreference) findPreference(PREF_SEARCH_SUGGESTIONS);
ChromeBaseCheckBoxPreferenceCompat searchSuggestionsPref =
(ChromeBaseCheckBoxPreferenceCompat) findPreference(PREF_SEARCH_SUGGESTIONS);
searchSuggestionsPref.setOnPreferenceChangeListener(this);
searchSuggestionsPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
......@@ -132,13 +130,14 @@ public class PrivacyPreferences extends PreferenceFragment
}
// Listen to changes to the Extended Reporting pref.
ChromeBaseCheckBoxPreference scoutReportingPref =
(ChromeBaseCheckBoxPreference) findPreference(PREF_SAFE_BROWSING_SCOUT_REPORTING);
ChromeBaseCheckBoxPreferenceCompat scoutReportingPref =
(ChromeBaseCheckBoxPreferenceCompat) findPreference(
PREF_SAFE_BROWSING_SCOUT_REPORTING);
scoutReportingPref.setOnPreferenceChangeListener(this);
scoutReportingPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
ChromeBaseCheckBoxPreference safeBrowsingPref =
(ChromeBaseCheckBoxPreference) findPreference(PREF_SAFE_BROWSING);
ChromeBaseCheckBoxPreferenceCompat safeBrowsingPref =
(ChromeBaseCheckBoxPreferenceCompat) findPreference(PREF_SAFE_BROWSING);
safeBrowsingPref.setOnPreferenceChangeListener(this);
safeBrowsingPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
......@@ -261,7 +260,7 @@ public class PrivacyPreferences extends PreferenceFragment
}
}
private ManagedPreferenceDelegate createManagedPreferenceDelegate() {
private ManagedPreferenceDelegateCompat createManagedPreferenceDelegate() {
return preference -> {
String key = preference.getKey();
PrefServiceBridge prefs = PrefServiceBridge.getInstance();
......
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