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 = [
"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/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/EnsureAsyncPostingRule.java",
"junit/src/org/chromium/chrome/browser/preferences/password/ExportWarningDialogFragmentTest.java",
......
......@@ -138,6 +138,14 @@ public class PrefServiceBridge {
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.
*/
......@@ -401,27 +409,6 @@ public class PrefServiceBridge {
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.
*/
......@@ -1143,6 +1130,7 @@ public class PrefServiceBridge {
boolean getBoolean(PrefServiceBridge caller, int preference);
void setBoolean(PrefServiceBridge caller, int preference, boolean value);
void setInteger(PrefServiceBridge caller, int preference, int value);
boolean isManagedPreference(PrefServiceBridge caller, int preference);
boolean getAcceptCookiesEnabled(PrefServiceBridge caller);
boolean getAcceptCookiesUserModifiable(PrefServiceBridge caller);
boolean getAcceptCookiesManagedByCustodian(PrefServiceBridge caller);
......@@ -1217,9 +1205,6 @@ public class PrefServiceBridge {
void setContextualSearchPreference(PrefServiceBridge caller, String preference);
String getContextualSearchPreference(PrefServiceBridge caller);
boolean getContextualSearchPreferenceIsManaged(PrefServiceBridge caller);
boolean getSearchSuggestEnabled(PrefServiceBridge caller);
void setSearchSuggestEnabled(PrefServiceBridge caller, boolean enabled);
boolean getSearchSuggestManaged(PrefServiceBridge caller);
boolean getSafeBrowsingExtendedReportingEnabled(PrefServiceBridge caller);
void setSafeBrowsingExtendedReportingEnabled(PrefServiceBridge caller, boolean enabled);
boolean getSafeBrowsingExtendedReportingManaged(PrefServiceBridge caller);
......
......@@ -45,6 +45,7 @@ import org.chromium.chrome.browser.preferences.ChromeBasePreference;
import org.chromium.chrome.browser.preferences.ChromeSwitchPreference;
import org.chromium.chrome.browser.preferences.ManagedPreferenceDelegate;
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.PreferenceUtils;
import org.chromium.chrome.browser.preferences.Preferences;
......@@ -334,7 +335,7 @@ public class SyncAndServicesPreferences extends PreferenceFragmentCompat
}
PostTask.postTask(UiThreadTaskTraits.DEFAULT, this::updatePreferences);
} 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)) {
mPrefServiceBridge.setSafeBrowsingEnabled((boolean) newValue);
} else if (PREF_SAFE_BROWSING_SCOUT_REPORTING.equals(key)) {
......@@ -538,7 +539,7 @@ public class SyncAndServicesPreferences extends PreferenceFragmentCompat
private void updatePreferences() {
updateSyncPreferences();
mSearchSuggestions.setChecked(mPrefServiceBridge.isSearchSuggestEnabled());
mSearchSuggestions.setChecked(mPrefServiceBridge.getBoolean(Pref.SEARCH_SUGGEST_ENABLED));
mNavigationError.setChecked(mPrefServiceBridge.isResolveNavigationErrorEnabled());
mSafeBrowsing.setChecked(mPrefServiceBridge.isSafeBrowsingEnabled());
mSafeBrowsingReporting.setChecked(
......@@ -606,7 +607,7 @@ public class SyncAndServicesPreferences extends PreferenceFragmentCompat
return mPrefServiceBridge.isResolveNavigationErrorManaged();
}
if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
return mPrefServiceBridge.isSearchSuggestManaged();
return mPrefServiceBridge.isManagedPreference(Pref.SEARCH_SUGGEST_ENABLED);
}
if (PREF_SAFE_BROWSING_SCOUT_REPORTING.equals(key)) {
return mPrefServiceBridge.isSafeBrowsingExtendedReportingManaged();
......
......@@ -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.SnippetsBridge;
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.tab.Tab;
import org.chromium.chrome.browser.util.UrlConstants;
......@@ -75,7 +76,9 @@ public class ContentSuggestionsTest {
private NewTabPage loadNTPWithSearchSuggestState(final boolean enabled) {
Tab tab = mActivityTestRule.getActivity().getActivityTab();
TestThreadUtils.runOnUiThreadBlocking(
() -> PrefServiceBridge.getInstance().setSearchSuggestEnabled(enabled));
()
-> PrefServiceBridge.getInstance().setBoolean(
Pref.SEARCH_SUGGEST_ENABLED, enabled));
mActivityTestRule.loadUrl(UrlConstants.NTP_URL);
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,
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(
JNIEnv* env,
const JavaParamRef<jobject>& obj,
......@@ -420,18 +428,6 @@ static jboolean JNI_PrefServiceBridge_GetTranslateManaged(
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(
JNIEnv* env,
const JavaParamRef<jobject>& obj) {
......@@ -969,13 +965,6 @@ static jboolean JNI_PrefServiceBridge_GetMicManagedByCustodian(
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>
JNI_PrefServiceBridge_GetContextualSearchPreference(
JNIEnv* env,
......
......@@ -40,6 +40,7 @@ enum Pref {
OFFLINE_PREFETCH_USER_SETTING_ENABLED,
SAFE_BROWSING_EXTENDED_REPORTING_OPT_IN_ALLOWED,
PASSWORD_MANAGER_ONBOARDING_STATE,
SEARCH_SUGGEST_ENABLED,
// PREF_NUM_PREFS must be the last entry.
PREF_NUM_PREFS
};
......@@ -69,6 +70,7 @@ const char* const kPrefsExposedToJava[] = {
offline_pages::prefetch_prefs::kUserSettingEnabled,
prefs::kSafeBrowsingExtendedReportingOptInAllowed,
password_manager::prefs::kPasswordManagerOnboardingState,
prefs::kSearchSuggestEnabled,
};
#endif // CHROME_BROWSER_ANDROID_PREFERENCES_PREFS_H_
......@@ -66,6 +66,7 @@ TEST_F(PrefsTest, TestIndex) {
GetPrefName(SAFE_BROWSING_EXTENDED_REPORTING_OPT_IN_ALLOWED));
EXPECT_EQ(password_manager::prefs::kPasswordManagerOnboardingState,
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.
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