| From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 |
| From: fgei <fgei@gmail.com> |
| Date: Tue, 11 Apr 2023 07:14:45 +0000 |
| Subject: [PATCH] Helper class for modifying preferences at chrome layer |
| |
| --- |
| chrome/android/chrome_ext_java_sources.gni | 1 + |
| .../browser/settings/SettingsExtUtils.java | 70 +++++++++++++++++++ |
| 2 files changed, 71 insertions(+) |
| create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsExtUtils.java |
| |
| diff --git a/chrome/android/chrome_ext_java_sources.gni b/chrome/android/chrome_ext_java_sources.gni |
| index fe72e9b1d3abb..b3a489f124aa8 100644 |
| --- a/chrome/android/chrome_ext_java_sources.gni |
| +++ b/chrome/android/chrome_ext_java_sources.gni |
| @@ -3,4 +3,5 @@ |
| # found in the LICENSE file. |
| |
| chrome_ext_java_sources = [ |
| + "java/src/org/chromium/chrome/browser/settings/SettingsExtUtils.java", |
| ] |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsExtUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsExtUtils.java |
| new file mode 100644 |
| index 0000000000000..efd15edfb79c3 |
| --- /dev/null |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsExtUtils.java |
| @@ -0,0 +1,70 @@ |
| +// Copyright 2023 GrapheneOS |
| +// Use of this source code is governed by a GPLv2-style license that can be |
| +// found in the LICENSE file. |
| + |
| +package org.chromium.chrome.browser.settings; |
| + |
| +import androidx.annotation.NonNull; |
| +import androidx.annotation.Nullable; |
| +import androidx.preference.Preference; |
| +import androidx.preference.PreferenceFragmentCompat; |
| +import androidx.preference.SwitchPreferenceCompat; |
| + |
| +import org.chromium.base.ThreadUtils; |
| + |
| +public class SettingsExtUtils { |
| + |
| + public static void safelyUpdatePreference( |
| + @Nullable Preference preference, |
| + @Nullable String newSummary |
| + ) { |
| + if (preference == null) return; |
| + safelyUpdatePreferenceCommon(preference, newSummary); |
| + } |
| + |
| + |
| + public static void safelyUpdateSwitchPreference( |
| + @Nullable SwitchPreferenceCompat switchPref, |
| + @Nullable String newSummary, |
| + boolean newValue |
| + ) { |
| + if (switchPref == null) return; |
| + safelyUpdatePreferenceCommon(switchPref, newSummary); |
| + safelyUpdatePreferenceChecked(switchPref, newValue); |
| + } |
| + |
| + private static void safelyUpdatePreferenceCommon( |
| + @NonNull Preference preference, |
| + @Nullable String newSummary |
| + ) { |
| + ThreadUtils.checkUiThread(); |
| + if (newSummary != null) { |
| + preference.setSummary(newSummary); |
| + } |
| + } |
| + |
| + private static void safelyUpdatePreferenceChecked( |
| + @NonNull SwitchPreferenceCompat switchPref, |
| + boolean checked |
| + ) { |
| + switchPref.setChecked(checked); |
| + } |
| + |
| + public static void safelyRemovePreference( |
| + @NonNull PreferenceFragmentCompat prefFragment, |
| + @NonNull String key |
| + ) { |
| + Preference preference = prefFragment.findPreference(key); |
| + safelyRemovePreference(prefFragment, preference); |
| + } |
| + |
| + public static void safelyRemovePreference( |
| + @NonNull PreferenceFragmentCompat prefFragment, |
| + @Nullable Preference preference |
| + ) { |
| + ThreadUtils.checkUiThread(); |
| + if (preference != null) { |
| + prefFragment.getPreferenceScreen().removePreference(preference); |
| + } |
| + } |
| +} |