Commit ed97857f authored by Natalie Chouinard's avatar Natalie Chouinard Committed by Commit Bot

Migrate Supervised User preferences to prefs.h

Migrate Supervised User preferences to use PrefServiceBridge generic
methods, making use of the prefs.h enums.

Replace duplicated Java constants for SupervisedUserURLFilter::
FilteringBehavior C++ enum with a generated Java enum.

Bug: 1016957
Change-Id: Id0eb0b19464fb6bc487cb7924b68de6f753fba60
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1885505
Commit-Queue: Natalie Chouinard <chouinard@chromium.org>
Reviewed-by: default avatarAga Wronska <agawronska@chromium.org>
Reviewed-by: default avatarTheresa  <twellington@chromium.org>
Reviewed-by: default avatarBrandon Wylie <wylieb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#710977}
parent 5c8c249e
......@@ -1759,6 +1759,12 @@ if (is_android) {
]
}
java_cpp_enum("supervised_user_url_filter_enum_javagen") {
sources = [
"browser/supervised_user/supervised_user_url_filter.h",
]
}
source_set("chrome_android_core") {
sources = [
"app/android/chrome_android_initializer.cc",
......
......@@ -430,6 +430,7 @@ android_library("chrome_java") {
"//chrome:payments_journey_logger_enum_javagen",
"//chrome:pref_enum_javagen",
"//chrome:quick_action_category_enum_javagen",
"//chrome:supervised_user_url_filter_enum_javagen",
"//chrome/browser/notifications/scheduler/public:jni_enums",
"//chrome/browser:sharing_dialog_type_generated_enum",
"//chrome/browser:sharing_send_message_result_generated_enum",
......
......@@ -251,7 +251,9 @@ public class ManagedPreferencesUtils {
private static @StringRes int getManagedByParentStringRes() {
boolean singleParentIsManager =
PrefServiceBridge.getInstance().getSupervisedUserSecondCustodianName().isEmpty();
PrefServiceBridge.getInstance()
.getString(Pref.SUPERVISED_USER_SECOND_CUSTODIAN_NAME)
.isEmpty();
return singleParentIsManager ? R.string.managed_by_your_parent
: R.string.managed_by_your_parents;
}
......
......@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.preferences;
import android.content.SharedPreferences;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.chromium.base.ContextUtils;
......@@ -30,12 +31,6 @@ import java.util.List;
* preferences.
*/
public class PrefServiceBridge {
// These values must match the native enum values in
// SupervisedUserURLFilter::FilteringBehavior
public static final int SUPERVISED_USER_FILTERING_ALLOW = 0;
public static final int SUPERVISED_USER_FILTERING_WARN = 1;
public static final int SUPERVISED_USER_FILTERING_BLOCK = 2;
private static final String MIGRATION_PREF_KEY = "PrefMigrationVersion";
private static final int MIGRATION_CURRENT_VERSION = 4;
......@@ -145,6 +140,7 @@ public class PrefServiceBridge {
* @param preference The name of the preference.
* @return value The value of the specified preference.
*/
@NonNull
public String getString(@Pref int preference) {
return PrefServiceBridgeJni.get().getString(PrefServiceBridge.this, preference);
}
......@@ -153,7 +149,7 @@ public class PrefServiceBridge {
* @param preference The name of the preference.
* @param value The value the specified preference will be set to.
*/
public void setString(@Pref int preference, String value) {
public void setString(@Pref int preference, @NonNull String value) {
PrefServiceBridgeJni.get().setString(PrefServiceBridge.this, preference, value);
}
......@@ -790,35 +786,6 @@ public class PrefServiceBridge {
PrefServiceBridgeJni.get().resetAcceptLanguages(PrefServiceBridge.this, defaultLocale);
}
/**
* @return Whether SafeSites for supervised users is enabled.
*/
public boolean isSupervisedUserSafeSitesEnabled() {
return PrefServiceBridgeJni.get().getSupervisedUserSafeSitesEnabled(PrefServiceBridge.this);
}
/**
* @return the default supervised user filtering behavior
*/
public int getDefaultSupervisedUserFilteringBehavior() {
return PrefServiceBridgeJni.get().getDefaultSupervisedUserFilteringBehavior(
PrefServiceBridge.this);
}
public String getSupervisedUserCustodianEmail() {
return PrefServiceBridgeJni.get().getSupervisedUserCustodianEmail(PrefServiceBridge.this);
}
public String getSupervisedUserSecondCustodianName() {
return PrefServiceBridgeJni.get().getSupervisedUserSecondCustodianName(
PrefServiceBridge.this);
}
public String getSupervisedUserSecondCustodianEmail() {
return PrefServiceBridgeJni.get().getSupervisedUserSecondCustodianEmail(
PrefServiceBridge.this);
}
/**
* @return A sorted list of LanguageItems representing the Chrome accept languages with details.
* Languages that are not supported on Android have been filtered out.
......@@ -943,11 +910,6 @@ public class PrefServiceBridge {
PrefServiceBridge.this);
}
@VisibleForTesting
public void setSupervisedUserId(String supervisedUserId) {
PrefServiceBridgeJni.get().setSupervisedUserId(PrefServiceBridge.this, supervisedUserId);
}
/**
* @return The stored download default directory.
*/
......@@ -1041,7 +1003,6 @@ public class PrefServiceBridge {
boolean getPrintingEnabled(PrefServiceBridge caller);
boolean getSensorsEnabled(PrefServiceBridge caller);
boolean getSoundEnabled(PrefServiceBridge caller);
boolean getSupervisedUserSafeSitesEnabled(PrefServiceBridge caller);
void setTranslateEnabled(PrefServiceBridge caller, boolean enabled);
void migrateJavascriptPreference(PrefServiceBridge caller);
boolean getBrowsingDataDeletionPreference(
......@@ -1085,10 +1046,6 @@ public class PrefServiceBridge {
void setEulaAccepted(PrefServiceBridge caller);
void resetAcceptLanguages(PrefServiceBridge caller, String defaultLocale);
String getSyncLastAccountName(PrefServiceBridge caller);
String getSupervisedUserCustodianEmail(PrefServiceBridge caller);
int getDefaultSupervisedUserFilteringBehavior(PrefServiceBridge caller);
String getSupervisedUserSecondCustodianName(PrefServiceBridge caller);
String getSupervisedUserSecondCustodianEmail(PrefServiceBridge caller);
boolean isMetricsReportingEnabled(PrefServiceBridge caller);
void setMetricsReportingEnabled(PrefServiceBridge caller, boolean enabled);
boolean isMetricsReportingManaged(PrefServiceBridge caller);
......@@ -1096,7 +1053,6 @@ public class PrefServiceBridge {
boolean getClickedUpdateMenuItem(PrefServiceBridge caller);
void setLatestVersionWhenClickedUpdateMenuItem(PrefServiceBridge caller, String version);
String getLatestVersionWhenClickedUpdateMenuItem(PrefServiceBridge caller);
void setSupervisedUserId(PrefServiceBridge caller, String supervisedUserId);
void getChromeAcceptLanguages(PrefServiceBridge caller, List<LanguageItem> list);
void getUserAcceptLanguages(PrefServiceBridge caller, List<String> list);
void updateUserAcceptLanguages(PrefServiceBridge caller, String language, boolean add);
......
......@@ -31,6 +31,7 @@ import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.base.ContextUtils;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.preferences.ChromeBasePreference;
import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.preferences.PreferencesLauncher;
import org.chromium.chrome.browser.profiles.Profile;
......@@ -42,6 +43,7 @@ import org.chromium.chrome.browser.signin.SignOutDialogFragment.SignOutDialogLis
import org.chromium.chrome.browser.signin.SigninManager;
import org.chromium.chrome.browser.signin.SigninManager.SignInStateObserver;
import org.chromium.chrome.browser.signin.SigninUtils;
import org.chromium.chrome.browser.superviseduser.FilteringBehavior;
import org.chromium.chrome.browser.sync.ProfileSyncService;
import org.chromium.components.signin.AccountManagerFacade;
import org.chromium.components.signin.ChromeSigninController;
......@@ -232,8 +234,9 @@ public class AccountManagementFragment extends PreferenceFragmentCompat
if (mProfile.isChild()) {
PrefServiceBridge prefService = PrefServiceBridge.getInstance();
String firstParent = prefService.getSupervisedUserCustodianEmail();
String secondParent = prefService.getSupervisedUserSecondCustodianEmail();
String firstParent = prefService.getString(Pref.SUPERVISED_USER_CUSTODIAN_EMAIL);
String secondParent =
prefService.getString(Pref.SUPERVISED_USER_SECOND_CUSTODIAN_EMAIL);
String parentText;
if (!secondParent.isEmpty()) {
......@@ -247,10 +250,11 @@ public class AccountManagementFragment extends PreferenceFragmentCompat
parentAccounts.setSummary(parentText);
final int childContentSummary;
int defaultBehavior = prefService.getDefaultSupervisedUserFilteringBehavior();
if (defaultBehavior == PrefServiceBridge.SUPERVISED_USER_FILTERING_BLOCK) {
int defaultBehavior =
prefService.getInteger(Pref.DEFAULT_SUPERVISED_USER_FILTERING_BEHAVIOR);
if (defaultBehavior == FilteringBehavior.BLOCK) {
childContentSummary = R.string.account_management_child_content_approved;
} else if (prefService.isSupervisedUserSafeSitesEnabled()) {
} else if (prefService.getBoolean(Pref.SUPERVISED_USER_SAFE_SITES)) {
childContentSummary = R.string.account_management_child_content_filter_mature;
} else {
childContentSummary = R.string.account_management_child_content_all;
......
......@@ -633,7 +633,7 @@ public class HistoryActivityTest {
// Set supervised user.
int onPreferenceChangeCallCount = mTestObserver.onPreferenceChangeCallback.getCallCount();
Assert.assertTrue(TestThreadUtils.runOnUiThreadBlocking(() -> {
PrefServiceBridge.getInstance().setSupervisedUserId("ChildAccountSUID");
PrefServiceBridge.getInstance().setString(Pref.SUPERVISED_USER_ID, "ChildAccountSUID");
return Profile.getLastUsedProfile().isChild()
&& !PrefServiceBridge.getInstance().getBoolean(
Pref.ALLOW_DELETING_BROWSER_HISTORY)
......@@ -664,7 +664,7 @@ public class HistoryActivityTest {
private void signOut() throws Exception {
// Clear supervised user id.
TestThreadUtils.runOnUiThreadBlocking(
() -> PrefServiceBridge.getInstance().setSupervisedUserId(""));
() -> PrefServiceBridge.getInstance().setString(Pref.SUPERVISED_USER_ID, ""));
// Sign out of account.
int currentCallCount = mTestObserver.onSigninStateChangedCallback.getCallCount();
......
......@@ -504,20 +504,6 @@ static jboolean JNI_PrefServiceBridge_GetResolveNavigationErrorManaged(
return GetPrefService()->IsManagedPreference(
prefs::kAlternateErrorPagesEnabled);
}
static jboolean JNI_PrefServiceBridge_GetSupervisedUserSafeSitesEnabled(
JNIEnv* env,
const JavaParamRef<jobject>& obj) {
return GetPrefService()->GetBoolean(prefs::kSupervisedUserSafeSites);
}
static jint JNI_PrefServiceBridge_GetDefaultSupervisedUserFilteringBehavior(
JNIEnv* env,
const JavaParamRef<jobject>& obj) {
return GetPrefService()->GetInteger(
prefs::kDefaultSupervisedUserFilteringBehavior);
}
static jboolean JNI_PrefServiceBridge_GetIncognitoModeEnabled(
JNIEnv* env,
const JavaParamRef<jobject>& obj) {
......@@ -983,32 +969,6 @@ static ScopedJavaLocalRef<jobject> JNI_PrefServiceBridge_GetAboutVersionStrings(
ConvertUTF8ToJavaString(env, os_version));
}
static ScopedJavaLocalRef<jstring>
JNI_PrefServiceBridge_GetSupervisedUserCustodianEmail(
JNIEnv* env,
const JavaParamRef<jobject>& obj) {
return ConvertUTF8ToJavaString(
env, GetPrefService()->GetString(prefs::kSupervisedUserCustodianEmail));
}
static ScopedJavaLocalRef<jstring>
JNI_PrefServiceBridge_GetSupervisedUserSecondCustodianName(
JNIEnv* env,
const JavaParamRef<jobject>& obj) {
return ConvertUTF8ToJavaString(
env,
GetPrefService()->GetString(prefs::kSupervisedUserSecondCustodianName));
}
static ScopedJavaLocalRef<jstring>
JNI_PrefServiceBridge_GetSupervisedUserSecondCustodianEmail(
JNIEnv* env,
const JavaParamRef<jobject>& obj) {
return ConvertUTF8ToJavaString(
env,
GetPrefService()->GetString(prefs::kSupervisedUserSecondCustodianEmail));
}
// static
// This logic should be kept in sync with prependToAcceptLanguagesIfNecessary in
// chrome/android/java/src/org/chromium/chrome/browser/
......@@ -1099,14 +1059,6 @@ void PrefServiceBridge::GetAndroidPermissionsForContentSetting(
out);
}
static void JNI_PrefServiceBridge_SetSupervisedUserId(
JNIEnv* env,
const JavaParamRef<jobject>& obj,
const JavaParamRef<jstring>& pref) {
GetPrefService()->SetString(prefs::kSupervisedUserId,
ConvertJavaStringToUTF8(env, pref));
}
static void JNI_PrefServiceBridge_GetChromeAcceptLanguages(
JNIEnv* env,
const JavaParamRef<jobject>& obj,
......
......@@ -44,6 +44,12 @@ enum Pref {
REMEMBER_PASSWORDS_ENABLED,
PASSWORD_MANAGER_AUTO_SIGNIN_ENABLED,
PASSWORD_MANAGER_LEAK_DETECTION_ENABLED,
SUPERVISED_USER_SAFE_SITES,
DEFAULT_SUPERVISED_USER_FILTERING_BEHAVIOR,
SUPERVISED_USER_ID,
SUPERVISED_USER_CUSTODIAN_EMAIL,
SUPERVISED_USER_SECOND_CUSTODIAN_NAME,
SUPERVISED_USER_SECOND_CUSTODIAN_EMAIL,
// PREF_NUM_PREFS must be the last entry.
PREF_NUM_PREFS
};
......@@ -77,6 +83,12 @@ const char* const kPrefsExposedToJava[] = {
password_manager::prefs::kCredentialsEnableService,
password_manager::prefs::kCredentialsEnableAutosignin,
password_manager::prefs::kPasswordLeakDetectionEnabled,
prefs::kSupervisedUserSafeSites,
prefs::kDefaultSupervisedUserFilteringBehavior,
prefs::kSupervisedUserId,
prefs::kSupervisedUserCustodianEmail,
prefs::kSupervisedUserSecondCustodianName,
prefs::kSupervisedUserSecondCustodianEmail,
};
#endif // CHROME_BROWSER_ANDROID_PREFERENCES_PREFS_H_
......@@ -73,6 +73,17 @@ TEST_F(PrefsTest, TestIndex) {
GetPrefName(PASSWORD_MANAGER_AUTO_SIGNIN_ENABLED));
EXPECT_EQ(password_manager::prefs::kPasswordLeakDetectionEnabled,
GetPrefName(PASSWORD_MANAGER_LEAK_DETECTION_ENABLED));
EXPECT_EQ(prefs::kSupervisedUserSafeSites,
GetPrefName(SUPERVISED_USER_SAFE_SITES));
EXPECT_EQ(prefs::kDefaultSupervisedUserFilteringBehavior,
GetPrefName(DEFAULT_SUPERVISED_USER_FILTERING_BEHAVIOR));
EXPECT_EQ(prefs::kSupervisedUserId, GetPrefName(SUPERVISED_USER_ID));
EXPECT_EQ(prefs::kSupervisedUserCustodianEmail,
GetPrefName(SUPERVISED_USER_CUSTODIAN_EMAIL));
EXPECT_EQ(prefs::kSupervisedUserSecondCustodianName,
GetPrefName(SUPERVISED_USER_SECOND_CUSTODIAN_NAME));
EXPECT_EQ(prefs::kSupervisedUserSecondCustodianEmail,
GetPrefName(SUPERVISED_USER_SECOND_CUSTODIAN_EMAIL));
// If this check fails, a pref is missing a test case above.
EXPECT_EQ(Pref::PREF_NUM_PREFS, pref_count_);
......
......@@ -42,6 +42,8 @@ class SharedURLLoaderFactory;
// sources.
class SupervisedUserURLFilter {
public:
// A Java counterpart will be generated for this enum.
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.superviseduser
enum FilteringBehavior {
ALLOW,
WARN,
......
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