Commit 97fd6bcf authored by Natalie Chouinard's avatar Natalie Chouinard Committed by Commit Bot

Add isManagedPreference to PrefServiceBridge

Add a generic isManagedPreference method to PrefServiceBridge, making
use of the prefs.h enums.

Migrate Java usages of prefs::kSearchSuggestEnabled to use the generic
methods as a sample (more to follow).

Bug: 1016957
Change-Id: Ib13181fd9ed6c2e2265b08c141985899bfbabe0c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1874719Reviewed-by: default avatarTheresa  <twellington@chromium.org>
Commit-Queue: Natalie Chouinard <chouinard@chromium.org>
Cr-Commit-Position: refs/heads/master@{#708790}
parent ef99e126
...@@ -168,6 +168,7 @@ chrome_junit_test_java_sources = [ ...@@ -168,6 +168,7 @@ chrome_junit_test_java_sources = [
"junit/src/org/chromium/chrome/browser/payments/AutofillContactTest.java", "junit/src/org/chromium/chrome/browser/payments/AutofillContactTest.java",
"junit/src/org/chromium/chrome/browser/payments/AutofillContactUnitTest.java", "junit/src/org/chromium/chrome/browser/payments/AutofillContactUnitTest.java",
"junit/src/org/chromium/chrome/browser/payments/PaymentManifestVerifierTest.java", "junit/src/org/chromium/chrome/browser/payments/PaymentManifestVerifierTest.java",
"junit/src/org/chromium/chrome/browser/preferences/PrefServiceBridgeTest.java",
"junit/src/org/chromium/chrome/browser/preferences/password/DialogManagerTest.java", "junit/src/org/chromium/chrome/browser/preferences/password/DialogManagerTest.java",
"junit/src/org/chromium/chrome/browser/preferences/password/EnsureAsyncPostingRule.java", "junit/src/org/chromium/chrome/browser/preferences/password/EnsureAsyncPostingRule.java",
"junit/src/org/chromium/chrome/browser/preferences/password/ExportWarningDialogFragmentTest.java", "junit/src/org/chromium/chrome/browser/preferences/password/ExportWarningDialogFragmentTest.java",
......
...@@ -138,6 +138,14 @@ public class PrefServiceBridge { ...@@ -138,6 +138,14 @@ public class PrefServiceBridge {
PrefServiceBridgeJni.get().setInteger(PrefServiceBridge.this, preference, value); PrefServiceBridgeJni.get().setInteger(PrefServiceBridge.this, preference, value);
} }
/**
* @param preference The name of the preference.
* @return Whether the specified preference is managed.
*/
public boolean isManagedPreference(@Pref int preference) {
return PrefServiceBridgeJni.get().isManagedPreference(PrefServiceBridge.this, preference);
}
/** /**
* Migrates (synchronously) the preferences to the most recent version. * Migrates (synchronously) the preferences to the most recent version.
*/ */
...@@ -401,27 +409,6 @@ public class PrefServiceBridge { ...@@ -401,27 +409,6 @@ public class PrefServiceBridge {
return PrefServiceBridgeJni.get().getSyncLastAccountName(PrefServiceBridge.this); return PrefServiceBridgeJni.get().getSyncLastAccountName(PrefServiceBridge.this);
} }
/**
* @return Whether Search Suggest is enabled.
*/
public boolean isSearchSuggestEnabled() {
return PrefServiceBridgeJni.get().getSearchSuggestEnabled(PrefServiceBridge.this);
}
/**
* Sets whether search suggest should be enabled.
*/
public void setSearchSuggestEnabled(boolean enabled) {
PrefServiceBridgeJni.get().setSearchSuggestEnabled(PrefServiceBridge.this, enabled);
}
/**
* @return Whether Search Suggest is configured by policy.
*/
public boolean isSearchSuggestManaged() {
return PrefServiceBridgeJni.get().getSearchSuggestManaged(PrefServiceBridge.this);
}
/** /**
* @return the Contextual Search preference. * @return the Contextual Search preference.
*/ */
...@@ -1143,6 +1130,7 @@ public class PrefServiceBridge { ...@@ -1143,6 +1130,7 @@ public class PrefServiceBridge {
boolean getBoolean(PrefServiceBridge caller, int preference); boolean getBoolean(PrefServiceBridge caller, int preference);
void setBoolean(PrefServiceBridge caller, int preference, boolean value); void setBoolean(PrefServiceBridge caller, int preference, boolean value);
void setInteger(PrefServiceBridge caller, int preference, int value); void setInteger(PrefServiceBridge caller, int preference, int value);
boolean isManagedPreference(PrefServiceBridge caller, int preference);
boolean getAcceptCookiesEnabled(PrefServiceBridge caller); boolean getAcceptCookiesEnabled(PrefServiceBridge caller);
boolean getAcceptCookiesUserModifiable(PrefServiceBridge caller); boolean getAcceptCookiesUserModifiable(PrefServiceBridge caller);
boolean getAcceptCookiesManagedByCustodian(PrefServiceBridge caller); boolean getAcceptCookiesManagedByCustodian(PrefServiceBridge caller);
...@@ -1217,9 +1205,6 @@ public class PrefServiceBridge { ...@@ -1217,9 +1205,6 @@ public class PrefServiceBridge {
void setContextualSearchPreference(PrefServiceBridge caller, String preference); void setContextualSearchPreference(PrefServiceBridge caller, String preference);
String getContextualSearchPreference(PrefServiceBridge caller); String getContextualSearchPreference(PrefServiceBridge caller);
boolean getContextualSearchPreferenceIsManaged(PrefServiceBridge caller); boolean getContextualSearchPreferenceIsManaged(PrefServiceBridge caller);
boolean getSearchSuggestEnabled(PrefServiceBridge caller);
void setSearchSuggestEnabled(PrefServiceBridge caller, boolean enabled);
boolean getSearchSuggestManaged(PrefServiceBridge caller);
boolean getSafeBrowsingExtendedReportingEnabled(PrefServiceBridge caller); boolean getSafeBrowsingExtendedReportingEnabled(PrefServiceBridge caller);
void setSafeBrowsingExtendedReportingEnabled(PrefServiceBridge caller, boolean enabled); void setSafeBrowsingExtendedReportingEnabled(PrefServiceBridge caller, boolean enabled);
boolean getSafeBrowsingExtendedReportingManaged(PrefServiceBridge caller); boolean getSafeBrowsingExtendedReportingManaged(PrefServiceBridge caller);
......
...@@ -45,6 +45,7 @@ import org.chromium.chrome.browser.preferences.ChromeBasePreference; ...@@ -45,6 +45,7 @@ import org.chromium.chrome.browser.preferences.ChromeBasePreference;
import org.chromium.chrome.browser.preferences.ChromeSwitchPreference; import org.chromium.chrome.browser.preferences.ChromeSwitchPreference;
import org.chromium.chrome.browser.preferences.ManagedPreferenceDelegate; import org.chromium.chrome.browser.preferences.ManagedPreferenceDelegate;
import org.chromium.chrome.browser.preferences.ManagedPreferencesUtils; import org.chromium.chrome.browser.preferences.ManagedPreferencesUtils;
import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.preferences.PrefServiceBridge; import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.preferences.PreferenceUtils; import org.chromium.chrome.browser.preferences.PreferenceUtils;
import org.chromium.chrome.browser.preferences.Preferences; import org.chromium.chrome.browser.preferences.Preferences;
...@@ -334,7 +335,7 @@ public class SyncAndServicesPreferences extends PreferenceFragmentCompat ...@@ -334,7 +335,7 @@ public class SyncAndServicesPreferences extends PreferenceFragmentCompat
} }
PostTask.postTask(UiThreadTaskTraits.DEFAULT, this::updatePreferences); PostTask.postTask(UiThreadTaskTraits.DEFAULT, this::updatePreferences);
} else if (PREF_SEARCH_SUGGESTIONS.equals(key)) { } else if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
mPrefServiceBridge.setSearchSuggestEnabled((boolean) newValue); mPrefServiceBridge.setBoolean(Pref.SEARCH_SUGGEST_ENABLED, (boolean) newValue);
} else if (PREF_SAFE_BROWSING.equals(key)) { } else if (PREF_SAFE_BROWSING.equals(key)) {
mPrefServiceBridge.setSafeBrowsingEnabled((boolean) newValue); mPrefServiceBridge.setSafeBrowsingEnabled((boolean) newValue);
} else if (PREF_SAFE_BROWSING_SCOUT_REPORTING.equals(key)) { } else if (PREF_SAFE_BROWSING_SCOUT_REPORTING.equals(key)) {
...@@ -538,7 +539,7 @@ public class SyncAndServicesPreferences extends PreferenceFragmentCompat ...@@ -538,7 +539,7 @@ public class SyncAndServicesPreferences extends PreferenceFragmentCompat
private void updatePreferences() { private void updatePreferences() {
updateSyncPreferences(); updateSyncPreferences();
mSearchSuggestions.setChecked(mPrefServiceBridge.isSearchSuggestEnabled()); mSearchSuggestions.setChecked(mPrefServiceBridge.getBoolean(Pref.SEARCH_SUGGEST_ENABLED));
mNavigationError.setChecked(mPrefServiceBridge.isResolveNavigationErrorEnabled()); mNavigationError.setChecked(mPrefServiceBridge.isResolveNavigationErrorEnabled());
mSafeBrowsing.setChecked(mPrefServiceBridge.isSafeBrowsingEnabled()); mSafeBrowsing.setChecked(mPrefServiceBridge.isSafeBrowsingEnabled());
mSafeBrowsingReporting.setChecked( mSafeBrowsingReporting.setChecked(
...@@ -606,7 +607,7 @@ public class SyncAndServicesPreferences extends PreferenceFragmentCompat ...@@ -606,7 +607,7 @@ public class SyncAndServicesPreferences extends PreferenceFragmentCompat
return mPrefServiceBridge.isResolveNavigationErrorManaged(); return mPrefServiceBridge.isResolveNavigationErrorManaged();
} }
if (PREF_SEARCH_SUGGESTIONS.equals(key)) { if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
return mPrefServiceBridge.isSearchSuggestManaged(); return mPrefServiceBridge.isManagedPreference(Pref.SEARCH_SUGGEST_ENABLED);
} }
if (PREF_SAFE_BROWSING_SCOUT_REPORTING.equals(key)) { if (PREF_SAFE_BROWSING_SCOUT_REPORTING.equals(key)) {
return mPrefServiceBridge.isSafeBrowsingExtendedReportingManaged(); return mPrefServiceBridge.isSafeBrowsingExtendedReportingManaged();
......
...@@ -22,6 +22,7 @@ import org.chromium.chrome.browser.ntp.snippets.CategoryInt; ...@@ -22,6 +22,7 @@ import org.chromium.chrome.browser.ntp.snippets.CategoryInt;
import org.chromium.chrome.browser.ntp.snippets.KnownCategories; import org.chromium.chrome.browser.ntp.snippets.KnownCategories;
import org.chromium.chrome.browser.ntp.snippets.SnippetsBridge; import org.chromium.chrome.browser.ntp.snippets.SnippetsBridge;
import org.chromium.chrome.browser.ntp.snippets.SuggestionsSource; import org.chromium.chrome.browser.ntp.snippets.SuggestionsSource;
import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.preferences.PrefServiceBridge; import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.util.UrlConstants; import org.chromium.chrome.browser.util.UrlConstants;
...@@ -75,7 +76,9 @@ public class ContentSuggestionsTest { ...@@ -75,7 +76,9 @@ public class ContentSuggestionsTest {
private NewTabPage loadNTPWithSearchSuggestState(final boolean enabled) { private NewTabPage loadNTPWithSearchSuggestState(final boolean enabled) {
Tab tab = mActivityTestRule.getActivity().getActivityTab(); Tab tab = mActivityTestRule.getActivity().getActivityTab();
TestThreadUtils.runOnUiThreadBlocking( TestThreadUtils.runOnUiThreadBlocking(
() -> PrefServiceBridge.getInstance().setSearchSuggestEnabled(enabled)); ()
-> PrefServiceBridge.getInstance().setBoolean(
Pref.SEARCH_SUGGEST_ENABLED, enabled));
mActivityTestRule.loadUrl(UrlConstants.NTP_URL); mActivityTestRule.loadUrl(UrlConstants.NTP_URL);
NewTabPageTestUtils.waitForNtpLoaded(tab); NewTabPageTestUtils.waitForNtpLoaded(tab);
......
// 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.
// generate_java_test.py
package org.chromium.chrome.browser.preferences;
import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.verify;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.annotation.Config;
import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.base.test.util.JniMocker;
/** Unit tests for {@link PrefServiceBridge}. */
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE)
public class PrefServiceBridgeTest {
private static final int PREF = 42;
@Rule
public JniMocker mocker = new JniMocker();
@Mock
private PrefServiceBridge.Natives mNativeMock;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mocker.mock(PrefServiceBridgeJni.TEST_HOOKS, mNativeMock);
}
@Test
public void testGetBoolean() {
boolean expected = false;
PrefServiceBridge prefServiceBridge = new PrefServiceBridge();
doReturn(expected).when(mNativeMock).getBoolean(prefServiceBridge, PREF);
assertEquals(expected, prefServiceBridge.getBoolean(PREF));
}
@Test
public void testSetBoolean() {
boolean value = true;
PrefServiceBridge prefServiceBridge = new PrefServiceBridge();
prefServiceBridge.setBoolean(PREF, value);
verify(mNativeMock).setBoolean(eq(prefServiceBridge), eq(PREF), eq(value));
}
@Test
public void testIsManaged() {
boolean expected = true;
PrefServiceBridge prefServiceBridge = new PrefServiceBridge();
doReturn(expected).when(mNativeMock).isManagedPreference(prefServiceBridge, PREF);
assertEquals(expected, prefServiceBridge.isManagedPreference(PREF));
}
}
...@@ -158,6 +158,14 @@ static void JNI_PrefServiceBridge_SetInteger(JNIEnv* env, ...@@ -158,6 +158,14 @@ static void JNI_PrefServiceBridge_SetInteger(JNIEnv* env,
PrefServiceBridge::GetPrefNameExposedToJava(j_pref_index), j_value); PrefServiceBridge::GetPrefNameExposedToJava(j_pref_index), j_value);
} }
static jboolean JNI_PrefServiceBridge_IsManagedPreference(
JNIEnv* env,
const JavaParamRef<jobject>& obj,
const jint j_pref_index) {
return GetPrefService()->IsManagedPreference(
PrefServiceBridge::GetPrefNameExposedToJava(j_pref_index));
}
static jboolean JNI_PrefServiceBridge_IsContentSettingManaged( static jboolean JNI_PrefServiceBridge_IsContentSettingManaged(
JNIEnv* env, JNIEnv* env,
const JavaParamRef<jobject>& obj, const JavaParamRef<jobject>& obj,
...@@ -420,18 +428,6 @@ static jboolean JNI_PrefServiceBridge_GetTranslateManaged( ...@@ -420,18 +428,6 @@ static jboolean JNI_PrefServiceBridge_GetTranslateManaged(
return GetPrefService()->IsManagedPreference(prefs::kOfferTranslateEnabled); return GetPrefService()->IsManagedPreference(prefs::kOfferTranslateEnabled);
} }
static jboolean JNI_PrefServiceBridge_GetSearchSuggestEnabled(
JNIEnv* env,
const JavaParamRef<jobject>& obj) {
return GetPrefService()->GetBoolean(prefs::kSearchSuggestEnabled);
}
static jboolean JNI_PrefServiceBridge_GetSearchSuggestManaged(
JNIEnv* env,
const JavaParamRef<jobject>& obj) {
return GetPrefService()->IsManagedPreference(prefs::kSearchSuggestEnabled);
}
static jboolean JNI_PrefServiceBridge_GetSafeBrowsingExtendedReportingEnabled( static jboolean JNI_PrefServiceBridge_GetSafeBrowsingExtendedReportingEnabled(
JNIEnv* env, JNIEnv* env,
const JavaParamRef<jobject>& obj) { const JavaParamRef<jobject>& obj) {
...@@ -969,13 +965,6 @@ static jboolean JNI_PrefServiceBridge_GetMicManagedByCustodian( ...@@ -969,13 +965,6 @@ static jboolean JNI_PrefServiceBridge_GetMicManagedByCustodian(
CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC); CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC);
} }
static void JNI_PrefServiceBridge_SetSearchSuggestEnabled(
JNIEnv* env,
const JavaParamRef<jobject>& obj,
jboolean enabled) {
GetPrefService()->SetBoolean(prefs::kSearchSuggestEnabled, enabled);
}
static ScopedJavaLocalRef<jstring> static ScopedJavaLocalRef<jstring>
JNI_PrefServiceBridge_GetContextualSearchPreference( JNI_PrefServiceBridge_GetContextualSearchPreference(
JNIEnv* env, JNIEnv* env,
......
...@@ -40,6 +40,7 @@ enum Pref { ...@@ -40,6 +40,7 @@ enum Pref {
OFFLINE_PREFETCH_USER_SETTING_ENABLED, OFFLINE_PREFETCH_USER_SETTING_ENABLED,
SAFE_BROWSING_EXTENDED_REPORTING_OPT_IN_ALLOWED, SAFE_BROWSING_EXTENDED_REPORTING_OPT_IN_ALLOWED,
PASSWORD_MANAGER_ONBOARDING_STATE, PASSWORD_MANAGER_ONBOARDING_STATE,
SEARCH_SUGGEST_ENABLED,
// PREF_NUM_PREFS must be the last entry. // PREF_NUM_PREFS must be the last entry.
PREF_NUM_PREFS PREF_NUM_PREFS
}; };
...@@ -69,6 +70,7 @@ const char* const kPrefsExposedToJava[] = { ...@@ -69,6 +70,7 @@ const char* const kPrefsExposedToJava[] = {
offline_pages::prefetch_prefs::kUserSettingEnabled, offline_pages::prefetch_prefs::kUserSettingEnabled,
prefs::kSafeBrowsingExtendedReportingOptInAllowed, prefs::kSafeBrowsingExtendedReportingOptInAllowed,
password_manager::prefs::kPasswordManagerOnboardingState, password_manager::prefs::kPasswordManagerOnboardingState,
prefs::kSearchSuggestEnabled,
}; };
#endif // CHROME_BROWSER_ANDROID_PREFERENCES_PREFS_H_ #endif // CHROME_BROWSER_ANDROID_PREFERENCES_PREFS_H_
...@@ -66,6 +66,7 @@ TEST_F(PrefsTest, TestIndex) { ...@@ -66,6 +66,7 @@ TEST_F(PrefsTest, TestIndex) {
GetPrefName(SAFE_BROWSING_EXTENDED_REPORTING_OPT_IN_ALLOWED)); GetPrefName(SAFE_BROWSING_EXTENDED_REPORTING_OPT_IN_ALLOWED));
EXPECT_EQ(password_manager::prefs::kPasswordManagerOnboardingState, EXPECT_EQ(password_manager::prefs::kPasswordManagerOnboardingState,
GetPrefName(PASSWORD_MANAGER_ONBOARDING_STATE)); GetPrefName(PASSWORD_MANAGER_ONBOARDING_STATE));
EXPECT_EQ(prefs::kSearchSuggestEnabled, GetPrefName(SEARCH_SUGGEST_ENABLED));
// If this check fails, a pref is missing a test case above. // If this check fails, a pref is missing a test case above.
EXPECT_EQ(Pref::PREF_NUM_PREFS, pref_count_); EXPECT_EQ(Pref::PREF_NUM_PREFS, pref_count_);
......
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