98 lines
3.3 KiB
Diff
98 lines
3.3 KiB
Diff
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);
|
|
+ }
|
|
+ }
|
|
+}
|