Commit 798c8880 authored by Natalie Chouinard's avatar Natalie Chouinard Committed by Commit Bot

Move PrefServiceBridge's Incognito methods to IcognitoUtils

Move Incognito-related methods from PrefServiceBridge to IncognitoUtils.

This is part of a larger change to limit PrefServiceBridge to only
feature-agnostic logic related to the native PrefService.

Bug: 1016957
Change-Id: I82622c38daa7ada27c648a978ad76dbfe7a9ecb4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1909957Reviewed-by: default avatarDavid Roger <droger@chromium.org>
Reviewed-by: default avatarBrandon Wylie <wylieb@chromium.org>
Reviewed-by: default avatarYaron Friedman <yfriedman@chromium.org>
Commit-Queue: Natalie Chouinard <chouinard@chromium.org>
Cr-Commit-Position: refs/heads/master@{#715331}
parent 367f2231
......@@ -2621,6 +2621,7 @@ generate_jni("chrome_jni_headers") {
"java/src/org/chromium/chrome/browser/history/HistoryDeletionBridge.java",
"java/src/org/chromium/chrome/browser/history/HistoryDeletionInfo.java",
"java/src/org/chromium/chrome/browser/historyreport/HistoryReportJniBridge.java",
"java/src/org/chromium/chrome/browser/incognito/IncognitoUtils.java",
"java/src/org/chromium/chrome/browser/infobar/AdsBlockedInfoBar.java",
"java/src/org/chromium/chrome/browser/infobar/AutofillCreditCardFillingInfoBar.java",
"java/src/org/chromium/chrome/browser/infobar/AutofillSaveCardInfoBar.java",
......
......@@ -105,7 +105,6 @@ import org.chromium.chrome.browser.omaha.OmahaBase;
import org.chromium.chrome.browser.omnibox.LocationBar;
import org.chromium.chrome.browser.partnercustomizations.HomepageManager;
import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.search_engines.SearchEngineChoiceNotification;
import org.chromium.chrome.browser.snackbar.undo.UndoBarController;
......@@ -1438,7 +1437,7 @@ public class ChromeTabbedActivity extends ChromeActivity implements ScreenshotMo
return;
}
if (!PrefServiceBridge.getInstance().isIncognitoModeEnabled()) {
if (!IncognitoUtils.isIncognitoModeEnabled()) {
// The incognito launcher shortcut is manipulated in #onDeferredStartup(),
// so it's possible for a user to invoke the shortcut before it's disabled.
// Opening an incognito tab while incognito mode is disabled from somewhere
......@@ -1733,7 +1732,7 @@ public class ChromeTabbedActivity extends ChromeActivity implements ScreenshotMo
mLocaleManager.showSearchEnginePromoIfNeeded(this, null);
} else if (id == R.id.new_incognito_tab_menu_id) {
if (PrefServiceBridge.getInstance().isIncognitoModeEnabled()) {
if (IncognitoUtils.isIncognitoModeEnabled()) {
getTabModelSelector().getModel(false).commitAllTabClosures();
// This action must be recorded before opening the incognito tab since UMA actions
// are dropped when an incognito tab is open.
......
......@@ -20,7 +20,7 @@ import androidx.annotation.VisibleForTesting;
import org.chromium.base.ContextUtils;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.incognito.IncognitoUtils;
import java.util.ArrayList;
import java.util.Arrays;
......@@ -72,7 +72,7 @@ public class LauncherShortcutActivity extends Activity {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) return;
SharedPreferences preferences = ContextUtils.getAppSharedPreferences();
if (PrefServiceBridge.getInstance().isIncognitoModeEnabled()) {
if (IncognitoUtils.isIncognitoModeEnabled()) {
boolean success = LauncherShortcutActivity.addIncognitoLauncherShortcut(context);
// Save a shared preference indicating the incognito shortcut has been added.
......@@ -80,7 +80,7 @@ public class LauncherShortcutActivity extends Activity {
preferences.edit().putBoolean(INCOGNITO_SHORTCUT_ADDED_PREF, true).apply();
}
} else if (preferences.getBoolean(INCOGNITO_SHORTCUT_ADDED_PREF, false)
&& !PrefServiceBridge.getInstance().isIncognitoModeEnabled()) {
&& !IncognitoUtils.isIncognitoModeEnabled()) {
LauncherShortcutActivity.removeIncognitoLauncherShortcut(context);
preferences.edit().putBoolean(INCOGNITO_SHORTCUT_ADDED_PREF, false).apply();
}
......
......@@ -34,10 +34,10 @@ import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior;
import org.chromium.chrome.browser.device.DeviceClassManager;
import org.chromium.chrome.browser.download.DownloadUtils;
import org.chromium.chrome.browser.flags.FeatureUtilities;
import org.chromium.chrome.browser.incognito.IncognitoUtils;
import org.chromium.chrome.browser.multiwindow.MultiWindowModeStateDispatcher;
import org.chromium.chrome.browser.omaha.UpdateMenuItemHelper;
import org.chromium.chrome.browser.preferences.ManagedPreferencesUtils;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.share.ShareHelper;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
......@@ -324,8 +324,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
// main_menu.xml contains multiple items with the same id in different groups
// e.g.: new_incognito_tab_menu_id.
disableEnableMenuItem(menu, R.id.new_incognito_tab_menu_id, true,
PrefServiceBridge.getInstance().isIncognitoModeEnabled(),
PrefServiceBridge.getInstance().isIncognitoModeManaged());
IncognitoUtils.isIncognitoModeEnabled(), IncognitoUtils.isIncognitoModeManaged());
}
/**
......
......@@ -15,7 +15,7 @@ import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.RecordUserAction;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.incognito.IncognitoUtils;
import org.chromium.chrome.browser.tabmodel.TabLaunchType;
import org.chromium.chrome.browser.tabmodel.document.TabDelegate;
import org.chromium.chrome.browser.ui.widget.dragreorder.DragReorderableListAdapter;
......@@ -207,8 +207,9 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
// Editing a bookmark action on multiple selected items doesn't make sense. So disable.
getMenu().findItem(R.id.selection_mode_edit_menu_id).setVisible(
selectedBookmarks.size() == 1);
getMenu().findItem(R.id.selection_open_in_incognito_tab_id)
.setVisible(PrefServiceBridge.getInstance().isIncognitoModeEnabled());
getMenu()
.findItem(R.id.selection_open_in_incognito_tab_id)
.setVisible(IncognitoUtils.isIncognitoModeEnabled());
// It does not make sense to open a folder in new tab.
for (BookmarkId bookmark : selectedBookmarks) {
BookmarkItem item = mDelegate.getModel().getBookmarkById(bookmark);
......
......@@ -13,6 +13,7 @@ import android.view.View;
import androidx.annotation.VisibleForTesting;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.incognito.IncognitoUtils;
import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.widget.selection.SelectableListToolbar;
......@@ -104,7 +105,7 @@ public class HistoryManagerToolbar extends SelectableListToolbar<HistoryItem> {
if (!PrefServiceBridge.getInstance().getBoolean(Pref.ALLOW_DELETING_BROWSER_HISTORY)) {
getMenu().removeItem(R.id.selection_mode_delete_menu_id);
}
if (!PrefServiceBridge.getInstance().isIncognitoModeEnabled()) {
if (!IncognitoUtils.isIncognitoModeEnabled()) {
getMenu().removeItem(R.id.selection_mode_open_in_incognito);
}
}
......
......@@ -23,7 +23,6 @@ import org.chromium.base.task.TaskTraits;
import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.ChromeVersionInfo;
import org.chromium.chrome.browser.IntentHandler;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.util.IntentUtils;
/**
......@@ -88,9 +87,9 @@ public class IncognitoTabLauncher extends Activity {
*/
public static void updateComponentEnabledState() {
// TODO(peconn): Update state in a few more places (eg CustomTabsConnection#warmup).
boolean enable = ChromeFeatureList.isEnabled(
ChromeFeatureList.ALLOW_NEW_INCOGNITO_TAB_INTENTS)
&& PrefServiceBridge.getInstance().isIncognitoModeEnabled();
boolean enable =
ChromeFeatureList.isEnabled(ChromeFeatureList.ALLOW_NEW_INCOGNITO_TAB_INTENTS)
&& IncognitoUtils.isIncognitoModeEnabled();
PostTask.postTask(TaskTraits.USER_VISIBLE, () -> setComponentEnabled(enable));
}
......
......@@ -13,6 +13,7 @@ import android.util.Pair;
import org.chromium.base.ApplicationStatus;
import org.chromium.base.ContextUtils;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.chrome.browser.ChromeTabbedActivity;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.tab.TabState;
......@@ -121,4 +122,24 @@ public class IncognitoUtils {
}
return deletionSuccessful;
}
/**
* @return true if incognito mode is enabled.
*/
public static boolean isIncognitoModeEnabled() {
return IncognitoUtilsJni.get().getIncognitoModeEnabled();
}
/**
* @return true if incognito mode is managed by policy.
*/
public static boolean isIncognitoModeManaged() {
return IncognitoUtilsJni.get().getIncognitoModeManaged();
}
@NativeMethods
interface Natives {
boolean getIncognitoModeEnabled();
boolean getIncognitoModeManaged();
}
}
......@@ -6,7 +6,7 @@ package org.chromium.chrome.browser.native_page;
import androidx.annotation.Nullable;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.incognito.IncognitoUtils;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.content_public.browser.LoadUrlParams;
......@@ -16,7 +16,7 @@ import org.chromium.content_public.browser.LoadUrlParams;
public interface NativePageNavigationDelegate {
/** @return Whether context menus should allow the option to open a link in incognito. */
default boolean isOpenInIncognitoEnabled() {
return PrefServiceBridge.getInstance().isIncognitoModeEnabled();
return IncognitoUtils.isIncognitoModeEnabled();
}
/** @return Whether context menus should allow the option to open a link in a new window. */
......
......@@ -159,20 +159,6 @@ public class PrefServiceBridge {
return PrefServiceBridgeJni.get().canPrefetchAndPrerender();
}
/**
* @return true if incognito mode is enabled.
*/
public boolean isIncognitoModeEnabled() {
return PrefServiceBridgeJni.get().getIncognitoModeEnabled();
}
/**
* @return true if incognito mode is managed by policy.
*/
public boolean isIncognitoModeManaged() {
return PrefServiceBridgeJni.get().getIncognitoModeManaged();
}
/**
* @return Whether usage and crash reporting pref is enabled.
*/
......@@ -209,8 +195,6 @@ public class PrefServiceBridge {
void setString(int preference, String value);
boolean isManagedPreference(int preference);
boolean getFirstRunEulaAccepted();
boolean getIncognitoModeEnabled();
boolean getIncognitoModeManaged();
boolean canPrefetchAndPrerender();
boolean getNetworkPredictionManaged();
boolean obsoleteNetworkPredictionOptionsHasUserSetting();
......
......@@ -2,6 +2,7 @@ include_rules = [
"-chrome",
"+chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java",
"+chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java",
"+chrome/android/java/src/org/chromium/chrome/browser/incognito/IncognitoUtils.java",
"+chrome/android/java/src/org/chromium/chrome/browser/webapps/WebDisplayMode.java",
"+chrome/browser/ui/android/styles",
"+chrome/browser/ui/android/widget",
......
......@@ -22,9 +22,9 @@ import org.chromium.chrome.browser.IntentHandler;
import org.chromium.chrome.browser.contextmenu.ContextMenuItemDelegate;
import org.chromium.chrome.browser.document.ChromeLauncherActivity;
import org.chromium.chrome.browser.download.ChromeDownloadDelegate;
import org.chromium.chrome.browser.incognito.IncognitoUtils;
import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.tabmodel.TabLaunchType;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.tabmodel.document.TabDelegate;
......@@ -73,7 +73,7 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate {
@Override
public boolean isIncognitoSupported() {
return PrefServiceBridge.getInstance().isIncognitoModeEnabled();
return IncognitoUtils.isIncognitoModeEnabled();
}
@Override
......
......@@ -21,7 +21,7 @@ import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.device.DeviceClassManager;
import org.chromium.chrome.browser.flags.FeatureUtilities;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.incognito.IncognitoUtils;
import org.chromium.chrome.browser.tab.TabFeatureUtilities;
import org.chromium.chrome.browser.tabmodel.TabModel;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
......@@ -107,7 +107,7 @@ public class TabSwitcherModeTTPhone extends OptimizedFrameLayout
}
if ((usingHorizontalTabSwitcher() || FeatureUtilities.isGridTabSwitcherEnabled())
&& PrefServiceBridge.getInstance().isIncognitoModeEnabled()) {
&& IncognitoUtils.isIncognitoModeEnabled()) {
updateTabSwitchingElements(true);
}
}
......@@ -280,7 +280,7 @@ public class TabSwitcherModeTTPhone extends OptimizedFrameLayout
if (mNewTabImageButton != null) mNewTabImageButton.onAccessibilityStatusChanged();
if (ChromeFeatureList.isEnabled(ChromeFeatureList.HORIZONTAL_TAB_SWITCHER_ANDROID)
&& PrefServiceBridge.getInstance().isIncognitoModeEnabled()) {
&& IncognitoUtils.isIncognitoModeEnabled()) {
updateTabSwitchingElements(!enabled);
}
......
......@@ -41,6 +41,7 @@ import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeSwitches;
import org.chromium.chrome.browser.IntentHandler;
import org.chromium.chrome.browser.history.HistoryTestUtils.TestObserver;
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.PrefServiceBridge;
......@@ -578,8 +579,8 @@ public class HistoryActivityTest {
PrefServiceBridge.getInstance().setString(Pref.SUPERVISED_USER_ID, "ChildAccountSUID");
return Profile.getLastUsedProfile().isChild()
&& !PrefServiceBridge.getInstance().getBoolean(
Pref.ALLOW_DELETING_BROWSER_HISTORY)
&& !PrefServiceBridge.getInstance().isIncognitoModeEnabled();
Pref.ALLOW_DELETING_BROWSER_HISTORY)
&& !IncognitoUtils.isIncognitoModeEnabled();
}));
// Wait for preference change callbacks. One for ALLOW_DELETING_BROWSER_HISTORY and one for
......
......@@ -23,7 +23,7 @@ import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.RetryOnFailure;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeSwitches;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.incognito.IncognitoUtils;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.partnercustomizations.TestPartnerBrowserCustomizationsProvider;
import org.chromium.content_public.browser.test.util.Criteria;
......@@ -85,8 +85,7 @@ public class PartnerDisableIncognitoModeIntegrationTest {
// UI thread have also triggered.
boolean retVal = parentalControlsEnabled
== PartnerBrowserCustomizations.isIncognitoDisabled();
retVal &= parentalControlsEnabled
!= PrefServiceBridge.getInstance().isIncognitoModeEnabled();
retVal &= parentalControlsEnabled != IncognitoUtils.isIncognitoModeEnabled();
return retVal;
}
});
......
......@@ -2867,6 +2867,7 @@ jumbo_static_library("browser") {
"prerender/external_prerender_handler_android.h",
"previews/android/previews_android_bridge.cc",
"previews/android/previews_android_bridge.h",
"profiles/incognito_utils_android.cc",
"profiles/profile_android.cc",
"profiles/profile_android.h",
"profiles/profile_key_android.cc",
......
......@@ -28,7 +28,6 @@
#include "chrome/browser/android/preferences/prefs.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/net/prediction_options.h"
#include "chrome/browser/prefs/incognito_mode_prefs.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/common/chrome_features.h"
#include "chrome/common/pref_names.h"
......@@ -119,21 +118,6 @@ static jboolean JNI_PrefServiceBridge_GetNetworkPredictionManaged(JNIEnv* env) {
prefs::kNetworkPredictionOptions);
}
static jboolean JNI_PrefServiceBridge_GetIncognitoModeEnabled(JNIEnv* env) {
PrefService* prefs = GetPrefService();
IncognitoModePrefs::Availability incognito_pref =
IncognitoModePrefs::GetAvailability(prefs);
DCHECK(incognito_pref == IncognitoModePrefs::ENABLED ||
incognito_pref == IncognitoModePrefs::DISABLED) <<
"Unsupported incognito mode preference: " << incognito_pref;
return incognito_pref != IncognitoModePrefs::DISABLED;
}
static jboolean JNI_PrefServiceBridge_GetIncognitoModeManaged(JNIEnv* env) {
return GetPrefService()->IsManagedPreference(
prefs::kIncognitoModeAvailability);
}
static jboolean JNI_PrefServiceBridge_IsMetricsReportingEnabled(JNIEnv* env) {
PrefService* local_state = g_browser_process->local_state();
return local_state->GetBoolean(metrics::prefs::kMetricsReportingEnabled);
......
// 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.
#include <jni.h>
#include "chrome/android/chrome_jni_headers/IncognitoUtils_jni.h"
#include "chrome/browser/prefs/incognito_mode_prefs.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/common/pref_names.h"
#include "components/prefs/pref_service.h"
static jboolean JNI_IncognitoUtils_GetIncognitoModeEnabled(JNIEnv* env) {
PrefService* prefs =
ProfileManager::GetActiveUserProfile()->GetOriginalProfile()->GetPrefs();
IncognitoModePrefs::Availability incognito_pref =
IncognitoModePrefs::GetAvailability(prefs);
DCHECK(incognito_pref == IncognitoModePrefs::ENABLED ||
incognito_pref == IncognitoModePrefs::DISABLED)
<< "Unsupported incognito mode preference: " << incognito_pref;
return incognito_pref != IncognitoModePrefs::DISABLED;
}
static jboolean JNI_IncognitoUtils_GetIncognitoModeManaged(JNIEnv* env) {
PrefService* prefs =
ProfileManager::GetActiveUserProfile()->GetOriginalProfile()->GetPrefs();
return prefs->IsManagedPreference(prefs::kIncognitoModeAvailability);
}
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