Patches for v133 (need check)

This commit is contained in:
Carmelo Messina
2025-02-04 15:56:11 +01:00
parent 5587d7b158
commit d38841b855
16 changed files with 988 additions and 1050 deletions
@@ -145,7 +145,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -61,8 +67,23 @@ public class BookmarkActivity extends SnackbarActivity {
@@ -62,8 +68,23 @@ public class BookmarkActivity extends SnackbarActivity {
getOnBackPressedDispatcher(),
mBookmarkManagerCoordinator,
SecondaryActivity.BOOKMARK);
@@ -169,7 +169,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B
@Override
protected void onDestroy() {
super.onDestroy();
@@ -72,6 +93,7 @@ public class BookmarkActivity extends SnackbarActivity {
@@ -73,6 +94,7 @@ public class BookmarkActivity extends SnackbarActivity {
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
@@ -177,7 +177,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B
if (requestCode == EDIT_BOOKMARK_REQUEST_CODE && resultCode == RESULT_OK) {
BookmarkId bookmarkId =
BookmarkId.getBookmarkIdFromString(
@@ -85,6 +107,14 @@ public class BookmarkActivity extends SnackbarActivity {
@@ -86,6 +108,14 @@ public class BookmarkActivity extends SnackbarActivity {
return new ModalDialogManager(new AppModalPresenter(this), ModalDialogType.APP);
}
@@ -195,7 +195,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
@@ -33,6 +33,48 @@ import org.chromium.url.GURL;
@@ -34,6 +34,48 @@ import org.chromium.url.GURL;
import java.util.ArrayList;
import java.util.List;
@@ -244,10 +244,43 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
/**
* Provides the communication channel for Android to fetch and manipulate the bookmark model stored
* in native.
@@ -474,6 +516,212 @@ class BookmarkBridge {
@@ -490,6 +532,245 @@ class BookmarkBridge {
.getTotalBookmarkCount(mNativeBookmarkBridge, id.getId(), id.getType());
}
+ @CalledByNative
+ public void bookmarksExported(WindowAndroid window, String bookmarksPath, boolean success) {
+ Uri uri = Uri.parse(bookmarksPath);
+
+ if (success == false) {
+ ((Activity)window.getContext().get()).runOnUiThread(new Runnable() {
+ public void run() {
+ window.showError(R.string.saving_file_error);
+ }
+ });
+ } else {
+ SharedPreferencesManager sharedPrefs = ChromeSharedPreferences.getInstance();
+ sharedPrefs.writeString(ChromePreferenceKeys.BOOKMARKS_LAST_EXPORT_URI, bookmarksPath);
+
+ Context context = ContextUtils.getApplicationContext();
+
+ Intent intent = new Intent(Intent.ACTION_VIEW,
+ ContentUriUtils.isContentUri(bookmarksPath) ?
+ Uri.parse(bookmarksPath) : Uri.parse("file://" + bookmarksPath));
+ intent.putExtra(Browser.EXTRA_APPLICATION_ID,
+ context.getPackageName());
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ intent.putExtra(IntentHandler.EXTRA_PAGE_TRANSITION_TYPE, PageTransition.AUTO_BOOKMARK);
+
+ // If the bookmark manager is shown in a tab on a phone (rather than in a separate
+ // activity) the component name may be null. Send the intent through
+ // ChromeLauncherActivity instead to avoid crashing. See crbug.com/615012.
+ intent.setClass(context, ChromeLauncherActivity.class);
+
+ IntentHandler.startActivityForTrustedIntent(intent);
+ }
+ }
+
+ /**
+ * Import bookmarks from a selected file.
+ * @param window The current window of the bookmarks activity or page.
@@ -457,47 +490,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
/**
* Synchronously gets a list of bookmarks that match the specified search query.
*
@@ -1032,6 +1280,39 @@ class BookmarkBridge {
BookmarkUtils.clearLastUsedPrefs();
}
+ @CalledByNative
+ public void bookmarksExported(WindowAndroid window, String bookmarksPath, boolean success) {
+ Uri uri = Uri.parse(bookmarksPath);
+
+ if (success == false) {
+ ((Activity)window.getContext().get()).runOnUiThread(new Runnable() {
+ public void run() {
+ window.showError(R.string.saving_file_error);
+ }
+ });
+ } else {
+ SharedPreferencesManager sharedPrefs = ChromeSharedPreferences.getInstance();
+ sharedPrefs.writeString(ChromePreferenceKeys.BOOKMARKS_LAST_EXPORT_URI, bookmarksPath);
+
+ Context context = ContextUtils.getApplicationContext();
+
+ Intent intent = new Intent(Intent.ACTION_VIEW,
+ ContentUriUtils.isContentUri(bookmarksPath) ?
+ Uri.parse(bookmarksPath) : Uri.parse("file://" + bookmarksPath));
+ intent.putExtra(Browser.EXTRA_APPLICATION_ID,
+ context.getPackageName());
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ intent.putExtra(IntentHandler.EXTRA_PAGE_TRANSITION_TYPE, PageTransition.AUTO_BOOKMARK);
+
+ // If the bookmark manager is shown in a tab on a phone (rather than in a separate
+ // activity) the component name may be null. Send the intent through
+ // ChromeLauncherActivity instead to avoid crashing. See crbug.com/615012.
+ intent.setClass(context, ChromeLauncherActivity.class);
+
+ IntentHandler.startActivityForTrustedIntent(intent);
+ }
+ }
+
private static List<Pair<Integer, Integer>> createPairsList(int[] left, int[] right) {
List<Pair<Integer, Integer>> pairList = new ArrayList<>();
for (int i = 0; i < left.length; i++) {
@@ -1094,6 +1375,10 @@ class BookmarkBridge {
@@ -1102,6 +1383,10 @@ class BookmarkBridge {
void getChildIds(
long nativeBookmarkBridge, long id, int type, List<BookmarkId> bookmarksList);
@@ -531,7 +524,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerCoordinator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerCoordinator.java
@@ -49,6 +49,8 @@ import org.chromium.components.image_fetcher.ImageFetcher;
@@ -54,6 +54,8 @@ import org.chromium.components.image_fetcher.ImageFetcher;
import org.chromium.components.image_fetcher.ImageFetcherConfig;
import org.chromium.components.image_fetcher.ImageFetcherFactory;
import org.chromium.ui.KeyboardVisibilityDelegate;
@@ -540,7 +533,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
import org.chromium.ui.modaldialog.ModalDialogManager;
import org.chromium.ui.modaldialog.ModalDialogManager.ModalDialogType;
import org.chromium.ui.modelutil.MVCListAdapter.ModelList;
@@ -302,6 +304,13 @@ public class BookmarkManagerCoordinator
@@ -334,6 +336,13 @@ public class BookmarkManagerCoordinator
// Public API implementation.
@@ -557,7 +550,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java
@@ -57,6 +57,8 @@ import org.chromium.components.commerce.core.SubscriptionsObserver;
@@ -59,6 +59,8 @@ import org.chromium.components.commerce.core.SubscriptionsObserver;
import org.chromium.components.embedder_support.util.UrlConstants;
import org.chromium.components.power_bookmarks.PowerBookmarkMeta;
import org.chromium.components.power_bookmarks.PowerBookmarkType;
@@ -566,7 +559,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
import org.chromium.ui.accessibility.AccessibilityState;
import org.chromium.ui.listmenu.ListMenu;
import org.chromium.ui.listmenu.ListMenuItemProperties;
@@ -81,6 +83,9 @@ class BookmarkManagerMediator
@@ -85,6 +87,9 @@ class BookmarkManagerMediator
private static boolean sPreventLoadingForTesting;
@@ -576,7 +569,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
/** Keeps track of whether drag is enabled / active for bookmark lists. */
private class BookmarkDragStateDelegate implements DragStateDelegate {
private BookmarkDelegate mBookmarkDelegate;
@@ -552,6 +557,14 @@ class BookmarkManagerMediator
@@ -571,6 +576,14 @@ class BookmarkManagerMediator
mNativePage = nativePage;
}
@@ -591,7 +584,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
/** See BookmarkManager(Coordinator)#updateForUrl */
void updateForUrl(String url) {
// Bookmark model is null if the manager has been destroyed.
@@ -732,6 +745,16 @@ class BookmarkManagerMediator
@@ -752,6 +765,16 @@ class BookmarkManagerMediator
}
}
@@ -630,9 +623,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
super(host);
mBookmarkManagerCoordinator =
@@ -43,6 +46,9 @@ public class BookmarkPage extends BasicNativePage {
profile,
new BookmarkUiPrefs(ChromeSharedPreferences.getInstance()));
@@ -44,6 +47,9 @@ public class BookmarkPage extends BasicNativePage {
new BookmarkUiPrefs(ChromeSharedPreferences.getInstance()),
/* bookmarkOpenedCallback= */ null);
mBookmarkManagerCoordinator.setBasicNativePage(this);
+ mBookmarkManagerCoordinator.setWindow(activity.getWindowAndroid(),
+ new ModalDialogManager(
@@ -800,7 +793,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat
Supplier<NewTabPageUma> uma,
BottomSheetController sheetController,
BrowserControlsManager browserControlsManager,
@@ -243,7 +244,7 @@ public class NativePageFactory {
@@ -242,7 +243,7 @@ public class NativePageFactory {
mActivity.getComponentName(),
mSnackbarManagerSupplier.get(),
tab.getProfile(),
@@ -812,7 +805,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -205,6 +205,8 @@ static_library("browser") {
@@ -207,6 +207,8 @@ static_library("browser") {
"bluetooth/chrome_bluetooth_delegate_impl_client.h",
"bookmarks/bookmark_model_factory.cc",
"bookmarks/bookmark_model_factory.h",
@@ -821,7 +814,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
"bookmarks/chrome_bookmark_client.cc",
"bookmarks/chrome_bookmark_client.h",
"bookmarks/managed_bookmark_service_factory.cc",
@@ -1679,6 +1681,13 @@ static_library("browser") {
@@ -1661,6 +1663,13 @@ static_library("browser") {
"webid/identity_provider_permission_request.h",
]
@@ -835,7 +828,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
configs += [
"//build/config/compiler:wexit_time_destructors",
"//build/config:precompiled_headers",
@@ -3486,8 +3495,6 @@ static_library("browser") {
@@ -3475,8 +3484,6 @@ static_library("browser") {
"bookmarks/bookmark_expanded_state_tracker.h",
"bookmarks/bookmark_expanded_state_tracker_factory.cc",
"bookmarks/bookmark_expanded_state_tracker_factory.h",
@@ -974,7 +967,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
class BookmarkTitleComparer {
public:
explicit BookmarkTitleComparer(BookmarkBridge* bookmark_bridge,
@@ -228,6 +335,10 @@ BookmarkBridge::~BookmarkBridge() {
@@ -229,6 +336,10 @@ BookmarkBridge::~BookmarkBridge() {
partner_bookmarks_shim_observation_.Reset();
bookmark_model_observation_.Reset();
profile_observation_.Reset();
@@ -985,7 +978,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
}
void BookmarkBridge::Destroy(JNIEnv* env) {
@@ -767,6 +878,172 @@ jint BookmarkBridge::GetTotalBookmarkCount(
@@ -768,6 +879,172 @@ jint BookmarkBridge::GetTotalBookmarkCount(
return count;
}
@@ -1164,7 +1157,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser
@@ -20,6 +20,7 @@
#include "base/strings/utf_string_conversions.h"
#include "base/supports_user_data.h"
#include "chrome/browser/android/bookmarks/partner_bookmarks_shim.h"
#include "chrome/browser/partnerbookmarks/partner_bookmarks_shim.h"
+#include "chrome/browser/bookmarks/bookmark_html_writer.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_observer.h"
@@ -1336,7 +1329,7 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse
diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
--- a/chrome/browser/flags/android/chrome_feature_list.cc
+++ b/chrome/browser/flags/android/chrome_feature_list.cc
@@ -206,6 +206,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
@@ -216,6 +216,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
&kCCTAuthTab,
&kCCTAuthTabDisableAllExternalIntents,
&kCCTAuthTabEnableHttpsRedirects,
@@ -1347,7 +1340,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
--- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
@@ -546,6 +546,7 @@ public abstract class ChromeFeatureList {
@@ -579,6 +579,7 @@ public abstract class ChromeFeatureList {
public static final String USE_LIBUNWINDSTACK_NATIVE_UNWINDER_ANDROID =
"UseLibunwindstackNativeUnwinderAndroid";
public static final String VISITED_URL_RANKING_SERVICE = "VisitedURLRankingService";
@@ -1401,7 +1394,7 @@ diff --git a/chrome/browser/importer/profile_writer.h b/chrome/browser/importer/
diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
--- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
+++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
@@ -103,6 +103,8 @@ public final class ChromePreferenceKeys {
@@ -115,6 +115,8 @@ public final class ChromePreferenceKeys {
"enhanced_bookmark_last_used_parent_folder";
public static final String BOOKMARKS_SORT_ORDER = "Chrome.Bookmarks.BookmarkRowSortOrder";
public static final String BOOKMARKS_VISUALS_PREF = "Chrome.Bookmarks.BookmarkRowDisplay";
@@ -1410,8 +1403,8 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro
/** Whether Chrome is set as the default browser. Default value is false. */
public static final String CHROME_DEFAULT_BROWSER = "applink.chrome_default_browser";
@@ -919,6 +921,7 @@ public final class ChromePreferenceKeys {
AUTOFILL_ASSISTANT_PROACTIVE_HELP_ENABLED,
@@ -935,6 +937,7 @@ public final class ChromePreferenceKeys {
AUXILIARY_SEARCH_IS_SCHEMA_SET,
APP_LAUNCH_LAST_KNOWN_ACTIVE_TAB_STATE,
APP_LAUNCH_SEARCH_ENGINE_HAD_LOGO,
+ BOOKMARKS_LAST_EXPORT_URI,
@@ -1449,7 +1442,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn
--- a/chrome/common/BUILD.gn
+++ b/chrome/common/BUILD.gn
@@ -359,6 +359,9 @@ static_library("common_lib") {
@@ -360,6 +360,9 @@ static_library("common_lib") {
sources += [
"media/chrome_media_drm_bridge_client.cc",
"media/chrome_media_drm_bridge_client.h",
@@ -1633,15 +1626,15 @@ new file mode 100644
diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
--- a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
+++ b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
@@ -45,6 +45,7 @@ import org.chromium.base.task.AsyncTask;
import org.chromium.base.task.PostTask;
import org.chromium.base.task.TaskTraits;
@@ -49,6 +49,7 @@ import org.chromium.build.annotations.NullMarked;
import org.chromium.build.annotations.NullUnmarked;
import org.chromium.build.annotations.Nullable;
import org.chromium.ui.R;
+import org.chromium.ui.widget.Toast;
import org.chromium.ui.UiUtils;
import java.io.File;
@@ -67,6 +68,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
@@ -72,6 +73,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
private static final String TAG = "SelectFileDialog";
private static final String IMAGE_TYPE = "image";
private static final String VIDEO_TYPE = "video";
@@ -1649,7 +1642,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
private static final String AUDIO_TYPE = "audio";
private static final String ALL_TYPES = "*/*";
private static final String GENERIC_TYPE = "application/octet-stream";
@@ -312,6 +314,11 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
@@ -324,6 +326,11 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
mMimeTypes = convertToSupportedMimeTypes(mFileTypes);
}
@@ -1661,7 +1654,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
/**
* Creates and starts an intent based on the passed fileTypes and capture value.
*
@@ -374,7 +381,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
@@ -399,7 +406,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
List<String> missingPermissions = new ArrayList<>();
String storagePermission = Manifest.permission.READ_EXTERNAL_STORAGE;
boolean shouldUsePhotoPicker = shouldUsePhotoPicker();
@@ -1670,7 +1663,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
// The permission scenario for accessing media has evolved a bit over the years:
// Early on, READ_EXTERNAL_STORAGE was required to access media, but that permission was
// later deprecated. In its place (starting with Android T) READ_MEDIA_IMAGES and
@@ -427,7 +434,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
@@ -452,7 +459,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
// TODO(finnur): Remove once we figure out the cause of
// crbug.com/950024.
@@ -1679,7 +1672,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
if (permissions.length != requestPermissions.length) {
throw new RuntimeException(
String.format(
@@ -444,7 +451,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
@@ -469,7 +476,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
}
}
@@ -1688,7 +1681,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
if (permissions[i].equals(storagePermission)
|| permissions[i].equals(
Manifest.permission.READ_MEDIA_IMAGES)
@@ -751,6 +758,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
@@ -775,6 +782,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
mimeTypes.add(mimeType);
}
}
@@ -1696,7 +1689,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
return mimeTypes;
}
@@ -1121,6 +1129,10 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
@@ -1149,6 +1157,10 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
return countAcceptTypesFor(superType) == mMimeTypes.size();
}
@@ -1735,8 +1728,8 @@ diff --git a/ui/shell_dialogs/select_file_dialog.h b/ui/shell_dialogs/select_fil
diff --git a/ui/shell_dialogs/select_file_dialog_android.cc b/ui/shell_dialogs/select_file_dialog_android.cc
--- a/ui/shell_dialogs/select_file_dialog_android.cc
+++ b/ui/shell_dialogs/select_file_dialog_android.cc
@@ -161,6 +161,12 @@ void SelectFileDialogImpl::SelectFileImpl(
accept_multiple_files, owning_window->GetJavaObject());
@@ -175,6 +175,12 @@ void SelectFileDialogImpl::SelectFileImpl(
owning_window->GetJavaObject());
}
+void SelectFileDialogImpl::ShowToast(const std::string& message) {
+110 -113
View File
@@ -21,7 +21,6 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
build/android/gyp/java_cpp_features.py | 17 ++
chrome/android/java/res/values/values.xml | 3 +
.../java/res/xml/privacy_preferences.xml | 4 +
.../settings/AccessibilitySettings.java | 5 +-
.../homepage/settings/HomepageSettings.java | 2 +-
.../privacy/settings/PrivacySettings.java | 2 +-
.../settings/FragmentDependencyProvider.java | 10 +-
@@ -43,6 +42,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
chrome/browser/ui/ui_features.cc | 1 +
chrome/common/chrome_features.cc | 1 +
.../res/xml/accessibility_preferences.xml | 3 +-
.../accessibility/AccessibilitySettings.java | 6 +-
.../android/java/res/values/attrs.xml | 4 +
.../settings/ChromeSwitchPreference.java | 20 ++
.../components/cached_flags/CachedFlag.java | 9 +-
@@ -104,7 +104,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
third_party/blink/public/common/features.h | 1 +
ui/base/ui_base_features.cc | 1 +
ui/base/ui_base_features.h | 1 +
91 files changed, 801 insertions(+), 28 deletions(-)
91 files changed, 802 insertions(+), 28 deletions(-)
create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/include_all_directory.java
create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/java_template/CromiteCachedFlag.java.tmpl
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-cromite-flags-support.grdp
@@ -141,7 +141,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/base/BUILD.gn b/base/BUILD.gn
--- a/base/BUILD.gn
+++ b/base/BUILD.gn
@@ -163,6 +163,8 @@ use_epoll = is_linux || is_chromeos || is_android
@@ -165,6 +165,8 @@ use_epoll = is_linux || is_chromeos || is_android
# This does not include test code (test support and anything in the test
# directory) which should use source_set as is recommended for GN targets).
component("base") {
@@ -150,7 +150,7 @@ diff --git a/base/BUILD.gn b/base/BUILD.gn
sources = [
"allocator/allocator_check.cc",
"allocator/allocator_check.h",
@@ -1005,7 +1007,7 @@ component("base") {
@@ -1017,7 +1019,7 @@ component("base") {
"//build/config/compiler:wglobal_constructors",
]
@@ -177,8 +177,8 @@ diff --git a/base/android/feature_map.cc b/base/android/feature_map.cc
diff --git a/base/android/java/src/org/chromium/base/cached_flags/ValuesReturned.java b/base/android/java/src/org/chromium/base/cached_flags/ValuesReturned.java
--- a/base/android/java/src/org/chromium/base/cached_flags/ValuesReturned.java
+++ b/base/android/java/src/org/chromium/base/cached_flags/ValuesReturned.java
@@ -16,7 +16,7 @@ import java.util.Map;
/** Keeps track of values returned for cached flags and field trial parameters. */
@@ -18,7 +18,7 @@ import java.util.Map;
@NullMarked
public abstract class ValuesReturned {
@GuardedBy("sBoolValues")
- private static final Map<String, Boolean> sBoolValues = new HashMap<>();
@@ -221,7 +221,7 @@ diff --git a/base/feature_list.cc b/base/feature_list.cc
namespace {
// Pointer to the FeatureList instance singleton that was set via
@@ -469,6 +494,46 @@ bool FeatureList::IsEnabled(const Feature& feature) {
@@ -473,6 +498,46 @@ bool FeatureList::IsEnabled(const Feature& feature) {
return g_feature_list_instance->IsFeatureEnabled(feature);
}
@@ -268,7 +268,7 @@ diff --git a/base/feature_list.cc b/base/feature_list.cc
// static
bool FeatureList::IsValidFeatureOrFieldTrialName(std::string_view name) {
return IsStringASCII(name) && name.find_first_of(",<*") == std::string::npos;
@@ -735,6 +800,17 @@ void FeatureList::VisitFeaturesAndParams(FeatureVisitor& visitor,
@@ -743,6 +808,17 @@ void FeatureList::VisitFeaturesAndParams(FeatureVisitor& visitor,
void FeatureList::FinalizeInitialization() {
DCHECK(!initialized_);
@@ -289,7 +289,7 @@ diff --git a/base/feature_list.cc b/base/feature_list.cc
diff --git a/base/feature_list.h b/base/feature_list.h
--- a/base/feature_list.h
+++ b/base/feature_list.h
@@ -166,8 +166,10 @@ enum class FeatureMacroHandshake { kSecret };
@@ -170,8 +170,10 @@ enum class FeatureMacroHandshake { kSecret };
struct BASE_EXPORT LOGICALLY_CONST Feature {
constexpr Feature(const char* name,
FeatureState default_state,
@@ -302,7 +302,7 @@ diff --git a/base/feature_list.h b/base/feature_list.h
#if BUILDFLAG(ENABLE_BANNED_BASE_FEATURE_PREFIX)
if (std::string_view(name).find(BUILDFLAG(BANNED_BASE_FEATURE_PREFIX)) ==
0) {
@@ -194,6 +196,9 @@ struct BASE_EXPORT LOGICALLY_CONST Feature {
@@ -198,6 +200,9 @@ struct BASE_EXPORT LOGICALLY_CONST Feature {
// command line switch.
const FeatureState default_state;
@@ -312,7 +312,7 @@ diff --git a/base/feature_list.h b/base/feature_list.h
private:
friend class FeatureList;
@@ -469,6 +474,11 @@ class BASE_EXPORT FeatureList {
@@ -477,6 +482,11 @@ class BASE_EXPORT FeatureList {
// instance, which is checked in builds with DCHECKs enabled.
static bool IsEnabled(const Feature& feature);
@@ -324,7 +324,7 @@ diff --git a/base/feature_list.h b/base/feature_list.h
// Some characters are not allowed to appear in feature names or the
// associated field trial names, as they are used as special characters for
// command-line serialization. This function checks that the strings are ASCII
@@ -734,4 +744,62 @@ class BASE_EXPORT FeatureList {
@@ -746,4 +756,62 @@ class BASE_EXPORT FeatureList {
} // namespace base
@@ -434,7 +434,7 @@ diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
--- a/chrome/android/java/res/xml/privacy_preferences.xml
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -55,6 +55,10 @@ found in the LICENSE file.
@@ -54,6 +54,10 @@ found in the LICENSE file.
android:key="do_not_track"
android:title="@string/do_not_track_title"
android:fragment="org.chromium.chrome.browser.privacy.settings.DoNotTrackSettings" />
@@ -445,35 +445,6 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
<Preference
android:key="preload_pages"
android:title="@string/preload_pages_title"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java
@@ -19,6 +19,7 @@ import org.chromium.chrome.R;
import org.chromium.chrome.browser.image_descriptions.ImageDescriptionsController;
import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.settings.SettingsNavigationFactory;
+import org.chromium.chrome.browser.settings.ChromeBaseSettingsFragment;
import org.chromium.components.browser_ui.accessibility.AccessibilitySettingsDelegate;
import org.chromium.components.browser_ui.accessibility.FontSizePrefs;
import org.chromium.components.browser_ui.accessibility.PageZoomPreference;
@@ -37,7 +38,7 @@ import org.chromium.content_public.browser.ContentFeatureList;
import org.chromium.content_public.browser.ContentFeatureMap;
/** Fragment to keep track of all the accessibility related preferences. */
-public class AccessibilitySettings extends PreferenceFragmentCompat
+public class AccessibilitySettings extends ChromeBaseSettingsFragment
implements EmbeddableSettingsPage, Preference.OnPreferenceChangeListener {
public static final String PREF_PAGE_ZOOM_DEFAULT_ZOOM = "page_zoom_default_zoom";
public static final String PREF_PAGE_ZOOM_INCLUDE_OS_ADJUSTMENT =
@@ -85,7 +86,7 @@ public class AccessibilitySettings extends PreferenceFragmentCompat
}
@Override
- public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+ public void onCreatePreferencesCromite(Bundle savedInstanceState, String rootKey) {
SettingsUtils.addPreferencesFromResource(this, R.xml.accessibility_preferences);
mPageZoomDefaultZoomPref = (PageZoomPreference) findPreference(PREF_PAGE_ZOOM_DEFAULT_ZOOM);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java
@@ -489,7 +460,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settin
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
@@ -81,7 +81,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
@@ -89,7 +89,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
private final ObservableSupplierImpl<String> mPageTitle = new ObservableSupplierImpl<>();
@Override
@@ -509,7 +480,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme
import org.chromium.base.supplier.ObservableSupplier;
import org.chromium.base.supplier.OneshotSupplier;
import org.chromium.chrome.browser.LaunchIntentDispatcher;
@@ -78,18 +79,21 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl
@@ -76,18 +77,21 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl
private final OneshotSupplier<SnackbarManager> mSnackbarManagerSupplier;
private final OneshotSupplier<BottomSheetController> mBottomSheetControllerSupplier;
private final ObservableSupplier<ModalDialogManager> mModalDialogManagerSupplier;
@@ -532,7 +503,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme
}
@Override
@@ -98,6 +102,10 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl
@@ -96,6 +100,10 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl
@NonNull Fragment fragment,
@NonNull Context unusedContext) {
// Common dependencies attachments.
@@ -644,9 +615,9 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
namespace about_flags {
namespace {
@@ -4315,6 +4319,10 @@ const FeatureEntry::FeatureVariation kServiceWorkerAutoPreloadVariations[] = {
std::size(kServiceWorkerAutoPreload_SWNotRunningOnly), nullptr},
};
@@ -4313,6 +4317,10 @@ const FeatureEntry::FeatureVariation kMerchantTrustVariations[] = {
std::size(kMerchantTrustEnabledWithSampleData), nullptr}};
#endif // !BUILDFLAG(IS_ANDROID)
+#define FEATURE_PARAM_SECTION
+#include "cromite_flags/chrome_browser_about_flags_cc.inc"
@@ -655,7 +626,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
// RECORDING USER METRICS FOR FLAGS:
// -----------------------------------------------------------------------------
// The first line of the entry is the internal name.
@@ -4341,6 +4349,9 @@ const FeatureEntry::FeatureVariation kServiceWorkerAutoPreloadVariations[] = {
@@ -4339,6 +4347,9 @@ const FeatureEntry::FeatureVariation kMerchantTrustVariations[] = {
const FeatureEntry kFeatureEntries[] = {
// Include generated flags for flag unexpiry; see //docs/flag_expiry.md and
// //tools/flags/generate_unexpire_flags.py.
@@ -668,7 +639,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
diff --git a/chrome/browser/browser_features.cc b/chrome/browser/browser_features.cc
--- a/chrome/browser/browser_features.cc
+++ b/chrome/browser/browser_features.cc
@@ -372,4 +372,5 @@ BASE_FEATURE(kRemovalOfIWAsFromTabCapture,
@@ -352,4 +352,5 @@ BASE_FEATURE(kRemovalOfIWAsFromTabCapture,
"RemovalOfIWAsFromTabCapture",
base::FEATURE_ENABLED_BY_DEFAULT);
@@ -677,7 +648,7 @@ diff --git a/chrome/browser/browser_features.cc b/chrome/browser/browser_feature
diff --git a/chrome/browser/browser_features.h b/chrome/browser/browser_features.h
--- a/chrome/browser/browser_features.h
+++ b/chrome/browser/browser_features.h
@@ -145,6 +145,7 @@ BASE_DECLARE_FEATURE(kRemovalOfIWAsFromTabCapture);
@@ -136,6 +136,7 @@ BASE_DECLARE_FEATURE(kRemovalOfIWAsFromTabCapture);
// module, e.g.
// //chrome/browser/<foo_module>/features.h
//
@@ -701,9 +672,9 @@ diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn
"//base:base_java",
+ "//base:base_cached_flags_java",
"//base/version_info/android:version_constants_java",
"//build:android_buildflags",
"//build:chromeos_buildflags",
"//build/android:build_java",
@@ -24,12 +29,20 @@ android_library("java") {
@@ -25,12 +30,20 @@ android_library("java") {
"//third_party/jni_zero:jni_zero_java",
]
srcjar_deps = [
@@ -727,7 +698,7 @@ diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn
diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
--- a/chrome/browser/flags/android/chrome_feature_list.cc
+++ b/chrome/browser/flags/android/chrome_feature_list.cc
@@ -1063,5 +1063,6 @@ BASE_FEATURE(kWebOtpCrossDeviceSimpleString,
@@ -1133,5 +1133,6 @@ BASE_FEATURE(kWebOtpCrossDeviceSimpleString,
"WebOtpCrossDeviceSimpleString",
base::FEATURE_DISABLED_BY_DEFAULT);
@@ -737,7 +708,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser/flags/android/chrome_feature_list.h
--- a/chrome/browser/flags/android/chrome_feature_list.h
+++ b/chrome/browser/flags/android/chrome_feature_list.h
@@ -215,6 +215,7 @@ constexpr base::FeatureParam<std::string> kQuickDeleteAndroidSurveyTriggerId(
@@ -225,6 +225,7 @@ constexpr base::FeatureParam<std::string> kQuickDeleteAndroidSurveyTriggerId(
"trigger_id",
/*default_value=*/"");
@@ -748,9 +719,9 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
--- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
@@ -17,6 +17,10 @@ import org.chromium.components.cached_flags.DoubleCachedFieldTrialParameter;
import org.chromium.components.cached_flags.IntCachedFieldTrialParameter;
import org.chromium.components.cached_flags.StringCachedFieldTrialParameter;
@@ -20,6 +20,10 @@ import org.chromium.components.cached_flags.DoubleCachedFeatureParam;
import org.chromium.components.cached_flags.IntCachedFeatureParam;
import org.chromium.components.cached_flags.StringCachedFeatureParam;
+import org.chromium.chrome.browser.flags.cromite.CromiteCachedFlagImplBase;
+import java.util.Arrays;
@@ -759,16 +730,16 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
import java.util.List;
import java.util.Map;
@@ -730,7 +734,7 @@ public abstract class ChromeFeatureList {
@@ -818,7 +822,7 @@ public abstract class ChromeFeatureList {
public static final CachedFlag sWebApkMinShellApkVersion =
newCachedFlag(WEB_APK_MIN_SHELL_APK_VERSION, true);
- public static final List<CachedFlag> sFlagsCachedFullBrowser =
+ public static final List<CachedFlag> sFlagsCachedFullBrowserChromium =
List.of(
sAccountReauthenticationRecentTimeWindow,
sAndroidAppIntegration,
@@ -823,6 +827,13 @@ public abstract class ChromeFeatureList {
sAndroidAppIntegrationModule,
@@ -916,6 +920,13 @@ public abstract class ChromeFeatureList {
sUseLibunwindstackNativeUnwinderAndroid,
sWebApkMinShellApkVersion);
@@ -854,7 +825,7 @@ diff --git a/chrome/browser/settings/BUILD.gn b/chrome/browser/settings/BUILD.gn
diff --git a/chrome/browser/settings/android/java/src/org/chromium/chrome/browser/settings/ChromeBaseSettingsFragment.java b/chrome/browser/settings/android/java/src/org/chromium/chrome/browser/settings/ChromeBaseSettingsFragment.java
--- a/chrome/browser/settings/android/java/src/org/chromium/chrome/browser/settings/ChromeBaseSettingsFragment.java
+++ b/chrome/browser/settings/android/java/src/org/chromium/chrome/browser/settings/ChromeBaseSettingsFragment.java
@@ -7,11 +7,18 @@ package org.chromium.chrome.browser.settings;
@@ -7,12 +7,19 @@ package org.chromium.chrome.browser.settings;
import androidx.annotation.NonNull;
import androidx.preference.PreferenceFragmentCompat;
@@ -863,6 +834,7 @@ diff --git a/chrome/browser/settings/android/java/src/org/chromium/chrome/browse
import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncherFactory;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.components.browser_ui.settings.EmbeddableSettingsPage;
import org.chromium.components.browser_ui.settings.SettingsCustomTabLauncher;
+import android.os.Bundle;
+import androidx.preference.Preference;
@@ -873,9 +845,9 @@ diff --git a/chrome/browser/settings/android/java/src/org/chromium/chrome/browse
/**
* Base class for settings in Chrome.
*
@@ -22,6 +29,49 @@ public abstract class ChromeBaseSettingsFragment extends PreferenceFragmentCompa
implements EmbeddableSettingsPage, ProfileDependentSetting {
@@ -26,6 +33,49 @@ public abstract class ChromeBaseSettingsFragment extends PreferenceFragmentCompa
private Profile mProfile;
private SettingsCustomTabLauncher mCustomTabLauncher;
+ private Supplier<ChromeBaseSettingsFragment.RequireRestartDelegate> mRequireRestartDelegateSupplier;
+
@@ -957,18 +929,18 @@ new file mode 100644
diff --git a/chrome/browser/ui/ui_features.cc b/chrome/browser/ui/ui_features.cc
--- a/chrome/browser/ui/ui_features.cc
+++ b/chrome/browser/ui/ui_features.cc
@@ -487,4 +487,5 @@ BASE_FEATURE(kInlineFullscreenPerfExperiment,
"InlineFullscreenPerfExperiment",
base::FEATURE_ENABLED_BY_DEFAULT);
@@ -440,4 +440,5 @@ BASE_FEATURE(kPageActionsMigration,
"PageActionsMigration",
base::FEATURE_DISABLED_BY_DEFAULT);
+#include "cromite_flags/chrome_browser_ui_ui_features_cc.inc"
} // namespace features
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
--- a/chrome/common/chrome_features.cc
+++ b/chrome/common/chrome_features.cc
@@ -1629,4 +1629,5 @@ BASE_FEATURE(kPeriodicLogUploadMigration,
base::FEATURE_DISABLED_BY_DEFAULT);
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
@@ -1561,4 +1561,5 @@ BASE_FEATURE(kDisableShortcutsEnableDiy,
"DisableShortcutsEnableDiy",
base::FEATURE_ENABLED_BY_DEFAULT);
+#include "cromite_flags/chrome_common_chrome_features_cc.inc"
} // namespace features
@@ -985,6 +957,30 @@ diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibil
<org.chromium.components.browser_ui.accessibility.PageZoomPreference
android:key="page_zoom_default_zoom"
diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java
--- a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java
+++ b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java
@@ -24,8 +24,10 @@ import org.chromium.components.omnibox.OmniboxFeatures;
import org.chromium.content_public.browser.ContentFeatureList;
import org.chromium.content_public.browser.ContentFeatureMap;
+import org.chromium.chrome.browser.settings.ChromeBaseSettingsFragment;
+
/** Fragment to keep track of all the accessibility related preferences. */
-public class AccessibilitySettings extends PreferenceFragmentCompat
+public class AccessibilitySettings extends ChromeBaseSettingsFragment
implements EmbeddableSettingsPage, Preference.OnPreferenceChangeListener {
public static final String PREF_PAGE_ZOOM_DEFAULT_ZOOM = "page_zoom_default_zoom";
public static final String PREF_PAGE_ZOOM_INCLUDE_OS_ADJUSTMENT =
@@ -64,7 +66,7 @@ public class AccessibilitySettings extends PreferenceFragmentCompat
}
@Override
- public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+ public void onCreatePreferencesCromite(Bundle savedInstanceState, String rootKey) {
SettingsUtils.addPreferencesFromResource(this, R.xml.accessibility_preferences);
mPageZoomDefaultZoomPref = (PageZoomPreference) findPreference(PREF_PAGE_ZOOM_DEFAULT_ZOOM);
diff --git a/components/browser_ui/settings/android/java/res/values/attrs.xml b/components/browser_ui/settings/android/java/res/values/attrs.xml
--- a/components/browser_ui/settings/android/java/res/values/attrs.xml
+++ b/components/browser_ui/settings/android/java/res/values/attrs.xml
@@ -1054,7 +1050,7 @@ diff --git a/components/cached_flags/android/java/src/org/chromium/components/ca
import org.chromium.base.FeatureList;
import org.chromium.base.FeatureMap;
@@ -136,7 +137,7 @@ public class CachedFlag extends Flag {
@@ -143,7 +144,7 @@ public class CachedFlag extends Flag {
editor.putBoolean(getSharedPreferenceKey(), isEnabledInNative);
}
@@ -1063,7 +1059,7 @@ diff --git a/components/cached_flags/android/java/src/org/chromium/components/ca
// Create the key only once to avoid String concatenation every flag check.
if (mPreferenceKey == null) {
mPreferenceKey = CachedFlagsSharedPreferences.FLAGS_CACHED.createKey(mFeatureName);
@@ -144,6 +145,12 @@ public class CachedFlag extends Flag {
@@ -151,6 +152,12 @@ public class CachedFlag extends Flag {
return mPreferenceKey;
}
@@ -1079,9 +1075,9 @@ diff --git a/components/cached_flags/android/java/src/org/chromium/components/ca
diff --git a/components/components_strings.grd b/components/components_strings.grd
--- a/components/components_strings.grd
+++ b/components/components_strings.grd
@@ -281,6 +281,7 @@
</translations>
@@ -282,6 +282,7 @@
<release seq="1">
<!-- IMPORTANT: .grdp files must be in the same directory as this file -->
<messages fallback_to_english="true">
+ <part file="cromite_components_strings_grd/placeholder.txt"/>
<part file="arc_strings.grdp" />
@@ -1090,7 +1086,7 @@ diff --git a/components/components_strings.grd b/components/components_strings.g
diff --git a/components/content_settings/core/common/features.cc b/components/content_settings/core/common/features.cc
--- a/components/content_settings/core/common/features.cc
+++ b/components/content_settings/core/common/features.cc
@@ -113,5 +113,6 @@ BASE_FEATURE(kContentSettingsPartitioning,
@@ -163,5 +163,6 @@ BASE_FEATURE(kContentSettingsPartitioning,
"ContentSettingsPartitioning",
base::FEATURE_DISABLED_BY_DEFAULT);
@@ -1106,7 +1102,7 @@ new file mode 100644
diff --git a/components/flags_ui/flags_state.cc b/components/flags_ui/flags_state.cc
--- a/components/flags_ui/flags_state.cc
+++ b/components/flags_ui/flags_state.cc
@@ -365,6 +365,21 @@ void FlagsState::GetSwitchesAndFeaturesFromFlags(
@@ -363,6 +363,21 @@ void FlagsState::GetSwitchesAndFeaturesFromFlags(
for (const std::string& entry_name : enabled_entries) {
const auto& entry_it = name_to_switch_map.find(entry_name);
@@ -1128,7 +1124,7 @@ diff --git a/components/flags_ui/flags_state.cc b/components/flags_ui/flags_stat
CHECK(entry_it != name_to_switch_map.end(), base::NotFatalUntil::M130);
const SwitchEntry& entry = entry_it->second;
@@ -682,6 +697,27 @@ void FlagsState::GetFlagFeatureEntries(
@@ -680,6 +695,27 @@ void FlagsState::GetFlagFeatureEntries(
data.Set("links", std::move(links));
}
@@ -1156,7 +1152,7 @@ diff --git a/components/flags_ui/flags_state.cc b/components/flags_ui/flags_stat
switch (entry.type) {
case FeatureEntry::SINGLE_VALUE:
case FeatureEntry::SINGLE_DISABLE_VALUE:
@@ -810,6 +846,16 @@ void FlagsState::AddSwitchesToCommandLine(
@@ -806,6 +842,16 @@ void FlagsState::AddSwitchesToCommandLine(
for (const std::string& entry_name : enabled_entries) {
const auto& entry_it = name_to_switch_map.find(entry_name);
if (entry_it == name_to_switch_map.end()) {
@@ -1170,10 +1166,10 @@ diff --git a/components/flags_ui/flags_state.cc b/components/flags_ui/flags_stat
+ continue;
+ }
+ }
NOTREACHED_IN_MIGRATION();
continue;
NOTREACHED();
}
@@ -1062,6 +1108,14 @@ const FeatureEntry* FlagsState::FindFeatureEntryByName(
@@ -1057,6 +1103,14 @@ const FeatureEntry* FlagsState::FindFeatureEntryByName(
bool FlagsState::IsSupportedFeature(const FlagsStorage* storage,
const std::string& name,
int platform_mask) const {
@@ -1230,7 +1226,7 @@ diff --git a/components/flags_ui/resources/app.html.ts b/components/flags_ui/res
<div id="header">
<div class="flex-container">
<div class="flex search-container">
@@ -120,6 +121,32 @@ export function getHtml(this: AppElement) {
@@ -107,6 +108,32 @@ export function getHtml(this: AppElement) {
<div class="no-match" role="alert" hidden>$i18n{no-results}</div>
</div>
</if>
@@ -1261,9 +1257,9 @@ diff --git a/components/flags_ui/resources/app.html.ts b/components/flags_ui/res
+ <div class="no-match" role="alert" hidden>$i18n{no-results}</div>
+ </div>
</div>
<div id="needs-restart">
<div class="flex-container">
@@ -138,6 +165,7 @@ export function getHtml(this: AppElement) {
<div id="needs-restart" ?show="${this.needsRestart}"
role="${this.getNeedsRestartRole_()}">
@@ -127,6 +154,7 @@ export function getHtml(this: AppElement) {
</div>
</div>
</div>
@@ -1274,7 +1270,7 @@ diff --git a/components/flags_ui/resources/app.html.ts b/components/flags_ui/res
diff --git a/components/flags_ui/resources/app.ts b/components/flags_ui/resources/app.ts
--- a/components/flags_ui/resources/app.ts
+++ b/components/flags_ui/resources/app.ts
@@ -128,6 +128,7 @@ export class FlagsAppElement extends CrLitElement {
@@ -132,6 +132,7 @@ export class FlagsAppElement extends CrLitElement {
// <if expr="not is_ios">
loadTimeData.getString('unavailable'),
// </if>
@@ -1282,19 +1278,20 @@ diff --git a/components/flags_ui/resources/app.ts b/components/flags_ui/resource
];
protected selectedTabIndex_: number = 0;
@@ -149,8 +150,11 @@ export class FlagsAppElement extends CrLitElement {
@@ -150,9 +151,12 @@ export class FlagsAppElement extends CrLitElement {
protected defaultFeatures: Feature[] = [];
protected nonDefaultFeatures: Feature[] = [];
+ protected defaultCromiteFeatures: Feature[] = [];
+ protected nonDefaultCromiteFeatures: Feature[] = [];
protected searching: boolean = false;
protected needsRestart: boolean = false;
+ private onlyCromiteFlags: boolean = false;
private announceStatusDelayMs: number = 100;
private featuresResolver: PromiseResolver<void> = new PromiseResolver();
private flagSearch: FlagSearch|null = null;
@@ -184,10 +188,24 @@ export class FlagsAppElement extends CrLitElement {
@@ -186,10 +190,24 @@ export class FlagsAppElement extends CrLitElement {
if (changedPrivateProperties.has('data')) {
const defaultFeatures: Feature[] = [];
const nonDefaultFeatures: Feature[] = [];
@@ -1318,8 +1315,8 @@ diff --git a/components/flags_ui/resources/app.ts b/components/flags_ui/resource
+ this.nonDefaultCromiteFeatures = nonDefaultCromiteFeatures;
this.defaultFeatures = defaultFeatures;
this.nonDefaultFeatures = nonDefaultFeatures;
}
@@ -228,6 +246,11 @@ export class FlagsAppElement extends CrLitElement {
@@ -233,6 +251,11 @@ export class FlagsAppElement extends CrLitElement {
override connectedCallback() {
super.connectedCallback();
@@ -1458,7 +1455,7 @@ diff --git a/components/offline_pages/core/offline_page_feature.h b/components/o
diff --git a/components/password_manager/core/browser/features/password_features.cc b/components/password_manager/core/browser/features/password_features.cc
--- a/components/password_manager/core/browser/features/password_features.cc
+++ b/components/password_manager/core/browser/features/password_features.cc
@@ -193,4 +193,5 @@ BASE_FEATURE(kImprovedPasswordChangeService,
@@ -188,4 +188,5 @@ BASE_FEATURE(kImprovedPasswordChangeService,
"ImprovedPasswordChangeService",
base::FEATURE_DISABLED_BY_DEFAULT);
@@ -1467,7 +1464,7 @@ diff --git a/components/password_manager/core/browser/features/password_features
diff --git a/components/permissions/features.cc b/components/permissions/features.cc
--- a/components/permissions/features.cc
+++ b/components/permissions/features.cc
@@ -153,6 +153,7 @@ BASE_FEATURE(kCpssQuietChipTextUpdate,
@@ -122,6 +122,7 @@ BASE_FEATURE(kCpssQuietChipTextUpdate,
BASE_FEATURE(kCpssUseTfliteSignatureRunner,
"CpssUseTfliteSignatureRunner",
base::FEATURE_DISABLED_BY_DEFAULT);
@@ -1541,7 +1538,7 @@ diff --git a/components/version_ui/version_handler_helper.cc b/components/versio
diff --git a/content/common/features.cc b/content/common/features.cc
--- a/content/common/features.cc
+++ b/content/common/features.cc
@@ -619,4 +619,5 @@ BASE_FEATURE(kLimitCrossOriginNonActivatedPaintHolding,
@@ -475,4 +475,5 @@ BASE_FEATURE(kLimitCrossOriginNonActivatedPaintHolding,
// Please keep features in alphabetical order.
@@ -1550,7 +1547,7 @@ diff --git a/content/common/features.cc b/content/common/features.cc
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
--- a/content/public/common/content_features.cc
+++ b/content/public/common/content_features.cc
@@ -1498,4 +1498,5 @@ bool IsVideoCaptureServiceEnabledForBrowserProcess() {
@@ -1421,4 +1421,5 @@ bool IsVideoCaptureServiceEnabledForBrowserProcess() {
VideoCaptureServiceConfiguration::kEnabledForBrowserProcess;
}
@@ -1559,7 +1556,7 @@ diff --git a/content/public/common/content_features.cc b/content/public/common/c
diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h
--- a/content/public/common/content_features.h
+++ b/content/public/common/content_features.h
@@ -352,6 +352,7 @@ CONTENT_EXPORT extern const base::FeatureParam<std::string>
@@ -341,6 +341,7 @@ CONTENT_EXPORT extern const base::FeatureParam<std::string>
CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForOutOfProcess();
CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForBrowserProcess();
@@ -1905,7 +1902,7 @@ new file mode 100755
diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
--- a/media/base/media_switches.cc
+++ b/media/base/media_switches.cc
@@ -1837,5 +1837,5 @@ uint32_t GetPassthroughAudioFormats() {
@@ -1819,5 +1819,5 @@ uint32_t GetPassthroughAudioFormats() {
return 0;
#endif // BUILDFLAG(ENABLE_PASSTHROUGH_AUDIO_CODECS)
}
@@ -1915,7 +1912,7 @@ diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
diff --git a/media/base/media_switches.h b/media/base/media_switches.h
--- a/media/base/media_switches.h
+++ b/media/base/media_switches.h
@@ -572,5 +572,5 @@ MEDIA_EXPORT OOPVDMode GetOutOfProcessVideoDecodingMode();
@@ -570,5 +570,5 @@ MEDIA_EXPORT OOPVDMode GetOutOfProcessVideoDecodingMode();
MEDIA_EXPORT uint32_t GetPassthroughAudioFormats();
} // namespace media
@@ -1925,18 +1922,18 @@ diff --git a/media/base/media_switches.h b/media/base/media_switches.h
diff --git a/net/base/features.cc b/net/base/features.cc
--- a/net/base/features.cc
+++ b/net/base/features.cc
@@ -629,4 +629,5 @@ BASE_FEATURE(kIgnoreHSTSForLocalhost,
"IgnoreHSTSForLocalhost",
base::FEATURE_ENABLED_BY_DEFAULT);
@@ -666,4 +666,5 @@ BASE_FEATURE(kHstsTopLevelNavigationsOnly,
"HstsTopLevelNavigationsOnly",
base::FEATURE_DISABLED_BY_DEFAULT);
+#include "cromite_flags/net_base_features_cc.inc"
} // namespace net::features
diff --git a/net/base/features.h b/net/base/features.h
--- a/net/base/features.h
+++ b/net/base/features.h
@@ -650,6 +650,7 @@ NET_EXPORT extern const base::FeatureParam<DiskCacheBackend>
// If enabled, ignore Strict-Transport-Security for [*.]localhost hosts.
NET_EXPORT BASE_DECLARE_FEATURE(kIgnoreHSTSForLocalhost);
@@ -687,6 +687,7 @@ NET_EXPORT BASE_DECLARE_FEATURE(kNewClientCertPathBuilding);
// When enabled HSTS upgrades will only apply to top-level navigations.
NET_EXPORT BASE_DECLARE_FEATURE(kHstsTopLevelNavigationsOnly);
+#include "cromite_flags/net_base_features_h.inc"
} // namespace net::features
@@ -1945,18 +1942,18 @@ diff --git a/net/base/features.h b/net/base/features.h
diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc
--- a/services/network/public/cpp/features.cc
+++ b/services/network/public/cpp/features.cc
@@ -475,4 +475,5 @@ BASE_FEATURE(kEnableLockCookieDatabaseByDefault,
base::FEATURE_ENABLED_BY_DEFAULT);
#endif // BUILDFLAG(IS_WIN)
@@ -366,4 +366,5 @@ BASE_FEATURE(kSRIMessageSignatureEnforcement,
"SRIMessageSignatureEnforcement",
base::FEATURE_DISABLED_BY_DEFAULT);
+#include "cromite_flags/services_network_public_cpp_features_cc.inc"
} // namespace network::features
diff --git a/services/network/public/cpp/features.h b/services/network/public/cpp/features.h
--- a/services/network/public/cpp/features.h
+++ b/services/network/public/cpp/features.h
@@ -211,6 +211,7 @@ COMPONENT_EXPORT(NETWORK_CPP)
BASE_DECLARE_FEATURE(kEnableLockCookieDatabaseByDefault);
#endif // BUILDFLAG(IS_WIN)
@@ -155,6 +155,7 @@ BASE_DECLARE_FEATURE(kEnableLockCookieDatabaseByDefault);
COMPONENT_EXPORT(NETWORK_CPP)
BASE_DECLARE_FEATURE(kSRIMessageSignatureEnforcement);
+#include "cromite_flags/services_network_public_cpp_features_h.inc"
} // namespace network::features
@@ -1965,7 +1962,7 @@ diff --git a/services/network/public/cpp/features.h b/services/network/public/cp
diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc
--- a/third_party/blink/common/features.cc
+++ b/third_party/blink/common/features.cc
@@ -2932,4 +2932,5 @@ bool IsCanvasSharedBitmapConversionEnabled() {
@@ -2898,4 +2898,5 @@ bool IsLinkPreviewTriggerTypeEnabled(LinkPreviewTriggerType type) {
//
// DO NOT ADD NEW FEATURES HERE.
@@ -1974,7 +1971,7 @@ diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/fea
diff --git a/third_party/blink/public/common/features.h b/third_party/blink/public/common/features.h
--- a/third_party/blink/public/common/features.h
+++ b/third_party/blink/public/common/features.h
@@ -1886,6 +1886,7 @@ BLINK_COMMON_EXPORT bool IsCanvasSharedBitmapConversionEnabled();
@@ -1874,6 +1874,7 @@ BLINK_COMMON_EXPORT bool IsUpdateComplexSafaAreaConstraintsEnabled();
//
// DO NOT ADD NEW FEATURES HERE.
@@ -1985,7 +1982,7 @@ diff --git a/third_party/blink/public/common/features.h b/third_party/blink/publ
diff --git a/ui/base/ui_base_features.cc b/ui/base/ui_base_features.cc
--- a/ui/base/ui_base_features.cc
+++ b/ui/base/ui_base_features.cc
@@ -503,4 +503,5 @@ BASE_FEATURE(kAsyncFullscreenWindowState,
@@ -454,4 +454,5 @@ BASE_FEATURE(kAsyncFullscreenWindowState,
"AsyncFullscreenWindowState",
base::FEATURE_DISABLED_BY_DEFAULT);
@@ -1994,7 +1991,7 @@ diff --git a/ui/base/ui_base_features.cc b/ui/base/ui_base_features.cc
diff --git a/ui/base/ui_base_features.h b/ui/base/ui_base_features.h
--- a/ui/base/ui_base_features.h
+++ b/ui/base/ui_base_features.h
@@ -259,6 +259,7 @@ BASE_DECLARE_FEATURE(kWriteBookmarkWithoutTitle);
@@ -235,6 +235,7 @@ BASE_DECLARE_FEATURE(kWriteBookmarkWithoutTitle);
COMPONENT_EXPORT(UI_BASE_FEATURES)
BASE_DECLARE_FEATURE(kAsyncFullscreenWindowState);
@@ -14,7 +14,6 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../dialogs/DownloadLocationCustomView.java | 4 +-
.../strings/android_chrome_strings.grd | 3 +
.../bookmark_ui_operations_helper.cc | 2 +
.../views/bookmarks/bookmark_menu_delegate.cc | 2 +
components/bookmark_bar_strings.grdp | 6 ++
.../bookmarks/browser/bookmark_codec.cc | 20 +++++-
components/bookmarks/browser/bookmark_codec.h | 7 +-
@@ -29,7 +28,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
components/bookmarks/browser/bookmark_uuids.h | 1 +
components/bookmarks/browser/model_loader.cc | 8 ++-
.../bookmark_specifics_conversions.cc | 1 +
25 files changed, 247 insertions(+), 15 deletions(-)
24 files changed, 245 insertions(+), 15 deletions(-)
diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
--- a/chrome/android/java/res/menu/main_menu.xml
@@ -45,7 +44,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
<item android:id="@+id/recent_tabs_menu_id"
android:title="@string/menu_recent_tabs"
android:icon="@drawable/devices_black_24dp" />
@@ -183,6 +187,9 @@ found in the LICENSE file.
@@ -186,6 +190,9 @@ found in the LICENSE file.
<item android:id="@id/tinker_tank_menu_id"
android:title="@string/menu_tinker_tank"
android:icon="@drawable/ic_add_box_rounded_corner" />
@@ -58,7 +57,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -95,6 +95,7 @@ import org.chromium.chrome.browser.base.ColdStartTracker;
@@ -96,6 +96,7 @@ import org.chromium.chrome.browser.bookmarks.BookmarkPane;
import org.chromium.chrome.browser.bookmarks.BookmarkUtils;
import org.chromium.chrome.browser.browserservices.intents.WebappConstants;
import org.chromium.chrome.browser.compositor.CompositorViewHolder;
@@ -66,7 +65,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
import org.chromium.chrome.browser.compositor.layouts.Layout;
import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChrome;
import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChromePhone;
@@ -2919,6 +2920,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
@@ -3032,6 +3033,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements MismatchedIn
getTabModelSelectorSupplier().get(),
closeAllTabsRunnable);
RecordUserAction.record("MobileMenuCloseAllTabs");
@@ -75,7 +74,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
} else if (id == R.id.close_all_incognito_tabs_menu_id) {
// Close only incognito tabs
Runnable closeAllTabsRunnable =
@@ -3005,6 +3008,27 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
@@ -3117,6 +3120,27 @@ public class ChromeTabbedActivity extends ChromeActivity implements MismatchedIn
getTabModalLifetimeHandler().onOmniboxFocusChanged(hasFocus);
}
@@ -106,7 +105,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
@@ -18,11 +18,17 @@ import org.jni_zero.JniType;
@@ -17,6 +17,7 @@ import org.jni_zero.JniType;
import org.jni_zero.NativeMethods;
import org.chromium.base.ContextUtils;
@@ -114,6 +113,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
import org.chromium.base.ObserverList;
import org.chromium.base.ThreadUtils;
import org.chromium.base.metrics.RecordUserAction;
@@ -24,6 +25,11 @@ import org.chromium.base.supplier.Supplier;
import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmark;
import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksShim;
import org.chromium.chrome.browser.profiles.Profile;
+import org.chromium.chrome.browser.tab.Tab;
@@ -124,16 +125,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
import org.chromium.components.bookmarks.BookmarkId;
import org.chromium.components.bookmarks.BookmarkItem;
import org.chromium.components.bookmarks.BookmarkType;
@@ -82,6 +88,8 @@ import org.chromium.ui.modaldialog.DialogDismissalCause;
@@ -83,6 +89,8 @@ import org.chromium.ui.modaldialog.DialogDismissalCause;
class BookmarkBridge {
private final ObserverList<BookmarkModelObserver> mObservers = new ObserverList<>();
+ private static final String TAG = "BookmarkBridge";
+
private long mNativeBookmarkBridge;
private boolean mIsDestroyed;
private Profile mProfile;
private boolean mIsDoingExtensiveChanges;
@@ -395,6 +403,16 @@ class BookmarkBridge {
@@ -411,6 +419,16 @@ class BookmarkBridge {
return mMobileFolderId;
}
@@ -150,7 +151,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
/** Returns Id representing the special "other" folder from bookmark model. */
public BookmarkId getOtherFolderId() {
ThreadUtils.assertOnUiThread();
@@ -1083,6 +1101,50 @@ class BookmarkBridge {
@@ -1132,6 +1150,50 @@ class BookmarkBridge {
.addToReadingList(mNativeBookmarkBridge, parentId, title, url);
}
@@ -201,7 +202,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
/**
* Helper method to mark an item as read.
*
@@ -1331,6 +1393,9 @@ class BookmarkBridge {
@@ -1339,6 +1401,9 @@ class BookmarkBridge {
BookmarkId getMostRecentlyAddedUserBookmarkIdForUrl(
long nativeBookmarkBridge, @JniType("GURL") GURL url);
@@ -211,7 +212,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
BookmarkItem getBookmarkById(long nativeBookmarkBridge, long id, int type);
void getTopLevelFolderIds(
@@ -1352,6 +1417,8 @@ class BookmarkBridge {
@@ -1360,6 +1425,8 @@ class BookmarkBridge {
BookmarkId getRootFolderId(long nativeBookmarkBridge);
@@ -232,7 +233,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
result == Result::kSuccess);
delete this;
}
@@ -355,6 +355,33 @@ jboolean BookmarkBridge::AreAccountBookmarkFoldersActive(JNIEnv* env) {
@@ -356,6 +356,33 @@ jboolean BookmarkBridge::AreAccountBookmarkFoldersActive(JNIEnv* env) {
return bookmark_model_->account_mobile_node() != nullptr;
}
@@ -266,7 +267,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
base::android::ScopedJavaLocalRef<jobject>
BookmarkBridge::GetMostRecentlyAddedUserBookmarkIdForUrl(JNIEnv* env,
const GURL& url) {
@@ -467,6 +494,7 @@ void BookmarkBridge::GetAllFoldersWithDepths(
@@ -468,6 +495,7 @@ void BookmarkBridge::GetAllFoldersWithDepths(
// Vector to temporarily contain all child bookmarks at same level for sorting
std::vector<const BookmarkNode*> bookmarks = {
bookmark_model_->mobile_node(),
@@ -274,7 +275,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
bookmark_model_->bookmark_bar_node(),
bookmark_model_->other_node(),
};
@@ -560,6 +588,9 @@ std::vector<const BookmarkNode*> BookmarkBridge::GetTopLevelFolderIdsImpl(
@@ -561,6 +589,9 @@ std::vector<const BookmarkNode*> BookmarkBridge::GetTopLevelFolderIdsImpl(
top_level_folders.push_back(other_node);
}
@@ -284,7 +285,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
const BookmarkNode* reading_list_node =
local_or_syncable_reading_list_manager_->GetRoot();
if (IsPermanentFolderVisible(ignore_visibility, reading_list_node)) {
@@ -1261,6 +1292,17 @@ void BookmarkBridge::GetBookmarksOfType(
@@ -1262,6 +1293,17 @@ void BookmarkBridge::GetBookmarksOfType(
AddBookmarkNodesToBookmarkIdList(env, j_list, results);
}
@@ -373,7 +374,7 @@ diff --git a/chrome/browser/bookmarks/bookmark_html_writer.cc b/chrome/browser/b
diff --git a/chrome/browser/bookmarks/bookmark_merged_surface_service.cc b/chrome/browser/bookmarks/bookmark_merged_surface_service.cc
--- a/chrome/browser/bookmarks/bookmark_merged_surface_service.cc
+++ b/chrome/browser/bookmarks/bookmark_merged_surface_service.cc
@@ -43,6 +43,8 @@ std::optional<PermanentFolderType> GetIfPermanentFolderType(
@@ -44,6 +44,8 @@ std::optional<PermanentFolderType> GetIfPermanentFolderType(
case BookmarkNode::Type::URL:
NOTREACHED();
@@ -406,7 +407,7 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -4512,6 +4512,9 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
@@ -4515,6 +4515,9 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
<message name="IDS_MENU_SELECT_TABS" desc="Menu item for bulk editing tabs. [CHAR_LIMIT=27]">
Select tabs
</message>
@@ -419,31 +420,19 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
diff --git a/chrome/browser/ui/bookmarks/bookmark_ui_operations_helper.cc b/chrome/browser/ui/bookmarks/bookmark_ui_operations_helper.cc
--- a/chrome/browser/ui/bookmarks/bookmark_ui_operations_helper.cc
+++ b/chrome/browser/ui/bookmarks/bookmark_ui_operations_helper.cc
@@ -54,6 +54,8 @@ ui::mojom::DragOperation BookmarkUIOperationsHelper::DropBookmarks(
@@ -137,6 +137,8 @@ ui::mojom::DragOperation BookmarkUIOperationsHelper::DropBookmarks(
if (is_reorder) {
base::UmaHistogramEnumeration("Bookmarks.ReorderDropTarget", target);
switch (GetParentType()) {
switch (target_parent()->GetType()) {
+ case bookmarks::BookmarkNode::TABS_COLLECTION:
+ break;
case bookmarks::BookmarkNode::URL:
NOTREACHED();
case bookmarks::BookmarkNode::FOLDER:
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_menu_delegate.cc b/chrome/browser/ui/views/bookmarks/bookmark_menu_delegate.cc
--- a/chrome/browser/ui/views/bookmarks/bookmark_menu_delegate.cc
+++ b/chrome/browser/ui/views/bookmarks/bookmark_menu_delegate.cc
@@ -103,6 +103,8 @@ BookmarkParentFolder GetBookmarkParentFolderForNode(
return BookmarkParentFolder::OtherFolder();
case bookmarks::BookmarkNode::MOBILE:
return BookmarkParentFolder::MobileFolder();
+ case bookmarks::BookmarkNode::TABS_COLLECTION:
+ NOTREACHED();
}
NOTREACHED();
}
diff --git a/components/bookmark_bar_strings.grdp b/components/bookmark_bar_strings.grdp
--- a/components/bookmark_bar_strings.grdp
+++ b/components/bookmark_bar_strings.grdp
@@ -20,6 +20,9 @@
@@ -15,6 +15,9 @@
<message name="IDS_BOOKMARK_BAR_MOBILE_FOLDER_NAME" desc="Name shown in the tree for the mobile bookmarks folder">
Mobile bookmarks
</message>
@@ -453,7 +442,7 @@ diff --git a/components/bookmark_bar_strings.grdp b/components/bookmark_bar_stri
<message name="IDS_BOOKMARK_BAR_OTHER_FOLDER_NAME" desc="Name shown in the tree for the other bookmarks folder">
Other bookmarks
</message>
@@ -34,6 +37,9 @@
@@ -29,6 +32,9 @@
<message name="IDS_BOOKMARK_BAR_MOBILE_FOLDER_NAME" desc="In Title Case: Name shown in the tree for the mobile bookmarks folder">
Mobile Bookmarks
</message>
@@ -551,7 +540,7 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
// Need to reset the title as the title is persisted and restored from
// the file.
@@ -477,12 +489,14 @@ void BookmarkCodec::DecodeMetaInfoHelper(
@@ -475,12 +487,14 @@ void BookmarkCodec::DecodeMetaInfoHelper(
void BookmarkCodec::ReassignIDs(BookmarkNode* bb_node,
BookmarkNode* other_node,
@@ -702,7 +691,7 @@ diff --git a/components/bookmarks/browser/bookmark_model.cc b/components/bookmar
}
bool BookmarkModel::IsBookmarked(const GURL& url) const {
@@ -1134,6 +1134,7 @@ void BookmarkModel::DoneLoading(std::unique_ptr<BookmarkLoadDetails> details) {
@@ -1147,6 +1147,7 @@ void BookmarkModel::DoneLoading(std::unique_ptr<BookmarkLoadDetails> details) {
bookmark_bar_node_ = details->bb_node();
other_node_ = details->other_folder_node();
mobile_node_ = details->mobile_folder_node();
@@ -713,7 +702,7 @@ diff --git a/components/bookmarks/browser/bookmark_model.cc b/components/bookmar
diff --git a/components/bookmarks/browser/bookmark_model.h b/components/bookmarks/browser/bookmark_model.h
--- a/components/bookmarks/browser/bookmark_model.h
+++ b/components/bookmarks/browser/bookmark_model.h
@@ -149,6 +149,12 @@ class BookmarkModel : public BookmarkUndoProvider,
@@ -151,6 +151,12 @@ class BookmarkModel : public BookmarkUndoProvider,
// bookmarks in the account storage).
const BookmarkNode* account_mobile_node() const;
@@ -726,7 +715,7 @@ diff --git a/components/bookmarks/browser/bookmark_model.h b/components/bookmark
bool is_root_node(const BookmarkNode* node) const {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
return node == root_;
@@ -566,6 +572,7 @@ class BookmarkModel : public BookmarkUndoProvider,
@@ -592,6 +598,7 @@ class BookmarkModel : public BookmarkUndoProvider,
raw_ptr<BookmarkPermanentNode> account_bookmark_bar_node_ = nullptr;
raw_ptr<BookmarkPermanentNode> account_other_node_ = nullptr;
raw_ptr<BookmarkPermanentNode> account_mobile_node_ = nullptr;
@@ -860,7 +849,7 @@ diff --git a/components/bookmarks/browser/model_loader.cc b/components/bookmarks
diff --git a/components/sync_bookmarks/bookmark_specifics_conversions.cc b/components/sync_bookmarks/bookmark_specifics_conversions.cc
--- a/components/sync_bookmarks/bookmark_specifics_conversions.cc
+++ b/components/sync_bookmarks/bookmark_specifics_conversions.cc
@@ -444,6 +444,7 @@ sync_pb::BookmarkSpecifics::Type GetProtoTypeFromBookmarkNode(
@@ -442,6 +442,7 @@ sync_pb::BookmarkSpecifics::Type GetProtoTypeFromBookmarkNode(
case bookmarks::BookmarkNode::BOOKMARK_BAR:
case bookmarks::BookmarkNode::OTHER_NODE:
case bookmarks::BookmarkNode::MOBILE:
@@ -10,7 +10,6 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
chrome/android/java/res/values/dimens.xml | 6 ++++-
.../browser/ChromeBaseAppCompatActivity.java | 3 +++
.../chrome/browser/WarmupManager.java | 5 +++-
.../settings/AccessibilitySettings.java | 13 ++++++++++
.../ChromeAccessibilitySettingsDelegate.java | 19 +++++++++++++++
.../chrome/browser/app/ChromeActivity.java | 4 +++-
.../overlays/strip/StripLayoutHelper.java | 10 ++++++--
@@ -25,7 +24,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../AppHeaderCoordinator.java | 2 ++
.../omnibox/LocationBarCoordinator.java | 2 +-
.../strings/android_chrome_strings.grd | 7 ++++++
.../java/res/layout/control_container.xml | 10 ++++----
.../java/res/layout/control_container.xml | 8 +++----
.../java/res/layout/toolbar_tablet.xml | 2 +-
.../java/res/values-sw600dp/dimens.xml | 5 ++--
.../toolbar/java/res/values/dimens.xml | 6 +++--
@@ -35,9 +34,10 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../tab_strip/HeightTransitionHandler.java | 2 ++
.../TabStripTransitionCoordinator.java | 6 ++++-
.../res/xml/accessibility_preferences.xml | 5 ++++
.../accessibility/AccessibilitySettings.java | 13 ++++++++++
.../AccessibilitySettingsDelegate.java | 11 +++++++++
.../chromium/ui/base/DeviceFormFactor.java | 14 +++++++++++
33 files changed, 177 insertions(+), 27 deletions(-)
33 files changed, 176 insertions(+), 26 deletions(-)
diff --git a/chrome/android/java/res/layout/custom_tabs_control_container.xml b/chrome/android/java/res/layout/custom_tabs_control_container.xml
--- a/chrome/android/java/res/layout/custom_tabs_control_container.xml
@@ -80,7 +80,7 @@ diff --git a/chrome/android/java/res/values-sw600dp/dimens.xml b/chrome/android/
diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml
--- a/chrome/android/java/res/values/dimens.xml
+++ b/chrome/android/java/res/values/dimens.xml
@@ -115,9 +115,13 @@ found in the LICENSE file.
@@ -125,9 +125,13 @@ found in the LICENSE file.
<dimen name="tab_modal_scrim_vertical_margin">16dp</dimen>
<!-- Should match toolbar_height_no_shadow -->
@@ -98,7 +98,7 @@ diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java
@@ -51,6 +51,7 @@ import org.chromium.chrome.browser.metrics.UmaSessionStats;
@@ -57,6 +57,7 @@ import org.chromium.chrome.browser.metrics.UmaSessionStats;
import org.chromium.chrome.browser.night_mode.GlobalNightModeStateProviderHolder;
import org.chromium.chrome.browser.night_mode.NightModeStateProvider;
import org.chromium.chrome.browser.night_mode.NightModeUtils;
@@ -106,7 +106,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCo
import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeUtils;
import org.chromium.components.browser_ui.edge_to_edge.EdgeToEdgeManager;
import org.chromium.components.browser_ui.edge_to_edge.EdgeToEdgeStateProvider;
@@ -115,6 +116,8 @@ public class ChromeBaseAppCompatActivity extends AppCompatActivity
@@ -128,6 +129,8 @@ public class ChromeBaseAppCompatActivity extends AppCompatActivity
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(newBase);
@@ -126,7 +126,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.j
import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.display.DisplayUtil;
import org.chromium.url.GURL;
@@ -469,7 +470,9 @@ public class WarmupManager {
@@ -473,7 +474,9 @@ public class WarmupManager {
ControlContainer controlContainer = mainView.findViewById(R.id.control_container);
if (toolbarId != ActivityUtils.NO_RESOURCE_ID && controlContainer != null) {
@@ -137,54 +137,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.j
}
return mainView;
} catch (InflateException e) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java
@@ -21,6 +21,7 @@ import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.settings.SettingsNavigationFactory;
import org.chromium.chrome.browser.settings.ChromeBaseSettingsFragment;
import org.chromium.components.browser_ui.accessibility.AccessibilitySettingsDelegate;
+import org.chromium.components.browser_ui.accessibility.AccessibilitySettingsDelegate.BooleanPreferenceDelegate;
import org.chromium.components.browser_ui.accessibility.FontSizePrefs;
import org.chromium.components.browser_ui.accessibility.PageZoomPreference;
import org.chromium.components.browser_ui.accessibility.PageZoomUma;
@@ -50,6 +51,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
public static final String PREF_ZOOM_INFO = "zoom_info";
public static final String PREF_IMAGE_DESCRIPTIONS = "image_descriptions";
+ private BooleanPreferenceDelegate mForceTabletUIDelegate;
+ static final String PREF_FORCE_TABLET_UI = "force_tablet_ui";
+
private PageZoomPreference mPageZoomDefaultZoomPref;
private ChromeSwitchPreference mPageZoomIncludeOSAdjustment;
private ChromeSwitchPreference mPageZoomAlwaysShowPref;
@@ -124,6 +128,12 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
mPrefService.getBoolean(Pref.READER_FOR_ACCESSIBILITY));
readerForAccessibilityPref.setOnPreferenceChangeListener(this);
+ ChromeSwitchPreference forceTabletUiPref =
+ (ChromeSwitchPreference) findPreference(PREF_FORCE_TABLET_UI);
+ mForceTabletUIDelegate = mDelegate.getForceTabletUIDelegate();
+ forceTabletUiPref.setChecked(mForceTabletUIDelegate.isEnabled());
+ forceTabletUiPref.setOnPreferenceChangeListener(this);
+
Preference captions = findPreference(PREF_CAPTIONS);
captions.setOnPreferenceClickListener(
preference -> {
@@ -185,6 +195,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (PREF_FORCE_ENABLE_ZOOM.equals(preference.getKey())) {
mFontSizePrefs.setForceEnableZoom((Boolean) newValue);
+ } else if (PREF_FORCE_TABLET_UI.equals(preference.getKey())) {
+ mForceTabletUIDelegate.setEnabled((Boolean) newValue);
+ mDelegate.requestRestart(getActivity());
} else if (PREF_READER_FOR_ACCESSIBILITY.equals(preference.getKey())) {
mPrefService.setBoolean(Pref.READER_FOR_ACCESSIBILITY, (Boolean) newValue);
} else if (PREF_PAGE_ZOOM_DEFAULT_ZOOM.equals(preference.getKey())) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java
@@ -38,6 +38,25 @@ public class ChromeAccessibilitySettingsDelegate implements AccessibilitySetting
@@ -62,6 +62,25 @@ public class ChromeAccessibilitySettingsDelegate implements AccessibilitySetting
}
}
@@ -213,7 +169,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
@@ -850,7 +850,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
@@ -757,7 +757,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
// Inflate the correct toolbar layout for the device.
int toolbarLayoutId = getToolbarLayoutId();
if (toolbarLayoutId != ActivityUtils.NO_RESOURCE_ID && controlContainer != null) {
@@ -227,15 +183,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java
@@ -99,6 +99,7 @@ import org.chromium.components.feature_engagement.Tracker;
import org.chromium.components.prefs.PrefService;
@@ -112,6 +112,7 @@ import org.chromium.components.tab_group_sync.SavedTabGroup;
import org.chromium.components.tab_group_sync.TabGroupSyncService;
import org.chromium.components.tab_groups.TabGroupColorId;
import org.chromium.ui.MotionEventUtils;
+import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.ui.base.LocalizationUtils;
import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.modaldialog.ModalDialogManager;
@@ -4277,8 +4278,13 @@ public class StripLayoutHelper
@@ -3999,8 +4000,13 @@ public class StripLayoutHelper
mTabMenu.setAnchorView(tabView);
// 3. Set the vertical offset to align the tab menu with bottom of the tab strip
int tabHeight = mManagerHost.getHeight();
@@ -262,7 +218,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
import org.chromium.ui.base.LocalizationUtils;
import org.chromium.ui.base.PageTransition;
import org.chromium.ui.base.WindowAndroid;
@@ -439,7 +440,10 @@ public class StripLayoutHelperManager
@@ -438,7 +439,10 @@ public class StripLayoutHelperManager
mIsLayoutOptimizationsEnabled =
ToolbarFeatures.isTabStripWindowLayoutOptimizationEnabled(true);
@@ -296,7 +252,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrow
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
@@ -576,7 +576,9 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
@@ -602,7 +602,9 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
@Override
public int getControlContainerHeightResource() {
@@ -310,7 +266,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
@@ -104,6 +104,8 @@ import org.chromium.chrome.browser.paint_preview.DemoPaintPreview;
@@ -105,6 +105,8 @@ import org.chromium.chrome.browser.paint_preview.DemoPaintPreview;
import org.chromium.chrome.browser.password_manager.ManagePasswordsReferrer;
import org.chromium.chrome.browser.password_manager.PasswordManagerLauncher;
import org.chromium.chrome.browser.pdf.PdfPage;
@@ -319,7 +275,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi
import org.chromium.chrome.browser.price_insights.PriceInsightsButtonController;
import org.chromium.chrome.browser.price_tracking.CurrentTabPriceTrackingStateSupplier;
import org.chromium.chrome.browser.price_tracking.PriceTrackingButtonController;
@@ -1773,7 +1775,9 @@ public class RootUiCoordinator
@@ -1788,7 +1790,9 @@ public class RootUiCoordinator
if (!mSupportsFindInPageSupplier.getAsBoolean()) return;
int stubId = R.id.find_toolbar_stub;
@@ -333,7 +289,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi
diff --git a/chrome/browser/preferences/BUILD.gn b/chrome/browser/preferences/BUILD.gn
--- a/chrome/browser/preferences/BUILD.gn
+++ b/chrome/browser/preferences/BUILD.gn
@@ -26,6 +26,7 @@ android_library("java") {
@@ -25,6 +25,7 @@ android_library("java") {
"//components/cached_flags:java",
"//third_party/androidx:androidx_annotation_annotation_java",
"//third_party/jni_zero:jni_zero_java",
@@ -344,7 +300,7 @@ diff --git a/chrome/browser/preferences/BUILD.gn b/chrome/browser/preferences/BU
diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
--- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
+++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
@@ -262,6 +262,7 @@ public final class ChromePreferenceKeys {
@@ -274,6 +274,7 @@ public final class ChromePreferenceKeys {
/** Whether the app-specific history info text was already seen by users. */
public static final String HISTORY_APP_SPECIFIC_INFO_SEEN =
"Chrome.History.AppSpecificInfoSeen";
@@ -395,26 +351,26 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro
diff --git a/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/AppHeaderCoordinator.java b/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/AppHeaderCoordinator.java
--- a/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/AppHeaderCoordinator.java
+++ b/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/AppHeaderCoordinator.java
@@ -34,6 +34,7 @@ import org.chromium.chrome.browser.ui.desktop_windowing.AppHeaderUtils.DesktopWi
@@ -35,6 +35,7 @@ import org.chromium.chrome.browser.ui.desktop_windowing.AppHeaderUtils.Windowing
import org.chromium.components.browser_ui.desktop_windowing.AppHeaderState;
import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateManager;
import org.chromium.components.browser_ui.edge_to_edge.EdgeToEdgeStateProvider;
+import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.ui.InsetObserver;
import org.chromium.ui.InsetObserver.WindowInsetObserver;
import org.chromium.ui.InsetObserver.WindowInsetsConsumer;
import org.chromium.ui.InsetsRectProvider;
@@ -273,6 +274,7 @@ public class AppHeaderCoordinator
InsetObserver insetObserver,
@@ -259,6 +260,7 @@ public class AppHeaderCoordinator
private static @DesktopWindowHeuristicResult int checkIsInDesktopWindow(
InsetsRectProvider insetsRectProvider,
@DesktopWindowHeuristicResult int currentResult) {
+ if (DeviceFormFactor.isForceTabletUI()) return DesktopWindowHeuristicResult.IN_DESKTOP_WINDOW;
@DesktopWindowHeuristicResult int newResult;
assert insetObserver.getLastRawWindowInsets() != null
Insets captionBarInset = insetsRectProvider.getCachedInset();
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java
@@ -786,7 +786,7 @@ public class LocationBarCoordinator
@@ -814,7 +814,7 @@ public class LocationBarCoordinator
}
private boolean isTabletWindow() {
@@ -479,15 +435,6 @@ diff --git a/chrome/browser/ui/android/toolbar/java/res/layout/control_container
android:layout_width="match_parent"
android:layout_height="@dimen/toolbar_height_no_shadow"
android:layout="@layout/find_toolbar" />
@@ -55,7 +55,7 @@ found in the LICENSE file.
android:id="@+id/target_view_stub"
android:inflatedId="@+id/toolbar_drag_drop_target_view"
android:layout_width="match_parent"
- android:layout_marginTop="@dimen/tab_strip_height"
+ android:layout_marginTop="@dimen/tab_strip_height_cromite"
android:layout_height="@dimen/toolbar_height_no_shadow"
android:layout="@layout/drag_drop_target_view" />
</org.chromium.chrome.browser.toolbar.top.ToolbarControlContainer>
diff --git a/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_tablet.xml b/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_tablet.xml
--- a/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_tablet.xml
+++ b/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_tablet.xml
@@ -616,7 +563,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
import org.chromium.ui.resources.dynamics.DynamicResourceReadyOnceCallback;
import org.chromium.ui.util.TokenHolder;
@@ -542,6 +543,7 @@ class HeightTransitionHandler {
@@ -544,6 +545,7 @@ class HeightTransitionHandler {
if (TabStripTransitionCoordinator.sHeightTransitionThresholdForTesting != null) {
return TabStripTransitionCoordinator.sHeightTransitionThresholdForTesting;
}
@@ -627,7 +574,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/tab_strip/TabStripTransitionCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/tab_strip/TabStripTransitionCoordinator.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/tab_strip/TabStripTransitionCoordinator.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/tab_strip/TabStripTransitionCoordinator.java
@@ -27,6 +27,7 @@ import org.chromium.chrome.browser.ui.desktop_windowing.AppHeaderUtils;
@@ -28,6 +28,7 @@ import org.chromium.chrome.browser.ui.desktop_windowing.AppHeaderUtils;
import org.chromium.components.browser_ui.desktop_windowing.AppHeaderState;
import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateManager;
import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateManager.AppHeaderObserver;
@@ -662,10 +609,54 @@ diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibil
<Preference
android:key="captions"
android:title="@string/accessibility_captions_title"/>
diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java
--- a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java
+++ b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java
@@ -25,6 +25,7 @@ import org.chromium.content_public.browser.ContentFeatureList;
import org.chromium.content_public.browser.ContentFeatureMap;
import org.chromium.chrome.browser.settings.ChromeBaseSettingsFragment;
+import org.chromium.components.browser_ui.accessibility.AccessibilitySettingsDelegate.BooleanPreferenceDelegate;
/** Fragment to keep track of all the accessibility related preferences. */
public class AccessibilitySettings extends ChromeBaseSettingsFragment
@@ -39,6 +40,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
public static final String PREF_ZOOM_INFO = "zoom_info";
public static final String PREF_IMAGE_DESCRIPTIONS = "image_descriptions";
+ private BooleanPreferenceDelegate mForceTabletUIDelegate;
+ static final String PREF_FORCE_TABLET_UI = "force_tablet_ui";
+
private PageZoomPreference mPageZoomDefaultZoomPref;
private ChromeSwitchPreference mPageZoomIncludeOSAdjustment;
private ChromeSwitchPreference mPageZoomAlwaysShowPref;
@@ -105,6 +109,12 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
mDelegate.getReaderAccessibilityDelegate().getValue());
readerForAccessibilityPref.setOnPreferenceChangeListener(this);
+ ChromeSwitchPreference forceTabletUiPref =
+ (ChromeSwitchPreference) findPreference(PREF_FORCE_TABLET_UI);
+ mForceTabletUIDelegate = mDelegate.getForceTabletUIDelegate();
+ forceTabletUiPref.setChecked(mForceTabletUIDelegate.isEnabled());
+ forceTabletUiPref.setOnPreferenceChangeListener(this);
+
Preference captions = findPreference(PREF_CAPTIONS);
captions.setOnPreferenceClickListener(
preference -> {
@@ -165,6 +175,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (PREF_FORCE_ENABLE_ZOOM.equals(preference.getKey())) {
mDelegate.getForceEnableZoomAccessibilityDelegate().setValue((Boolean) newValue);
+ } else if (PREF_FORCE_TABLET_UI.equals(preference.getKey())) {
+ mForceTabletUIDelegate.setEnabled((Boolean) newValue);
+ mDelegate.requestRestart(getActivity());
} else if (PREF_READER_FOR_ACCESSIBILITY.equals(preference.getKey())) {
mDelegate.getReaderAccessibilityDelegate().setValue((Boolean) newValue);
} else if (PREF_PAGE_ZOOM_DEFAULT_ZOOM.equals(preference.getKey())) {
diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java
--- a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java
+++ b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java
@@ -11,6 +11,15 @@ import org.chromium.content_public.browser.BrowserContextHandle;
@@ -12,6 +12,15 @@ import org.chromium.content_public.browser.BrowserContextHandle;
* embedder-specific logic.
*/
public interface AccessibilitySettingsDelegate {
@@ -681,21 +672,21 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c
/** An interface to control a single integer preference. */
interface IntegerPreferenceDelegate {
/**
@@ -25,6 +34,8 @@ public interface AccessibilitySettingsDelegate {
/** @return The BrowserContextHandle that should be used to read and update settings. */
@@ -39,6 +48,8 @@ public interface AccessibilitySettingsDelegate {
*/
BrowserContextHandle getBrowserContextHandle();
+ BooleanPreferenceDelegate getForceTabletUIDelegate();
+
/**
* @return the InterPreferenceDelegate instance that should be used for reading and setting the
* text size contrast value for accessibility settings. Return null to omit the preference.
* @return boolean value specifying if the Image Descriptions user setting should be shown.
*/
diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java
--- a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java
+++ b/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java
@@ -49,6 +49,14 @@ public class DeviceFormFactor {
/** See {@link #setIsTabletForTesting(boolean)}. */
private static Boolean sIsTabletForTesting;
@@ -69,6 +69,14 @@ public class DeviceFormFactor {
return BuildConfig.IS_DESKTOP_ANDROID;
}
+ private static boolean mForceTabletUI = false;
+ public static void setForceTabletUI(boolean forceTabletUI) {
@@ -708,7 +699,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui
/**
* Each activity could be on a different display, and this will just tell you whether the
* display associated with the application context is "tablet sized". Use {@link
@@ -57,6 +65,7 @@ public class DeviceFormFactor {
@@ -77,6 +85,7 @@ public class DeviceFormFactor {
@CalledByNative
@Deprecated
public static boolean isTablet() {
@@ -716,7 +707,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui
if (sIsTabletForTesting != null) {
return sIsTabletForTesting;
}
@@ -87,6 +96,7 @@ public class DeviceFormFactor {
@@ -107,6 +116,7 @@ public class DeviceFormFactor {
* E.g. http://developer.samsung.com/samsung-dex/testing
*/
public static boolean isNonMultiDisplayContextOnTablet(Context context) {
@@ -724,7 +715,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui
return detectScreenWidthBucket(context) >= SCREEN_BUCKET_TABLET;
}
@@ -122,6 +132,7 @@ public class DeviceFormFactor {
@@ -142,6 +152,7 @@ public class DeviceFormFactor {
* @return The screen width bucket the device is in (see constants at the top of this class).
*/
private static int detectScreenWidthBucket(Context context) {
@@ -732,7 +723,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui
return context.getResources().getInteger(R.integer.min_screen_width_bucket);
}
@@ -129,6 +140,7 @@ public class DeviceFormFactor {
@@ -149,6 +160,7 @@ public class DeviceFormFactor {
ThreadUtils.assertOnUiThread();
Context context = windowAndroid.getContext().get();
if (context == null) return 0;
@@ -740,7 +731,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui
return context.getResources().getInteger(R.integer.min_screen_width_bucket);
}
@@ -138,6 +150,7 @@ public class DeviceFormFactor {
@@ -158,6 +170,7 @@ public class DeviceFormFactor {
*/
@UiThread
public static int getNonMultiDisplayMinimumTabletWidthPx(Context context) {
@@ -748,7 +739,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui
return getMinimumTabletWidthPx(DisplayAndroid.getNonMultiDisplay(context));
}
@@ -146,6 +159,7 @@ public class DeviceFormFactor {
@@ -166,6 +179,7 @@ public class DeviceFormFactor {
* layout.
*/
public static int getMinimumTabletWidthPx(DisplayAndroid display) {
@@ -7,7 +7,6 @@ And allow use about:blank as default homepage
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../tasks/tab_management/TabGroupUiMediator.java | 8 +++++++-
.../browser/tasks/tab_management/TabUiUtils.java | 9 ++++++++-
.../java/res/xml/homepage_preferences.xml | 5 +++++
.../chrome/browser/homepage/HomepageManager.java | 16 ++++++++++++++++
.../homepage/settings/HomepageSettings.java | 12 ++++++++++++
@@ -15,15 +14,16 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../browser/tabmodel/ChromeTabCreator.java | 8 ++++++++
.../preferences/ChromePreferenceKeys.java | 1 +
.../preferences/LegacyChromePreferenceKeys.java | 1 +
.../chrome/browser/tabmodel/TabGroupUtils.java | 8 ++++++++
.../android/strings/android_chrome_strings.grd | 3 +++
chrome/browser/ui/browser_ui_prefs.cc | 2 ++
chrome/common/pref_names.h | 4 ++++
12 files changed, 67 insertions(+), 3 deletions(-)
12 files changed, 67 insertions(+), 2 deletions(-)
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java
@@ -22,6 +22,7 @@ import org.chromium.base.supplier.OneshotSupplier;
@@ -25,6 +25,7 @@ import org.chromium.chrome.browser.collaboration.CollaborationServiceFactory;
import org.chromium.chrome.browser.data_sharing.DataSharingServiceFactory;
import org.chromium.chrome.browser.data_sharing.ui.shared_image_tiles.SharedImageTilesCoordinator;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
@@ -31,7 +31,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
import org.chromium.chrome.browser.layouts.LayoutStateProvider;
import org.chromium.chrome.browser.layouts.LayoutStateProvider.LayoutStateObserver;
import org.chromium.chrome.browser.layouts.LayoutType;
@@ -408,10 +409,15 @@ public class TabGroupUiMediator implements BackPressHandler, ThemeColorObserver,
@@ -367,10 +368,15 @@ public class TabGroupUiMediator implements BackPressHandler, ThemeColorObserver,
assert relatedTabs.size() > 0;
Tab parentTabToAttach = relatedTabs.get(relatedTabs.size() - 1);
@@ -48,33 +48,6 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
TabLaunchType.FROM_TAB_GROUP_UI,
parentTabToAttach);
RecordUserAction.record(
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiUtils.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiUtils.java
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiUtils.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiUtils.java
@@ -48,6 +48,8 @@ import org.chromium.components.tab_groups.TabGroupColorId;
import org.chromium.content_public.browser.LoadUrlParams;
import org.chromium.ui.modaldialog.ModalDialogManager;
import org.chromium.ui.modaldialog.ModalDialogUtils;
+import org.chromium.chrome.browser.homepage.HomepageManager;
+import org.chromium.url.GURL;
import java.util.List;
@@ -210,8 +212,13 @@ public class TabUiUtils {
List<Tab> relatedTabs = filter.getRelatedTabList(tabId);
assert relatedTabs.size() > 0;
+ String url = UrlConstants.NTP_URL;
+ if (HomepageManager.getInstance().getPrefNTPIsHomepageEnabled()) {
+ GURL gurl = HomepageManager.getInstance().getHomepageGurl();
+ url = gurl != null ? gurl.getSpec() : url;
+ }
Tab parentTabToAttach = relatedTabs.get(relatedTabs.size() - 1);
- tabCreator.createNewTab(new LoadUrlParams(UrlConstants.NTP_URL), type, parentTabToAttach);
+ tabCreator.createNewTab(new LoadUrlParams(url), type, parentTabToAttach);
}
/**
diff --git a/chrome/android/java/res/xml/homepage_preferences.xml b/chrome/android/java/res/xml/homepage_preferences.xml
--- a/chrome/android/java/res/xml/homepage_preferences.xml
+++ b/chrome/android/java/res/xml/homepage_preferences.xml
@@ -155,7 +128,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settin
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java b/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java
@@ -112,7 +112,6 @@ public class LaunchMetrics {
@@ -113,7 +113,6 @@ public class LaunchMetrics {
public static void recordHomePageLaunchMetrics(
boolean showHomeButton, boolean homepageIsNtp, GURL homepageGurl) {
if (homepageGurl.isEmpty()) {
@@ -174,7 +147,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
import org.chromium.chrome.browser.prefetch.settings.PreloadPagesSettingsBridge;
import org.chromium.chrome.browser.prefetch.settings.PreloadPagesState;
import org.chromium.chrome.browser.profiles.Profile;
@@ -492,6 +493,13 @@ public class ChromeTabCreator extends TabCreator {
@@ -485,6 +486,13 @@ public class ChromeTabCreator extends TabCreator {
* @return the created tab.
*/
public Tab launchUrl(String url, @TabLaunchType int type, Intent intent, long intentTimestamp) {
@@ -191,7 +164,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
--- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
+++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
@@ -275,6 +275,7 @@ public final class ChromePreferenceKeys {
@@ -287,6 +287,7 @@ public final class ChromePreferenceKeys {
public static final String HOMEPAGE_USE_CHROME_NTP = "Chrome.Homepage.UseNTP";
public static final String HOMEPAGE_USE_DEFAULT_URI = "homepage_partner_enabled";
@@ -210,10 +183,35 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro
ChromePreferenceKeys.INCOGNITO_SHORTCUT_ADDED,
ChromePreferenceKeys.LATEST_UNSUPPORTED_VERSION,
ChromePreferenceKeys.LOCALE_MANAGER_AUTO_SWITCH,
diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabGroupUtils.java b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabGroupUtils.java
--- a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabGroupUtils.java
+++ b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabGroupUtils.java
@@ -7,6 +7,8 @@ package org.chromium.chrome.browser.tabmodel;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabLaunchType;
import org.chromium.content_public.browser.LoadUrlParams;
+import org.chromium.chrome.browser.homepage.HomepageManager;
+import org.chromium.url.GURL;
import java.util.List;
@@ -65,6 +67,12 @@ public class TabGroupUtils {
List<Tab> relatedTabs = tabGroupModelFilter.getRelatedTabList(parentId);
if (relatedTabs.isEmpty()) return;
+ if (UrlConstants.NTP_URL.equals(url)
+ && HomepageManager.getInstance().getPrefNTPIsHomepageEnabled()) {
+ GURL gurl = HomepageManager.getInstance().getHomepageGurl();
+ url = gurl != null ? gurl.getSpec() : url;
+ }
+
Tab lastTab = relatedTabs.get(relatedTabs.size() - 1);
TabCreator tabCreator = tabGroupModelFilter.getTabModel().getTabCreator();
LoadUrlParams loadUrlParams = new LoadUrlParams(url);
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -1520,6 +1520,9 @@ Your Google account may have other forms of browsing history like searches and a
@@ -1528,6 +1528,9 @@ Your Google account may have other forms of browsing history like searches and a
<message name="IDS_CLEAR_BROWSING_DATA_TAB_PERIOD_HOUR" desc="The option to delete browsing data from the last hour.">
Last hour
</message>
@@ -226,7 +224,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc
--- a/chrome/browser/ui/browser_ui_prefs.cc
+++ b/chrome/browser/ui/browser_ui_prefs.cc
@@ -89,6 +89,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
@@ -91,6 +91,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterBooleanPref(
prefs::kShowForwardButton, true,
GetHomeAndForwardButtonAndHomePageIsNewTabPageFlags());
@@ -238,7 +236,7 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
--- a/chrome/common/pref_names.h
+++ b/chrome/common/pref_names.h
@@ -1339,6 +1339,10 @@ inline constexpr char kShowHomeButton[] = "browser.show_home_button";
@@ -1342,6 +1342,10 @@ inline constexpr char kShowHomeButton[] = "browser.show_home_button";
// toolbar.
inline constexpr char kShowForwardButton[] = "browser.show_forward_button";
@@ -14,7 +14,6 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../chrome_browsing_data_lifetime_manager.cc | 22 +++++-
.../chrome_browsing_data_remover_constants.h | 3 +-
.../chrome_browsing_data_remover_delegate.cc | 14 ++++
chrome/browser/dips/dips_service_impl.cc | 3 +-
.../api/settings_private/prefs_util.cc | 17 +++++
.../browser/profiles/ProfileManagerUtils.java | 5 ++
.../profiles/android/profile_manager_utils.cc | 5 ++
@@ -32,14 +31,15 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
components/browsing_data/core/pref_names.cc | 17 +++++
components/browsing_data/core/pref_names.h | 10 +++
.../search_engines/template_url_service.cc | 1 +
content/browser/dips/dips_service_impl.cc | 2 +-
content/browser/storage_partition_impl.cc | 1 +
29 files changed, 324 insertions(+), 23 deletions(-)
29 files changed, 323 insertions(+), 23 deletions(-)
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragmentAtStart.java
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
--- a/chrome/android/chrome_java_sources.gni
+++ b/chrome/android/chrome_java_sources.gni
@@ -309,6 +309,7 @@ chrome_java_sources = [
@@ -316,6 +316,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragmentAdvanced.java",
"java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragmentBasic.java",
"java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataTabsFragment.java",
@@ -50,7 +50,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -180,6 +180,7 @@ import org.chromium.chrome.browser.profiles.ProfileProvider;
@@ -184,6 +184,7 @@ import org.chromium.chrome.browser.profiles.ProfileProvider;
import org.chromium.chrome.browser.quick_delete.QuickDeleteController;
import org.chromium.chrome.browser.quick_delete.QuickDeleteDelegateImpl;
import org.chromium.chrome.browser.quick_delete.QuickDeleteMetricsDelegate;
@@ -58,7 +58,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
import org.chromium.chrome.browser.read_later.ReadingListBackPressHandler;
import org.chromium.chrome.browser.recent_tabs.CrossDevicePaneFactory;
import org.chromium.chrome.browser.reengagement.ReengagementNotificationController;
@@ -1590,7 +1591,11 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
@@ -1652,7 +1653,11 @@ public class ChromeTabbedActivity extends ChromeActivity implements MismatchedIn
Intent intent = getIntent();
boolean hadCipherData =
@@ -74,7 +74,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java
@@ -456,6 +456,10 @@ public abstract class ClearBrowsingDataFragment extends PreferenceFragmentCompat
@@ -475,6 +475,10 @@ public abstract class ClearBrowsingDataFragment extends ChromeBaseSettingsFragme
/** Returns whether is a basic or advanced Clear Browsing Data tab. */
protected abstract @ClearBrowsingDataTab int getClearBrowsingDataTabType();
@@ -85,7 +85,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C
/**
* Decides whether a given dialog option should be selected when the dialog is initialized.
*
@@ -534,6 +538,7 @@ public abstract class ClearBrowsingDataFragment extends PreferenceFragmentCompat
@@ -555,6 +559,7 @@ public abstract class ClearBrowsingDataFragment extends ChromeBaseSettingsFragme
* options.
*/
private void onClearButtonClicked() {
@@ -93,7 +93,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C
if (shouldShowImportantSitesDialog()) {
showImportantDialogThenClear();
return;
@@ -566,6 +571,7 @@ public abstract class ClearBrowsingDataFragment extends PreferenceFragmentCompat
@@ -585,6 +590,7 @@ public abstract class ClearBrowsingDataFragment extends ChromeBaseSettingsFragme
Button clearButton = (Button) getView().findViewById(R.id.clear_button);
boolean isEnabled = !getSelectedOptions().isEmpty();
clearButton.setEnabled(isEnabled);
@@ -192,7 +192,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C
private Profile mProfile;
private ClearBrowsingDataFetcher mFetcher;
@@ -117,6 +117,8 @@ public class ClearBrowsingDataTabsFragment extends Fragment
@@ -115,6 +115,8 @@ public class ClearBrowsingDataTabsFragment extends Fragment
return getActivity().getString(R.string.clear_browsing_data_basic_tab_title);
case 1:
return getActivity().getString(R.string.prefs_section_advanced);
@@ -201,7 +201,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C
default:
throw new RuntimeException("invalid position: " + position);
}
@@ -167,6 +169,9 @@ public class ClearBrowsingDataTabsFragment extends Fragment
@@ -166,6 +168,9 @@ public class ClearBrowsingDataTabsFragment extends Fragment
case 1:
fragment = new ClearBrowsingDataFragmentAdvanced();
break;
@@ -214,7 +214,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp
--- a/chrome/app/settings_strings.grdp
+++ b/chrome/app/settings_strings.grdp
@@ -2324,6 +2324,16 @@
@@ -2220,6 +2220,16 @@
<message name="IDS_SETTINGS_CLEAR_BROWSING_DATA" desc="Text for delete browsing data button in Privacy options">
Delete browsing data
</message>
@@ -234,13 +234,13 @@ diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp
diff --git a/chrome/browser/android/browsing_data/browsing_data_bridge.cc b/chrome/browser/android/browsing_data/browsing_data_bridge.cc
--- a/chrome/browser/android/browsing_data/browsing_data_bridge.cc
+++ b/chrome/browser/android/browsing_data/browsing_data_bridge.cc
@@ -340,7 +340,7 @@ static void JNI_BrowsingDataBridge_SetLastClearBrowsingDataTab(
const JavaParamRef<jobject>& jprofile,
jint tab_index) {
@@ -304,7 +304,7 @@ static void JNI_BrowsingDataBridge_SetLastClearBrowsingDataTab(JNIEnv* env,
Profile* profile,
jint tab_index) {
DCHECK_GE(tab_index, 0);
- DCHECK_LT(tab_index, 2);
+ DCHECK_LT(tab_index, 3);
GetPrefService(jprofile)->SetInteger(
GetPrefService(profile)->SetInteger(
browsing_data::prefs::kLastClearBrowsingDataTab, tab_index);
}
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.cc b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.cc
@@ -298,7 +298,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_constants
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
--- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
+++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
@@ -464,6 +464,9 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
@@ -462,6 +462,9 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
CreateTaskCompletionClosure(TracingDataType::kHistory),
&history_task_tracker_);
}
@@ -308,7 +308,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.
if (ClipboardRecentContent::GetInstance())
ClipboardRecentContent::GetInstance()->SuppressClipboardContent();
@@ -572,6 +575,11 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
@@ -570,6 +573,11 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
// and SSL host state are scoped to hosts and represent them as std::string.
// Rename the method to indicate its more general usage.
if (profile_->GetSSLHostStateDelegate()) {
@@ -320,7 +320,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.
profile_->GetSSLHostStateDelegate()->Clear(
filter_builder->MatchesAllOriginsAndDomains()
? base::RepeatingCallback<bool(const std::string&)>()
@@ -600,9 +608,13 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
@@ -598,9 +606,13 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
}
device_event_log::Clear(delete_begin_, delete_end_);
@@ -334,7 +334,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.
content::BackgroundTracingManager::GetInstance().DeleteTracesInDateRange(
delete_begin_, delete_end_);
@@ -1302,6 +1314,8 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
@@ -1281,6 +1293,8 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
if (should_clear_zero_suggest_and_session_token && template_url_service)
template_url_service->ClearSessionToken();
@@ -343,30 +343,10 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.
}
//////////////////////////////////////////////////////////////////////////////
diff --git a/chrome/browser/dips/dips_service_impl.cc b/chrome/browser/dips/dips_service_impl.cc
--- a/chrome/browser/dips/dips_service_impl.cc
+++ b/chrome/browser/dips/dips_service_impl.cc
@@ -26,6 +26,7 @@
#include "base/time/time.h"
#include "base/types/pass_key.h"
#include "chrome/browser/chrome_content_browser_client.h"
+#include "chrome/browser/browsing_data/chrome_browsing_data_remover_constants.h"
#include "chrome/browser/dips/chrome_dips_delegate.h"
#include "chrome/browser/dips/dips_redirect_info.h"
#include "chrome/browser/dips/dips_service_factory.h"
@@ -195,7 +196,7 @@ class StateClearer : public content::BrowsingDataRemover::Observer {
}
remover->RemoveWithFilterAndReply(
base::Time::Min(), base::Time::Max(),
- remove_mask |
+ remove_mask | chrome_browsing_data_remover::DATA_TYPE_SKIP_SSL_HOST_STATE |
content::BrowsingDataRemover::DATA_TYPE_AVOID_CLOSING_CONNECTIONS,
content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB |
content::BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB,
diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chrome/browser/extensions/api/settings_private/prefs_util.cc
--- a/chrome/browser/extensions/api/settings_private/prefs_util.cc
+++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc
@@ -540,6 +540,23 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() {
@@ -535,6 +535,23 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() {
(*s_allowlist)[browsing_data::prefs::kLastClearBrowsingDataTab] =
settings_api::PrefType::kNumber;
@@ -424,7 +404,7 @@ diff --git a/chrome/browser/profiles/android/profile_manager_utils.cc b/chrome/b
diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc
--- a/chrome/browser/profiles/profile_manager.cc
+++ b/chrome/browser/profiles/profile_manager.cc
@@ -1428,6 +1428,19 @@ void ProfileManager::DoFinalInit(ProfileInfo* profile_info,
@@ -1427,6 +1427,19 @@ void ProfileManager::DoFinalInit(ProfileInfo* profile_info,
}
}
@@ -444,7 +424,7 @@ diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profile
void ProfileManager::DoFinalInitForServices(Profile* profile,
bool go_off_the_record) {
if (!do_final_services_init_ ||
@@ -2114,7 +2127,7 @@ void ProfileManager::OnBrowserClosed(Browser* browser) {
@@ -2109,7 +2122,7 @@ void ProfileManager::OnBrowserClosed(Browser* browser) {
Profile* original_profile = profile->GetOriginalProfile();
// Do nothing if the closed window is not the last window of the same profile.
for (Browser* browser_iter : *BrowserList::GetInstance()) {
@@ -468,7 +448,7 @@ diff --git a/chrome/browser/profiles/profile_manager.h b/chrome/browser/profiles
diff --git a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.html b/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.html
--- a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.html
+++ b/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.html
@@ -318,6 +318,50 @@
@@ -297,6 +297,50 @@
disabled="[[clearingInProgress_]]" no-set-pref>
</settings-checkbox>
</div>
@@ -522,7 +502,7 @@ diff --git a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_
diff --git a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.ts b/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.ts
--- a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.ts
+++ b/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.ts
@@ -297,6 +297,7 @@ export class SettingsClearBrowsingDataDialogElement extends
@@ -239,6 +239,7 @@ export class SettingsClearBrowsingDataDialogElement extends
value: () =>
[loadTimeData.getString('basicPageTitle'),
loadTimeData.getString('advancedPageTitle'),
@@ -530,7 +510,7 @@ diff --git a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_
],
},
@@ -423,6 +424,7 @@ export class SettingsClearBrowsingDataDialogElement extends
@@ -363,6 +364,7 @@ export class SettingsClearBrowsingDataDialogElement extends
}
this.clearButtonDisabled_ =
this.getSelectedDataTypes_(page as HTMLElement).length === 0;
@@ -541,7 +521,7 @@ diff --git a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -1454,7 +1454,7 @@ For example, some websites may respond to this request by showing you ads that a
@@ -1462,7 +1462,7 @@ For example, some websites may respond to this request by showing you ads that a
Delete browsing data
</message>
<message name="IDS_CLEAR_BROWSING_DATA_SUMMARY" desc="Summary of the settings item that opens the Delete Browsing Data dialog.">
@@ -550,7 +530,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
</message>
<message name="IDS_CLEAR_BROWSING_DATA_HISTORY_DIALOG_TITLE" desc="Title of a dialog that is shown after the deletion of browsing history finished.">
Deleted Chrome data
@@ -1615,6 +1615,9 @@ Your Google account may have other forms of browsing history like searches and a
@@ -1623,6 +1623,9 @@ Your Google account may have other forms of browsing history like searches and a
<message name="IDS_ANDROID_APP_HISTORY_OPEN_FULL_OTHER_FORMS" desc="The informational message at the top of the history page letting users know that app-specific history may be missing some entries, followed by the info on the other forms of browing history.">
Some of your history might not show up here. To see all your Chrome history, open full Chrome history. Also, your Google Account may have other forms of browsing history at <ph name="BEGIN_LINK">&lt;link&gt;</ph>myactivity.google.com<ph name="END_LINK">&lt;/link&gt;</ph>.
</message>
@@ -563,7 +543,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
--- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -1839,6 +1839,7 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source,
@@ -1895,6 +1895,7 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source,
{"clearedData", IDS_SETTINGS_CLEARED_DATA},
{"clearBrowsingData", IDS_SETTINGS_CLEAR_BROWSING_DATA},
{"clearBrowsingDataDescription", IDS_SETTINGS_CLEAR_DATA_DESCRIPTION},
@@ -574,7 +554,7 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide
diff --git a/components/browsing_data/content/browsing_data_helper.cc b/components/browsing_data/content/browsing_data_helper.cc
--- a/components/browsing_data/content/browsing_data_helper.cc
+++ b/components/browsing_data/content/browsing_data_helper.cc
@@ -40,8 +40,13 @@ bool WebsiteSettingsFilterAdapter(
@@ -39,8 +39,13 @@ bool WebsiteSettingsFilterAdapter(
// this filter is used for is DURABLE_STORAGE, which also only uses
// origin-scoped patterns. Such patterns can be directly translated to a GURL.
GURL url(primary_pattern.ToString());
@@ -649,7 +629,7 @@ diff --git a/components/browsing_data/core/browsing_data_policies_utils.h b/comp
diff --git a/components/browsing_data/core/browsing_data_utils.cc b/components/browsing_data/core/browsing_data_utils.cc
--- a/components/browsing_data/core/browsing_data_utils.cc
+++ b/components/browsing_data/core/browsing_data_utils.cc
@@ -347,6 +347,37 @@ bool GetDeletionPreferenceFromDataType(
@@ -346,6 +346,37 @@ bool GetDeletionPreferenceFromDataType(
BrowsingDataType data_type,
ClearBrowsingDataTab clear_browsing_data_tab,
std::string* out_pref) {
@@ -702,7 +682,7 @@ diff --git a/components/browsing_data/core/clear_browsing_data_tab.h b/component
diff --git a/components/browsing_data/core/pref_names.cc b/components/browsing_data/core/pref_names.cc
--- a/components/browsing_data/core/pref_names.cc
+++ b/components/browsing_data/core/pref_names.cc
@@ -65,6 +65,23 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
@@ -63,6 +63,23 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterIntegerPref(
kClearBrowsingDataHistoryNoticeShownTimes, 0);
@@ -749,7 +729,7 @@ diff --git a/components/browsing_data/core/pref_names.h b/components/browsing_da
diff --git a/components/search_engines/template_url_service.cc b/components/search_engines/template_url_service.cc
--- a/components/search_engines/template_url_service.cc
+++ b/components/search_engines/template_url_service.cc
@@ -777,6 +777,7 @@ void TemplateURLService::RemoveAutoGeneratedForUrlsBetween(
@@ -778,6 +778,7 @@ void TemplateURLService::RemoveAutoGeneratedForUrlsBetween(
if (turl->date_created() >= created_after &&
(created_before.is_null() || turl->date_created() < created_before) &&
turl->safe_for_autoreplace() && turl->prepopulate_id() == 0 &&
@@ -757,10 +737,22 @@ diff --git a/components/search_engines/template_url_service.cc b/components/sear
turl->starter_pack_id() == 0 && !MatchesDefaultSearchProvider(turl) &&
(url_filter.is_null() ||
url_filter.Run(turl->GenerateSearchURL(search_terms_data())))) {
diff --git a/content/browser/dips/dips_service_impl.cc b/content/browser/dips/dips_service_impl.cc
--- a/content/browser/dips/dips_service_impl.cc
+++ b/content/browser/dips/dips_service_impl.cc
@@ -198,7 +198,7 @@ class StateClearer : public content::BrowsingDataRemover::Observer {
remove_mask &= ~content::BrowsingDataRemover::DATA_TYPE_PRIVACY_SANDBOX;
remover->RemoveWithFilterAndReply(
base::Time::Min(), base::Time::Max(),
- remove_mask |
+ remove_mask | chrome_browsing_data_remover::DATA_TYPE_SKIP_SSL_HOST_STATE |
content::BrowsingDataRemover::DATA_TYPE_AVOID_CLOSING_CONNECTIONS,
content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB |
content::BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB,
diff --git a/content/browser/storage_partition_impl.cc b/content/browser/storage_partition_impl.cc
--- a/content/browser/storage_partition_impl.cc
+++ b/content/browser/storage_partition_impl.cc
@@ -1499,6 +1499,7 @@ void StoragePartitionImpl::Initialize(
@@ -1529,6 +1529,7 @@ void StoragePartitionImpl::Initialize(
.AppendASCII("Code Cache");
}
DCHECK_GE(settings.size_in_bytes(), 0);
@@ -10,7 +10,6 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../AwContextMenuItemDelegate.java | 4 +++
chrome/android/java/res/values/ids.xml | 1 +
.../settings/AccessibilitySettings.java | 12 +++++++
.../ChromeAccessibilitySettingsDelegate.java | 18 ++++++++++
.../contextmenu/ChromeContextMenuItem.java | 5 ++-
.../ChromeContextMenuPopulator.java | 5 +++
@@ -19,6 +18,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../browser/flags/ChromeFeatureList.java | 5 +++
.../strings/android_chrome_strings.grd | 9 +++++
.../res/xml/accessibility_preferences.xml | 5 +++
.../accessibility/AccessibilitySettings.java | 12 +++++++
.../AccessibilitySettingsDelegate.java | 2 ++
.../contextmenu/ContextMenuItemDelegate.java | 3 ++
...Add-setting-to-invert-tap-and-long-tap.inc | 8 +++++
@@ -67,46 +67,10 @@ diff --git a/chrome/android/java/res/values/ids.xml b/chrome/android/java/res/va
<!-- Tags -->
<item type="id" name="highlight_color" />
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java
@@ -59,6 +59,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
private BooleanPreferenceDelegate mMoveTopToolbarToBottomDelegate;
private BooleanPreferenceDelegate mDisableToolbarSwipeUpDelegate;
+ static final String PREF_ALWAYS_SHOW_CONTEXTMENU_ON_LINKS = "always_show_contextmenu_on_links";
+ private BooleanPreferenceDelegate mShowAlwaysContextMenuOnLinksDelegate;
+
private PageZoomPreference mPageZoomDefaultZoomPref;
private ChromeSwitchPreference mPageZoomIncludeOSAdjustment;
private ChromeSwitchPreference mPageZoomAlwaysShowPref;
@@ -155,6 +158,12 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
mDisableToolbarSwipeUpPref.setChecked(mDisableToolbarSwipeUpDelegate.isEnabled());
mDisableToolbarSwipeUpPref.setOnPreferenceChangeListener(this);
+ ChromeSwitchPreference mShowAlwaysContextMenuOnLinksPref =
+ (ChromeSwitchPreference) findPreference(PREF_ALWAYS_SHOW_CONTEXTMENU_ON_LINKS);
+ mShowAlwaysContextMenuOnLinksDelegate = mDelegate.getShowAlwaysContextMenuOnLinksDelegate();
+ mShowAlwaysContextMenuOnLinksPref.setChecked(mShowAlwaysContextMenuOnLinksDelegate.isEnabled());
+ mShowAlwaysContextMenuOnLinksPref.setOnPreferenceChangeListener(this);
+
Preference captions = findPreference(PREF_CAPTIONS);
captions.setOnPreferenceClickListener(
preference -> {
@@ -233,6 +242,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
mDelegate.requestRestart(getActivity());
} else if (PREF_DISABLE_TOOLBAR_SWIPE_UP.equals(preference.getKey())) {
mDisableToolbarSwipeUpDelegate.setEnabled((Boolean) newValue);
+ } else if (PREF_ALWAYS_SHOW_CONTEXTMENU_ON_LINKS.equals(preference.getKey())) {
+ mShowAlwaysContextMenuOnLinksDelegate.setEnabled((Boolean) newValue);
+ mDelegate.requestRestart(getActivity());
} else if (PREF_PAGE_ZOOM_INCLUDE_OS_ADJUSTMENT.equals(preference.getKey())) {
// TODO(mschillaci): Implement the override behavior for OS level.
} else if (OmniboxFeatures.KEY_JUMP_START_OMNIBOX.equals(preference.getKey())) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java
@@ -137,6 +137,24 @@ public class ChromeAccessibilitySettingsDelegate implements AccessibilitySetting
@@ -162,6 +162,24 @@ public class ChromeAccessibilitySettingsDelegate implements AccessibilitySetting
mSnackbarManagerSupplier.get().showSnackbar(mSnackbar);
}
@@ -164,7 +128,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
@@ -275,6 +275,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
@@ -337,6 +337,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
if (mParams.isAnchor()) {
ModelList linkGroup = new ModelList();
@@ -174,7 +138,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr
if (FirstRunStatus.getFirstRunFlowComplete()
&& !isEmptyUrl(mParams.getUrl())
&& UrlUtilities.isAcceptedScheme(mParams.getUrl())) {
@@ -657,6 +660,8 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
@@ -725,6 +728,8 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
getProfile(),
false);
});
@@ -186,7 +150,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java
@@ -326,6 +326,14 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate {
@@ -301,6 +301,14 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate {
mTab.loadUrl(loadUrlParams);
}
@@ -204,18 +168,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextM
diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
--- a/chrome/browser/flags/android/chrome_feature_list.cc
+++ b/chrome/browser/flags/android/chrome_feature_list.cc
@@ -325,6 +325,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
@@ -340,6 +340,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
&kTabDragDropAndroid,
&kToolbarPhoneCleanup,
&kTabGroupCreationDialogAndroid,
+ &blink::features::kShowAlwaysContextMenuOnLinks,
&kTabletToolbarReordering,
&kTabResumptionModuleAndroid,
&kTabStateFlatBuffer,
&kTabStripGroupCollapseAndroid,
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
--- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
@@ -390,6 +390,8 @@ public abstract class ChromeFeatureList {
@@ -407,6 +407,8 @@ public abstract class ChromeFeatureList {
"DisableToolbarSwipeUp";
public static final String MOVE_TOP_TOOLBAR_TO_BOTTOM =
"MoveTopToolbarToBottom";
@@ -224,7 +188,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
public static final String NOTIFICATION_PERMISSION_VARIANT = "NotificationPermissionVariant";
public static final String NOTIFICATION_PERMISSION_BOTTOM_SHEET =
"NotificationPermissionBottomSheet";
@@ -695,6 +697,8 @@ public abstract class ChromeFeatureList {
@@ -761,6 +763,8 @@ public abstract class ChromeFeatureList {
newCachedFlag(DISABLE_TOOLBAR_SWIPE_UP, false);
public static final CachedFlag sMoveTopToolbarToBottom =
newCachedFlag(MOVE_TOP_TOOLBAR_TO_BOTTOM, false);
@@ -233,7 +197,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
public static final CachedFlag sPaintPreviewDemo = newCachedFlag(PAINT_PREVIEW_DEMO, false);
public static final CachedFlag sPostGetMyMemoryStateToBackground =
newCachedFlag(POST_GET_MEMORY_PRESSURE_TO_BACKGROUND, false);
@@ -848,6 +852,7 @@ public abstract class ChromeFeatureList {
@@ -941,6 +945,7 @@ public abstract class ChromeFeatureList {
sTabWindowManagerReportIndicesMismatch,
sTraceBinderIpc,
sUseChimeAndroidSdk,
@@ -282,18 +246,54 @@ diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibil
<org.chromium.components.browser_ui.settings.ChromeSwitchPreference
android:key="force_enable_zoom"
android:summary="@string/force_enable_zoom_summary"
diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java
--- a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java
+++ b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java
@@ -48,6 +48,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
private BooleanPreferenceDelegate mMoveTopToolbarToBottomDelegate;
private BooleanPreferenceDelegate mDisableToolbarSwipeUpDelegate;
+ static final String PREF_ALWAYS_SHOW_CONTEXTMENU_ON_LINKS = "always_show_contextmenu_on_links";
+ private BooleanPreferenceDelegate mShowAlwaysContextMenuOnLinksDelegate;
+
private PageZoomPreference mPageZoomDefaultZoomPref;
private ChromeSwitchPreference mPageZoomIncludeOSAdjustment;
private ChromeSwitchPreference mPageZoomAlwaysShowPref;
@@ -136,6 +139,12 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
mDisableToolbarSwipeUpPref.setChecked(mDisableToolbarSwipeUpDelegate.isEnabled());
mDisableToolbarSwipeUpPref.setOnPreferenceChangeListener(this);
+ ChromeSwitchPreference mShowAlwaysContextMenuOnLinksPref =
+ (ChromeSwitchPreference) findPreference(PREF_ALWAYS_SHOW_CONTEXTMENU_ON_LINKS);
+ mShowAlwaysContextMenuOnLinksDelegate = mDelegate.getShowAlwaysContextMenuOnLinksDelegate();
+ mShowAlwaysContextMenuOnLinksPref.setChecked(mShowAlwaysContextMenuOnLinksDelegate.isEnabled());
+ mShowAlwaysContextMenuOnLinksPref.setOnPreferenceChangeListener(this);
+
Preference captions = findPreference(PREF_CAPTIONS);
captions.setOnPreferenceClickListener(
preference -> {
@@ -213,6 +222,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
mDelegate.requestRestart(getActivity());
} else if (PREF_DISABLE_TOOLBAR_SWIPE_UP.equals(preference.getKey())) {
mDisableToolbarSwipeUpDelegate.setEnabled((Boolean) newValue);
+ } else if (PREF_ALWAYS_SHOW_CONTEXTMENU_ON_LINKS.equals(preference.getKey())) {
+ mShowAlwaysContextMenuOnLinksDelegate.setEnabled((Boolean) newValue);
+ mDelegate.requestRestart(getActivity());
} else if (PREF_PAGE_ZOOM_INCLUDE_OS_ADJUSTMENT.equals(preference.getKey())) {
// TODO(mschillaci): Implement the override behavior for OS level.
} else if (OmniboxFeatures.KEY_JUMP_START_OMNIBOX.equals(preference.getKey())) {
diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java
--- a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java
+++ b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java
@@ -38,6 +38,8 @@ public interface AccessibilitySettingsDelegate {
@@ -51,6 +51,8 @@ public interface AccessibilitySettingsDelegate {
BooleanPreferenceDelegate getMoveTopToolbarToBottomDelegate();
BooleanPreferenceDelegate getDisableToolbarSwipeUpDelegate();
+ BooleanPreferenceDelegate getShowAlwaysContextMenuOnLinksDelegate();
+
/** @return The BrowserContextHandle that should be used to read and update settings. */
BrowserContextHandle getBrowserContextHandle();
/**
* @return The BrowserContextHandle that should be used to read and update settings.
*/
diff --git a/components/embedder_support/android/java/src/org/chromium/components/embedder_support/contextmenu/ContextMenuItemDelegate.java b/components/embedder_support/android/java/src/org/chromium/components/embedder_support/contextmenu/ContextMenuItemDelegate.java
--- a/components/embedder_support/android/java/src/org/chromium/components/embedder_support/contextmenu/ContextMenuItemDelegate.java
+++ b/components/embedder_support/android/java/src/org/chromium/components/embedder_support/contextmenu/ContextMenuItemDelegate.java
@@ -370,7 +370,7 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third
LocalDOMWindow* window = GetDocument().domWindow();
if (!window) {
return;
@@ -568,6 +580,15 @@ void HTMLAnchorElementBase::NavigateToHyperlink(
@@ -582,6 +594,15 @@ void HTMLAnchorElementBase::NavigateToHyperlink(
request.GetReferrerPolicy()));
}
@@ -386,7 +386,7 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third
Frame* target_frame =
frame->Tree().FindOrCreateFrameForNavigation(frame_request, target).frame;
@@ -622,7 +643,7 @@ AtomicString HTMLAnchorElementBase::interestAction() const {
@@ -636,7 +657,7 @@ AtomicString HTMLAnchorElementBase::interestAction() const {
return g_empty_atom;
}
@@ -395,7 +395,7 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third
event.SetDefaultHandled();
LocalDOMWindow* window = GetDocument().domWindow();
@@ -718,13 +739,12 @@ void HTMLAnchorElementBase::HandleClick(MouseEvent& event) {
@@ -732,13 +753,12 @@ void HTMLAnchorElementBase::HandleClick(MouseEvent& event) {
return;
}
@@ -413,7 +413,7 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third
// We distinguish single/double click with some modifiers.
// See the comment of `EventHandler.delayed_navigation_task_handle_`.
auto task_handle = PostDelayedCancellableTask(
@@ -734,7 +754,9 @@ void HTMLAnchorElementBase::HandleClick(MouseEvent& event) {
@@ -748,7 +768,9 @@ void HTMLAnchorElementBase::HandleClick(MouseEvent& event) {
frame->GetEventHandler().SetDelayedNavigationTaskHandle(
std::move(task_handle));
} else {
@@ -504,7 +504,7 @@ diff --git a/third_party/blink/renderer/core/html/html_image_element.h b/third_p
diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/third_party/blink/renderer/core/page/context_menu_controller.cc
--- a/third_party/blink/renderer/core/page/context_menu_controller.cc
+++ b/third_party/blink/renderer/core/page/context_menu_controller.cc
@@ -190,14 +190,16 @@ void ContextMenuController::DocumentDetached(Document* document) {
@@ -196,14 +196,16 @@ void ContextMenuController::DocumentDetached(Document* document) {
}
}
@@ -524,7 +524,7 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/t
mouse_event->SetDefaultHandled();
}
@@ -415,7 +417,8 @@ bool ContextMenuController::ShouldShowContextMenuFromTouch(
@@ -427,7 +429,8 @@ bool ContextMenuController::ShouldShowContextMenuFromTouch(
bool ContextMenuController::ShowContextMenu(LocalFrame* frame,
const PhysicalOffset& point,
WebMenuSourceType source_type,
@@ -534,7 +534,7 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/t
// Displaying the context menu in this function is a big hack as we don't
// have context, i.e. whether this is being invoked via a script or in
// response to user input (Mouse event WM_RBUTTONDOWN,
@@ -438,6 +441,16 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame,
@@ -450,6 +453,16 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame,
if (!result.InnerNodeOrImageMapImage())
return false;
@@ -573,7 +573,7 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/t
diff --git a/third_party/blink/renderer/core/page/context_menu_controller.h b/third_party/blink/renderer/core/page/context_menu_controller.h
--- a/third_party/blink/renderer/core/page/context_menu_controller.h
+++ b/third_party/blink/renderer/core/page/context_menu_controller.h
@@ -57,7 +57,7 @@ class CORE_EXPORT ContextMenuController final
@@ -58,7 +58,7 @@ class CORE_EXPORT ContextMenuController final
void DocumentDetached(Document*);
@@ -582,7 +582,7 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.h b/th
void ShowContextMenuAtPoint(LocalFrame*,
float x,
float y,
@@ -123,7 +123,8 @@ class CORE_EXPORT ContextMenuController final
@@ -125,7 +125,8 @@ class CORE_EXPORT ContextMenuController final
bool ShowContextMenu(LocalFrame*,
const PhysicalOffset&,
WebMenuSourceType,
+9 -9
View File
@@ -187,7 +187,7 @@ new file mode 100644
diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
--- a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
+++ b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
@@ -40,6 +40,7 @@
@@ -41,6 +41,7 @@
#include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h"
#include "third_party/blink/public/platform/platform.h"
#include "third_party/blink/public/platform/task_type.h"
@@ -195,22 +195,22 @@ diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_d
#include "third_party/blink/public/platform/web_url.h"
#include "third_party/blink/public/web/modules/mediastream/media_stream_video_source.h"
#include "third_party/blink/public/web/web_document.h"
@@ -879,6 +880,11 @@ PeerConnectionDependencyFactory::CreatePortAllocator(
@@ -936,6 +937,11 @@ PeerConnectionDependencyFactory::CreatePortAllocator(
// |request_multiple_routes|. Whether local IP addresses could be
// collected depends on if mic/camera permission is granted for this
// origin.
WebRTCIPHandlingPolicy policy =
GetWebRTCIPHandlingPolicy(webrtc_ip_handling_policy);
+ blink::WebContentSettingsClient* settings = web_frame->GetContentSettingsClient();
+ if (settings && settings->AllowContentSetting(ContentSettingsType::WEBRTC, false)) {
+ policy = kDefault;
+ }
+
switch (policy) {
switch (webrtc_ip_handling_policy) {
// TODO(guoweis): specify the flag of disabling local candidate
// collection when webrtc is updated.
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc
--- a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc
@@ -12,6 +12,8 @@
@@ -13,6 +13,8 @@
#include "third_party/blink/public/common/privacy_budget/identifiable_surface.h"
#include "third_party/blink/public/common/privacy_budget/identifiable_token_builder.h"
#include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h"
@@ -219,7 +219,7 @@ diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.
#include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_insertable_streams.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtcp_parameters.h"
@@ -283,6 +285,14 @@ RTCRtpCapabilities* RTCRtpReceiver::getCapabilities(ScriptState* state,
@@ -284,6 +286,14 @@ RTCRtpCapabilities* RTCRtpReceiver::getCapabilities(ScriptState* state,
if (kind != "audio" && kind != "video")
return nullptr;
@@ -237,7 +237,7 @@ diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc
--- a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc
@@ -17,6 +17,8 @@
@@ -18,6 +18,8 @@
#include "third_party/blink/public/common/privacy_budget/identifiable_surface.h"
#include "third_party/blink/public/common/privacy_budget/identifiable_token_builder.h"
#include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h"
@@ -246,7 +246,7 @@ diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc
#include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_encoding_options.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_insertable_streams.h"
@@ -1030,6 +1032,14 @@ RTCRtpCapabilities* RTCRtpSender::getCapabilities(ScriptState* state,
@@ -1031,6 +1033,14 @@ RTCRtpCapabilities* RTCRtpSender::getCapabilities(ScriptState* state,
if (kind != "audio" && kind != "video")
return nullptr;
@@ -13,9 +13,10 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../web_package/signed_exchange_reporter.cc | 2 ++
...content_switch_dependent_feature_overrides.cc | 1 +
.../Allow-building-without-enable_reporting.inc | 2 ++
net/base/features.cc | 1 +
net/reporting/reporting_header_parser.cc | 1 +
net/reporting/reporting_service.cc | 6 ++++++
services/network/network_context.h | 6 +++---
services/network/public/cpp/parsed_headers.cc | 1 +
services/network/public/mojom/BUILD.gn | 1 -
.../network/public/mojom/network_context.mojom | 3 +++
.../core/frame/csp/content_security_policy.cc | 3 +++
@@ -24,7 +25,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../renderer/core/frame/reporting_context.cc | 9 +++++++++
.../renderer/core/frame/reporting_context.h | 7 +++++--
.../renderer/core/frame/reporting_observer.cc | 3 +--
20 files changed, 60 insertions(+), 26 deletions(-)
21 files changed, 61 insertions(+), 26 deletions(-)
create mode 100644 cromite_flags/services/network/public/cpp/features_cc/Allow-building-without-enable_reporting.inc
diff --git a/chrome/browser/net/chrome_report_sender.cc b/chrome/browser/net/chrome_report_sender.cc
@@ -41,15 +42,15 @@ diff --git a/chrome/browser/net/chrome_report_sender.cc b/chrome/browser/net/chr
diff --git a/content/browser/devtools/protocol/network_handler.cc b/content/browser/devtools/protocol/network_handler.cc
--- a/content/browser/devtools/protocol/network_handler.cc
+++ b/content/browser/devtools/protocol/network_handler.cc
@@ -1464,6 +1464,7 @@ String BuildReportStatus(const net::ReportingReport::Status status) {
@@ -1470,6 +1470,7 @@ String BuildReportStatus(const net::ReportingReport::Status status) {
}
}
+#if BUILDFLAG(ENABLE_REPORTING)
std::vector<GURL> ComputeReportingURLs(RenderFrameHostImpl* frame_host) {
std::vector<GURL> urls;
frame_host->ForEachRenderFrameHostWithAction(
@@ -1477,6 +1478,7 @@ std::vector<GURL> ComputeReportingURLs(RenderFrameHostImpl* frame_host) {
frame_host->ForEachRenderFrameHostImplWithAction(
@@ -1483,6 +1484,7 @@ std::vector<GURL> ComputeReportingURLs(RenderFrameHostImpl* frame_host) {
});
return urls;
}
@@ -106,7 +107,7 @@ diff --git a/content/browser/network/reporting_service_proxy.cc b/content/browse
#include "content/browser/service_worker/service_worker_host.h"
#include "content/browser/worker_host/dedicated_worker_host.h"
#include "content/browser/worker_host/shared_worker_host.h"
@@ -175,12 +176,14 @@ class ReportingServiceProxyImpl : public blink::mojom::ReportingServiceProxy {
@@ -190,12 +191,14 @@ class ReportingServiceProxyImpl : public blink::mojom::ReportingServiceProxy {
const std::string& group,
const std::string& type,
base::Value::Dict body) {
@@ -124,7 +125,7 @@ diff --git a/content/browser/network/reporting_service_proxy.cc b/content/browse
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
--- a/content/browser/renderer_host/render_frame_host_impl.cc
+++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -15172,12 +15172,6 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport(
@@ -15257,12 +15257,6 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport(
}
}
}
@@ -251,17 +252,17 @@ new file mode 100644
@@ -0,0 +1,2 @@
+SET_CROMITE_FEATURE_DISABLED(kNetworkErrorLogging);
+SET_CROMITE_FEATURE_DISABLED(kReporting);
diff --git a/net/base/features.cc b/net/base/features.cc
--- a/net/base/features.cc
+++ b/net/base/features.cc
@@ -207,6 +207,7 @@ extern const base::FeatureParam<base::TimeDelta> kTimeoutTcpConnectAttemptMax(
base::Seconds(30));
#if BUILDFLAG(ENABLE_REPORTING)
+#error Attempting to build with enable_reporting
BASE_FEATURE(kDocumentReporting,
"DocumentReporting",
base::FEATURE_ENABLED_BY_DEFAULT);
diff --git a/net/reporting/reporting_header_parser.cc b/net/reporting/reporting_header_parser.cc
--- a/net/reporting/reporting_header_parser.cc
+++ b/net/reporting/reporting_header_parser.cc
@@ -332,6 +332,7 @@ void ReportingHeaderParser::ProcessParsedReportingEndpointsHeader(
const NetworkAnonymizationKey& network_anonymization_key,
const url::Origin& origin,
base::flat_map<std::string, std::string> header) {
+ CHECK(false);
DCHECK(GURL::SchemeIsCryptographic(origin.scheme()));
DCHECK(!reporting_source.is_empty());
DCHECK(network_anonymization_key.IsEmpty() ||
diff --git a/net/reporting/reporting_service.cc b/net/reporting/reporting_service.cc
--- a/net/reporting/reporting_service.cc
+++ b/net/reporting/reporting_service.cc
@@ -299,10 +300,21 @@ diff --git a/services/network/network_context.h b/services/network/network_conte
void AddDomainReliabilityContextForTesting(
const url::Origin& origin,
const GURL& upload_url,
diff --git a/services/network/public/cpp/parsed_headers.cc b/services/network/public/cpp/parsed_headers.cc
--- a/services/network/public/cpp/parsed_headers.cc
+++ b/services/network/public/cpp/parsed_headers.cc
@@ -115,6 +115,7 @@ mojom::ParsedHeadersPtr PopulateParsedHeaders(
}
#if BUILDFLAG(ENABLE_REPORTING)
+#error Attempting to build with enable_reporting
if (std::optional<std::string> reporting_endpoints =
headers->GetNormalizedHeader("Reporting-Endpoints")) {
parsed_headers->reporting_endpoints =
diff --git a/services/network/public/mojom/BUILD.gn b/services/network/public/mojom/BUILD.gn
--- a/services/network/public/mojom/BUILD.gn
+++ b/services/network/public/mojom/BUILD.gn
@@ -1560,7 +1560,6 @@ mojom("mojom") {
@@ -1557,7 +1557,6 @@ mojom("mojom") {
export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
export_header_blink = "third_party/blink/public/platform/web_common.h"
if (enable_reporting) {
@@ -313,7 +325,7 @@ diff --git a/services/network/public/mojom/BUILD.gn b/services/network/public/mo
diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom
--- a/services/network/public/mojom/network_context.mojom
+++ b/services/network/public/mojom/network_context.mojom
@@ -1181,6 +1181,7 @@ interface NetworkContext {
@@ -1208,6 +1208,7 @@ interface NetworkContext {
// provided `network_anonymization_key`.
//
// Spec: https://w3c.github.io/reporting/#concept-reports
@@ -321,15 +333,15 @@ diff --git a/services/network/public/mojom/network_context.mojom b/services/netw
QueueReport(string type,
string group,
url.mojom.Url url,
@@ -1188,6 +1189,7 @@ interface NetworkContext {
@@ -1215,6 +1216,7 @@ interface NetworkContext {
NetworkAnonymizationKey network_anonymization_key,
mojo_base.mojom.DictionaryValue body);
+ [EnableIf=enable_reporting]
QueueEnterpriseReport(string type,
string group,
url.mojom.Url url,
@@ -1198,6 +1200,7 @@ interface NetworkContext {
string group,
url.mojom.Url url,
@@ -1225,6 +1227,7 @@ interface NetworkContext {
// Note that this queued report will never be delivered if no reporting
// endpoint matching is registered for with the provided
// `network_anonymization_key`.
@@ -340,15 +352,15 @@ diff --git a/services/network/public/mojom/network_context.mojom b/services/netw
diff --git a/third_party/blink/renderer/core/frame/csp/content_security_policy.cc b/third_party/blink/renderer/core/frame/csp/content_security_policy.cc
--- a/third_party/blink/renderer/core/frame/csp/content_security_policy.cc
+++ b/third_party/blink/renderer/core/frame/csp/content_security_policy.cc
@@ -29,6 +29,7 @@
#include <optional>
@@ -30,6 +30,7 @@
#include <set>
#include <utility>
+#include "net/net_buildflags.h"
#include "base/containers/contains.h"
#include "base/debug/dump_without_crashing.h"
#include "base/ranges/algorithm.h"
@@ -1243,6 +1244,7 @@ void ContentSecurityPolicy::ReportViolation(
@@ -1284,6 +1285,7 @@ void ContentSecurityPolicy::ReportViolation(
return;
}
@@ -356,7 +368,7 @@ diff --git a/third_party/blink/renderer/core/frame/csp/content_security_policy.c
PostViolationReport(violation_data, context_frame, report_endpoints,
use_reporting_api);
@@ -1250,6 +1252,7 @@ void ContentSecurityPolicy::ReportViolation(
@@ -1291,6 +1293,7 @@ void ContentSecurityPolicy::ReportViolation(
// `context_frame` (i.e. we're not processing 'frame-ancestors').
if (delegate_ && !context_frame)
delegate_->DispatchViolationEvent(*violation_data, element);
@@ -375,7 +387,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/
#include "services/network/public/cpp/features.h"
#include "services/network/public/mojom/content_security_policy.mojom-blink.h"
#include "services/network/public/mojom/source_location.mojom-blink.h"
@@ -2789,9 +2790,11 @@ DocumentResourceCoordinator* LocalFrame::GetDocumentResourceCoordinator() {
@@ -2791,9 +2792,11 @@ DocumentResourceCoordinator* LocalFrame::GetDocumentResourceCoordinator() {
return CHECK_DEREF(GetDocument()).GetResourceCoordinator();
}
@@ -398,7 +410,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/b
#include "mojo/public/cpp/bindings/pending_associated_receiver.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "services/metrics/public/cpp/ukm_source_id.h"
@@ -659,8 +660,9 @@ class CORE_EXPORT LocalFrame final
@@ -660,8 +661,9 @@ class CORE_EXPORT LocalFrame final
void FinishedScrollSequence();
SmoothScrollSequencer* GetSmoothScrollSequencer() const;
@@ -420,7 +432,7 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.cc b/third_
#include "third_party/blink/public/platform/browser_interface_broker_proxy.h"
#include "third_party/blink/public/platform/platform.h"
#include "third_party/blink/public/platform/task_type.h"
@@ -53,7 +54,9 @@ const char ReportingContext::kSupplementName[] = "ReportingContext";
@@ -58,7 +59,9 @@ const char ReportingContext::kSupplementName[] = "ReportingContext";
ReportingContext::ReportingContext(ExecutionContext& context)
: Supplement<ExecutionContext>(context),
execution_context_(context),
@@ -430,7 +442,7 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.cc b/third_
receiver_(this, &context) {}
// static
@@ -121,7 +124,9 @@ void ReportingContext::Trace(Visitor* visitor) const {
@@ -126,7 +129,9 @@ void ReportingContext::Trace(Visitor* visitor) const {
visitor->Trace(observers_);
visitor->Trace(report_buffer_);
visitor->Trace(execution_context_);
@@ -440,7 +452,7 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.cc b/third_
visitor->Trace(receiver_);
Supplement<ExecutionContext>::Trace(visitor);
}
@@ -143,6 +148,7 @@ void ReportingContext::CountReport(Report* report) {
@@ -148,6 +153,7 @@ void ReportingContext::CountReport(Report* report) {
UseCounter::Count(execution_context_, feature);
}
@@ -448,23 +460,23 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.cc b/third_
const HeapMojoRemote<mojom::blink::ReportingServiceProxy>&
ReportingContext::GetReportingService() const {
if (!reporting_service_.is_bound()) {
@@ -152,6 +158,7 @@ ReportingContext::GetReportingService() const {
@@ -157,6 +163,7 @@ ReportingContext::GetReportingService() const {
}
return reporting_service_;
}
+#endif
void ReportingContext::NotifyInternal(Report* report) {
// Buffer the report.
@@ -174,6 +181,7 @@ void ReportingContext::NotifyInternal(Report* report) {
if (!ShouldReportBeVisibleToObservers(report)) {
@@ -183,6 +190,7 @@ void ReportingContext::NotifyInternal(Report* report) {
void ReportingContext::SendToReportingAPI(Report* report,
const String& endpoint) const {
+#if BUILDFLAG(ENABLE_REPORTING)
const String& type = report->type();
if (!(type == ReportType::kCSPViolation || type == ReportType::kDeprecation ||
type == ReportType::kPermissionsPolicyViolation ||
@@ -230,6 +238,7 @@ void ReportingContext::SendToReportingAPI(Report* report,
if (!(type == ReportType::kCSPViolation || type == ReportType::kCSPHash ||
type == ReportType::kDeprecation ||
@@ -246,6 +254,7 @@ void ReportingContext::SendToReportingAPI(Report* report,
url, endpoint, body->featureId(), body->disposition(), body->message(),
body->sourceFile(), line_number, column_number);
}
+30 -21
View File
@@ -4,20 +4,20 @@ Subject: Disable all promo dialogs
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java | 1 +
chrome/browser/ui/browser_ui_prefs.cc | 2 +-
.../views/profiles/profile_picker_feature_promo_controller.cc | 1 +
.../user_education/impl/browser_feature_promo_controller_20.cc | 1 +
.../chrome/browser/user_education/UserEducationHelper.java | 1 +
.../common/feature_promo/feature_promo_registry.cc | 2 ++
.../common/feature_promo/impl/feature_promo_controller_20.cc | 1 +
.../common/feature_promo/impl/feature_promo_controller_25.cc | 1 +
8 files changed, 9 insertions(+), 1 deletion(-)
.../chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java | 1 +
chrome/browser/ui/browser_ui_prefs.cc | 2 +-
.../views/profiles/profile_picker_feature_promo_controller.cc | 1 +
.../user_education/impl/browser_feature_promo_controller_20.cc | 1 +
.../chrome/browser/user_education/UserEducationHelper.java | 1 +
.../common/feature_promo/feature_promo_registry.cc | 2 ++
.../common/feature_promo/impl/feature_promo_controller_20.cc | 1 +
.../common/feature_promo/impl/feature_promo_controller_25.cc | 3 ++-
8 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
@@ -1379,6 +1379,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
@@ -1465,6 +1465,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
}
private boolean maybeShowPromo(Profile profile) {
@@ -28,7 +28,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab
diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc
--- a/chrome/browser/ui/browser_ui_prefs.cc
+++ b/chrome/browser/ui/browser_ui_prefs.cc
@@ -148,7 +148,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
@@ -151,7 +151,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterBooleanPref(prefs::kEnterpriseHardwarePlatformAPIEnabled,
false);
@@ -57,8 +57,8 @@ diff --git a/chrome/browser/ui/views/user_education/impl/browser_feature_promo_c
ui::TrackedElement* anchor_element) const {
+ if ((true)) return false;
// Trying to show an IPH while the browser is closing can cause problems;
// see crbug.com/346461762 for an example.
if (browser_view_->browser()->IsBrowserClosing()) {
// see crbug.com/346461762 for an example. This can also crash unit_tests that
// use a BrowserWindow but not a browser, so also check if the browser view's
diff --git a/chrome/browser/user_education/java/src/org/chromium/chrome/browser/user_education/UserEducationHelper.java b/chrome/browser/user_education/java/src/org/chromium/chrome/browser/user_education/UserEducationHelper.java
--- a/chrome/browser/user_education/java/src/org/chromium/chrome/browser/user_education/UserEducationHelper.java
+++ b/chrome/browser/user_education/java/src/org/chromium/chrome/browser/user_education/UserEducationHelper.java
@@ -92,7 +92,7 @@ diff --git a/components/user_education/common/feature_promo/feature_promo_regist
diff --git a/components/user_education/common/feature_promo/impl/feature_promo_controller_20.cc b/components/user_education/common/feature_promo/impl/feature_promo_controller_20.cc
--- a/components/user_education/common/feature_promo/impl/feature_promo_controller_20.cc
+++ b/components/user_education/common/feature_promo/impl/feature_promo_controller_20.cc
@@ -89,6 +89,7 @@ FeaturePromoResult FeaturePromoController20::CanShowPromoCommon(
@@ -99,6 +99,7 @@ FeaturePromoResult FeaturePromoController20::CanShowPromoCommon(
const FeaturePromoParams& params,
ShowSource source,
CanShowPromoOutputs* outputs) const {
@@ -103,12 +103,21 @@ diff --git a/components/user_education/common/feature_promo/impl/feature_promo_c
diff --git a/components/user_education/common/feature_promo/impl/feature_promo_controller_25.cc b/components/user_education/common/feature_promo/impl/feature_promo_controller_25.cc
--- a/components/user_education/common/feature_promo/impl/feature_promo_controller_25.cc
+++ b/components/user_education/common/feature_promo/impl/feature_promo_controller_25.cc
@@ -48,6 +48,7 @@ FeaturePromoResult FeaturePromoController25::CanShowPromoCommon(
const FeaturePromoParams& params,
ShowSource source,
CanShowPromoOutputs* outputs) const {
+ if ((true)) return FeaturePromoResult::kBlockedByContext;
return FeaturePromoResult::kError;
}
@@ -172,6 +172,7 @@ FeaturePromoController25::~FeaturePromoController25() {
FeaturePromoResult FeaturePromoController25::CanShowPromo(
const FeaturePromoParams& params) const {
+ if ((true)) return FeaturePromoResult::kBlockedByContext;
auto* const spec = registry()->GetParamsForFeature(*params.feature);
return spec ? private_->queues.CanShow(*spec, params)
: FeaturePromoResult::kError;
@@ -184,7 +185,7 @@ void FeaturePromoController25::MaybeShowStartupPromo(
void FeaturePromoController25::MaybeShowPromo(FeaturePromoParams params) {
auto* const spec = registry()->GetParamsForFeature(*params.feature);
- if (!spec) {
+ if (((true)) || !spec) {
PostShowPromoResult(std::move(params.show_promo_result_callback),
FeaturePromoResult::kError);
return;
--
File diff suppressed because it is too large Load Diff
+134 -138
View File
@@ -13,7 +13,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../web_package/signed_exchange_loader.h | 2 +
.../signed_exchange_prefetch_handler.cc | 2 +-
.../signed_exchange_request_handler.cc | 1 +
net/http/transport_security_state.cc | 109 ++++++++++++------
net/http/transport_security_state.cc | 100 ++++++++++++------
net/http/transport_security_state.h | 39 ++++---
net/quic/crypto/proof_verifier_chromium.cc | 5 +-
net/quic/quic_chromium_client_session.cc | 2 +-
@@ -21,16 +21,16 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
net/spdy/spdy_session.cc | 11 +-
net/spdy/spdy_session.h | 3 +-
.../url_request_context_builder.cc | 14 ---
net/url_request/url_request_http_job.cc | 7 +-
services/network/network_context.cc | 31 +++--
net/url_request/url_request_http_job.cc | 5 +-
services/network/network_context.cc | 31 ++++--
services/network/network_context.h | 13 ++-
.../public/mojom/network_context.mojom | 9 +-
21 files changed, 180 insertions(+), 103 deletions(-)
21 files changed, 171 insertions(+), 101 deletions(-)
diff --git a/chrome/browser/ssl/https_upgrades_interceptor.cc b/chrome/browser/ssl/https_upgrades_interceptor.cc
--- a/chrome/browser/ssl/https_upgrades_interceptor.cc
+++ b/chrome/browser/ssl/https_upgrades_interceptor.cc
@@ -409,6 +409,7 @@ void HttpsUpgradesInterceptor::MaybeCreateLoader(
@@ -410,6 +410,7 @@ void HttpsUpgradesInterceptor::MaybeCreateLoader(
network::mojom::NetworkContext* network_context =
profile->GetDefaultStoragePartition()->GetNetworkContext();
network_context->IsHSTSActiveForHost(
@@ -41,7 +41,7 @@ diff --git a/chrome/browser/ssl/https_upgrades_interceptor.cc b/chrome/browser/s
diff --git a/chrome/browser/ui/webui/net_internals/net_internals_ui.cc b/chrome/browser/ui/webui/net_internals/net_internals_ui.cc
--- a/chrome/browser/ui/webui/net_internals/net_internals_ui.cc
+++ b/chrome/browser/ui/webui/net_internals/net_internals_ui.cc
@@ -410,7 +410,10 @@ void NetInternalsMessageHandler::OnDomainSecurityPolicyDelete(
@@ -402,7 +402,10 @@ void NetInternalsMessageHandler::OnDomainSecurityPolicyDelete(
// There cannot be a unicode entry in the HSTS set.
return;
}
@@ -52,7 +52,7 @@ diff --git a/chrome/browser/ui/webui/net_internals/net_internals_ui.cc b/chrome/
*domain, base::BindOnce(&IgnoreBoolCallback));
}
@@ -420,7 +423,10 @@ void NetInternalsMessageHandler::OnHSTSQuery(const base::Value::List& list) {
@@ -412,7 +415,10 @@ void NetInternalsMessageHandler::OnHSTSQuery(const base::Value::List& list) {
DCHECK(callback_id && domain);
AllowJavascript();
@@ -63,7 +63,7 @@ diff --git a/chrome/browser/ui/webui/net_internals/net_internals_ui.cc b/chrome/
*domain,
base::BindOnce(&NetInternalsMessageHandler::ResolveCallbackWithResult,
weak_factory_.GetWeakPtr(), *callback_id));
@@ -446,8 +452,12 @@ void NetInternalsMessageHandler::OnHSTSAdd(const base::Value::List& list) {
@@ -438,8 +444,12 @@ void NetInternalsMessageHandler::OnHSTSAdd(const base::Value::List& list) {
const bool sts_include_subdomains = list[1].GetBool();
base::Time expiry = base::Time::Now() + base::Days(1000);
@@ -125,7 +125,7 @@ diff --git a/content/browser/web_package/signed_exchange_handler.cc b/content/br
outer_request_isolation_info_(std::move(outer_request_isolation_info)),
load_flags_(load_flags),
remote_endpoint_(remote_endpoint),
@@ -532,7 +535,7 @@ void SignedExchangeHandler::OnCertReceived(
@@ -531,7 +534,7 @@ void SignedExchangeHandler::OnCertReceived(
// property, or
const std::string& stapled_ocsp_response = unverified_cert_chain_->ocsp();
@@ -220,7 +220,7 @@ diff --git a/content/browser/web_package/signed_exchange_request_handler.cc b/co
diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_state.cc
--- a/net/http/transport_security_state.cc
+++ b/net/http/transport_security_state.cc
@@ -88,7 +88,7 @@ bool AddHash(const char* sha256_hash, HashValueVector* out) {
@@ -87,7 +87,7 @@ bool AddHash(const char* sha256_hash, HashValueVector* out) {
// Converts |hostname| from dotted form ("www.google.com") to the form
// used in DNS: "\x03www\x06google\x03com", lowercases that, and returns
// the result.
@@ -229,7 +229,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_
// We cannot perform the operations as detailed in the spec here as `host`
// has already undergone IDN processing before it reached us. Thus, we
// lowercase the input (probably redudnant since most input here has been
@@ -109,6 +109,29 @@ std::vector<uint8_t> CanonicalizeHost(std::string_view host) {
@@ -108,6 +108,29 @@ std::vector<uint8_t> CanonicalizeHost(std::string_view host) {
return std::move(new_host).value();
}
@@ -259,7 +259,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_
// PreloadResult is the result of resolving a specific name in the preloaded
// data.
struct PreloadResult {
@@ -200,7 +223,7 @@ bool DecodeHSTSPreload(const std::string& search_hostname, PreloadResult* out) {
@@ -199,7 +222,7 @@ bool DecodeHSTSPreload(std::string_view search_hostname, PreloadResult* out) {
// Ensure that |search_hostname| is a valid hostname before
// processing.
@@ -268,12 +268,12 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_
return false;
}
// Normalize any trailing '.' used for DNS suffix searches.
@@ -261,18 +284,19 @@ TransportSecurityState::TransportSecurityState(
@@ -259,18 +282,19 @@ TransportSecurityState::TransportSecurityState(
// Both HSTS and HPKP cause fatal SSL errors, so return true if a
// host has either.
-bool TransportSecurityState::ShouldSSLErrorsBeFatal(const std::string& host) {
+bool TransportSecurityState::ShouldSSLErrorsBeFatal(const NetworkAnonymizationKey& nak, const std::string& host) {
-bool TransportSecurityState::ShouldSSLErrorsBeFatal(std::string_view host) {
+bool TransportSecurityState::ShouldSSLErrorsBeFatal(const NetworkAnonymizationKey& nak, std::string_view host) {
STSState unused_sts;
PKPState unused_pkp;
- return GetSTSState(host, &unused_sts) || GetPKPState(host, &unused_pkp);
@@ -282,7 +282,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_
base::Value::Dict TransportSecurityState::NetLogUpgradeToSSLParam(
+ const NetworkAnonymizationKey& nak,
const std::string& host) {
std::string_view host) {
STSState sts_state;
base::Value::Dict dict;
dict.Set("host", host);
@@ -291,17 +291,23 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_
dict.Set("should_upgrade_to_ssl", sts_state.ShouldUpgradeToSSL());
dict.Set("host_found_in_hsts_bypass_list",
hsts_host_bypass_list_.find(host) != hsts_host_bypass_list_.end());
@@ -280,14 +304,15 @@ base::Value::Dict TransportSecurityState::NetLogUpgradeToSSLParam(
@@ -278,12 +302,13 @@ base::Value::Dict TransportSecurityState::NetLogUpgradeToSSLParam(
}
SSLUpgradeDecision TransportSecurityState::GetSSLUpgradeDecision(
+ const NetworkAnonymizationKey& nak,
const std::string& host,
std::string_view host,
bool is_top_level_nav,
const NetLogWithSource& net_log) {
net_log.AddEvent(
NetLogEventType::TRANSPORT_SECURITY_STATE_SHOULD_UPGRADE_TO_SSL,
- [&] { return NetLogUpgradeToSSLParam(host); });
+ [&] { return NetLogUpgradeToSSLParam(nak, host); });
// Only top level navigations should be upgraded when
// kHstsTopLevelNavigationsOnly is enabled.
@@ -294,7 +319,7 @@ SSLUpgradeDecision TransportSecurityState::GetSSLUpgradeDecision(
STSState sts_state;
// Check the dynamic list first (removing the entry if expired).
- if (GetDynamicSTSState(host, &sts_state)) {
@@ -309,43 +315,42 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_
// [*.]localhost hosts now ignore Strict-Transport-Security response
// headers, but an entry may have been stored before this restriction
// was introduced (crbug.com/41251622).
@@ -312,27 +337,29 @@ SSLUpgradeDecision TransportSecurityState::GetSSLUpgradeDecision(
@@ -319,10 +344,11 @@ SSLUpgradeDecision TransportSecurityState::GetSSLUpgradeDecision(
}
bool TransportSecurityState::ShouldUpgradeToSSL(
+ const NetworkAnonymizationKey& nak,
const std::string& host,
std::string_view host,
const NetLogWithSource& net_log) {
- return GetSSLUpgradeDecision(host, net_log) != SSLUpgradeDecision::kNoUpgrade;
+ return GetSSLUpgradeDecision(nak, host, net_log) != SSLUpgradeDecision::kNoUpgrade;
// TODO(crbug.com/361746120): Propagate `is_top_level_nav` to callers.
- return GetSSLUpgradeDecision(host, true, net_log) !=
+ return GetSSLUpgradeDecision(nak, host, true, net_log) !=
SSLUpgradeDecision::kNoUpgrade;
}
TransportSecurityState::PKPStatus TransportSecurityState::CheckPublicKeyPins(
const HostPortPair& host_port_pair,
@@ -331,17 +357,17 @@ TransportSecurityState::PKPStatus TransportSecurityState::CheckPublicKeyPins(
bool is_issued_by_known_root,
- const HashValueVector& public_key_hashes) {
+ const HashValueVector& public_key_hashes,
+ const NetworkAnonymizationKey& network_anonymization_key) {
const HashValueVector& public_key_hashes) {
// Perform pin validation only if the server actually has public key pins.
- if (!HasPublicKeyPins(host_port_pair.host())) {
+ if (!HasPublicKeyPins(network_anonymization_key, host_port_pair.host())) {
- if (!HasPublicKeyPins(host)) {
+ if (!HasPublicKeyPins(network_anonymization_key, host)) {
return PKPStatus::OK;
}
return CheckPublicKeyPinsImpl(host_port_pair, is_issued_by_known_root,
return CheckPublicKeyPinsImpl(host, is_issued_by_known_root,
- public_key_hashes);
+ public_key_hashes, network_anonymization_key);
}
-bool TransportSecurityState::HasPublicKeyPins(const std::string& host) {
+bool TransportSecurityState::HasPublicKeyPins(const NetworkAnonymizationKey& nak, const std::string& host) {
-bool TransportSecurityState::HasPublicKeyPins(std::string_view host) {
+bool TransportSecurityState::HasPublicKeyPins(const NetworkAnonymizationKey& nak, std::string_view host) {
PKPState pkp_state;
- return GetPKPState(host, &pkp_state) && pkp_state.HasPublicKeyPins();
+ return GetPKPState(nak, host, &pkp_state) && pkp_state.HasPublicKeyPins();
}
TransportSecurityState::CTRequirementsStatus
@@ -412,12 +439,13 @@ void TransportSecurityState::UpdatePinList(
@@ -421,12 +447,13 @@ void TransportSecurityState::UpdatePinList(
}
void TransportSecurityState::AddHSTSInternal(
@@ -360,7 +365,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_
if (canonicalized_host.empty())
return;
@@ -441,13 +469,14 @@ void TransportSecurityState::AddHSTSInternal(
@@ -450,13 +477,14 @@ void TransportSecurityState::AddHSTSInternal(
DirtyNotify();
}
@@ -377,14 +382,12 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_
if (canonicalized_host.empty())
return;
@@ -492,10 +521,12 @@ TransportSecurityState::PKPStatus TransportSecurityState::CheckPins(
@@ -500,10 +528,10 @@ TransportSecurityState::PKPStatus TransportSecurityState::CheckPins(
return PKPStatus::VIOLATED;
}
-bool TransportSecurityState::DeleteDynamicDataForHost(const std::string& host) {
+bool TransportSecurityState::DeleteDynamicDataForHost(
+ const NetworkAnonymizationKey& nak,
+ const std::string& host) {
-bool TransportSecurityState::DeleteDynamicDataForHost(std::string_view host) {
+bool TransportSecurityState::DeleteDynamicDataForHost(const NetworkAnonymizationKey& nak, std::string_view host) {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
- const std::vector<uint8_t> canonicalized_host = CanonicalizeHost(host);
@@ -392,7 +395,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_
if (canonicalized_host.empty())
return false;
@@ -572,7 +603,8 @@ void TransportSecurityState::DirtyNotify() {
@@ -580,7 +608,8 @@ void TransportSecurityState::DirtyNotify() {
delegate_->StateIsDirty(this);
}
@@ -402,7 +405,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_
std::string_view value) {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
@@ -591,23 +623,25 @@ bool TransportSecurityState::AddHSTSHeader(std::string_view host,
@@ -599,23 +628,25 @@ bool TransportSecurityState::AddHSTSHeader(std::string_view host,
upgrade_mode = STSState::MODE_FORCE_HTTPS;
}
@@ -433,20 +436,20 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_
}
size_t TransportSecurityState::num_sts_entries() const {
@@ -632,9 +666,10 @@ TransportSecurityState::PKPStatus
TransportSecurityState::CheckPublicKeyPinsImpl(
const HostPortPair& host_port_pair,
bool is_issued_by_known_root,
- const HashValueVector& hashes) {
+ const HashValueVector& hashes,
+ const NetworkAnonymizationKey& network_anonymization_key) {
@@ -639,9 +670,10 @@ bool TransportSecurityState::IsBuildTimely() {
TransportSecurityState::PKPStatus
TransportSecurityState::CheckPublicKeyPinsImpl(std::string_view host,
bool is_issued_by_known_root,
- const HashValueVector& hashes) {
+ const HashValueVector& hashes,
+ const NetworkAnonymizationKey& network_anonymization_key) {
PKPState pkp_state;
- bool found_state = GetPKPState(host_port_pair.host(), &pkp_state);
+ bool found_state = GetPKPState(network_anonymization_key, host_port_pair.host(), &pkp_state);
- bool found_state = GetPKPState(host, &pkp_state);
+ bool found_state = GetPKPState(network_anonymization_key, host, &pkp_state);
// HasPublicKeyPins should have returned true in order for this method to have
// been called.
@@ -675,7 +710,7 @@ bool TransportSecurityState::GetStaticPKPState(const std::string& host,
@@ -682,7 +714,7 @@ bool TransportSecurityState::GetStaticPKPState(std::string_view host,
PreloadResult result;
if (host_pins_.has_value()) {
// Ensure that |host| is a valid hostname before processing.
@@ -455,29 +458,26 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_
return false;
}
// Normalize any trailing '.' used for DNS suffix searches.
@@ -758,21 +793,24 @@ bool TransportSecurityState::GetStaticPKPState(const std::string& host,
@@ -764,21 +796,21 @@ bool TransportSecurityState::GetStaticPKPState(std::string_view host,
return false;
}
-bool TransportSecurityState::GetSTSState(const std::string& host,
+bool TransportSecurityState::GetSTSState(const NetworkAnonymizationKey& nak,
+ const std::string& host,
-bool TransportSecurityState::GetSTSState(std::string_view host,
+bool TransportSecurityState::GetSTSState(const NetworkAnonymizationKey& nak, std::string_view host,
STSState* result) {
- return GetDynamicSTSState(host, result) || GetStaticSTSState(host, result);
+ return GetDynamicSTSState(nak, host, result) || GetStaticSTSState(host, result);
}
-bool TransportSecurityState::GetPKPState(const std::string& host,
+bool TransportSecurityState::GetPKPState(const NetworkAnonymizationKey& nak,
+ const std::string& host,
-bool TransportSecurityState::GetPKPState(std::string_view host,
+bool TransportSecurityState::GetPKPState(const NetworkAnonymizationKey& nak, std::string_view host,
PKPState* result) {
- return GetDynamicPKPState(host, result) || GetStaticPKPState(host, result);
+ return GetDynamicPKPState(nak, host, result) || GetStaticPKPState(host, result);
}
-bool TransportSecurityState::GetDynamicSTSState(const std::string& host,
+bool TransportSecurityState::GetDynamicSTSState(const NetworkAnonymizationKey& nak,
+ const std::string& host,
-bool TransportSecurityState::GetDynamicSTSState(std::string_view host,
+bool TransportSecurityState::GetDynamicSTSState(const NetworkAnonymizationKey& nak, std::string_view host,
STSState* result) {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
@@ -486,13 +486,12 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_
if (canonicalized_host.empty())
return false;
@@ -809,11 +847,12 @@ bool TransportSecurityState::GetDynamicSTSState(const std::string& host,
@@ -815,11 +847,11 @@ bool TransportSecurityState::GetDynamicSTSState(std::string_view host,
return false;
}
-bool TransportSecurityState::GetDynamicPKPState(const std::string& host,
+bool TransportSecurityState::GetDynamicPKPState(const NetworkAnonymizationKey& nak,
+ const std::string& host,
-bool TransportSecurityState::GetDynamicPKPState(std::string_view host,
+bool TransportSecurityState::GetDynamicPKPState(const NetworkAnonymizationKey& nak, std::string_view host,
PKPState* result) {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
@@ -504,30 +503,30 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_
diff --git a/net/http/transport_security_state.h b/net/http/transport_security_state.h
--- a/net/http/transport_security_state.h
+++ b/net/http/transport_security_state.h
@@ -291,6 +291,7 @@ class NET_EXPORT TransportSecurityState {
@@ -290,6 +290,7 @@ class NET_EXPORT TransportSecurityState {
// As ShouldUpgradeToSSL(), but also returns whether the decision came from
// static or dynamic state, for metrics.
SSLUpgradeDecision GetSSLUpgradeDecision(
+ const NetworkAnonymizationKey& nak,
const std::string& host,
std::string_view host,
bool is_top_level_nav,
const NetLogWithSource& net_log = NetLogWithSource());
@@ -299,13 +300,14 @@ class NET_EXPORT TransportSecurityState {
// primary public interface; direct access to STS and PKP states is best
// left to tests. The caller needs to handle the optional pinning override
// when is_issued_by_known_root is false.
- bool ShouldSSLErrorsBeFatal(const std::string& host);
- bool ShouldUpgradeToSSL(const std::string& host,
+ bool ShouldSSLErrorsBeFatal(const NetworkAnonymizationKey& nak, const std::string& host);
+ bool ShouldUpgradeToSSL(const NetworkAnonymizationKey& nak, const std::string& host,
- bool ShouldSSLErrorsBeFatal(std::string_view host);
- bool ShouldUpgradeToSSL(std::string_view host,
+ bool ShouldSSLErrorsBeFatal(const NetworkAnonymizationKey& nak, std::string_view host);
+ bool ShouldUpgradeToSSL(const NetworkAnonymizationKey& nak, std::string_view host,
const NetLogWithSource& net_log = NetLogWithSource());
PKPStatus CheckPublicKeyPins(const HostPortPair& host_port_pair,
PKPStatus CheckPublicKeyPins(std::string_view host,
bool is_issued_by_known_root,
- const HashValueVector& hashes);
- bool HasPublicKeyPins(const std::string& host);
- bool HasPublicKeyPins(std::string_view host);
+ const HashValueVector& hashes,
+ const NetworkAnonymizationKey& network_anonymization_key);
+ bool HasPublicKeyPins(const NetworkAnonymizationKey& nak, const std::string& host);
+ const NetworkAnonymizationKey& nak, );
+ bool HasPublicKeyPins(const NetworkAnonymizationKey& nak, std::string_view host);
// Returns CT_REQUIREMENTS_NOT_MET if a connection violates CT policy
// requirements: that is, if a connection to |host|, using the validated
@@ -535,8 +534,8 @@ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_s
//
// If an entry is deleted, the new state will be persisted through
// the Delegate (if any).
- bool DeleteDynamicDataForHost(const std::string& host);
+ bool DeleteDynamicDataForHost(const NetworkAnonymizationKey& nak, const std::string& host);
- bool DeleteDynamicDataForHost(std::string_view host);
+ bool DeleteDynamicDataForHost(const NetworkAnonymizationKey& nak, std::string_view host);
// Returns true and updates |*result| if |host| has dynamic or static
// HSTS/HPKP (respectively) state. If multiple entries match |host|, dynamic
@@ -544,10 +543,10 @@ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_s
//
// Note that these methods are not const because they opportunistically remove
// entries that have expired.
- bool GetSTSState(const std::string& host, STSState* sts_result);
- bool GetPKPState(const std::string& host, PKPState* pkp_result);
+ bool GetSTSState(const NetworkAnonymizationKey& nak, const std::string& host, STSState* sts_result);
+ bool GetPKPState(const NetworkAnonymizationKey& nak, const std::string& host, PKPState* pkp_result);
- bool GetSTSState(std::string_view host, STSState* sts_result);
- bool GetPKPState(std::string_view host, PKPState* pkp_result);
+ bool GetSTSState(const NetworkAnonymizationKey& nak, std::string_view host, STSState* sts_result);
+ bool GetPKPState(const NetworkAnonymizationKey& nak, std::string_view host, PKPState* pkp_result);
// Returns true and updates |*result| iff |host| has static HSTS/HPKP
// (respectively) state. If multiple entries match |host|, the most specific
@@ -555,10 +554,10 @@ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_s
//
// Note that these methods are not const because they opportunistically remove
// entries that have expired.
- bool GetDynamicSTSState(const std::string& host, STSState* result);
- bool GetDynamicPKPState(const std::string& host, PKPState* result);
+ bool GetDynamicSTSState(const NetworkAnonymizationKey& nak, const std::string& host, STSState* result);
+ bool GetDynamicPKPState(const NetworkAnonymizationKey& nak, const std::string& host, PKPState* result);
- bool GetDynamicSTSState(std::string_view host, STSState* result);
- bool GetDynamicPKPState(std::string_view host, PKPState* result);
+ bool GetDynamicSTSState(const NetworkAnonymizationKey& nak, std::string_view host, STSState* result);
+ bool GetDynamicPKPState(const NetworkAnonymizationKey& nak, std::string_view host, PKPState* result);
// Processes an HSTS header value from the host, adding entries to
// dynamic state if necessary.
@@ -585,14 +584,14 @@ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_s
typedef std::map<HashedHost, STSState> STSStateMap;
typedef std::map<HashedHost, PKPState> PKPStateMap;
- base::Value::Dict NetLogUpgradeToSSLParam(const std::string& host);
+ base::Value::Dict NetLogUpgradeToSSLParam(const NetworkAnonymizationKey& nak, const std::string& host);
- base::Value::Dict NetLogUpgradeToSSLParam(std::string_view host);
+ base::Value::Dict NetLogUpgradeToSSLParam(const NetworkAnonymizationKey& nak, std::string_view host);
// IsBuildTimely returns true if the current build is new enough ensure that
// built in security information (i.e. HSTS preloading and pinning
@@ -481,7 +485,8 @@ class NET_EXPORT TransportSecurityState {
// Helper method for actually checking pins.
PKPStatus CheckPublicKeyPinsImpl(const HostPortPair& host_port_pair,
PKPStatus CheckPublicKeyPinsImpl(std::string_view host,
bool is_issued_by_known_root,
- const HashValueVector& hashes);
+ const HashValueVector& hashes,
@@ -619,17 +618,17 @@ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_s
diff --git a/net/quic/crypto/proof_verifier_chromium.cc b/net/quic/crypto/proof_verifier_chromium.cc
--- a/net/quic/crypto/proof_verifier_chromium.cc
+++ b/net/quic/crypto/proof_verifier_chromium.cc
@@ -412,7 +412,8 @@ int ProofVerifierChromium::Job::DoVerifyCertComplete(int result) {
@@ -411,7 +411,8 @@ int ProofVerifierChromium::Job::DoVerifyCertComplete(int result) {
TransportSecurityState::PKPStatus pin_validity =
transport_security_state_->CheckPublicKeyPins(
HostPortPair(hostname_, port_),
cert_verify_result.is_issued_by_known_root,
hostname_, cert_verify_result.is_issued_by_known_root,
- cert_verify_result.public_key_hashes);
+ cert_verify_result.public_key_hashes,
+ proof_verifier_->network_anonymization_key_);
switch (pin_validity) {
case TransportSecurityState::PKPStatus::VIOLATED:
result = ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN;
@@ -439,7 +440,7 @@ int ProofVerifierChromium::Job::DoVerifyCertComplete(int result) {
@@ -438,7 +439,7 @@ int ProofVerifierChromium::Job::DoVerifyCertComplete(int result) {
verify_details_->is_fatal_cert_error =
IsCertStatusError(cert_status) &&
result != ERR_CERT_KNOWN_INTERCEPTION_BLOCKED &&
@@ -641,7 +640,7 @@ diff --git a/net/quic/crypto/proof_verifier_chromium.cc b/net/quic/crypto/proof_
diff --git a/net/quic/quic_chromium_client_session.cc b/net/quic/quic_chromium_client_session.cc
--- a/net/quic/quic_chromium_client_session.cc
+++ b/net/quic/quic_chromium_client_session.cc
@@ -1504,7 +1504,7 @@ bool QuicChromiumClientSession::CanPool(
@@ -1509,7 +1509,7 @@ bool QuicChromiumClientSession::CanPool(
return SpdySession::CanPool(transport_security_state_, ssl_info,
*ssl_config_service_, session_key_.host(),
@@ -653,17 +652,17 @@ diff --git a/net/quic/quic_chromium_client_session.cc b/net/quic/quic_chromium_c
diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket_impl.cc
--- a/net/socket/ssl_client_socket_impl.cc
+++ b/net/socket/ssl_client_socket_impl.cc
@@ -1186,7 +1186,8 @@ ssl_verify_result_t SSLClientSocketImpl::HandleVerifyResult() {
TransportSecurityState::PKPStatus pin_validity =
@@ -1188,7 +1188,8 @@ ssl_verify_result_t SSLClientSocketImpl::HandleVerifyResult() {
context_->transport_security_state()->CheckPublicKeyPins(
host_and_port_, server_cert_verify_result_.is_issued_by_known_root,
host_and_port_.host(),
server_cert_verify_result_.is_issued_by_known_root,
- server_cert_verify_result_.public_key_hashes);
+ server_cert_verify_result_.public_key_hashes,
+ ssl_config_.network_anonymization_key);
switch (pin_validity) {
case TransportSecurityState::PKPStatus::VIOLATED:
server_cert_verify_result_.cert_status |=
@@ -1208,7 +1209,7 @@ ssl_verify_result_t SSLClientSocketImpl::HandleVerifyResult() {
@@ -1210,7 +1211,7 @@ ssl_verify_result_t SSLClientSocketImpl::HandleVerifyResult() {
IsCertStatusError(server_cert_verify_result_.cert_status) &&
result != ERR_CERT_KNOWN_INTERCEPTION_BLOCKED &&
context_->transport_security_state()->ShouldSSLErrorsBeFatal(
@@ -685,16 +684,16 @@ diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc
// Pooling is prohibited if the server cert is not valid for the new domain,
// and for connections on which client certs were sent. It is also prohibited
// when channel ID was sent if the hosts are from different eTLDs+1.
@@ -754,7 +755,7 @@ bool SpdySession::CanPool(TransportSecurityState* transport_security_state,
// Port is left at 0 as it is never used.
@@ -753,7 +754,7 @@ bool SpdySession::CanPool(TransportSecurityState* transport_security_state,
if (transport_security_state->CheckPublicKeyPins(
HostPortPair(new_hostname, 0), ssl_info.is_issued_by_known_root,
new_hostname, ssl_info.is_issued_by_known_root,
- ssl_info.public_key_hashes) ==
+ ssl_info.public_key_hashes, network_anonymization_key) ==
TransportSecurityState::PKPStatus::VIOLATED) {
return false;
}
@@ -977,7 +978,8 @@ bool SpdySession::VerifyDomainAuthentication(std::string_view domain) const {
@@ -976,7 +977,8 @@ bool SpdySession::VerifyDomainAuthentication(std::string_view domain) const {
return true; // This is not a secure session, so all domains are okay.
return CanPool(transport_security_state_, ssl_info, *ssl_config_service_,
@@ -704,7 +703,7 @@ diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc
}
void SpdySession::EnqueueStreamWrite(
@@ -3011,7 +3013,8 @@ void SpdySession::OnAltSvc(
@@ -3010,7 +3012,8 @@ void SpdySession::OnAltSvc(
return;
}
if (!CanPool(transport_security_state_, ssl_info, *ssl_config_service_,
@@ -754,17 +753,15 @@ diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/ur
diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc
--- a/net/url_request/url_request_http_job.cc
+++ b/net/url_request/url_request_http_job.cc
@@ -344,7 +344,8 @@ std::unique_ptr<URLRequestJob> URLRequestHttpJob::Create(URLRequest* request) {
@@ -343,6 +343,7 @@ std::unique_ptr<URLRequestJob> URLRequestHttpJob::Create(URLRequest* request) {
if (TransportSecurityState* hsts =
request->context()->transport_security_state()) {
upgrade_decision =
- hsts->GetSSLUpgradeDecision(url.host(), request->net_log());
+ hsts->GetSSLUpgradeDecision(request->isolation_info().network_anonymization_key(),
+ url.host(), request->net_log());
}
// Check for reasons not to return a URLRequestHttpJob. These don't apply to
@@ -1204,7 +1205,7 @@ void URLRequestHttpJob::ProcessStrictTransportSecurityHeader() {
upgrade_decision = hsts->GetSSLUpgradeDecision(
+ request->isolation_info().network_anonymization_key(),
url.host(),
/*is_top_level_nav=*/request->isolation_info().IsMainFrameRequest(),
request->net_log());
@@ -1205,7 +1206,7 @@ void URLRequestHttpJob::ProcessStrictTransportSecurityHeader() {
std::optional<std::string_view> value;
if ((value =
headers->EnumerateHeader(nullptr, "Strict-Transport-Security"))) {
@@ -773,7 +770,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
}
}
@@ -1275,7 +1276,7 @@ void URLRequestHttpJob::OnStartCompleted(int result) {
@@ -1276,7 +1277,7 @@ void URLRequestHttpJob::OnStartCompleted(int result) {
TransportSecurityState* state = context->transport_security_state();
NotifySSLCertificateError(
result, transaction_->GetResponseInfo()->ssl_info,
@@ -785,7 +782,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
diff --git a/services/network/network_context.cc b/services/network/network_context.cc
--- a/services/network/network_context.cc
+++ b/services/network/network_context.cc
@@ -2016,6 +2016,7 @@ void NetworkContext::CreateHostResolver(
@@ -2011,6 +2011,7 @@ void NetworkContext::CreateHostResolver(
void NetworkContext::VerifyCertForSignedExchange(
const scoped_refptr<net::X509Certificate>& certificate,
const GURL& url,
@@ -793,7 +790,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont
const std::string& ocsp_result,
const std::string& sct_list,
VerifyCertForSignedExchangeCallback callback) {
@@ -2026,6 +2027,7 @@ void NetworkContext::VerifyCertForSignedExchange(
@@ -2021,6 +2022,7 @@ void NetworkContext::VerifyCertForSignedExchange(
pending_cert_verify->result = std::make_unique<net::CertVerifyResult>();
pending_cert_verify->certificate = certificate;
pending_cert_verify->url = url;
@@ -801,7 +798,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont
pending_cert_verify->ocsp_result = ocsp_result;
pending_cert_verify->sct_list = sct_list;
net::CertVerifier* cert_verifier =
@@ -2070,17 +2072,19 @@ void NetworkContext::SetCorsOriginAccessListsForOrigin(
@@ -2065,17 +2067,19 @@ void NetworkContext::SetCorsOriginAccessListsForOrigin(
std::move(callback).Run();
}
@@ -824,7 +821,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont
IsHSTSActiveForHostCallback callback) {
net::TransportSecurityState* security_state =
url_request_context_->transport_security_state();
@@ -2090,10 +2094,10 @@ void NetworkContext::IsHSTSActiveForHost(const std::string& host,
@@ -2085,10 +2089,10 @@ void NetworkContext::IsHSTSActiveForHost(const std::string& host,
return;
}
@@ -837,7 +834,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont
GetHSTSStateCallback callback) {
base::Value::Dict result;
@@ -2131,10 +2135,10 @@ void NetworkContext::GetHSTSState(const std::string& domain,
@@ -2126,10 +2130,10 @@ void NetworkContext::GetHSTSState(const std::string& domain,
net::TransportSecurityState::STSState dynamic_sts_state;
net::TransportSecurityState::PKPState dynamic_pkp_state;
bool found_sts_dynamic = transport_security_state->GetDynamicSTSState(
@@ -850,7 +847,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont
if (found_sts_dynamic) {
result.Set("dynamic_upgrade_mode",
static_cast<int>(dynamic_sts_state.upgrade_mode));
@@ -2172,6 +2176,7 @@ void NetworkContext::GetHSTSState(const std::string& domain,
@@ -2167,6 +2171,7 @@ void NetworkContext::GetHSTSState(const std::string& domain,
}
void NetworkContext::DeleteDynamicDataForHost(
@@ -858,7 +855,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont
const std::string& host,
DeleteDynamicDataForHostCallback callback) {
net::TransportSecurityState* transport_security_state =
@@ -2182,7 +2187,7 @@ void NetworkContext::DeleteDynamicDataForHost(
@@ -2177,7 +2182,7 @@ void NetworkContext::DeleteDynamicDataForHost(
}
std::move(callback).Run(
@@ -867,7 +864,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont
}
void NetworkContext::EnableStaticKeyPinningForTesting(
@@ -2226,7 +2231,7 @@ void NetworkContext::PreconnectSockets(
@@ -2221,7 +2226,7 @@ void NetworkContext::PreconnectSockets(
DCHECK(!require_network_anonymization_key_ ||
!network_anonymization_key.IsEmpty());
@@ -876,7 +873,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont
// |PreconnectSockets| may receive arguments from the renderer, which is not
// guaranteed to validate them.
@@ -3071,7 +3076,9 @@ void NetworkContext::OnConnectionError() {
@@ -3059,7 +3064,9 @@ void NetworkContext::OnConnectionError() {
}
}
@@ -887,7 +884,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont
// TODO(lilyhoughton) This needs to be gotten rid of once explicit
// construction with a URLRequestContext is no longer supported.
@@ -3088,6 +3095,7 @@ GURL NetworkContext::GetHSTSRedirectForPreconnect(const GURL& original_url) {
@@ -3076,6 +3083,7 @@ GURL NetworkContext::GetHSTSRedirectForPreconnect(const GURL& original_url) {
}
if (!url_request_context_->transport_security_state()->ShouldUpgradeToSSL(
@@ -895,9 +892,9 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont
original_url.host())) {
RecordHSTSPreconnectUpgradeReason(
HSTSRedirectUpgradeReason::kNotUpgradedNoHSTSPin);
@@ -3139,7 +3147,8 @@ void NetworkContext::OnVerifyCertForSignedExchangeComplete(
@@ -3127,7 +3135,8 @@ void NetworkContext::OnVerifyCertForSignedExchangeComplete(
url_request_context_->transport_security_state()->CheckPublicKeyPins(
net::HostPortPair::FromURL(pending_cert_verify->url),
pending_cert_verify->url.host(),
pending_cert_verify->result->is_issued_by_known_root,
- pending_cert_verify->result->public_key_hashes);
+ pending_cert_verify->result->public_key_hashes,
@@ -933,7 +930,7 @@ diff --git a/services/network/network_context.h b/services/network/network_conte
const std::string& host,
DeleteDynamicDataForHostCallback callback) override;
void SetCorsOriginAccessListsForOrigin(
@@ -748,7 +751,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
@@ -752,7 +755,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
mojo::PendingRemote<mojom::CookieAccessObserver> cookie_observer,
net::FirstPartySetMetadata first_party_set_metadata);
@@ -943,7 +940,7 @@ diff --git a/services/network/network_context.h b/services/network/network_conte
#if BUILDFLAG(IS_P2P_ENABLED)
void DestroySocketManager(P2PSocketManager* socket_manager);
@@ -951,6 +955,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
@@ -955,6 +959,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
VerifyCertForSignedExchangeCallback callback;
scoped_refptr<net::X509Certificate> certificate;
GURL url;
@@ -954,21 +951,20 @@ diff --git a/services/network/network_context.h b/services/network/network_conte
diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom
--- a/services/network/public/mojom/network_context.mojom
+++ b/services/network/public/mojom/network_context.mojom
@@ -1489,6 +1489,7 @@ interface NetworkContext {
@@ -1523,22 +1523,23 @@ interface NetworkContext {
// implementation is currently specific for use by Signed Exchange.
VerifyCertForSignedExchange(X509Certificate certificate,
url.mojom.Url url,
+ NetworkAnonymizationKey network_anonymization_key,
string ocsp_response,
string sct_list) => (int32 error_code,
CertVerifyResult cv_result,
@@ -1496,16 +1497,16 @@ interface NetworkContext {
string sct_list)
=> (int32 error_code, CertVerifyResult cv_result, bool pkp_bypassed);
// Adds explicitly-specified data as if it was processed from an
// HSTS header. Used by tests and implementation of chrome://net-internals.
- AddHSTS(string host, mojo_base.mojom.Time expiry,
+ AddHSTS(NetworkAnonymizationKey nak, string host, mojo_base.mojom.Time expiry,
bool include_subdomains) => ();
- AddHSTS(string host, mojo_base.mojom.Time expiry, bool include_subdomains)
+ AddHSTS(NetworkAnonymizationKey nak, string host, mojo_base.mojom.Time expiry, bool include_subdomains)
=> ();
// Returns true if it is known that |host| has requested to always be
// accessed via HTTPS.
@@ -977,12 +973,12 @@ diff --git a/services/network/public/mojom/network_context.mojom b/services/netw
// Retrieve values from the HSTS state from the associated contexts
// transport security state.
- GetHSTSState(string domain)
+ GetHSTSState(NetworkAnonymizationKey nak, string domain)
=> (mojo_base.mojom.DictionaryValue state);
- GetHSTSState(string domain) => (mojo_base.mojom.DictionaryValue state);
+ GetHSTSState(NetworkAnonymizationKey nak, string domain) => (mojo_base.mojom.DictionaryValue state);
// Sets allowed and blocked origins respectively for the URLLoaderFactory
@@ -1524,7 +1525,7 @@ interface NetworkContext {
// consumers to access beyond the same-origin policy. The list is managed per
@@ -1557,7 +1558,7 @@ interface NetworkContext {
// Deletes any dynamic data stored for |host| from the transport
// security state. Returns true iff an entry was deleted.
// See net::TransportSecurityState::DeleteDynamicDataForHost for more detail.
+1 -1
View File
@@ -9,7 +9,7 @@ Subject: WIN Disable first run
diff --git a/chrome/browser/ui/startup/first_run_service.cc b/chrome/browser/ui/startup/first_run_service.cc
--- a/chrome/browser/ui/startup/first_run_service.cc
+++ b/chrome/browser/ui/startup/first_run_service.cc
@@ -170,7 +170,7 @@ bool IsFirstRunMarkedFinishedInPrefs() {
@@ -123,7 +123,7 @@ bool IsFirstRunMarkedFinishedInPrefs() {
// static
void FirstRunService::RegisterLocalStatePrefs(PrefRegistrySimple* registry) {
@@ -10,10 +10,10 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/content/browser/file_system_access/features.cc b/content/browser/file_system_access/features.cc
--- a/content/browser/file_system_access/features.cc
+++ b/content/browser/file_system_access/features.cc
@@ -24,6 +24,7 @@ BASE_FEATURE(kFileSystemAccessBFCache,
BASE_FEATURE(kFileSystemAccessDragAndDropCheckBlocklist,
"FileSystemAccessDragAndDropCheckBlocklist",
base::FEATURE_ENABLED_BY_DEFAULT);
@@ -10,6 +10,7 @@
#include "third_party/blink/public/common/features_generated.h"
namespace content::features {
+SET_CROMITE_FEATURE_ENABLED(kFileSystemAccessDragAndDropCheckBlocklist);
// TODO(crbug.com/40896420): Remove this flag eventually.
+67 -115
View File
@@ -11,17 +11,16 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../android/java/res/layout/fre_tosanduma.xml | 160 +++++++++
chrome/android/java/res/values/dimens.xml | 10 +
chrome/android/java/res/values/styles.xml | 24 ++
.../firstrun/ChildAccountStatusSupplier.java | 13 -
.../DefaultSearchEngineFirstRunFragment.java | 3 -
.../browser/firstrun/FirstRunActivity.java | 32 +-
.../firstrun/FirstRunActivityBase.java | 6 +-
.../firstrun/FirstRunFlowSequencer.java | 73 +---
.../browser/firstrun/FirstRunActivity.java | 23 +-
.../firstrun/FirstRunFlowSequencer.java | 61 +---
.../browser/firstrun/FirstRunUtils.java | 1 +
.../firstrun/ToSAndUMAFirstRunFragment.java | 335 +++++++++++++++++
.../firstrun/TosAndUmaFragmentView.java | 336 ++++++++++++++++++
...creenSigninAndHistorySyncActivityBase.java | 6 +-
.../browser/locale/LocaleManagerDelegate.java | 5 +-
.../Welcome-screen.grdp | 27 ++
15 files changed, 915 insertions(+), 113 deletions(-)
14 files changed, 914 insertions(+), 80 deletions(-)
create mode 100644 chrome/android/java/res/layout/fre_tosanduma.xml
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/firstrun/TosAndUmaFragmentView.java
@@ -30,7 +29,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni
--- a/chrome/android/chrome_java_resources.gni
+++ b/chrome/android/chrome_java_resources.gni
@@ -501,6 +501,7 @@ chrome_java_resources = [
@@ -505,6 +505,7 @@ chrome_java_resources = [
"java/res/layout/find_in_page.xml",
"java/res/layout/find_toolbar.xml",
"java/res/layout/fre_tos_privacy_disclaimer.xml",
@@ -41,7 +40,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
--- a/chrome/android/chrome_java_sources.gni
+++ b/chrome/android/chrome_java_sources.gni
@@ -655,6 +655,8 @@ chrome_java_sources = [
@@ -651,6 +651,8 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/firstrun/SkipTosDialogPolicyListener.java",
"java/src/org/chromium/chrome/browser/firstrun/SyncConsentFirstRunFragment.java",
"java/src/org/chromium/chrome/browser/firstrun/TosDialogBehaviorSharedPrefInvalidator.java",
@@ -218,7 +217,7 @@ new file mode 100644
diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml
--- a/chrome/android/java/res/values/dimens.xml
+++ b/chrome/android/java/res/values/dimens.xml
@@ -104,6 +104,16 @@ found in the LICENSE file.
@@ -114,6 +114,16 @@ found in the LICENSE file.
<dimen name="fre_loading_spinner_size">48dp</dimen>
<dimen name="fre_policy_privacy_disclaimer_icon_size">18dp</dimen>
<dimen name="fre_policy_privacy_disclaimer_icon_padding">8dp</dimen>
@@ -269,36 +268,6 @@ diff --git a/chrome/android/java/res/values/styles.xml b/chrome/android/java/res
<!-- Generic Overlay Panel styles -->
<style name="OverlayPanelTextViewLayout">
<item name="android:layout_width">match_parent</item>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ChildAccountStatusSupplier.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ChildAccountStatusSupplier.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ChildAccountStatusSupplier.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ChildAccountStatusSupplier.java
@@ -13,7 +13,6 @@ import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.supplier.OneshotSupplier;
import org.chromium.base.supplier.OneshotSupplierImpl;
import org.chromium.components.signin.AccountManagerFacade;
-import org.chromium.components.signin.AccountUtils;
/**
* Fetches the child account status to be used by other FRE components.
@@ -42,18 +41,6 @@ public class ChildAccountStatusSupplier implements OneshotSupplier<Boolean> {
AccountManagerFacade accountManagerFacade,
FirstRunAppRestrictionInfo appRestrictionInfo) {
mChildAccountStatusStartTime = SystemClock.elapsedRealtime();
-
- appRestrictionInfo.getHasAppRestriction(this::onAppRestrictionDetected);
-
- accountManagerFacade
- .getCoreAccountInfos()
- .then(
- coreAccountInfos -> {
- AccountUtils.checkChildAccountStatus(
- accountManagerFacade,
- coreAccountInfos,
- (isChild, account) -> onChildAccountStatusReady(isChild));
- });
}
@Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/DefaultSearchEngineFirstRunFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/DefaultSearchEngineFirstRunFragment.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/DefaultSearchEngineFirstRunFragment.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/DefaultSearchEngineFirstRunFragment.java
@@ -321,8 +290,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/Defaul
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
@@ -32,8 +32,7 @@ import org.chromium.chrome.browser.fonts.FontPreloader;
import org.chromium.chrome.browser.metrics.UmaUtils;
@@ -37,8 +37,7 @@ import org.chromium.chrome.browser.metrics.UmaUtils;
import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory;
-import org.chromium.chrome.browser.signin.SigninCheckerProvider;
@@ -330,8 +299,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR
+import org.chromium.chrome.browser.firstrun.ToSAndUMAFirstRunFragment;
import org.chromium.chrome.browser.ui.signin.DialogWhenLargeContentLayout;
import org.chromium.chrome.browser.ui.signin.SigninUtils;
import org.chromium.chrome.browser.ui.signin.history_sync.HistorySyncHelper;
@@ -213,7 +212,7 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa
import org.chromium.chrome.browser.ui.signin.fullscreen_signin.FullscreenSigninMediator;
@@ -233,7 +232,7 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa
/** Creates first page and sets up adapter. Should result UI being shown on the screen. */
private void createFirstPage() {
BooleanSupplier showWelcomePage = () -> !FirstRunStatus.shouldSkipWelcomePage();
@@ -340,7 +309,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR
mFreProgressStates.add(MobileFreProgress.WELCOME_SHOWN);
mPagerAdapter = new FirstRunPagerAdapter(FirstRunActivity.this, mPages);
mPager.setAdapter(mPagerAdapter);
@@ -238,7 +237,6 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa
@@ -258,7 +257,6 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa
//
// TODO(b/245912657): explicitly sign in supervised users in {@link
// FullscreenSigninMediator#handleContinueWithNative} rather than relying on SigninChecker.
@@ -348,35 +317,26 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR
mFirstRunFlowSequencer.updateFirstRunProperties(mFreProperties);
@@ -253,27 +251,6 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa
@@ -273,18 +271,6 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa
mFreProgressStates.add(MobileFreProgress.DEFAULT_SEARCH_ENGINE_SHOWN);
}
- // An optional history sync opt-in page, the visibility of this page will be decided on the
- // fly according to the situation.
- if (ChromeFeatureList.isEnabled(
- ChromeFeatureList.REPLACE_SYNC_PROMOS_WITH_SIGN_IN_PROMOS)) {
- BooleanSupplier showHistorySync =
- () -> mFreProperties.getBoolean(SHOW_HISTORY_SYNC_PAGE);
- if (!showHistorySync.getAsBoolean()) {
- HistorySyncHelper historySyncHelper =
- HistorySyncHelper.getForProfile(
- getProfileProviderSupplier().get().getOriginalProfile());
- historySyncHelper.recordHistorySyncNotShown(SigninAccessPoint.START_PAGE);
- }
- mPages.add(new FirstRunPage<>(HistorySyncFirstRunFragment.class, showHistorySync));
- mFreProgressStates.add(MobileFreProgress.HISTORY_SYNC_OPT_IN_SHOWN);
- } else {
- BooleanSupplier showSyncConsent =
- () -> mFreProperties.getBoolean(SHOW_SYNC_CONSENT_PAGE);
- mPages.add(new FirstRunPage<>(SyncConsentFirstRunFragment.class, showSyncConsent));
- mFreProgressStates.add(MobileFreProgress.SYNC_CONSENT_SHOWN);
- BooleanSupplier showHistorySync = () -> mFreProperties.getBoolean(SHOW_HISTORY_SYNC_PAGE);
- if (!showHistorySync.getAsBoolean()) {
- HistorySyncHelper historySyncHelper =
- HistorySyncHelper.getForProfile(
- getProfileProviderSupplier().get().getOriginalProfile());
- historySyncHelper.recordHistorySyncNotShown(SigninAccessPoint.START_PAGE);
- }
- mPages.add(new FirstRunPage<>(HistorySyncFirstRunFragment.class, showHistorySync));
- mFreProgressStates.add(MobileFreProgress.HISTORY_SYNC_OPT_IN_SHOWN);
-
if (mPagerAdapter != null) {
mPagerAdapter.notifyDataSetChanged();
}
@@ -661,11 +638,6 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa
@@ -690,11 +676,6 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa
public void acceptTermsOfService(boolean allowMetricsAndCrashUploading) {
assert mNativeInitializationPromise.isFulfilled();
@@ -388,36 +348,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR
FirstRunUtils.acceptTermsOfService(allowMetricsAndCrashUploading);
FirstRunStatus.setSkipWelcomePage(true);
flushPersistentData();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java
@@ -37,8 +37,6 @@ import org.chromium.chrome.browser.profiles.ProfileProvider;
import org.chromium.chrome.browser.ui.system.StatusBarColorController;
import org.chromium.components.browser_ui.widget.gesture.BackPressHandler;
import org.chromium.components.policy.PolicyService;
-import org.chromium.components.signin.AccountManagerFacade;
-import org.chromium.components.signin.AccountManagerFacadeProvider;
/** Base class for First Run Experience. */
// TODO(crbug.com/349787455): Consider renaming it now that it is also the base for non-FRE
@@ -116,9 +114,7 @@ public abstract class FirstRunActivityBase extends AsyncInitializationActivity
@Override
@CallSuper
public void triggerLayoutInflation() {
- AccountManagerFacade accountManagerFacade = AccountManagerFacadeProvider.getInstance();
- mChildAccountStatusSupplier =
- new ChildAccountStatusSupplier(accountManagerFacade, mFirstRunAppRestrictionInfo);
+ mChildAccountStatusSupplier = new ChildAccountStatusSupplier(null, null);
// TODO(crbug.com/40939710): Find the underlying issue causing the status bar not to be set
// during FRE, this is just a temporary visual fix.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunFlowSequencer.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunFlowSequencer.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunFlowSequencer.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunFlowSequencer.java
@@ -29,15 +29,9 @@ import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomiza
@@ -30,15 +30,9 @@ import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomiza
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.profiles.ProfileProvider;
import org.chromium.chrome.browser.search_engines.SearchEnginePromoType;
-import org.chromium.chrome.browser.signin.AppRestrictionSupplier;
-import org.chromium.chrome.browser.signin.services.IdentityServicesProvider;
-import org.chromium.chrome.browser.signin.services.SigninPreferencesManager;
-import org.chromium.chrome.browser.ui.signin.history_sync.HistorySyncHelper;
@@ -426,29 +364,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR
import org.chromium.components.embedder_support.util.UrlConstants;
-import org.chromium.components.signin.AccountManagerFacadeProvider;
-import org.chromium.components.signin.identitymanager.ConsentLevel;
-import org.chromium.components.signin.identitymanager.IdentityManager;
/**
* A helper to determine what should be the sequence of First Run Experience screens, and whether
@@ -65,46 +59,17 @@ public abstract class FirstRunFlowSequencer {
/** Returns true if the sync consent promo page should be shown. */
boolean shouldShowSyncConsentPage(boolean isChild) {
- if (isChild) {
- // Always show the sync consent page for child account.
- return true;
- }
- assert mProfileSupplier.get() != null;
- Profile profile = mProfileSupplier.get().getOriginalProfile();
- final IdentityManager identityManager =
- IdentityServicesProvider.get().getIdentityManager(profile);
- if (identityManager.getPrimaryAccountInfo(ConsentLevel.SYNC) != null) {
- // No need to show the sync consent page if users already consented to sync.
- return false;
- }
- // Show the sync consent page only to the signed-in users.
- return identityManager.hasPrimaryAccount(ConsentLevel.SIGNIN);
+ return false;
* A helper to determine what should be the sequence of First Run Experience screens, and whether it
@@ -63,29 +57,13 @@ public abstract class FirstRunFlowSequencer {
}
boolean shouldShowHistorySyncOptIn(boolean isChild) {
@@ -480,7 +399,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR
}
}
@@ -156,18 +121,8 @@ public abstract class FirstRunFlowSequencer {
@@ -137,18 +115,8 @@ public abstract class FirstRunFlowSequencer {
* method.
*/
void start() {
@@ -501,7 +420,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR
}
@VisibleForTesting
@@ -190,14 +145,10 @@ public abstract class FirstRunFlowSequencer {
@@ -167,14 +135,10 @@ public abstract class FirstRunFlowSequencer {
}
private void maybeProcessFreEnvironmentPreNative() {
@@ -516,7 +435,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR
onFlowIsKnown(freProperties);
}
@@ -208,8 +159,8 @@ public abstract class FirstRunFlowSequencer {
@@ -185,8 +149,8 @@ public abstract class FirstRunFlowSequencer {
* @param freProperties Resulting FRE properties bundle.
*/
public void updateFirstRunProperties(Bundle freProperties) {
@@ -524,10 +443,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR
- if (freProperties == null) return;
+ if (freProperties == null)
+ throw new RuntimeException("attempting to update null FRE properties");
boolean isHistorySyncEnabled =
ChromeFeatureList.isEnabled(
ChromeFeatureList.REPLACE_SYNC_PROMOS_WITH_SIGN_IN_PROMOS);
@@ -237,8 +188,6 @@ public abstract class FirstRunFlowSequencer {
assert freProperties != null;
freProperties.putBoolean(
FirstRunActivity.SHOW_HISTORY_SYNC_PAGE, shouldShowHistorySyncOptIn());
@@ -205,8 +169,6 @@ public abstract class FirstRunFlowSequencer {
// Mark the FRE flow as complete.
FirstRunStatus.setFirstRunFlowComplete(true);
@@ -536,7 +455,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR
}
/**
@@ -327,13 +276,17 @@ public abstract class FirstRunFlowSequencer {
@@ -305,9 +267,6 @@ public abstract class FirstRunFlowSequencer {
Log.d(TAG, "Redirecting user through FRE.");
CrashKeys.getInstance().set(CrashKeyIndex.FIRST_RUN, "yes");
- // Launch the async restriction checking as soon as we know we'll be running FRE.
- AppRestrictionSupplier.startInitializationHint();
-
if (inSameTask) {
FreIntentCreator intentCreator = new FreIntentCreator();
Intent freIntent =
@@ -333,13 +292,17 @@ public abstract class FirstRunFlowSequencer {
if (!(caller instanceof Activity)) {
freIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
@@ -1248,6 +1177,29 @@ new file mode 100644
+ return mLastWidth > mLastHeight;
+ }
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/FullscreenSigninAndHistorySyncActivityBase.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/FullscreenSigninAndHistorySyncActivityBase.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/signin/FullscreenSigninAndHistorySyncActivityBase.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/FullscreenSigninAndHistorySyncActivityBase.java
@@ -25,8 +25,6 @@ import org.chromium.chrome.browser.profiles.ProfileProvider;
import org.chromium.chrome.browser.ui.system.StatusBarColorController;
import org.chromium.components.browser_ui.widget.gesture.BackPressHandler;
import org.chromium.components.policy.PolicyService;
-import org.chromium.components.signin.AccountManagerFacade;
-import org.chromium.components.signin.AccountManagerFacadeProvider;
/** Base class for First run experience and fullscreen signin and history sync promos. */
public abstract class FullscreenSigninAndHistorySyncActivityBase extends AsyncInitializationActivity
@@ -92,9 +90,7 @@ public abstract class FullscreenSigninAndHistorySyncActivityBase extends AsyncIn
@Override
@CallSuper
public void triggerLayoutInflation() {
- AccountManagerFacade accountManagerFacade = AccountManagerFacadeProvider.getInstance();
- mChildAccountStatusSupplier =
- new ChildAccountStatusSupplier(accountManagerFacade, mAppRestrictionSupplier);
+ mChildAccountStatusSupplier = new ChildAccountStatusSupplier(null, null);
// TODO(crbug.com/40939710): Find the underlying issue causing the status bar not to be set
// during re-FRE, this is just a temporary visual fix.
diff --git a/chrome/browser/locale/java/src/org/chromium/chrome/browser/locale/LocaleManagerDelegate.java b/chrome/browser/locale/java/src/org/chromium/chrome/browser/locale/LocaleManagerDelegate.java
--- a/chrome/browser/locale/java/src/org/chromium/chrome/browser/locale/LocaleManagerDelegate.java
+++ b/chrome/browser/locale/java/src/org/chromium/chrome/browser/locale/LocaleManagerDelegate.java
@@ -10,43 +10,48 @@ See also:
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
chrome/browser/ui/browser_ui_prefs.cc | 2 +-
.../peerconnection/peer_connection_dependency_factory.cc | 6 ++++--
2 files changed, 5 insertions(+), 3 deletions(-)
chrome/browser/ui/browser_ui_prefs.cc | 2 +-
.../blink/common/peerconnection/webrtc_ip_handling_policy.cc | 5 ++++-
.../peerconnection/peer_connection_dependency_factory.cc | 2 +-
3 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc
--- a/chrome/browser/ui/browser_ui_prefs.cc
+++ b/chrome/browser/ui/browser_ui_prefs.cc
@@ -107,7 +107,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
@@ -109,7 +109,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
false);
#endif
registry->RegisterStringPref(prefs::kWebRTCIPHandlingPolicy,
- blink::kWebRTCIPHandlingDefault);
+ blink::kWebRTCIPHandlingDisableNonProxiedUdp);
registry->RegisterListPref(prefs::kWebRTCIPHandlingUrl, base::Value::List());
registry->RegisterStringPref(prefs::kWebRTCUDPPortRange, std::string());
registry->RegisterBooleanPref(prefs::kWebRtcEventLogCollectionAllowed, false);
registry->RegisterListPref(prefs::kWebRtcLocalIpsAllowedUrls);
diff --git a/third_party/blink/common/peerconnection/webrtc_ip_handling_policy.cc b/third_party/blink/common/peerconnection/webrtc_ip_handling_policy.cc
--- a/third_party/blink/common/peerconnection/webrtc_ip_handling_policy.cc
+++ b/third_party/blink/common/peerconnection/webrtc_ip_handling_policy.cc
@@ -30,7 +30,10 @@ blink::mojom::WebRtcIpHandlingPolicy ToWebRTCIPHandlingPolicy(
if (preference == kWebRTCIPHandlingDisableNonProxiedUdp) {
return blink::mojom::WebRtcIpHandlingPolicy::kDisableNonProxiedUdp;
}
- return blink::mojom::WebRtcIpHandlingPolicy::kDefault;
+ if (preference == kWebRTCIPHandlingDefault) {
+ return blink::mojom::WebRtcIpHandlingPolicy::kDefault;
+ }
+ return blink::mojom::WebRtcIpHandlingPolicy::kkDisableNonProxiedUdp;
}
const char* ToString(blink::mojom::WebRtcIpHandlingPolicy policy) {
diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
--- a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
+++ b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
@@ -120,7 +120,9 @@ WebRTCIPHandlingPolicy GetWebRTCIPHandlingPolicy(const String& preference) {
return kDefaultPublicInterfaceOnly;
if (preference == kWebRTCIPHandlingDisableNonProxiedUdp)
return kDisableNonProxiedUdp;
- return kDefault;
+ if (preference == kWebRTCIPHandlingDefault)
+ return kDefault;
+ return kDisableNonProxiedUdp;
}
bool IsValidPortRange(uint16_t min_port, uint16_t max_port) {
@@ -897,7 +899,7 @@ PeerConnectionDependencyFactory::CreatePortAllocator(
@@ -959,7 +959,7 @@ PeerConnectionDependencyFactory::CreatePortAllocator(
break;
}
- VLOG(3) << "WebRTC routing preferences: "
+ LOG(INFO) << "WebRTC routing preferences: "
<< "policy: " << policy
- VLOG(3) << "WebRTC routing preferences: " << "policy: "
+ LOG(INFO) << "WebRTC routing preferences: " << "policy: "
<< ToString(webrtc_ip_handling_policy)
<< ", multiple_routes: " << port_config.enable_multiple_routes
<< ", nonproxied_udp: " << port_config.enable_nonproxied_udp
--