0

[Android] Move PrefChangeRegistrar to components/prefs

Make it possible to observe local_state instead of Profile prefs.

Bug: 381122436,40132529
Change-Id: Ib7ec2cfac791505b89586df7d682de40bdba2149
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6055147
Reviewed-by: Theresa Sullivan <twellington@chromium.org>
Reviewed-by: Ted Choc <tedchoc@chromium.org>
Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
Reviewed-by: Yaron Friedman <yfriedman@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1390455}
This commit is contained in:
Henrique Nakashima
2024-12-02 18:13:45 +00:00
committed by Chromium LUCI CQ
parent 036a2873e0
commit 4672dfdbe6
22 changed files with 80 additions and 57 deletions
chrome
android
feed
core
java
src
org
chromium
chrome
java
junit
browser
BUILD.gn
commerce
android
java
src
org
chromium
language
android
java
src
org
chromium
preferences
BUILD.gn
android
java
src
org
chromium
chrome
browser
safety_hub
android
java
junit
src
org
chromium
components/prefs

@ -40,7 +40,7 @@ import org.chromium.chrome.browser.new_tab_url.DseNewTabUrlManager;
import org.chromium.chrome.browser.ntp.NewTabPageLaunchOrigin;
import org.chromium.chrome.browser.ntp.cards.SignInPromo;
import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.preferences.PrefChangeRegistrar;
import org.chromium.chrome.browser.preferences.PrefServiceUtil;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory;
import org.chromium.chrome.browser.signin.SigninAndHistorySyncActivityLauncherImpl;
@ -58,6 +58,7 @@ import org.chromium.chrome.browser.xsurface.feed.StreamType;
import org.chromium.components.browser_ui.widget.displaystyle.DisplayStyleObserver;
import org.chromium.components.browser_ui.widget.displaystyle.HorizontalDisplayStyle;
import org.chromium.components.browser_ui.widget.displaystyle.UiConfig;
import org.chromium.components.prefs.PrefChangeRegistrar;
import org.chromium.components.prefs.PrefService;
import org.chromium.components.search_engines.TemplateUrlService;
import org.chromium.components.search_engines.TemplateUrlService.TemplateUrlServiceObserver;
@ -312,7 +313,7 @@ public class FeedSurfaceMediator
if (sTestPrefChangeRegistar != null) {
mPrefChangeRegistrar = sTestPrefChangeRegistar;
} else {
mPrefChangeRegistrar = new PrefChangeRegistrar(profile);
mPrefChangeRegistrar = PrefServiceUtil.createFor(profile);
}
mPrefChangeRegistrar.addObserver(Pref.ENABLE_SNIPPETS, this::updateContent);
mPrefChangeRegistrar.addObserver(Pref.ENABLE_SNIPPETS_BY_DSE, this::updateContent);

@ -15,9 +15,10 @@ import org.chromium.base.ContextUtils;
import org.chromium.base.shared_preferences.SharedPreferencesManager;
import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
import org.chromium.chrome.browser.preferences.PrefChangeRegistrar;
import org.chromium.chrome.browser.preferences.PrefServiceUtil;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.signin.services.IdentityServicesProvider;
import org.chromium.components.prefs.PrefChangeRegistrar;
import org.chromium.components.signin.identitymanager.IdentityManager;
import org.chromium.components.signin.identitymanager.PrimaryAccountChangeEvent;
@ -58,7 +59,7 @@ class ChromeBackupWatcher {
}
});
mPrefChangeRegistrar = new PrefChangeRegistrar(profile);
mPrefChangeRegistrar = PrefServiceUtil.createFor(profile);
for (PrefBackupSerializer serializer : ChromeBackupAgentImpl.NATIVE_PREFS_SERIALIZERS) {
for (String pref : serializer.getAllowlistedPrefs()) {
mPrefChangeRegistrar.addObserver(pref, this::onBackupPrefsChanged);

@ -37,8 +37,7 @@ import org.chromium.chrome.browser.IntentHandler;
import org.chromium.chrome.browser.document.ChromeLauncherActivity;
import org.chromium.chrome.browser.history.AppFilterCoordinator.AppInfo;
import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.preferences.PrefChangeRegistrar;
import org.chromium.chrome.browser.preferences.PrefChangeRegistrar.PrefObserver;
import org.chromium.chrome.browser.preferences.PrefServiceUtil;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.signin.services.IdentityServicesProvider;
import org.chromium.chrome.browser.signin.services.SigninManager.SignInStateObserver;
@ -52,6 +51,8 @@ import org.chromium.components.browser_ui.widget.selectable_list.SelectableItemV
import org.chromium.components.browser_ui.widget.selectable_list.SelectionDelegate;
import org.chromium.components.embedder_support.util.UrlConstants;
import org.chromium.components.favicon.LargeIconBridge;
import org.chromium.components.prefs.PrefChangeRegistrar;
import org.chromium.components.prefs.PrefChangeRegistrar.PrefObserver;
import org.chromium.components.user_prefs.UserPrefs;
import org.chromium.content_public.browser.LoadUrlParams;
import org.chromium.ui.UiUtils;
@ -274,7 +275,7 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver
IdentityServicesProvider.get().getSigninManager(profile).addSignInStateObserver(this);
// Create PrefChangeRegistrar to receive notifications on preference changes.
mPrefChangeRegistrar = new PrefChangeRegistrar(profile);
mPrefChangeRegistrar = PrefServiceUtil.createFor(profile);
mPrefChangeRegistrar.addObserver(Pref.ALLOW_DELETING_BROWSER_HISTORY, this);
mPrefChangeRegistrar.addObserver(Pref.INCOGNITO_MODE_AVAILABILITY, this);

@ -15,9 +15,10 @@ import org.chromium.chrome.browser.init.ChromeBrowserInitializer;
import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.preferences.PrefChangeRegistrar;
import org.chromium.chrome.browser.preferences.PrefChangeRegistrar.PrefObserver;
import org.chromium.chrome.browser.preferences.PrefServiceUtil;
import org.chromium.chrome.browser.profiles.ProfileManager;
import org.chromium.components.prefs.PrefChangeRegistrar;
import org.chromium.components.prefs.PrefChangeRegistrar.PrefObserver;
import org.chromium.components.prefs.PrefService;
import org.chromium.components.user_prefs.UserPrefs;
import org.chromium.url.GURL;
@ -218,7 +219,7 @@ public class HomepagePolicyManager implements PrefObserver {
private void onFinishNativeInitialization() {
if (!mIsInitializedWithNative) {
initializeWithNative(
new PrefChangeRegistrar(ProfileManager.getLastUsedRegularProfile()));
PrefServiceUtil.createFor(ProfileManager.getLastUsedRegularProfile()));
}
}

@ -66,7 +66,6 @@ import org.chromium.chrome.browser.native_page.NativePageNavigationDelegate;
import org.chromium.chrome.browser.ntp.NewTabPageLaunchOrigin;
import org.chromium.chrome.browser.ntp.cards.SignInPromo;
import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.preferences.PrefChangeRegistrar;
import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManagerImpl;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.profiles.ProfileManager;
@ -91,6 +90,7 @@ import org.chromium.components.browser_ui.bottomsheet.BottomSheetController;
import org.chromium.components.browser_ui.edge_to_edge.EdgeToEdgePadAdjuster;
import org.chromium.components.feature_engagement.Tracker;
import org.chromium.components.feed.proto.wire.ReliabilityLoggingEnums.DiscoverLaunchResult;
import org.chromium.components.prefs.PrefChangeRegistrar;
import org.chromium.components.prefs.PrefService;
import org.chromium.components.search_engines.TemplateUrlService;
import org.chromium.components.signin.base.AccountInfo;

@ -59,7 +59,6 @@ import org.chromium.chrome.browser.ntp.cards.SignInPromo;
import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.preferences.PrefChangeRegistrar;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.profiles.ProfileManager;
import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory;
@ -73,6 +72,7 @@ import org.chromium.components.browser_ui.widget.displaystyle.HorizontalDisplayS
import org.chromium.components.browser_ui.widget.displaystyle.UiConfig;
import org.chromium.components.browser_ui.widget.displaystyle.UiConfig.DisplayStyle;
import org.chromium.components.browser_ui.widget.displaystyle.VerticalDisplayStyle;
import org.chromium.components.prefs.PrefChangeRegistrar;
import org.chromium.components.prefs.PrefService;
import org.chromium.components.search_engines.TemplateUrlService;
import org.chromium.components.search_engines.TemplateUrlService.TemplateUrlServiceObserver;

@ -71,8 +71,6 @@ import org.chromium.chrome.browser.history.AppFilterCoordinator.AppInfo;
import org.chromium.chrome.browser.history.HistoryManagerToolbar.InfoHeaderPref;
import org.chromium.chrome.browser.incognito.IncognitoUtils;
import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.preferences.PrefChangeRegistrar;
import org.chromium.chrome.browser.preferences.PrefChangeRegistrarJni;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.profiles.ProfileManager;
import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory;
@ -87,6 +85,8 @@ import org.chromium.components.browser_ui.widget.selectable_list.SelectableItemV
import org.chromium.components.browser_ui.widget.selectable_list.SelectableListToolbar.NavigationButton;
import org.chromium.components.favicon.LargeIconBridge;
import org.chromium.components.favicon.LargeIconBridgeJni;
import org.chromium.components.prefs.PrefChangeRegistrar;
import org.chromium.components.prefs.PrefChangeRegistrarJni;
import org.chromium.components.prefs.PrefService;
import org.chromium.components.search_engines.TemplateUrlService;
import org.chromium.components.signin.test.util.TestAccounts;

@ -23,7 +23,7 @@ import org.chromium.chrome.browser.init.ChromeBrowserInitializer;
import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.preferences.PrefChangeRegistrar;
import org.chromium.components.prefs.PrefChangeRegistrar;
import org.chromium.components.prefs.PrefService;
import org.chromium.url.GURL;
import org.chromium.url.JUnitTestGURLs;

@ -2733,8 +2733,6 @@ static_library("browser") {
"android/preferences/clipboard_android.h",
"android/preferences/cookie_controls_service_bridge.cc",
"android/preferences/cookie_controls_service_bridge.h",
"android/preferences/pref_change_registrar_android.cc",
"android/preferences/pref_change_registrar_android.h",
"android/preferences/privacy_preferences_manager_impl.cc",
"android/preferences/shared_preferences_migrator_android.cc",
"android/preferences/shared_preferences_migrator_android.h",
@ -3274,7 +3272,6 @@ static_library("browser") {
"//chrome/browser/policy/android:android",
"//chrome/browser/policy/android:jni_headers",
"//chrome/browser/preferences:android",
"//chrome/browser/preferences:pref_service_jni_headers",
"//chrome/browser/prefetch/android:jni_headers",
"//chrome/browser/preloading/android:jni_headers",
"//chrome/browser/privacy:jni_headers",

@ -20,13 +20,14 @@ import org.chromium.base.supplier.ObservableSupplier;
import org.chromium.base.supplier.ObservableSupplierImpl;
import org.chromium.chrome.browser.notifications.channels.ChromeChannelDefinitions;
import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.preferences.PrefChangeRegistrar;
import org.chromium.chrome.browser.preferences.PrefServiceUtil;
import org.chromium.chrome.browser.settings.ChromeBaseSettingsFragment;
import org.chromium.chrome.browser.signin.services.IdentityServicesProvider;
import org.chromium.components.browser_ui.notifications.NotificationManagerProxyImpl;
import org.chromium.components.browser_ui.settings.ChromeSwitchPreference;
import org.chromium.components.browser_ui.settings.SettingsUtils;
import org.chromium.components.browser_ui.settings.TextMessagePreference;
import org.chromium.components.prefs.PrefChangeRegistrar;
import org.chromium.components.prefs.PrefService;
import org.chromium.components.signin.base.CoreAccountInfo;
import org.chromium.components.signin.identitymanager.ConsentLevel;
@ -74,7 +75,7 @@ public class PriceNotificationSettingsFragment extends ChromeBaseSettingsFragmen
String email = info.getEmail();
mEmailNotificationsSwitch.setSummary(
getString(R.string.price_notifications_settings_email_description, email));
mPrefChangeRegistrar = new PrefChangeRegistrar(getProfile());
mPrefChangeRegistrar = PrefServiceUtil.createFor(getProfile());
mPrefChangeRegistrar.addObserver(
Pref.PRICE_EMAIL_NOTIFICATIONS_ENABLED, this::updateEmailNotificationSwitch);
updateEmailNotificationSwitch();

@ -10,8 +10,8 @@ import android.util.AttributeSet;
import androidx.fragment.app.Fragment;
import org.chromium.chrome.browser.preferences.PrefChangeRegistrar;
import org.chromium.components.browser_ui.settings.ChromeBasePreference;
import org.chromium.components.prefs.PrefChangeRegistrar;
import java.util.ArrayList;

@ -23,13 +23,14 @@ import org.chromium.chrome.browser.language.GlobalAppLocaleController;
import org.chromium.chrome.browser.language.LanguageSplitInstaller;
import org.chromium.chrome.browser.language.R;
import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.preferences.PrefChangeRegistrar;
import org.chromium.chrome.browser.preferences.PrefServiceUtil;
import org.chromium.chrome.browser.settings.ChromeBaseSettingsFragment;
import org.chromium.chrome.browser.settings.ChromeManagedPreferenceDelegate;
import org.chromium.chrome.browser.settings.SettingsNavigationFactory;
import org.chromium.chrome.browser.translate.TranslateBridge;
import org.chromium.components.browser_ui.settings.ChromeSwitchPreference;
import org.chromium.components.browser_ui.settings.SettingsUtils;
import org.chromium.components.prefs.PrefChangeRegistrar;
import org.chromium.components.prefs.PrefService;
import org.chromium.components.user_prefs.UserPrefs;
@ -66,7 +67,7 @@ public class LanguageSettings extends ChromeBaseSettingsFragment
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
mPageTitle.set(getString(R.string.language_settings));
mPrefChangeRegistrar = new PrefChangeRegistrar(getProfile());
mPrefChangeRegistrar = PrefServiceUtil.createFor(getProfile());
// Create the correct version of language settings.
if (shouldShowDetailedPreferences()) {

@ -34,18 +34,18 @@ android_library("java") {
}
android_library("pref_service_java") {
sources = [ "android/java/src/org/chromium/chrome/browser/preferences/PrefChangeRegistrar.java" ]
sources = [ "android/java/src/org/chromium/chrome/browser/preferences/PrefServiceUtil.java" ]
deps = [
"//base:base_java",
"//build/android:build_java",
"//chrome/browser/profiles/android:java",
"//components/prefs/android:java",
"//components/user_prefs/android:java",
"//content/public/android:content_full_java",
"//third_party/androidx:androidx_annotation_annotation_java",
"//third_party/jni_zero:jni_zero_java",
]
srcjar_deps = [ ":pref_service_jni_headers" ]
}
# TODO(chouinard,estade): Consider breaking this target up into a different target for each pref file.
@ -81,10 +81,6 @@ generate_jni("jni_headers") {
sources = [ "android/java/src/org/chromium/chrome/browser/preferences/ChromeSharedPreferences.java" ]
}
generate_jni("pref_service_jni_headers") {
sources = [ "android/java/src/org/chromium/chrome/browser/preferences/PrefChangeRegistrar.java" ]
}
source_set("android") {
sources = [
"android/chrome_shared_preferences.cc",

@ -0,0 +1,17 @@
// Copyright 2024 The Chromium Authors
// 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 org.chromium.chrome.browser.profiles.Profile;
import org.chromium.components.prefs.PrefChangeRegistrar;
import org.chromium.components.user_prefs.UserPrefs;
/** Utilities for accessing PrefServices. */
public class PrefServiceUtil {
/** Create a PrefChangeRegistrar watching the UserPrefs of a Profile. */
public static PrefChangeRegistrar createFor(Profile profile) {
return new PrefChangeRegistrar(UserPrefs.get(profile.getOriginalProfile()));
}
}

@ -11,7 +11,7 @@ import androidx.annotation.NonNull;
import org.chromium.base.supplier.Supplier;
import org.chromium.chrome.browser.magic_stack.ModuleDelegate;
import org.chromium.chrome.browser.magic_stack.ModuleProvider;
import org.chromium.chrome.browser.preferences.PrefChangeRegistrar;
import org.chromium.chrome.browser.preferences.PrefServiceUtil;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.components.user_prefs.UserPrefs;
@ -38,7 +38,7 @@ class SafetyHubMagicStackCoordinator implements ModuleProvider {
MagicStackBridge.getForProfile(profile),
tabModelSelector,
moduleDelegate,
new PrefChangeRegistrar(profile),
PrefServiceUtil.createFor(profile),
modalDialogManagerSupplier,
SafetyHubHatsHelper.getForProfile(profile));
}

@ -14,7 +14,6 @@ import org.chromium.base.supplier.Supplier;
import org.chromium.chrome.browser.magic_stack.ModuleDelegate;
import org.chromium.chrome.browser.magic_stack.ModuleDelegate.ModuleType;
import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.preferences.PrefChangeRegistrar;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.safe_browsing.settings.SafeBrowsingSettingsFragment;
import org.chromium.chrome.browser.safety_hub.SafetyHubMetricUtils.ExternalInteractions;
@ -22,6 +21,7 @@ import org.chromium.chrome.browser.settings.SettingsNavigationFactory;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.tabmodel.TabModelSelectorObserver;
import org.chromium.components.browser_ui.settings.SettingsUtils;
import org.chromium.components.prefs.PrefChangeRegistrar;
import org.chromium.components.prefs.PrefService;
import org.chromium.ui.modaldialog.ModalDialogManager;
import org.chromium.ui.modelutil.PropertyModel;

@ -36,13 +36,13 @@ import org.chromium.base.test.util.Batch;
import org.chromium.chrome.browser.magic_stack.ModuleDelegate;
import org.chromium.chrome.browser.magic_stack.ModuleDelegate.ModuleType;
import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.preferences.PrefChangeRegistrar;
import org.chromium.chrome.browser.preferences.PrefChangeRegistrar.PrefObserver;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.safe_browsing.settings.SafeBrowsingSettingsFragment;
import org.chromium.chrome.browser.settings.SettingsNavigationFactory;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.components.browser_ui.settings.SettingsNavigation;
import org.chromium.components.prefs.PrefChangeRegistrar;
import org.chromium.components.prefs.PrefChangeRegistrar.PrefObserver;
import org.chromium.components.prefs.PrefService;
import org.chromium.ui.modaldialog.ModalDialogManager;
import org.chromium.ui.modelutil.PropertyModel;

@ -64,6 +64,8 @@ component("prefs") {
if (is_android) {
sources += [
"android/pref_change_registrar_android.cc",
"android/pref_change_registrar_android.h",
"android/pref_service_android.cc",
"android/pref_service_android.h",
]

@ -6,13 +6,20 @@ import("//build/config/android/rules.gni")
import("//third_party/jni_zero/jni_zero.gni")
generate_jni("jni_headers") {
sources = [ "java/src/org/chromium/components/prefs/PrefService.java" ]
sources = [
"java/src/org/chromium/components/prefs/PrefChangeRegistrar.java",
"java/src/org/chromium/components/prefs/PrefService.java",
]
}
android_library("java") {
srcjar_deps = [ ":jni_headers" ]
sources = [ "java/src/org/chromium/components/prefs/PrefService.java" ]
sources = [
"java/src/org/chromium/components/prefs/PrefChangeRegistrar.java",
"java/src/org/chromium/components/prefs/PrefService.java",
]
deps = [
"//base:base_java",
"//build/android:build_java",
"//third_party/androidx:androidx_annotation_annotation_java",
"//third_party/jni_zero:jni_zero_java",

@ -2,7 +2,7 @@
// 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;
package org.chromium.components.prefs;
import android.util.ArrayMap;
@ -10,8 +10,6 @@ import org.jni_zero.CalledByNative;
import org.jni_zero.JniType;
import org.jni_zero.NativeMethods;
import org.chromium.chrome.browser.profiles.Profile;
import java.util.Map;
/**
@ -26,15 +24,15 @@ public class PrefChangeRegistrar {
void onPreferenceChange();
}
/** Mapping preference key and corresponding observer. **/
/** Mapping preference key and corresponding observer. */
private final Map<String, PrefObserver> mObservers = new ArrayMap<>();
/** Native pointer for PrefChangeRegistrarAndroid. **/
/** Native pointer for PrefChangeRegistrarAndroid. */
private long mNativeRegistrar;
/** Initialize native PrefChangeRegistrar. */
public PrefChangeRegistrar(Profile profile) {
mNativeRegistrar = PrefChangeRegistrarJni.get().init(PrefChangeRegistrar.this, profile);
public PrefChangeRegistrar(PrefService prefs) {
mNativeRegistrar = PrefChangeRegistrarJni.get().init(PrefChangeRegistrar.this, prefs);
}
/**
@ -79,7 +77,7 @@ public class PrefChangeRegistrar {
@NativeMethods
public interface Natives {
long init(PrefChangeRegistrar caller, @JniType("Profile*") Profile profile);
long init(PrefChangeRegistrar caller, @JniType("PrefService*") PrefService prefService);
void add(
long nativePrefChangeRegistrarAndroid,

@ -2,15 +2,15 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/android/preferences/pref_change_registrar_android.h"
#include "components/prefs/android/pref_change_registrar_android.h"
#include "base/android/jni_android.h"
#include "base/android/jni_string.h"
#include "base/functional/bind.h"
#include "chrome/browser/profiles/profile.h"
#include "components/prefs/android/pref_service_android.h"
// Must come after all headers that specialize FromJniType() / ToJniType().
#include "chrome/browser/preferences/pref_service_jni_headers/PrefChangeRegistrar_jni.h"
#include "components/prefs/android/jni_headers/PrefChangeRegistrar_jni.h"
using base::android::AttachCurrentThread;
using base::android::ConvertJavaStringToUTF8;
@ -19,8 +19,8 @@ using base::android::ConvertUTF8ToJavaString;
PrefChangeRegistrarAndroid::PrefChangeRegistrarAndroid(
JNIEnv* env,
const JavaParamRef<jobject>& obj,
Profile* profile) {
pref_change_registrar_.Init(profile->GetOriginalProfile()->GetPrefs());
PrefService* prefs) {
pref_change_registrar_.Init(prefs);
pref_change_registrar_jobject_.Reset(env, obj);
}
@ -60,7 +60,7 @@ void PrefChangeRegistrarAndroid::OnPreferenceChange(std::string preference) {
jlong JNI_PrefChangeRegistrar_Init(JNIEnv* env,
const JavaParamRef<jobject>& obj,
Profile* profile) {
PrefService* prefs) {
return reinterpret_cast<intptr_t>(
new PrefChangeRegistrarAndroid(env, obj, profile));
new PrefChangeRegistrarAndroid(env, obj, prefs));
}

@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_ANDROID_PREFERENCES_PREF_CHANGE_REGISTRAR_ANDROID_H_
#define CHROME_BROWSER_ANDROID_PREFERENCES_PREF_CHANGE_REGISTRAR_ANDROID_H_
#ifndef COMPONENTS_PREFS_ANDROID_PREF_CHANGE_REGISTRAR_ANDROID_H_
#define COMPONENTS_PREFS_ANDROID_PREF_CHANGE_REGISTRAR_ANDROID_H_
#include "base/android/scoped_java_ref.h"
#include "base/memory/raw_ptr.h"
@ -12,7 +12,7 @@
using base::android::JavaParamRef;
using base::android::ScopedJavaGlobalRef;
class Profile;
class PrefService;
// This class contains a PrefChangeRegistrar that observes PrefService changes
// for Android.
@ -20,7 +20,7 @@ class PrefChangeRegistrarAndroid {
public:
PrefChangeRegistrarAndroid(JNIEnv* env,
const JavaParamRef<jobject>& obj,
Profile* profile);
PrefService* prefs);
void Destroy(JNIEnv*, const JavaParamRef<jobject>&);
PrefChangeRegistrarAndroid(const PrefChangeRegistrarAndroid&) = delete;
@ -42,4 +42,4 @@ class PrefChangeRegistrarAndroid {
ScopedJavaGlobalRef<jobject> pref_change_registrar_jobject_;
};
#endif // CHROME_BROWSER_ANDROID_PREFERENCES_PREF_CHANGE_REGISTRAR_ANDROID_H_
#endif // COMPONENTS_PREFS_ANDROID_PREF_CHANGE_REGISTRAR_ANDROID_H_