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

Add PrefServiceBridge getter/setter for strings

Add generic getString and setString methods to PrefServiceBridge, making
use of the prefs.h enums.

Migrate Contextual Search related pref methods to use the generic
methods, and move the wrapper functions to ContextualSearchManager.

Bug: 1016957
Change-Id: I0da10f579f4021885929f99e16f6a949c1c5af9a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1879954
Commit-Queue: Natalie Chouinard <chouinard@chromium.org>
Reviewed-by: default avatarTheresa  <twellington@chromium.org>
Cr-Commit-Position: refs/heads/master@{#709525}
parent 7fbd2563
......@@ -20,7 +20,7 @@ import org.chromium.chrome.browser.compositor.animation.CompositorAnimator;
import org.chromium.chrome.browser.compositor.bottombar.OverlayPanel;
import org.chromium.chrome.browser.compositor.bottombar.OverlayPanelAnimation;
import org.chromium.chrome.browser.compositor.bottombar.OverlayPanelInflater;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager;
import org.chromium.chrome.browser.preferences.PreferencesLauncher;
import org.chromium.chrome.browser.preferences.privacy.ContextualSearchPreferenceFragment;
import org.chromium.chrome.browser.util.MathUtils;
......@@ -375,7 +375,7 @@ public class ContextualSearchPromoControl extends OverlayPanelInflater {
private void handlePromoChoice(boolean hasEnabled) {
if (!mHasHandledChoice) {
mHasHandledChoice = true;
PrefServiceBridge.getInstance().setContextualSearchState(hasEnabled);
ContextualSearchManager.setContextualSearchState(hasEnabled);
}
}
......
......@@ -39,6 +39,8 @@ import org.chromium.chrome.browser.externalnav.ExternalNavigationParams;
import org.chromium.chrome.browser.feature_engagement.TrackerFactory;
import org.chromium.chrome.browser.gsa.GSAContextDisplaySelection;
import org.chromium.chrome.browser.infobar.InfoBarContainer;
import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.tab.SadTab;
import org.chromium.chrome.browser.tab.Tab;
......@@ -118,6 +120,10 @@ public class ContextualSearchManager
// an existing tap-selection.
private static final int TAP_ON_TAP_SELECTION_DELAY_MS = 100;
// Constants related to the Contextual Search preference.
private static final String CONTEXTUAL_SEARCH_DISABLED = "false";
private static final String CONTEXTUAL_SEARCH_ENABLED = "true";
private final ObserverList<ContextualSearchObserver> mObservers =
new ObserverList<ContextualSearchObserver>();
......@@ -1738,6 +1744,39 @@ public class ContextualSearchManager
mContextReportingObserver = null;
}
/**
* @return Whether the Contextual Search feature was disabled by the user explicitly.
*/
public static boolean isContextualSearchDisabled() {
return PrefServiceBridge.getInstance()
.getString(Pref.CONTEXTUAL_SEARCH_ENABLED)
.equals(CONTEXTUAL_SEARCH_DISABLED);
}
/**
* @return Whether the Contextual Search feature is disabled by policy.
*/
public static boolean isContextualSearchDisabledByPolicy() {
return PrefServiceBridge.getInstance().isManagedPreference(Pref.CONTEXTUAL_SEARCH_ENABLED)
&& isContextualSearchDisabled();
}
/**
* @return Whether the Contextual Search feature is uninitialized (preference unset by the
* user).
*/
public static boolean isContextualSearchUninitialized() {
return PrefServiceBridge.getInstance().getString(Pref.CONTEXTUAL_SEARCH_ENABLED).isEmpty();
}
/**
* @param enabled Whether Contextual Search should be enabled.
*/
public static void setContextualSearchState(boolean enabled) {
PrefServiceBridge.getInstance().setString(Pref.CONTEXTUAL_SEARCH_ENABLED,
enabled ? CONTEXTUAL_SEARCH_ENABLED : CONTEXTUAL_SEARCH_DISABLED);
}
// ============================================================================================
// Test helpers
// ============================================================================================
......
......@@ -488,7 +488,7 @@ class ContextualSearchPolicy {
// TODO(donnd) use dependency injection for the PrefServiceBridge instead!
if (mDidOverrideDecidedStateForTesting) return !mDecidedStateForTesting;
return PrefServiceBridge.getInstance().isContextualSearchUninitialized();
return ContextualSearchManager.isContextualSearchUninitialized();
}
/**
......
......@@ -18,7 +18,6 @@ import org.chromium.chrome.browser.contextualsearch.ContextualSearchFieldTrial.C
import org.chromium.chrome.browser.firstrun.FirstRunStatus;
import org.chromium.chrome.browser.fullscreen.FullscreenOptions;
import org.chromium.chrome.browser.locale.LocaleManager;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory;
import org.chromium.chrome.browser.tab.EmptyTabObserver;
......@@ -385,7 +384,7 @@ public class ContextualSearchTabHelper
if (manager == null) return false;
return !webContents.isIncognito() && FirstRunStatus.getFirstRunFlowComplete()
&& !PrefServiceBridge.getInstance().isContextualSearchDisabled()
&& !ContextualSearchManager.isContextualSearchDisabled()
&& TemplateUrlServiceFactory.get().isDefaultSearchEngineGoogle()
&& !LocaleManager.getInstance().needToCheckForSearchEnginePromo()
// Svelte and Accessibility devices are incompatible with the first-run flow and
......@@ -427,8 +426,8 @@ public class ContextualSearchTabHelper
ContextualSearchManager manager = getContextualSearchManager(mTab);
if (manager != null) {
boolean isEnabled = !PrefServiceBridge.getInstance().isContextualSearchDisabled()
&& !PrefServiceBridge.getInstance().isContextualSearchUninitialized();
boolean isEnabled = !ContextualSearchManager.isContextualSearchDisabled()
&& !ContextualSearchManager.isContextualSearchUninitialized();
manager.onContextualSearchPrefChanged(isEnabled);
}
}
......
......@@ -14,7 +14,6 @@ import org.chromium.base.metrics.RecordUserAction;
import org.chromium.chrome.browser.compositor.bottombar.OverlayPanel.PanelState;
import org.chromium.chrome.browser.compositor.bottombar.OverlayPanel.StateChangeReason;
import org.chromium.chrome.browser.contextualsearch.ResolvedSearchTerm.CardTag;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.components.sync.AndroidSyncSettings;
import java.lang.annotation.Retention;
......@@ -1583,10 +1582,9 @@ public class ContextualSearchUma {
* @return The code for the Contextual Search preference.
*/
private static int getPreferenceValue() {
PrefServiceBridge preferences = PrefServiceBridge.getInstance();
if (preferences.isContextualSearchUninitialized()) {
if (ContextualSearchManager.isContextualSearchUninitialized()) {
return Preference.UNINITIALIZED;
} else if (preferences.isContextualSearchDisabled()) {
} else if (ContextualSearchManager.isContextualSearchDisabled()) {
return Preference.DISABLED;
}
return Preference.ENABLED;
......
......@@ -53,10 +53,6 @@ public class PrefServiceBridge {
private static final String LOG_TAG = "PrefServiceBridge";
// Constants related to the Contextual Search preference.
private static final String CONTEXTUAL_SEARCH_DISABLED = "false";
private static final String CONTEXTUAL_SEARCH_ENABLED = "true";
/**
* Structure that holds all the version information about the current Chrome browser.
*/
......@@ -145,6 +141,22 @@ public class PrefServiceBridge {
PrefServiceBridgeJni.get().setInteger(PrefServiceBridge.this, preference, value);
}
/**
* @param preference The name of the preference.
* @return value The value of the specified preference.
*/
public String getString(@Pref int preference) {
return PrefServiceBridgeJni.get().getString(PrefServiceBridge.this, preference);
}
/**
* @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) {
PrefServiceBridgeJni.get().setString(PrefServiceBridge.this, preference, value);
}
/**
* @param preference The name of the preference.
* @return Whether the specified preference is managed.
......@@ -409,53 +421,6 @@ public class PrefServiceBridge {
return PrefServiceBridgeJni.get().getSyncLastAccountName(PrefServiceBridge.this);
}
/**
* @return the Contextual Search preference.
*/
public String getContextualSearchPreference() {
return PrefServiceBridgeJni.get().getContextualSearchPreference(PrefServiceBridge.this);
}
/**
* Sets the Contextual Search preference.
* @param prefValue one of "", CONTEXTUAL_SEARCH_ENABLED or CONTEXTUAL_SEARCH_DISABLED.
*/
public void setContextualSearchPreference(String prefValue) {
PrefServiceBridgeJni.get().setContextualSearchPreference(PrefServiceBridge.this, prefValue);
}
/**
* @return Whether the Contextual Search feature was disabled by the user explicitly.
*/
public boolean isContextualSearchDisabled() {
return getContextualSearchPreference().equals(CONTEXTUAL_SEARCH_DISABLED);
}
/**
* @return Whether the Contextual Search feature is disabled by policy.
*/
public boolean isContextualSearchDisabledByPolicy() {
return PrefServiceBridgeJni.get().getContextualSearchPreferenceIsManaged(
PrefServiceBridge.this)
&& isContextualSearchDisabled();
}
/**
* @return Whether the Contextual Search feature is uninitialized (preference unset by the
* user).
*/
public boolean isContextualSearchUninitialized() {
return getContextualSearchPreference().isEmpty();
}
/**
* @param enabled Whether Contextual Search should be enabled.
*/
public void setContextualSearchState(boolean enabled) {
setContextualSearchPreference(enabled
? CONTEXTUAL_SEARCH_ENABLED : CONTEXTUAL_SEARCH_DISABLED);
}
/**
* @return Whether Safe Browsing Extended Reporting is currently enabled.
*/
......@@ -1088,6 +1053,8 @@ public class PrefServiceBridge {
void setBoolean(PrefServiceBridge caller, int preference, boolean value);
int getInteger(PrefServiceBridge caller, int preference);
void setInteger(PrefServiceBridge caller, int preference, int value);
String getString(PrefServiceBridge caller, int preference);
void setString(PrefServiceBridge caller, int preference, String value);
boolean isManagedPreference(PrefServiceBridge caller, int preference);
boolean getAcceptCookiesEnabled(PrefServiceBridge caller);
boolean getAcceptCookiesUserModifiable(PrefServiceBridge caller);
......@@ -1159,9 +1126,6 @@ public class PrefServiceBridge {
void setSoundEnabled(PrefServiceBridge caller, boolean enabled);
boolean canPrefetchAndPrerender(PrefServiceBridge caller);
AboutVersionStrings getAboutVersionStrings(PrefServiceBridge caller);
void setContextualSearchPreference(PrefServiceBridge caller, String preference);
String getContextualSearchPreference(PrefServiceBridge caller);
boolean getContextualSearchPreferenceIsManaged(PrefServiceBridge caller);
boolean getSafeBrowsingExtendedReportingEnabled(PrefServiceBridge caller);
void setSafeBrowsingExtendedReportingEnabled(PrefServiceBridge caller, boolean enabled);
boolean getSafeBrowsingExtendedReportingManaged(PrefServiceBridge caller);
......
......@@ -8,9 +8,9 @@ import android.os.Bundle;
import android.support.v7.preference.PreferenceFragmentCompat;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager;
import org.chromium.chrome.browser.contextualsearch.ContextualSearchUma;
import org.chromium.chrome.browser.preferences.ChromeSwitchPreference;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.preferences.PreferenceUtils;
/**
......@@ -31,16 +31,15 @@ public class ContextualSearchPreferenceFragment extends PreferenceFragmentCompat
ChromeSwitchPreference contextualSearchSwitch =
(ChromeSwitchPreference) findPreference(PREF_CONTEXTUAL_SEARCH_SWITCH);
boolean isContextualSearchEnabled =
!PrefServiceBridge.getInstance().isContextualSearchDisabled();
boolean isContextualSearchEnabled = !ContextualSearchManager.isContextualSearchDisabled();
contextualSearchSwitch.setChecked(isContextualSearchEnabled);
contextualSearchSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
PrefServiceBridge.getInstance().setContextualSearchState((boolean) newValue);
ContextualSearchManager.setContextualSearchState((boolean) newValue);
ContextualSearchUma.logPreferenceChange((boolean) newValue);
return true;
});
contextualSearchSwitch.setManagedPreferenceDelegate(
preference -> PrefServiceBridge.getInstance().isContextualSearchDisabledByPolicy());
preference -> ContextualSearchManager.isContextualSearchDisabledByPolicy());
}
}
......@@ -39,6 +39,7 @@ import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.SyncFirstSetupCompleteSource;
import org.chromium.chrome.browser.contextualsearch.ContextualSearchFieldTrial;
import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager;
import org.chromium.chrome.browser.help.HelpAndFeedback;
import org.chromium.chrome.browser.metrics.UmaSessionStats;
import org.chromium.chrome.browser.preferences.ChromeBasePreference;
......@@ -550,7 +551,8 @@ public class SyncAndServicesPreferences extends PreferenceFragmentCompat
UnifiedConsentServiceBridge.isUrlKeyedAnonymizedDataCollectionEnabled());
if (mContextualSearch != null) {
boolean isContextualSearchEnabled = !mPrefServiceBridge.isContextualSearchDisabled();
boolean isContextualSearchEnabled =
!ContextualSearchManager.isContextualSearchDisabled();
mContextualSearch.setSummary(
isContextualSearchEnabled ? R.string.text_on : R.string.text_off);
}
......
......@@ -79,6 +79,26 @@ public class PrefServiceBridgeTest {
verify(mNativeMock).setInteger(eq(prefServiceBridge), eq(PREF), eq(value));
}
@Test
public void testGetString() {
String expected = "foo";
PrefServiceBridge prefServiceBridge = new PrefServiceBridge();
doReturn(expected).when(mNativeMock).getString(prefServiceBridge, PREF);
assertEquals(expected, prefServiceBridge.getString(PREF));
}
@Test
public void testSetString() {
String value = "bar";
PrefServiceBridge prefServiceBridge = new PrefServiceBridge();
prefServiceBridge.setString(PREF, value);
verify(mNativeMock).setString(eq(prefServiceBridge), eq(PREF), eq(value));
}
@Test
public void testIsManaged() {
boolean expected = true;
......
......@@ -165,6 +165,25 @@ static void JNI_PrefServiceBridge_SetInteger(JNIEnv* env,
PrefServiceBridge::GetPrefNameExposedToJava(j_pref_index), j_value);
}
static ScopedJavaLocalRef<jstring> JNI_PrefServiceBridge_GetString(
JNIEnv* env,
const JavaParamRef<jobject>& obj,
const jint j_pref_index) {
return ConvertUTF8ToJavaString(
env, GetPrefService()->GetString(
PrefServiceBridge::GetPrefNameExposedToJava(j_pref_index)));
}
static void JNI_PrefServiceBridge_SetString(
JNIEnv* env,
const JavaParamRef<jobject>& obj,
const jint j_pref_index,
const JavaParamRef<jstring>& j_value) {
GetPrefService()->SetString(
PrefServiceBridge::GetPrefNameExposedToJava(j_pref_index),
ConvertJavaStringToUTF8(env, j_value));
}
static jboolean JNI_PrefServiceBridge_IsManagedPreference(
JNIEnv* env,
const JavaParamRef<jobject>& obj,
......@@ -959,28 +978,6 @@ static jboolean JNI_PrefServiceBridge_GetMicManagedByCustodian(
CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC);
}
static ScopedJavaLocalRef<jstring>
JNI_PrefServiceBridge_GetContextualSearchPreference(
JNIEnv* env,
const JavaParamRef<jobject>& obj) {
return ConvertUTF8ToJavaString(
env, GetPrefService()->GetString(prefs::kContextualSearchEnabled));
}
static jboolean JNI_PrefServiceBridge_GetContextualSearchPreferenceIsManaged(
JNIEnv* env,
const JavaParamRef<jobject>& obj) {
return GetPrefService()->IsManagedPreference(prefs::kContextualSearchEnabled);
}
static void JNI_PrefServiceBridge_SetContextualSearchPreference(
JNIEnv* env,
const JavaParamRef<jobject>& obj,
const JavaParamRef<jstring>& pref) {
GetPrefService()->SetString(prefs::kContextualSearchEnabled,
ConvertJavaStringToUTF8(env, pref));
}
static void JNI_PrefServiceBridge_SetNetworkPredictionEnabled(
JNIEnv* env,
const JavaParamRef<jobject>& obj,
......
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