From dcfc983cde316b2e248c3dce1c1b28bfec719d15 Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Mon, 15 Apr 2024 19:19:49 +0200 Subject: [PATCH] patches for v124 --- build/cromite_patches_list.txt | 1 - .../Add-an-always-incognito-mode.patch | 77 ++++----- ...Add-lifetime-options-for-permissions.patch | 155 +++++++++--------- .../Add-menu-item-to-bookmark-all-tabs.patch | 33 +++- .../Add-menu-item-to-view-source.patch | 4 +- .../Add-option-to-force-tablet-UI.patch | 38 ++++- build/patches/Add-search-engine.patch | 26 ++- .../Add-setting-to-clear-data-on-exit.patch | 15 +- ...d-setting-to-invert-tap-and-long-tap.patch | 10 +- build/patches/Add-site-engagement-flag.patch | 2 +- build/patches/Add-support-to-jxl.patch | 17 +- ...ow-building-without-supervised-users.patch | 44 +++-- .../Block-qjz9zk-or-trk-requests.patch | 2 +- build/patches/Bromite-auto-updater.patch | 13 +- build/patches/Client-hints-overrides.patch | 2 +- .../Content-settings-infrastructure.patch | 57 +++++-- build/patches/Cromite-Branding.patch | 6 +- build/patches/Disable-PrivacyGuide.patch | 13 +- .../patches/Disable-all-predictors-code.patch | 82 ++++----- .../Disable-conversion-measurement-api.patch | 14 +- ...sallowing-MIDI-permission-by-default.patch | 8 +- .../Enable-native-Android-autofill.patch | 128 ++++----------- build/patches/Enable-share-intent.patch | 11 +- .../Eyeo-Adblock-Remove-Privacy-Issues.patch | 35 +++- build/patches/Logcat-crash-reports-UI.patch | 14 +- .../Move-navigation-bar-to-bottom.patch | 76 ++++++--- .../patches/Partition-HSTS-cache-by-NAK.patch | 4 +- .../Partition-blobs-by-top-frame-URL.patch | 30 ++-- ...ning-all-cookies-by-top-frame-domain.patch | 75 +++++---- ...referrals-in-cross-origin-navigation.patch | 15 +- ...cklisted-URLs-upon-bookmark-creation.patch | 13 +- .../Remove-navigator.connection-info.patch | 2 +- ...l-of-execution-context-address-space.patch | 24 +-- ...Show-warnings-on-downloads-over-HTTP.patch | 17 -- build/patches/User-agent-customization.patch | 14 +- build/patches/add-browser-policy.patch | 57 +++++-- 36 files changed, 605 insertions(+), 529 deletions(-) delete mode 100644 build/patches/Show-warnings-on-downloads-over-HTTP.patch diff --git a/build/cromite_patches_list.txt b/build/cromite_patches_list.txt index 2de6ab7b..1a54f263 100644 --- a/build/cromite_patches_list.txt +++ b/build/cromite_patches_list.txt @@ -246,7 +246,6 @@ Remove-support-for-device-memory-and-cpu-recovery.patch Log-dangling-attributes-in-some-html-elements.patch Keep-Side-Panel-Companion-disabled.patch Lock-Profile-Cookie-Database.patch -Show-warnings-on-downloads-over-HTTP.patch Compress-libchrome-to-free-up-some-space.patch Cromite-Branding.patch Disable-Feeback-Collector.patch diff --git a/build/patches/Add-an-always-incognito-mode.patch b/build/patches/Add-an-always-incognito-mode.patch index 0f970ac0..1688eec8 100644 --- a/build/patches/Add-an-always-incognito-mode.patch +++ b/build/patches/Add-an-always-incognito-mode.patch @@ -23,21 +23,21 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/android/chrome_java_sources.gni | 2 + .../java/res/xml/incognito_preferences.xml | 37 ++++ .../java/res/xml/privacy_preferences.xml | 5 + - .../AlwaysIncognitoLinkInterceptor.java | 53 ++++++ + .../AlwaysIncognitoLinkInterceptor.java | 54 ++++++ .../chrome/browser/ChromeTabbedActivity.java | 22 ++- .../chrome/browser/app/ChromeActivity.java | 4 + - .../AppMenuPropertiesDelegateImpl.java | 27 ++- + .../AppMenuPropertiesDelegateImpl.java | 28 ++- .../ChromeContextMenuPopulator.java | 7 +- .../CustomTabActivityLifecycleUmaTracker.java | 31 ---- .../CustomTabAppMenuPropertiesDelegate.java | 4 + .../CustomTabIntentDataProvider.java | 5 +- .../browser/download/DownloadUtils.java | 16 +- .../history/HistoryContentManager.java | 7 +- - .../browser/history/HistoryManager.java | 26 ++- - .../chrome/browser/history/HistoryPage.java | 15 ++ + .../browser/history/HistoryManager.java | 27 ++- + .../chrome/browser/history/HistoryPage.java | 16 ++ .../native_page/NativePageFactory.java | 4 +- .../chrome/browser/ntp/RecentTabsManager.java | 28 ++- - .../privacy/settings/IncognitoSettings.java | 160 ++++++++++++++++++ + .../privacy/settings/IncognitoSettings.java | 161 ++++++++++++++++++ .../browser/settings/SettingsActivity.java | 4 + .../HistoricalTabModelObserver.java | 5 +- .../tab/tab_restore/HistoricalTabSaver.java | 2 +- @@ -85,7 +85,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../add-an-always-incognito-mode.inc | 3 + .../add-an-always-incognito-mode.inc | 1 + net/base/file_stream_context.cc | 2 +- - 66 files changed, 770 insertions(+), 101 deletions(-) + 66 files changed, 775 insertions(+), 101 deletions(-) create mode 100644 chrome/android/java/res/xml/incognito_preferences.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/IncognitoSettings.java @@ -186,7 +186,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognito new file mode 100644 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java -@@ -0,0 +1,53 @@ +@@ -0,0 +1,54 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ @@ -199,6 +199,7 @@ new file mode 100644 +import org.chromium.components.user_prefs.UserPrefs; +import org.chromium.components.prefs.PrefService; +import org.chromium.chrome.browser.profiles.Profile; ++import org.chromium.chrome.browser.profiles.ProfileManager; +import org.chromium.chrome.browser.preferences.Pref; +import org.chromium.base.Log; + @@ -222,7 +223,7 @@ new file mode 100644 + } + + public static void setAlwaysIncognito(boolean enabled) { -+ UserPrefs.get(Profile.getLastUsedRegularProfile()) ++ UserPrefs.get(ProfileManager.getLastUsedRegularProfile()) + .setBoolean(Pref.ALWAYS_INCOGNITO_ENABLED, enabled); + + SharedPreferences.Editor sharedPreferenceEditor = ContextUtils.getAppSharedPreferences().edit(); @@ -232,7 +233,7 @@ new file mode 100644 + + public static void migrateSettingToNative() { + if (isAlwaysIncognito()) { -+ PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile()); ++ PrefService prefService = UserPrefs.get(ProfileManager.getLastUsedRegularProfile()); + if (!prefService.getBoolean(Pref.ALWAYS_INCOGNITO_ENABLED)) { + Log.i(TAG, "Pref migration from java to native"); + prefService.setBoolean(Pref.ALWAYS_INCOGNITO_ENABLED, true); @@ -263,7 +264,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct - mTabModelSelector.getTabModelFilterProvider().getTabModelFilter(false)); - + boolean alwaysIncognito = AlwaysIncognitoLinkInterceptor.isAlwaysIncognito(); -+ PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile()); ++ PrefService prefService = UserPrefs.get(ProfileManager.getLastUsedRegularProfile()); + boolean historyEnabledInIncognito = + prefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED); + if ((alwaysIncognito && historyEnabledInIncognito) || !alwaysIncognito) { @@ -310,15 +311,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java -@@ -37,6 +37,7 @@ import org.chromium.base.supplier.OneshotSupplier; +@@ -37,6 +37,8 @@ import org.chromium.base.supplier.OneshotSupplier; import org.chromium.base.supplier.Supplier; import org.chromium.chrome.R; import org.chromium.chrome.browser.ActivityTabProvider; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; ++import org.chromium.chrome.browser.profiles.ProfileManager; import org.chromium.chrome.browser.bookmarks.BookmarkModel; import org.chromium.chrome.browser.bookmarks.PowerBookmarkUtils; import org.chromium.chrome.browser.commerce.ShoppingFeatures; -@@ -99,6 +100,10 @@ import java.util.ArrayList; +@@ -99,6 +101,10 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -329,7 +331,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App /** * Base implementation of {@link AppMenuPropertiesDelegate} that handles hiding and showing menu * items based on activity state. -@@ -593,6 +598,13 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate +@@ -593,6 +599,13 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate } private void prepareCommonMenuItems(Menu menu, @MenuGroup int menuGroup, boolean isIncognito) { @@ -343,14 +345,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App // We have to iterate all menu items since same menu item ID may be associated with more // than one menu items. boolean isOverviewModeMenu = menuGroup == MenuGroup.OVERVIEW_MODE_MENU; -@@ -656,7 +668,15 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate +@@ -656,7 +669,15 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate } if (item.getItemId() == R.id.recent_tabs_menu_id) { - item.setVisible(!isIncognito); + if (always_incognito) { + PrefService prefService = -+ UserPrefs.get(Profile.getLastUsedRegularProfile()); ++ UserPrefs.get(ProfileManager.getLastUsedRegularProfile()); + boolean historyEnabledInIncognito = + prefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED); + item.setVisible(historyEnabledInIncognito); @@ -360,7 +362,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App } if (item.getItemId() == R.id.menu_select_tabs) { item.setVisible(isMenuSelectTabsVisible); -@@ -865,8 +885,9 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate +@@ -865,8 +886,9 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate && !isChromeScheme && !isFileScheme && !isContentScheme @@ -523,7 +525,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo - if (tab.isIncognito()) return false; + boolean always_incognito = AlwaysIncognitoLinkInterceptor.isAlwaysIncognito(); + if (always_incognito) { -+ PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile()); ++ PrefService prefService = UserPrefs.get(ProfileManager.getLastUsedRegularProfile()); + boolean historyEnabledInIncognito = + prefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED); + if (historyEnabledInIncognito == false) @@ -561,19 +563,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java -@@ -23,6 +23,7 @@ import com.google.android.material.tabs.TabLayout; - - import org.chromium.base.IntentUtils; - import org.chromium.base.supplier.ObservableSupplier; -+import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; - import org.chromium.base.supplier.ObservableSupplierImpl; - import org.chromium.base.supplier.Supplier; - import org.chromium.chrome.R; -@@ -50,6 +51,12 @@ import org.chromium.ui.base.Clipboard; +@@ -50,6 +50,14 @@ import org.chromium.ui.base.Clipboard; import java.util.List; ++import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; +import org.chromium.chrome.browser.profiles.Profile; ++import org.chromium.chrome.browser.profiles.ProfileManager; +import org.chromium.base.ContextUtils; +import org.chromium.components.prefs.PrefService; +import org.chromium.components.user_prefs.UserPrefs; @@ -582,7 +578,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History /** Combines and manages the different UI components of browsing history. */ public class HistoryManager implements OnMenuItemClickListener, -@@ -140,7 +147,7 @@ public class HistoryManager +@@ -140,7 +148,7 @@ public class HistoryManager mUmaRecorder.recordOpenHistory(); // If incognito placeholder is shown, we don't need to create History UI elements. @@ -591,7 +587,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History mSelectableListLayout = null; mRootView = getIncognitoHistoryPlaceholderView(); return; -@@ -349,9 +356,22 @@ public class HistoryManager +@@ -349,9 +357,22 @@ public class HistoryManager onBackPressStateChanged(); } @@ -600,7 +596,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History + public boolean shouldShowIncognitoPlaceholder() { + if (mIsIncognito && + AlwaysIncognitoLinkInterceptor.isAlwaysIncognito()) { -+ PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile()); ++ PrefService prefService = UserPrefs.get(ProfileManager.getLastUsedRegularProfile()); + boolean historyEnabledInIncognito = + prefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED); + if (historyEnabledInIncognito) return false; @@ -615,7 +611,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History // If Incognito placeholder is shown no need to call any destroy method. return; } -@@ -407,7 +427,7 @@ public class HistoryManager +@@ -407,7 +428,7 @@ public class HistoryManager * @return True if manager handles this event, false if it decides to ignore. */ private boolean onBackPressed() { @@ -627,19 +623,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryPage.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryPage.java --- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryPage.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryPage.java -@@ -9,6 +9,7 @@ import android.net.Uri; - - import org.chromium.base.supplier.Supplier; - import org.chromium.chrome.R; -+import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; - import org.chromium.chrome.browser.profiles.Profile; - import org.chromium.chrome.browser.tab.Tab; - import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; -@@ -16,6 +17,12 @@ import org.chromium.chrome.browser.ui.native_page.BasicNativePage; +@@ -16,6 +16,14 @@ import org.chromium.chrome.browser.ui.native_page.BasicNativePage; import org.chromium.chrome.browser.ui.native_page.NativePageHost; import org.chromium.components.embedder_support.util.UrlConstants; ++import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; +import org.chromium.chrome.browser.profiles.Profile; ++import org.chromium.chrome.browser.profiles.ProfileManager; +import org.chromium.base.ContextUtils; +import org.chromium.components.prefs.PrefService; +import org.chromium.components.user_prefs.UserPrefs; @@ -648,13 +638,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History /** Native page for managing browsing history. */ public class HistoryPage extends BasicNativePage { private HistoryManager mHistoryManager; -@@ -41,6 +48,14 @@ public class HistoryPage extends BasicNativePage { +@@ -41,6 +49,14 @@ public class HistoryPage extends BasicNativePage { String url) { super(host); + if (profile.isOffTheRecord() && + AlwaysIncognitoLinkInterceptor.isAlwaysIncognito()) { -+ PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile()); ++ PrefService prefService = UserPrefs.get(ProfileManager.getLastUsedRegularProfile()); + boolean historyEnabledInIncognito = + prefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED); + if (historyEnabledInIncognito == true) profile = profile.getOriginalProfile(); @@ -740,7 +730,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting new file mode 100644 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/IncognitoSettings.java -@@ -0,0 +1,160 @@ +@@ -0,0 +1,161 @@ +/* + This file is part of Bromite. + @@ -776,6 +766,7 @@ new file mode 100644 +import org.chromium.chrome.R; +import org.chromium.chrome.browser.preferences.Pref; +import org.chromium.chrome.browser.profiles.Profile; ++import org.chromium.chrome.browser.profiles.ProfileManager; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; +import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; +import org.chromium.chrome.browser.ui.messages.snackbar.INeedSnackbarManager; @@ -799,7 +790,7 @@ new file mode 100644 + private static final String PREF_INCOGNITO_TAB_HISTORY = "incognito_history"; + private static final String PREF_INCOGNITO_SAVE_SITE_SETTING = "incognito_save_site_setting"; + -+ private final PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile()); ++ private final PrefService prefService = UserPrefs.get(ProfileManager.getLastUsedRegularProfile()); + + @Override + public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { diff --git a/build/patches/Add-lifetime-options-for-permissions.patch b/build/patches/Add-lifetime-options-for-permissions.patch index 168745d7..154c2e24 100644 --- a/build/patches/Add-lifetime-options-for-permissions.patch +++ b/build/patches/Add-lifetime-options-for-permissions.patch @@ -79,14 +79,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../android/permissions_android_strings.grd | 17 ++++ .../geolocation_permission_context_android.cc | 34 ++++++-- .../geolocation_permission_context_android.h | 13 ++- - .../permissions/permission_context_base.cc | 54 ++++++++++-- + .../permissions/permission_context_base.cc | 52 ++++++++++-- .../permissions/permission_context_base.h | 23 +++++- components/permissions/permission_prompt.h | 3 +- components/permissions/permission_request.cc | 30 ++++++- components/permissions/permission_request.h | 16 +++- .../permissions/permission_request_manager.cc | 45 ++++++---- .../permissions/permission_request_manager.h | 11 ++- - 34 files changed, 489 insertions(+), 62 deletions(-) + 34 files changed, 488 insertions(+), 61 deletions(-) diff --git a/chrome/browser/permissions/last_tab_standing_tracker.cc b/chrome/browser/permissions/last_tab_standing_tracker.cc --- a/chrome/browser/permissions/last_tab_standing_tracker.cc @@ -106,12 +106,12 @@ diff --git a/chrome/browser/permissions/last_tab_standing_tracker.cc b/chrome/br + ContentSettingsType type) { + ContentSettingsForOneType session_settings = + content_settings->GetSettingsForOneType( -+ type, content_settings::SessionModel::UserSession); ++ type, content_settings::mojom::SessionModel::USER_SESSION); + + GURL url = origin.GetURL(); + for (ContentSettingPatternSource& entry : session_settings) { + if (content_settings::IsConstraintSessionExpiration(entry, -+ mojom::LifetimeMode::UNTIL_ORIGIN_CLOSED) && ++ content_settings::mojom::LifetimeMode::UNTIL_ORIGIN_CLOSED) && + entry.primary_pattern.Matches(url)) { + content_settings->SetWebsiteSettingCustomScope( + entry.primary_pattern, entry.secondary_pattern, @@ -153,12 +153,12 @@ diff --git a/chrome/browser/permissions/one_time_permissions_tracker.cc b/chrome + ContentSettingsType type) { + ContentSettingsForOneType session_settings = + content_settings->GetSettingsForOneType( -+ type, content_settings::SessionModel::UserSession); ++ type, content_settings::mojom::SessionModel::USER_SESSION); + + GURL url = origin.GetURL(); + for (ContentSettingPatternSource& entry : session_settings) { + if (content_settings::IsConstraintSessionExpiration(entry, -+ mojom::LifetimeMode::UNTIL_ORIGIN_CLOSED) && ++ content_settings::mojom::LifetimeMode::UNTIL_ORIGIN_CLOSED) && + entry.primary_pattern.Matches(url)) { + content_settings->SetWebsiteSettingCustomScope( + entry.primary_pattern, entry.secondary_pattern, @@ -233,7 +233,7 @@ diff --git a/chrome/browser/ui/views/permissions/embedded_permission_prompt.cc b void EmbeddedPermissionPrompt::AllowThisTime() { - delegate_->AcceptThisTime(); -+ delegate_->AcceptThisTime(mojom::LifetimeMode::ONLY_THIS_TIME); ++ delegate_->AcceptThisTime(content_settings::mojom::LifetimeMode::ONLY_THIS_TIME); CloseCurrentViewAndMaybeShowNext(/*first_prompt=*/false); } @@ -245,7 +245,7 @@ diff --git a/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_v return; case PermissionDialogButton::kAcceptOnce: - delegate_->AcceptThisTime(); -+ delegate_->AcceptThisTime(mojom::LifetimeMode::ONLY_THIS_TIME); ++ delegate_->AcceptThisTime(content_settings::mojom::LifetimeMode::ONLY_THIS_TIME); return; case PermissionDialogButton::kDeny: delegate_->Deny(); @@ -320,37 +320,37 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.cc return constraints.session_model() == mojom::SessionModel::DURABLE; } -+ContentSettingConstraints GetConstraintSessionExpiration(mojom::LifetimeMode lifetime_mode) { ++ContentSettingConstraints GetConstraintSessionExpiration(content_settings::mojom::LifetimeMode lifetime_mode) { + int lifetime; + base::Time now; -+ if (lifetime_mode == mojom::LifetimeMode::ONLY_THIS_TIME) { ++ if (lifetime_mode == content_settings::mojom::LifetimeMode::ONLY_THIS_TIME) { + // note: this content settings will be discarded immediately + // 1h is used as a magic constant to identify the one-time lifetime mode + lifetime = 1; -+ } else if (lifetime_mode == mojom::LifetimeMode::UNTIL_ORIGIN_CLOSED) { ++ } else if (lifetime_mode == content_settings::mojom::LifetimeMode::UNTIL_ORIGIN_CLOSED) { + now = base::Time::Now(); + lifetime = 24; + } else { + lifetime = 0; + } -+ mojom::ContentSettingConstraints c(now); ++ ContentSettingConstraints c(now); + c.set_lifetime(base::Hours(lifetime)); + c.set_session_model(mojom::SessionModel::USER_SESSION); + return c; +} + +bool IsConstraintSessionExpiration(const ContentSettingPatternSource& source, -+ mojom::LifetimeMode lifetime_mode) { -+ if (source.metadata.session_model() != content_settings::SessionModel::UserSession) ++ content_settings::mojom::LifetimeMode lifetime_mode) { ++ if (source.metadata.session_model() != content_settings::mojom::SessionModel::USER_SESSION) + return false; + -+ LifetimeMode type; ++ mojom::LifetimeMode type; + if (source.metadata.lifetime() == base::Hours(24)) { -+ type = mojom::LifetimeMode::UNTIL_ORIGIN_CLOSED; ++ type = content_settings::mojom::LifetimeMode::UNTIL_ORIGIN_CLOSED; + } else if (source.metadata.expiration() == (base::Time() + base::Hours(1))) { -+ type = mojom::LifetimeMode::ONLY_THIS_TIME; ++ type = content_settings::mojom::LifetimeMode::ONLY_THIS_TIME; + } else { -+ type = mojom::LifetimeMode::UNTIL_BROWSER_CLOSED; ++ type = content_settings::mojom::LifetimeMode::UNTIL_BROWSER_CLOSED; + } + + return lifetime_mode == type; @@ -366,11 +366,11 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.h b // Returns whether the given type supports tracking last_visit timestamps. bool CanTrackLastVisit(ContentSettingsType type); -+ContentSettingConstraints GetConstraintSessionExpiration(LifetimeMode lifetime_mode); ++ContentSettingConstraints GetConstraintSessionExpiration(mojom::LifetimeMode lifetime_mode); + +bool IsConstraintSessionExpiration( + const ContentSettingPatternSource& source, -+ LifetimeMode lifetime_mode); ++ mojom::LifetimeMode lifetime_mode); + // Get a timestamp with week-precision. base::Time GetCoarseVisitedTime(base::Time time); @@ -385,7 +385,7 @@ diff --git a/components/content_settings/core/common/content_settings_enums.mojo + +// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.components.content_settings +// GENERATED_JAVA_CLASS_NAME_OVERRIDE: LifetimeMode -+enum class LifetimeMode { ++enum LifetimeMode { + ALWAYS = 99, + ONLY_THIS_TIME = 1, + UNTIL_ORIGIN_CLOSED = 2, @@ -498,7 +498,7 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info. (info.metadata.session_model() == content_settings::mojom::SessionModel::ONE_TIME); + permission_info.is_user_session = -+ (info.metadata.session_model() == content_settings::SessionModel::UserSession); ++ (info.metadata.session_model() == content_settings::mojom::SessionModel::USER_SESSION); auto* page_specific_content_settings = GetPageSpecificContentSettings(); if (page_specific_content_settings && setting == CONTENT_SETTING_ALLOW) { @@ -667,10 +667,10 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_ void PermissionDialogDelegate::Accept(JNIEnv* env, const JavaParamRef& obj) { CHECK(permission_prompt_); -+ mojom::LifetimeMode lifetimeOption = -+ static_cast( ++ content_settings::mojom::LifetimeMode lifetimeOption = ++ static_cast( + java_delegate_->GetSelectedLifetimeOption()); -+ if (lifetimeOption != mojom::LifetimeMode::ALWAYS) { ++ if (lifetimeOption != content_settings::mojom::LifetimeMode::ALWAYS) { + permission_prompt_->AcceptThisTime(lifetimeOption); + return; + } @@ -682,8 +682,8 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_ const JavaParamRef& obj) { CHECK(permission_prompt_); - permission_prompt_->AcceptThisTime(); -+ mojom::LifetimeMode lifetimeOption = -+ static_cast( ++ content_settings::mojom::LifetimeMode lifetimeOption = ++ static_cast( + java_delegate_->GetSelectedLifetimeOption()); + permission_prompt_->AcceptThisTime(lifetimeOption); } @@ -691,10 +691,10 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_ void PermissionDialogDelegate::Cancel(JNIEnv* env, const JavaParamRef& obj) { CHECK(permission_prompt_); -+ mojom::LifetimeMode lifetimeOption = -+ static_cast( ++ content_settings::mojom::LifetimeMode lifetimeOption = ++ static_cast( + java_delegate_->GetSelectedLifetimeOption()); -+ if (lifetimeOption != mojom::LifetimeMode::ALWAYS) { ++ if (lifetimeOption != content_settings::mojom::LifetimeMode::ALWAYS) { + permission_prompt_->DenyThisTime(lifetimeOption); + return; + } @@ -721,11 +721,11 @@ diff --git a/components/permissions/android/permission_prompt/permission_prompt_ -void PermissionPromptAndroid::AcceptThisTime() { - delegate_->AcceptThisTime(); -+void PermissionPromptAndroid::AcceptThisTime(mojom::LifetimeMode lifetimeOption) { ++void PermissionPromptAndroid::AcceptThisTime(content_settings::mojom::LifetimeMode lifetimeOption) { + delegate_->AcceptThisTime(lifetimeOption); +} + -+void PermissionPromptAndroid::DenyThisTime(mojom::LifetimeMode lifetimeOption) { ++void PermissionPromptAndroid::DenyThisTime(content_settings::mojom::LifetimeMode lifetimeOption) { + delegate_->DenyThisTime(lifetimeOption); } @@ -738,9 +738,9 @@ diff --git a/components/permissions/android/permission_prompt/permission_prompt_ void Closing(); void Accept(); - void AcceptThisTime(); -+ void AcceptThisTime(mojom::LifetimeMode lifetimeOption); ++ void AcceptThisTime(content_settings::mojom::LifetimeMode lifetimeOption); void Deny(); -+ void DenyThisTime(mojom::LifetimeMode lifetimeOption); ++ void DenyThisTime(content_settings::mojom::LifetimeMode lifetimeOption); void SetManageClicked(); void SetLearnMoreClicked(); bool ShouldCurrentRequestUseQuietUI(); @@ -780,7 +780,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr DCHECK(is_final_decision); + NotifyPermissionSetWithLifetime(id, requesting_origin, embedding_origin, + std::move(callback), persist, content_setting, is_one_time, is_final_decision, -+ mojom::LifetimeMode::ALWAYS); ++ content_settings::mojom::LifetimeMode::ALWAYS); +} +void GeolocationPermissionContextAndroid::NotifyPermissionSetWithLifetime( @@ -791,7 +791,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr + bool persist, + ContentSetting content_setting, + bool is_one_time, bool is_final_decision, -+ mojom::LifetimeMode lifetime_option) { ++ content_settings::mojom::LifetimeMode lifetime_option) { bool is_default_search = IsRequestingOriginDSE(requesting_origin); if (content_setting == CONTENT_SETTING_ALLOW && !location_settings_->IsSystemLocationSettingEnabled()) { @@ -836,7 +836,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr bool persist, ContentSetting content_setting, - bool is_one_time, -+ bool is_one_time, mojom::LifetimeMode lifetime_option, ++ bool is_one_time, content_settings::mojom::LifetimeMode lifetime_option, LocationSettingsDialogOutcome prompt_outcome) { bool is_default_search = IsRequestingOriginDSE(requesting_origin); if (prompt_outcome == GRANTED) { @@ -856,7 +856,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr ContentSetting content_setting, - bool is_one_time) { - GeolocationPermissionContext::NotifyPermissionSet( -+ bool is_one_time, mojom::LifetimeMode lifetime_option) { ++ bool is_one_time, content_settings::mojom::LifetimeMode lifetime_option) { + GeolocationPermissionContext::NotifyPermissionSetWithLifetime( id, requesting_origin, embedding_origin, std::move(callback), persist, - content_setting, is_one_time, /*is_final_decision=*/true); @@ -879,7 +879,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr + ContentSetting content_setting, + bool is_one_time, + bool is_final_decision, -+ mojom::LifetimeMode lifetime_option) override; ++ content_settings::mojom::LifetimeMode lifetime_option) override; content::PermissionResult UpdatePermissionStatusWithDeviceStatus( content::PermissionResult result, const GURL& requesting_origin, @@ -887,7 +887,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr bool persist, ContentSetting content_setting, bool is_one_time, -+ mojom::LifetimeMode lifetime_option, ++ content_settings::mojom::LifetimeMode lifetime_option, LocationSettingsDialogOutcome prompt_outcome); void FinishNotifyPermissionSet(const PermissionRequestID& id, @@ -897,7 +897,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr ContentSetting content_setting, - bool is_one_time); + bool is_one_time, -+ mojom::LifetimeMode lifetime_option); ++ content_settings::mojom::LifetimeMode lifetime_option); std::unique_ptr location_settings_; @@ -928,7 +928,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm bool is_one_time, - bool is_final_decision) { + bool is_final_decision, -+ mojom::LifetimeMode lifetime_option) { ++ content_settings::mojom::LifetimeMode lifetime_option) { DCHECK(content_setting == CONTENT_SETTING_ALLOW || content_setting == CONTENT_SETTING_BLOCK || content_setting == CONTENT_SETTING_DEFAULT); @@ -958,7 +958,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm + DCHECK(is_one_time == false); + NotifyPermissionSetWithLifetime(id, requesting_origin, embedding_origin, std::move(callback), + persist, content_setting, is_one_time, is_final_decision, -+ mojom::LifetimeMode::ALWAYS); ++ content_settings::mojom::LifetimeMode::ALWAYS); +} + +void PermissionContextBase::NotifyPermissionSetWithLifetime( @@ -970,7 +970,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm + ContentSetting content_setting, + bool is_one_time, + bool is_final_decision, -+ mojom::LifetimeMode lifetime_option) { ++ content_settings::mojom::LifetimeMode lifetime_option) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); if (persist) { @@ -980,26 +980,23 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm } if (is_final_decision) { -@@ -612,15 +641,26 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin, +@@ -612,6 +641,15 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin, const GURL& embedding_origin, ContentSetting content_setting, bool is_one_time) { + UpdateContentSetting(requesting_origin, embedding_origin, content_setting, -+ is_one_time, mojom::LifetimeMode::ALWAYS); ++ is_one_time, content_settings::mojom::LifetimeMode::ALWAYS); +} + +void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin, + const GURL& embedding_origin, + ContentSetting content_setting, + bool is_one_time, -+ mojom::LifetimeMode lifetime_option) { ++ content_settings::mojom::LifetimeMode lifetime_option) { DCHECK_EQ(requesting_origin, requesting_origin.DeprecatedGetOriginAsURL()); DCHECK_EQ(embedding_origin, embedding_origin.DeprecatedGetOriginAsURL()); DCHECK(content_setting == CONTENT_SETTING_ALLOW || - content_setting == CONTENT_SETTING_BLOCK); - -- content_settings::ContentSettingConstraints constraints; -+ mojom::ContentSettingConstraints constraints; +@@ -621,6 +659,8 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin, constraints.set_session_model( is_one_time ? content_settings::mojom::SessionModel::ONE_TIME : content_settings::mojom::SessionModel::DURABLE); @@ -1023,7 +1020,7 @@ diff --git a/components/permissions/permission_context_base.h b/components/permi + ContentSetting content_setting, + bool is_one_time, + bool is_final_decision, -+ mojom::LifetimeMode lifetime_option); ++ content_settings::mojom::LifetimeMode lifetime_option); virtual void NotifyPermissionSet(const PermissionRequestID& id, const GURL& requesting_origin, const GURL& embedding_origin, @@ -1035,7 +1032,7 @@ diff --git a/components/permissions/permission_context_base.h b/components/permi + const GURL& embedding_origin, + ContentSetting content_setting, + bool is_one_time, -+ mojom::LifetimeMode lifetime_option); ++ content_settings::mojom::LifetimeMode lifetime_option); virtual void UpdateContentSetting(const GURL& requesting_origin, const GURL& embedding_origin, ContentSetting content_setting, @@ -1058,7 +1055,7 @@ diff --git a/components/permissions/permission_context_base.h b/components/permi bool is_one_time, - bool is_final_decision); + bool is_final_decision, -+ mojom::LifetimeMode lifetime_option); ++ content_settings::mojom::LifetimeMode lifetime_option); void NotifyObservers(const ContentSettingsPattern& primary_pattern, const ContentSettingsPattern& secondary_pattern, @@ -1070,9 +1067,9 @@ diff --git a/components/permissions/permission_prompt.h b/components/permissions virtual void Accept() = 0; - virtual void AcceptThisTime() = 0; -+ virtual void AcceptThisTime(mojom::LifetimeMode lifetime_option) = 0; ++ virtual void AcceptThisTime(content_settings::mojom::LifetimeMode lifetime_option) = 0; virtual void Deny() = 0; -+ virtual void DenyThisTime(mojom::LifetimeMode lifetime_option) = 0; ++ virtual void DenyThisTime(content_settings::mojom::LifetimeMode lifetime_option) = 0; virtual void Dismiss() = 0; virtual void Ignore() = 0; @@ -1100,7 +1097,7 @@ diff --git a/components/permissions/permission_request.cc b/components/permissio -void PermissionRequest::PermissionGranted(bool is_one_time) { +void PermissionRequest::PermissionGranted(bool is_one_time, -+ mojom::LifetimeMode lifetime_option) { ++ content_settings::mojom::LifetimeMode lifetime_option) { + if (permission_decided_callback_withlifetime_) { + std::move(permission_decided_callback_withlifetime_) + .Run(CONTENT_SETTING_ALLOW, is_one_time, /*is_final_decision=*/true, lifetime_option); @@ -1113,7 +1110,7 @@ diff --git a/components/permissions/permission_request.cc b/components/permissio -void PermissionRequest::PermissionDenied() { +void PermissionRequest::PermissionDenied(bool is_one_time, -+ mojom::LifetimeMode lifetime_option) { ++ content_settings::mojom::LifetimeMode lifetime_option) { + if (permission_decided_callback_withlifetime_) { + std::move(permission_decided_callback_withlifetime_) + .Run(CONTENT_SETTING_BLOCK, is_one_time, /*is_final_decision=*/true, lifetime_option); @@ -1128,7 +1125,7 @@ diff --git a/components/permissions/permission_request.cc b/components/permissio + if (permission_decided_callback_withlifetime_) { + std::move(permission_decided_callback_withlifetime_) + .Run(CONTENT_SETTING_DEFAULT, false, is_final_decision, -+ mojom::LifetimeMode::ALWAYS); ++ content_settings::mojom::LifetimeMode::ALWAYS); + return; + } if (permission_decided_callback_) { @@ -1144,7 +1141,7 @@ diff --git a/components/permissions/permission_request.h b/components/permission + using PermissionDecidedCallbackWithLifetime = + base::OnceCallback; ++ content_settings::mojom::LifetimeMode /*lifetime_option*/)>; + // `permission_decided_callback` is called when the permission request is // resolved by the user (see comment on PermissionDecidedCallback above). @@ -1165,11 +1162,11 @@ diff --git a/components/permissions/permission_request.h b/components/permission // |origin| are closed or navigated away from, and then the permission will // automatically expire after 1 day. - void PermissionGranted(bool is_one_time); -+ void PermissionGranted(bool is_one_time, mojom::LifetimeMode lifetime_option); ++ void PermissionGranted(bool is_one_time, content_settings::mojom::LifetimeMode lifetime_option); // Called when the user has denied the requested permission. - void PermissionDenied(); -+ void PermissionDenied(bool is_one_time, mojom::LifetimeMode lifetime_option); ++ void PermissionDenied(bool is_one_time, content_settings::mojom::LifetimeMode lifetime_option); // Called when the user has cancelled the permission request. This // corresponds to a denial, but is segregated in case the context needs to @@ -1191,7 +1188,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p if (base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kDenyPermissionPrompts)) { - request->PermissionDenied(); -+ request->PermissionDenied(/*is_one_time*/false, mojom::LifetimeMode::ALWAYS); ++ request->PermissionDenied(/*is_one_time*/false, content_settings::mojom::LifetimeMode::ALWAYS); request->RequestFinished(); return; } @@ -1200,7 +1197,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p if (url::Origin::Create(request->requesting_origin()) == auto_approval_origin.value()) { - request->PermissionGranted(/*is_one_time=*/false); -+ request->PermissionGranted(/*is_one_time=*/false, mojom::LifetimeMode::ALWAYS); ++ request->PermissionGranted(/*is_one_time=*/false, content_settings::mojom::LifetimeMode::ALWAYS); } request->RequestFinished(); return; @@ -1210,7 +1207,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p PermissionGrantedIncludingDuplicates(*requests_iter, - /*is_one_time=*/false); + /*is_one_time=*/false, -+ mojom::LifetimeMode::ALWAYS); ++ content_settings::mojom::LifetimeMode::ALWAYS); #if !BUILDFLAG(IS_ANDROID) std::optional content_settings_type = @@ -1219,7 +1216,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p } -void PermissionRequestManager::AcceptThisTime() { -+void PermissionRequestManager::AcceptThisTime(mojom::LifetimeMode mode) { ++void PermissionRequestManager::AcceptThisTime(content_settings::mojom::LifetimeMode mode) { if (ignore_callbacks_from_prompt_) return; DCHECK(view_); @@ -1237,15 +1234,15 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p } void PermissionRequestManager::Deny() { -+ Deny_(/*is_one_time*/ false, mojom::LifetimeMode::ALWAYS); ++ Deny_(/*is_one_time*/ false, content_settings::mojom::LifetimeMode::ALWAYS); +} + -+void PermissionRequestManager::DenyThisTime(mojom::LifetimeMode mode) { ++void PermissionRequestManager::DenyThisTime(content_settings::mojom::LifetimeMode mode) { + Deny_(/*is_one_time*/ true, mode); +} + +void PermissionRequestManager::Deny_(bool is_one_time, -+ mojom::LifetimeMode lifetime_option) { ++ content_settings::mojom::LifetimeMode lifetime_option) { if (ignore_callbacks_from_prompt_) return; DCHECK(view_); @@ -1263,7 +1260,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p void PermissionRequestManager::PermissionGrantedIncludingDuplicates( PermissionRequest* request, - bool is_one_time) { -+ bool is_one_time, mojom::LifetimeMode lifetime_option) { ++ bool is_one_time, content_settings::mojom::LifetimeMode lifetime_option) { DCHECK_EQ(1ul, base::ranges::count(requests_, request) + pending_permission_requests_.Count(request)) << "Only requests in [pending_permission_]requests_ can have duplicates"; @@ -1272,7 +1269,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p VisitDuplicateRequests( base::BindRepeating( - [](bool is_one_time, -+ [](bool is_one_time, mojom::LifetimeMode lifetime_option, ++ [](bool is_one_time, content_settings::mojom::LifetimeMode lifetime_option, const base::WeakPtr& weak_request) { - weak_request->PermissionGranted(is_one_time); + weak_request->PermissionGranted(is_one_time, lifetime_option); @@ -1284,7 +1281,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p void PermissionRequestManager::PermissionDeniedIncludingDuplicates( - PermissionRequest* request) { -+ PermissionRequest* request, bool is_one_time, mojom::LifetimeMode lifetime_option) { ++ PermissionRequest* request, bool is_one_time, content_settings::mojom::LifetimeMode lifetime_option) { DCHECK_EQ(1ul, base::ranges::count(requests_, request) + pending_permission_requests_.Count(request)) << "Only requests in [pending_permission_]requests_ can have duplicates"; @@ -1295,7 +1292,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p - [](const base::WeakPtr& weak_request) { - weak_request->PermissionDenied(); - }), -+ [](bool is_one_time, mojom::LifetimeMode lifetime_option, const base::WeakPtr& weak_request) { ++ [](bool is_one_time, content_settings::mojom::LifetimeMode lifetime_option, const base::WeakPtr& weak_request) { + weak_request->PermissionDenied(is_one_time, lifetime_option); + }, is_one_time, lifetime_option), request); @@ -1306,7 +1303,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p switch (auto_response_for_test_) { case ACCEPT_ONCE: - AcceptThisTime(); -+ AcceptThisTime(mojom::LifetimeMode::ONLY_THIS_TIME); ++ AcceptThisTime(content_settings::mojom::LifetimeMode::ONLY_THIS_TIME); break; case ACCEPT_ALL: Accept(); @@ -1318,10 +1315,10 @@ diff --git a/components/permissions/permission_request_manager.h b/components/pe GURL GetEmbeddingOrigin() const override; void Accept() override; - void AcceptThisTime() override; -+ void AcceptThisTime(mojom::LifetimeMode lifetime_option) override; ++ void AcceptThisTime(content_settings::mojom::LifetimeMode lifetime_option) override; void Deny() override; -+ void Deny_(bool is_one_time, mojom::LifetimeMode lifetime_option); -+ void DenyThisTime(mojom::LifetimeMode lifetime_option) override; ++ void Deny_(bool is_one_time, content_settings::mojom::LifetimeMode lifetime_option); ++ void DenyThisTime(content_settings::mojom::LifetimeMode lifetime_option) override; void Dismiss() override; void Ignore() override; void FinalizeCurrentRequests() override; @@ -1331,12 +1328,12 @@ diff --git a/components/permissions/permission_request_manager.h b/components/pe void PermissionGrantedIncludingDuplicates(PermissionRequest* request, - bool is_one_time); + bool is_one_time, -+ mojom::LifetimeMode lifetime_option); ++ content_settings::mojom::LifetimeMode lifetime_option); // Calls PermissionDenied on a request and all its duplicates. - void PermissionDeniedIncludingDuplicates(PermissionRequest* request); + void PermissionDeniedIncludingDuplicates(PermissionRequest* request, + bool is_one_time, -+ mojom::LifetimeMode lifetime_option); ++ content_settings::mojom::LifetimeMode lifetime_option); // Calls Cancelled on a request and all its duplicates. void CancelledIncludingDuplicates(PermissionRequest* request, bool is_final_decision = true); diff --git a/build/patches/Add-menu-item-to-bookmark-all-tabs.patch b/build/patches/Add-menu-item-to-bookmark-all-tabs.patch index f519289b..d6e6ae6f 100644 --- a/build/patches/Add-menu-item-to-bookmark-all-tabs.patch +++ b/build/patches/Add-menu-item-to-bookmark-all-tabs.patch @@ -15,7 +15,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html components/bookmark_bar_strings.grdp | 6 ++ .../bookmarks/browser/bookmark_codec.cc | 20 +++++- components/bookmarks/browser/bookmark_codec.h | 7 +- - .../browser/bookmark_load_details.cc | 8 ++- + .../browser/bookmark_load_details.cc | 14 +++- .../bookmarks/browser/bookmark_load_details.h | 2 + .../bookmarks/browser/bookmark_model.cc | 3 +- components/bookmarks/browser/bookmark_model.h | 7 ++ @@ -26,7 +26,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 + - 22 files changed, 234 insertions(+), 14 deletions(-) + 22 files changed, 240 insertions(+), 14 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 @@ -585,7 +585,26 @@ diff --git a/components/bookmarks/browser/bookmark_load_details.cc b/components/ CHECK_EQ(kNumDefaultTopLevelPermanentFolders, root_node_->children().size()); } -@@ -105,8 +107,8 @@ void BookmarkLoadDetails::AddManagedNode( +@@ -86,6 +88,10 @@ void BookmarkLoadDetails::PopulateNodeIdsForLocalOrSyncablePermanentNodes() { + if (mobile_folder_node_->id() == 0) { + mobile_folder_node_->set_id(max_id_++); + } ++ ++ if (tabs_collection_folder_node_->id() == 0) { ++ tabs_collection_folder_node_->set_id(max_id_++); ++ } + } + + void BookmarkLoadDetails::AddManagedNode( +@@ -98,6 +104,7 @@ void BookmarkLoadDetails::AddManagedNode( + CHECK_NE(bb_node_->id(), 0); + CHECK_NE(other_folder_node_->id(), 0); + CHECK_NE(mobile_folder_node_->id(), 0); ++ CHECK_NE(tabs_collection_folder_node_->id(), 0); + + has_managed_node_ = true; + root_node_->Add(std::move(managed_node)); +@@ -105,8 +112,8 @@ void BookmarkLoadDetails::AddManagedNode( void BookmarkLoadDetails::CreateIndices() { local_or_syncable_uuid_index_.insert(root_node_.get()); @@ -596,6 +615,14 @@ diff --git a/components/bookmarks/browser/bookmark_load_details.cc b/components/ for (const auto& child : root_node_->children()) { if (child.get() == account_bb_node_ || child.get() == account_other_folder_node_ || +@@ -125,6 +132,7 @@ void BookmarkLoadDetails::ResetPermanentNodePointers() { + bb_node_ = nullptr; + other_folder_node_ = nullptr; + mobile_folder_node_ = nullptr; ++ tabs_collection_folder_node_ = nullptr; + account_bb_node_ = nullptr; + account_other_folder_node_ = nullptr; + account_mobile_folder_node_ = nullptr; diff --git a/components/bookmarks/browser/bookmark_load_details.h b/components/bookmarks/browser/bookmark_load_details.h --- a/components/bookmarks/browser/bookmark_load_details.h +++ b/components/bookmarks/browser/bookmark_load_details.h diff --git a/build/patches/Add-menu-item-to-view-source.patch b/build/patches/Add-menu-item-to-view-source.patch index e0944e4a..a94294ca 100644 --- a/build/patches/Add-menu-item-to-view-source.patch +++ b/build/patches/Add-menu-item-to-view-source.patch @@ -69,7 +69,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java -@@ -574,6 +574,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate +@@ -575,6 +575,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate isChromeScheme, isFileScheme, isContentScheme, isIncognito, url)); updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */, isChromeScheme); @@ -77,7 +77,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App updateAutoDarkMenuItem(menu, currentTab, isChromeScheme); -@@ -1284,6 +1285,23 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate +@@ -1285,6 +1286,23 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate } } diff --git a/build/patches/Add-option-to-force-tablet-UI.patch b/build/patches/Add-option-to-force-tablet-UI.patch index a1e04643..4359b6b3 100644 --- a/build/patches/Add-option-to-force-tablet-UI.patch +++ b/build/patches/Add-option-to-force-tablet-UI.patch @@ -4,7 +4,7 @@ Subject: Add option to force tablet UI License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../settings/AccessibilitySettings.java | 11 +++++++++++ + .../settings/AccessibilitySettings.java | 12 ++++++++++++ .../ChromeAccessibilitySettingsDelegate.java | 19 +++++++++++++++++++ .../browser/tasks/ReturnToChromeUtil.java | 4 +++- .../chrome/browser/ui/RootUiCoordinator.java | 5 ++++- @@ -16,14 +16,22 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../strings/android_chrome_strings.grd | 7 +++++++ components/BUILD.gn | 6 +++--- .../res/xml/accessibility_preferences.xml | 5 +++++ - .../AccessibilitySettingsDelegate.java | 2 ++ + .../AccessibilitySettingsDelegate.java | 11 +++++++++++ .../chromium/ui/base/DeviceFormFactor.java | 6 ++++++ - 14 files changed, 72 insertions(+), 6 deletions(-) + 14 files changed, 82 insertions(+), 6 deletions(-) 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 -@@ -46,6 +46,9 @@ public class AccessibilitySettings extends PreferenceFragmentCompat +@@ -17,6 +17,7 @@ import org.chromium.chrome.browser.image_descriptions.ImageDescriptionsControlle + import org.chromium.chrome.browser.preferences.Pref; + import org.chromium.chrome.browser.settings.SettingsLauncherImpl; + 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.FontSizePrefs.FontSizePrefsObserver; + import org.chromium.components.browser_ui.accessibility.PageZoomPreference; +@@ -46,6 +47,9 @@ public class AccessibilitySettings extends PreferenceFragmentCompat public static final String PREF_ZOOM_INFO = "zoom_info"; public static final String PREF_IMAGE_DESCRIPTIONS = "image_descriptions"; @@ -33,7 +41,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s private TextScalePreference mTextScalePref; private PageZoomPreference mPageZoomDefaultZoomPref; private ChromeSwitchPreference mPageZoomIncludeOSAdjustment; -@@ -143,6 +146,12 @@ public class AccessibilitySettings extends PreferenceFragmentCompat +@@ -143,6 +147,12 @@ public class AccessibilitySettings extends PreferenceFragmentCompat mPrefService.getBoolean(Pref.READER_FOR_ACCESSIBILITY)); readerForAccessibilityPref.setOnPreferenceChangeListener(this); @@ -46,7 +54,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s Preference captions = findPreference(PREF_CAPTIONS); captions.setOnPreferenceClickListener( preference -> { -@@ -214,6 +223,8 @@ public class AccessibilitySettings extends PreferenceFragmentCompat +@@ -214,6 +224,8 @@ public class AccessibilitySettings extends PreferenceFragmentCompat mFontSizePrefs.setUserFontScaleFactor((Float) newValue); } else if (PREF_FORCE_ENABLE_ZOOM.equals(preference.getKey())) { mFontSizePrefs.setForceEnableZoomFromUser((Boolean) newValue); @@ -255,7 +263,23 @@ diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibil 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 -@@ -26,6 +26,8 @@ public interface AccessibilitySettingsDelegate { +@@ -11,6 +11,15 @@ import org.chromium.content_public.browser.BrowserContextHandle; + * embedder-specific logic. + */ + public interface AccessibilitySettingsDelegate { ++ /** An interface to control a single boolean preference. */ ++ interface BooleanPreferenceDelegate { ++ /** @return whether the preference is enabled. */ ++ boolean isEnabled(); ++ ++ /** Called when the preference value is changed. */ ++ void setEnabled(boolean value); ++ } ++ + /** An interface to control a single integer preference. */ + interface IntegerPreferenceDelegate { + /** @return int - Current value of the preference of this instance. */ +@@ -26,6 +35,8 @@ public interface AccessibilitySettingsDelegate { /** @return The BrowserContextHandle that should be used to read and update settings. */ BrowserContextHandle getBrowserContextHandle(); diff --git a/build/patches/Add-search-engine.patch b/build/patches/Add-search-engine.patch index 0f87bf87..19f6a8ca 100644 --- a/build/patches/Add-search-engine.patch +++ b/build/patches/Add-search-engine.patch @@ -9,10 +9,9 @@ Add DuckDuckGo Lite License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- .../search_engines/prepopulated_engines.json | 31 +++++++++++++++++++ - .../search_engine_countries-inc.cc | 2 ++ + .../search_engine_countries-inc.cc | 3 ++ .../search_engines/search_engine_type.h | 5 +++ - .../template_url_prepopulate_data.cc | 1 + - 4 files changed, 39 insertions(+) + 3 files changed, 39 insertions(+) diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json --- a/components/search_engines/prepopulated_engines.json @@ -65,7 +64,15 @@ diff --git a/components/search_engines/prepopulated_engines.json b/components/se diff --git a/components/search_engines/search_engine_countries-inc.cc b/components/search_engines/search_engine_countries-inc.cc --- a/components/search_engines/search_engine_countries-inc.cc +++ b/components/search_engines/search_engine_countries-inc.cc -@@ -1443,5 +1443,7 @@ const std::vector GetPrepopulationSetFromCountryID( +@@ -33,6 +33,7 @@ struct EngineAndTier { + + // Default (for countries with no better engine set) + constexpr EngineAndTier engines_default[] = { ++ {SearchEngineTier::kTopEngines, &googleen}, + {SearchEngineTier::kTopEngines, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, +@@ -1443,5 +1444,7 @@ const std::vector GetPrepopulationSetFromCountryID( for (size_t i = 0; i < num_engines; i++) { t_url.push_back(engines[i]); } @@ -92,15 +99,4 @@ diff --git a/components/search_engines/search_engine_type.h b/components/search_ // Enum to record the type of search engine a user used in keyword mode. This // should be kept aligned with the `OmniboxBuiltinEngineType` enum in enums.xml. // Entries should not be renumbered and numeric values should never be reused. -diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc ---- a/components/search_engines/template_url_prepopulate_data.cc -+++ b/components/search_engines/template_url_prepopulate_data.cc -@@ -100,6 +100,7 @@ std::vector> GetPrepopulatedTemplateURLData( - std::vector engines = - GetPrepopulationSetFromCountryID(country_id); - for (const EngineAndTier& engine : engines) { -+ {SearchEngineTier::kTopEngines, &googleen}, - if (engine.tier == SearchEngineTier::kTopEngines) { - t_urls.push_back( - TemplateURLDataFromPrepopulatedEngine(*engine.search_engine)); -- diff --git a/build/patches/Add-setting-to-clear-data-on-exit.patch b/build/patches/Add-setting-to-clear-data-on-exit.patch index 83fe8e57..7c4b517c 100644 --- a/build/patches/Add-setting-to-clear-data-on-exit.patch +++ b/build/patches/Add-setting-to-clear-data-on-exit.patch @@ -24,12 +24,12 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../settings_localized_strings_provider.cc | 1 + .../core/browsing_data_policies_utils.cc | 20 ++--- .../core/browsing_data_policies_utils.h | 11 +++ - .../browsing_data/core/browsing_data_utils.cc | 34 +++++++++ + .../browsing_data/core/browsing_data_utils.cc | 31 ++++++++ .../core/clear_browsing_data_tab.h | 2 +- components/browsing_data/core/pref_names.cc | 17 +++++ components/browsing_data/core/pref_names.h | 10 +++ content/browser/storage_partition_impl.cc | 1 + - 25 files changed, 312 insertions(+), 17 deletions(-) + 25 files changed, 309 insertions(+), 17 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 @@ -496,7 +496,7 @@ diff --git a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_ } this.clearButtonDisabled_ = this.getSelectedDataTypes_(page as HTMLElement).length === 0; -+ if ((tab as HTMLElement).id == "atstart-tab") this.clearButtonDisabled_ = true; ++ if ((page as HTMLElement).id == "atstart-tab") this.clearButtonDisabled_ = true; } /** @@ -583,7 +583,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 -@@ -318,6 +318,40 @@ bool GetDeletionPreferenceFromDataType( +@@ -318,6 +318,37 @@ bool GetDeletionPreferenceFromDataType( BrowsingDataType data_type, ClearBrowsingDataTab clear_browsing_data_tab, std::string* out_pref) { @@ -595,7 +595,7 @@ diff --git a/components/browsing_data/core/browsing_data_utils.cc b/components/b + case BrowsingDataType::CACHE: + *out_pref = prefs::kDeleteCacheAtStart; + return true; -+ case BrowsingDataType::COOKIES: ++ case BrowsingDataType::SITE_DATA: + *out_pref = prefs::kDeleteCookiesAtStart; + return true; + case BrowsingDataType::PASSWORDS: @@ -604,8 +604,6 @@ diff --git a/components/browsing_data/core/browsing_data_utils.cc b/components/b + case BrowsingDataType::FORM_DATA: + *out_pref = prefs::kDeleteFormDataAtStart; + return true; -+ case BrowsingDataType::BOOKMARKS: -+ return false; + case BrowsingDataType::SITE_SETTINGS: + *out_pref = prefs::kDeleteSiteSettingsAtStart; + return true; @@ -615,8 +613,7 @@ diff --git a/components/browsing_data/core/browsing_data_utils.cc b/components/b + case BrowsingDataType::HOSTED_APPS_DATA: + *out_pref = prefs::kDeleteHostedAppsDataAtStart; + return true; -+ case BrowsingDataType::NUM_TYPES: -+ NOTREACHED(); // This is not an actual type. ++ case BrowsingDataType::TABS: + return false; + } + } diff --git a/build/patches/Add-setting-to-invert-tap-and-long-tap.patch b/build/patches/Add-setting-to-invert-tap-and-long-tap.patch index 84d8da26..ce775144 100644 --- a/build/patches/Add-setting-to-invert-tap-and-long-tap.patch +++ b/build/patches/Add-setting-to-invert-tap-and-long-tap.patch @@ -48,7 +48,7 @@ diff --git a/chrome/android/java/res/values/ids.xml b/chrome/android/java/res/va 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 -@@ -52,6 +52,9 @@ public class AccessibilitySettings extends PreferenceFragmentCompat +@@ -53,6 +53,9 @@ public class AccessibilitySettings extends PreferenceFragmentCompat static final String PREF_MOVE_TOOLBAR_TO_BOTTOM = "move_toolbar_bottom"; private BooleanPreferenceDelegate mMoveTopToolbarToBottomDelegate; @@ -58,7 +58,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s private TextScalePreference mTextScalePref; private PageZoomPreference mPageZoomDefaultZoomPref; private ChromeSwitchPreference mPageZoomIncludeOSAdjustment; -@@ -165,6 +168,12 @@ public class AccessibilitySettings extends PreferenceFragmentCompat +@@ -166,6 +169,12 @@ public class AccessibilitySettings extends PreferenceFragmentCompat mMoveToolbarToBottomPref.setChecked(mMoveTopToolbarToBottomDelegate.isEnabled()); mMoveToolbarToBottomPref.setOnPreferenceChangeListener(this); @@ -71,7 +71,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s Preference captions = findPreference(PREF_CAPTIONS); captions.setOnPreferenceClickListener( preference -> { -@@ -250,6 +259,9 @@ public class AccessibilitySettings extends PreferenceFragmentCompat +@@ -251,6 +260,9 @@ public class AccessibilitySettings extends PreferenceFragmentCompat } else if (PREF_MOVE_TOOLBAR_TO_BOTTOM.equals(preference.getKey())) { mMoveTopToolbarToBottomDelegate.setEnabled((Boolean) newValue); mDelegate.requestRestart(getActivity()); @@ -84,7 +84,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/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 -@@ -117,6 +117,24 @@ public class ChromeAccessibilitySettingsDelegate implements AccessibilitySetting +@@ -118,6 +118,24 @@ public class ChromeAccessibilitySettingsDelegate implements AccessibilitySetting mSnackbarManager.showSnackbar(mSnackbar); } @@ -275,7 +275,7 @@ diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibil 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 -@@ -29,6 +29,8 @@ public interface AccessibilitySettingsDelegate { +@@ -38,6 +38,8 @@ public interface AccessibilitySettingsDelegate { BooleanPreferenceDelegate getMoveTopToolbarToBottomDelegate(); diff --git a/build/patches/Add-site-engagement-flag.patch b/build/patches/Add-site-engagement-flag.patch index 7d1e0740..2f338381 100644 --- a/build/patches/Add-site-engagement-flag.patch +++ b/build/patches/Add-site-engagement-flag.patch @@ -101,7 +101,7 @@ diff --git a/components/feature_engagement/public/feature_configurations.cc b/co #endif // BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) + if (!base::FeatureList::IsEnabled(site_engagement::features::kSiteEngagement)) { -+ absl::optional config = FeatureConfig(); ++ std::optional config = FeatureConfig(); + config->valid = false; + return config; + } diff --git a/build/patches/Add-support-to-jxl.patch b/build/patches/Add-support-to-jxl.patch index a03802a8..db3ce805 100644 --- a/build/patches/Add-support-to-jxl.patch +++ b/build/patches/Add-support-to-jxl.patch @@ -36,7 +36,7 @@ Enabled by default .../platform/graphics/bitmap_image_metrics.h | 4 +- .../renderer/platform/image-decoders/BUILD.gn | 9 + .../platform/image-decoders/image_decoder.cc | 23 + - .../image-decoders/jxl/jxl_image_decoder.cc | 683 ++++++++++++++++++ + .../image-decoders/jxl/jxl_image_decoder.cc | 684 ++++++++++++++++++ .../image-decoders/jxl/jxl_image_decoder.h | 123 ++++ .../jxl/jxl_image_decoder_test.cc | 626 ++++++++++++++++ .../blink/tools/commit_stats/git-dirs.txt | 1 + @@ -58,7 +58,7 @@ Enabled by default .../libjxl/gen_headers/jxl/jxl_export.h | 11 + tools/metrics/histograms/enums.xml | 1 + .../histograms/metadata/blink/enums.xml | 2 +- - 53 files changed, 1995 insertions(+), 17 deletions(-) + 53 files changed, 1996 insertions(+), 17 deletions(-) create mode 100644 build/linux/unbundle/libjxl.gn create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Add-support-to-jxl.inc create mode 100644 cromite_flags/third_party/blink/common/features_cc/Add-support-to-jxl.inc @@ -765,7 +765,7 @@ diff --git a/third_party/blink/renderer/platform/image-decoders/jxl/jxl_image_de new file mode 100644 --- /dev/null +++ b/third_party/blink/renderer/platform/image-decoders/jxl/jxl_image_decoder.cc -@@ -0,0 +1,683 @@ +@@ -0,0 +1,684 @@ +// Copyright 2021 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. @@ -815,11 +815,12 @@ new file mode 100644 + // The input ColorProfile owns the buffer memory, make a new copy for + // the newly created one and pass the ownership of the new copy to the new + // color profile. -+ std::unique_ptr owned_buffer( -+ new uint8_t[buffer_donor.GetProfile()->size]); -+ memcpy(owned_buffer.get(), buffer_donor.GetProfile()->buffer, -+ buffer_donor.GetProfile()->size); -+ new_profile.buffer = owned_buffer.get(); ++ auto owned_buffer = base::HeapArray::Uninit(buffer_donor.GetProfile()->size); ++ owned_buffer.copy_from( ++ base::span( ++ static_cast(buffer_donor.GetProfile()->buffer), ++ buffer_donor.GetProfile()->size)); ++ new_profile.buffer = std::move(owned_buffer.data()); + return std::make_unique(new_profile, std::move(owned_buffer)); +} +} // namespace diff --git a/build/patches/Allow-building-without-supervised-users.patch b/build/patches/Allow-building-without-supervised-users.patch index c52e1770..127ef6a5 100644 --- a/build/patches/Allow-building-without-supervised-users.patch +++ b/build/patches/Allow-building-without-supervised-users.patch @@ -8,18 +8,19 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/android/chrome_java_sources.gni | 1 - .../chrome/browser/feed/FeedSurfaceCoordinator.java | 5 +---- chrome/browser/BUILD.gn | 6 ------ + chrome/browser/about_flags.cc | 2 ++ .../browser/extensions/api/settings_private/prefs_util.cc | 2 ++ chrome/browser/profiles/profile_impl.cc | 4 ++++ chrome/browser/profiles/profile_manager.cc | 4 ++++ chrome/browser/ui/webui/managed_ui_handler.cc | 2 ++ chrome/browser/ui/webui/management/management_ui_handler.cc | 2 ++ components/supervised_user/buildflags.gni | 6 +----- + .../core/browser/supervised_user_pref_store.cc | 1 + .../core/browser/supervised_user_preferences.cc | 2 +- .../supervised_user/core/browser/supervised_user_utils.cc | 4 ++++ - components/supervised_user/core/common/features.cc | 1 + components/supervised_user/core/common/pref_names.h | 4 ++++ .../core/common/supervised_user_constants.cc | 2 ++ - 15 files changed, 28 insertions(+), 18 deletions(-) + 16 files changed, 30 insertions(+), 18 deletions(-) diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn @@ -88,6 +89,25 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "sync/glue/synced_tab_delegate_android.cc", "sync/glue/synced_tab_delegate_android.h", "sync/glue/synced_window_delegate_android.cc", +diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc +--- a/chrome/browser/about_flags.cc ++++ b/chrome/browser/about_flags.cc +@@ -7886,6 +7886,7 @@ const FeatureEntry kFeatureEntries[] = { + #endif + + #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) ++#if BUILDFLAG(ENABLE_SUPERVISED_USERS) + {"enable-family-link-extensions-permissions", + flag_descriptions:: + kEnableExtensionsPermissionsForSupervisedUsersOnDesktopName, +@@ -7895,6 +7896,7 @@ const FeatureEntry kFeatureEntries[] = { + FEATURE_VALUE_TYPE( + supervised_user:: + kEnableExtensionsPermissionsForSupervisedUsersOnDesktop)}, ++#endif + #endif + + {"notification-scheduler", flag_descriptions::kNotificationSchedulerName, 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 @@ -208,6 +228,17 @@ diff --git a/components/supervised_user/buildflags.gni b/components/supervised_u - is_ios || is_linux || is_mac || is_win + enable_supervised_users = false } +diff --git a/components/supervised_user/core/browser/supervised_user_pref_store.cc b/components/supervised_user/core/browser/supervised_user_pref_store.cc +--- a/components/supervised_user/core/browser/supervised_user_pref_store.cc ++++ b/components/supervised_user/core/browser/supervised_user_pref_store.cc +@@ -126,6 +126,7 @@ SupervisedUserPrefStore::~SupervisedUserPrefStore() {} + + void SupervisedUserPrefStore::OnNewSettingsAvailable( + const base::Value::Dict& settings) { ++ if ((true)) return; + std::unique_ptr old_prefs = std::move(prefs_); + prefs_ = std::make_unique(); + if (!settings.empty()) { diff --git a/components/supervised_user/core/browser/supervised_user_preferences.cc b/components/supervised_user/core/browser/supervised_user_preferences.cc --- a/components/supervised_user/core/browser/supervised_user_preferences.cc +++ b/components/supervised_user/core/browser/supervised_user_preferences.cc @@ -239,15 +270,6 @@ diff --git a/components/supervised_user/core/browser/supervised_user_utils.cc b/ } bool EmitLogRecordHistograms( -diff --git a/components/supervised_user/core/common/features.cc b/components/supervised_user/core/common/features.cc ---- a/components/supervised_user/core/common/features.cc -+++ b/components/supervised_user/core/common/features.cc -@@ -119,4 +119,5 @@ bool IsShadowKidsApiWithSafeSitesEnabled() { - return base::FeatureList::IsEnabled(kShadowKidsApiWithSafeSites); - } - -+SET_CROMITE_FEATURE_DISABLED(kForceGoogleSafeSearchForSupervisedUsers); - } // namespace supervised_user diff --git a/components/supervised_user/core/common/pref_names.h b/components/supervised_user/core/common/pref_names.h --- a/components/supervised_user/core/common/pref_names.h +++ b/components/supervised_user/core/common/pref_names.h diff --git a/build/patches/Block-qjz9zk-or-trk-requests.patch b/build/patches/Block-qjz9zk-or-trk-requests.patch index e86cc93a..e1c7c64e 100644 --- a/build/patches/Block-qjz9zk-or-trk-requests.patch +++ b/build/patches/Block-qjz9zk-or-trk-requests.patch @@ -263,7 +263,7 @@ diff --git a/url/url_constants.h b/url/url_constants.h inline constexpr char16_t kDataScheme16[] = u"data"; inline constexpr char kFileScheme[] = "file"; inline constexpr char16_t kFileScheme16[] = u"file"; -+inline constexpr char16_t kTraceScheme[] = "trk"; ++inline constexpr char kTraceScheme[] = "trk"; inline constexpr char kFileSystemScheme[] = "filesystem"; inline constexpr char16_t kFileSystemScheme16[] = u"filesystem"; inline constexpr char kFtpScheme[] = "ftp"; diff --git a/build/patches/Bromite-auto-updater.patch b/build/patches/Bromite-auto-updater.patch index 51e4acf2..443ac53f 100644 --- a/build/patches/Bromite-auto-updater.patch +++ b/build/patches/Bromite-auto-updater.patch @@ -18,11 +18,11 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../browser/omaha/UpdateMenuItemHelper.java | 82 +++++- .../browser/omaha/UpdateStatusProvider.java | 165 ++++++++--- .../browser/omaha/VersionNumberGetter.java | 3 +- - .../inline/BromiteInlineUpdateController.java | 272 ++++++++++++++++++ + .../inline/BromiteInlineUpdateController.java | 273 ++++++++++++++++++ .../omaha/inline/InlineUpdateController.java | 51 ++++ .../inline/InlineUpdateControllerFactory.java | 21 ++ chrome/browser/BUILD.gn | 2 + - chrome/browser/endpoint_fetcher/BUILD.gn | 32 +++ + chrome/browser/endpoint_fetcher/BUILD.gn | 32 ++ chrome/browser/endpoint_fetcher/DEPS | 3 + chrome/browser/endpoint_fetcher/OWNERS | 1 + .../endpoint_fetcher_android.cc | 184 ++++++++++++ @@ -36,7 +36,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../endpoint_fetcher/endpoint_fetcher.h | 23 +- .../Bromite-auto-updater.inc | 3 + .../Bromite-auto-updater.inc | 1 + - 28 files changed, 1268 insertions(+), 52 deletions(-) + 28 files changed, 1269 insertions(+), 52 deletions(-) create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/BromiteInlineUpdateController.java create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateController.java create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateControllerFactory.java @@ -755,7 +755,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/Br new file mode 100644 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/BromiteInlineUpdateController.java -@@ -0,0 +1,272 @@ +@@ -0,0 +1,273 @@ +// Copyright 2021 The Ungoogled Chromium Authors. All rights reserved. +// +// This file is part of Ungoogled Chromium Android. @@ -796,6 +796,7 @@ new file mode 100644 +import org.chromium.chrome.browser.omaha.UpdateConfigs; +import org.chromium.chrome.browser.omaha.UpdateStatusProvider; +import org.chromium.chrome.browser.profiles.Profile; ++import org.chromium.chrome.browser.profiles.ProfileManager; +import org.chromium.chrome.browser.tab.TabLaunchType; +import org.chromium.chrome.browser.tabmodel.TabCreator; +import org.chromium.content_public.browser.LoadUrlParams; @@ -992,7 +993,7 @@ new file mode 100644 + + callback.onResult(null); + }, -+ Profile.getLastUsedRegularProfile(), ++ ProfileManager.getLastUsedRegularProfile(), + urlToCheck, /*timeout*/5000, /*follow_redirect*/true, TRAFFIC_ANNOTATION); + } + @@ -1018,7 +1019,7 @@ new file mode 100644 + + callback.onResult(null); + }, -+ Profile.getLastUsedRegularProfile(), ++ ProfileManager.getLastUsedRegularProfile(), + UPSTREAM_VERSION_URL, /*timeout*/5000, /*follow_redirect*/false, TRAFFIC_ANNOTATION); + } + diff --git a/build/patches/Client-hints-overrides.patch b/build/patches/Client-hints-overrides.patch index 379908ce..b485f817 100644 --- a/build/patches/Client-hints-overrides.patch +++ b/build/patches/Client-hints-overrides.patch @@ -131,7 +131,7 @@ diff --git a/services/network/public/cpp/client_hints.cc b/services/network/publ std::optional> ParseClientHintsHeader(const std::string& header) { -+ if ((true)) return absl::nullopt; ++ if ((true)) return std::nullopt; // Accept-CH is an sh-list of tokens; see: // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-header-structure-19#section-3.1 std::optional maybe_list = diff --git a/build/patches/Content-settings-infrastructure.patch b/build/patches/Content-settings-infrastructure.patch index c704b6fa..18eddb8a 100644 --- a/build/patches/Content-settings-infrastructure.patch +++ b/build/patches/Content-settings-infrastructure.patch @@ -27,12 +27,12 @@ Require: bromite-build-utils.patch chrome/browser/ui/BUILD.gn | 1 + .../controls/rich_controls_container_view.h | 7 + .../ui/views/page_info/page_info_main_view.cc | 28 +- - .../views/page_info/page_info_view_factory.cc | 19 + - .../views/page_info/page_info_view_factory.h | 3 + + .../views/page_info/page_info_view_factory.cc | 20 + + .../views/page_info/page_info_view_factory.h | 5 + .../page_info/permission_toggle_row_view.cc | 163 ++++++- .../page_info/permission_toggle_row_view.h | 18 +- .../settings_localized_strings_provider.cc | 54 +++ - .../ui/webui/settings/site_settings_helper.cc | 32 +- + .../ui/webui/settings/site_settings_helper.cc | 46 +- .../browser_ui/settings/android/BUILD.gn | 1 + .../preference_spinner_single_widget.xml | 92 ++++ .../settings/SpinnerPreference.java | 24 + @@ -58,7 +58,7 @@ Require: bromite-build-utils.patch .../content_settings/core/browser/BUILD.gn | 7 + .../bromite_content_settings/placeholder.txt | 1 + .../core/browser/content_settings_registry.cc | 2 + - .../core/browser/content_settings_uma_util.cc | 1 + + .../core/browser/content_settings_uma_util.cc | 6 +- .../core/browser/content_settings_utils.cc | 12 + .../core/browser/website_settings_info.h | 38 ++ .../core/browser/website_settings_registry.cc | 6 + @@ -82,7 +82,7 @@ Require: bromite-build-utils.patch .../platform/web_content_settings_client.h | 5 + .../execution_context/execution_context.cc | 16 + .../execution_context/execution_context.h | 5 + - 71 files changed, 1824 insertions(+), 77 deletions(-) + 71 files changed, 1834 insertions(+), 89 deletions(-) create mode 100644 components/browser_ui/settings/android/java/res/layout/preference_spinner_single_widget.xml create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSetting.java create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java @@ -802,21 +802,22 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrom #include "components/page_info/core/features.h" #include "components/page_info/core/proto/about_this_site_metadata.pb.h" #include "components/page_info/page_info.h" -@@ -256,7 +258,13 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( +@@ -256,7 +258,14 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( ContentSetting setting = info.setting == CONTENT_SETTING_DEFAULT ? info.default_setting : info.setting; -+ return GetPermissionIcon(info, setting); ++ return GetPermissionIcon(info, blocked_on_system_level, setting); +} +// static +const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( + const PageInfo::PermissionInfo& info, ++ bool blocked_on_system_level, + ContentSetting setting) { // For guard content settings and Automatic Picture-in-Picture, ASK is treated // as an "on" state. const bool show_blocked_badge = -@@ -521,6 +529,17 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( +@@ -521,6 +530,17 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( icon = &kFullscreenIcon; break; default: @@ -837,12 +838,14 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrom diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.h b/chrome/browser/ui/views/page_info/page_info_view_factory.h --- a/chrome/browser/ui/views/page_info/page_info_view_factory.h +++ b/chrome/browser/ui/views/page_info/page_info_view_factory.h -@@ -87,6 +87,9 @@ class PageInfoViewFactory { +@@ -87,6 +87,11 @@ class PageInfoViewFactory { const PageInfo::PermissionInfo& info, bool blocked_on_system_level = false); + static const ui::ImageModel GetPermissionIcon( -+ const PageInfo::PermissionInfo& info, ContentSetting setting); ++ const PageInfo::PermissionInfo& info, ++ bool blocked_on_system_level, ++ ContentSetting setting); + // Returns the icon for the given object |info|. static const ui::ImageModel GetChosenObjectIcon( @@ -1205,6 +1208,27 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b #include "components/content_settings/core/common/content_settings.h" #include "components/content_settings/core/common/content_settings_pattern.h" #include "components/content_settings/core/common/content_settings_utils.h" +@@ -220,13 +222,13 @@ const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = { + {ContentSettingsType::DIRECT_SOCKETS, nullptr}, + }; + +-static_assert( +- std::size(kContentSettingsTypeGroupNames) == +- // Add one since the sequence is kMinValue = -1, 0, ..., kMaxValue +- 1 + static_cast(ContentSettingsType::kMaxValue) - +- static_cast(ContentSettingsType::kMinValue), +- "kContentSettingsTypeGroupNames should have the correct number " +- "of elements"); ++// static_assert( ++// std::size(kContentSettingsTypeGroupNames) == ++// // Add one since the sequence is kMinValue = -1, 0, ..., kMaxValue ++// 1 + static_cast(ContentSettingsType::kMaxValue) - ++// static_cast(ContentSettingsType::kMinValue), ++// "kContentSettingsTypeGroupNames should have the correct number " ++// "of elements"); + + struct SiteSettingSourceStringMapping { + SiteSettingSource source; @@ -476,6 +478,13 @@ bool HasRegisteredGroupName(ContentSettingsType type) { return true; } @@ -2755,14 +2779,19 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. diff --git a/components/content_settings/core/browser/content_settings_uma_util.cc b/components/content_settings/core/browser/content_settings_uma_util.cc --- a/components/content_settings/core/browser/content_settings_uma_util.cc +++ b/components/content_settings/core/browser/content_settings_uma_util.cc -@@ -190,6 +190,7 @@ void RecordContentSettingsHistogram(const std::string& name, +@@ -190,11 +190,7 @@ void RecordContentSettingsHistogram(const std::string& name, } int ContentSettingTypeToHistogramValue(ContentSettingsType content_setting) { +- static_assert( +- kHistogramValue.size() == +- // DEFAULT is not in the histogram, so we want [0, kMaxValue] +- 1 + static_cast(ContentSettingsType::kMaxValue), +- "Update content settings histogram lookup"); + if ((true)) return 0; - static_assert( - kHistogramValue.size() == - // DEFAULT is not in the histogram, so we want [0, kMaxValue] + + auto found = kHistogramValue.find(content_setting); + if (found != kHistogramValue.end()) { diff --git a/components/content_settings/core/browser/content_settings_utils.cc b/components/content_settings/core/browser/content_settings_utils.cc --- a/components/content_settings/core/browser/content_settings_utils.cc +++ b/components/content_settings/core/browser/content_settings_utils.cc diff --git a/build/patches/Cromite-Branding.patch b/build/patches/Cromite-Branding.patch index 11ae3fac..87e561ca 100644 --- a/build/patches/Cromite-Branding.patch +++ b/build/patches/Cromite-Branding.patch @@ -9122,7 +9122,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateCon diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/BromiteInlineUpdateController.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/BromiteInlineUpdateController.java --- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/BromiteInlineUpdateController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/BromiteInlineUpdateController.java -@@ -60,10 +60,10 @@ import org.chromium.chrome.browser.omaha.VersionNumber; +@@ -61,10 +61,10 @@ import org.chromium.chrome.browser.omaha.VersionNumber; public class BromiteInlineUpdateController implements InlineUpdateController { private static final String TAG = "BromiteInlineUpdateController"; @@ -9137,7 +9137,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/Br public static String getDownloadUrl() { return UPDATE_VERSION_URL + BuildConfig.BUILD_TARGET_CPU + "_ChromePublic.apk"; -@@ -212,11 +212,20 @@ public class BromiteInlineUpdateController implements InlineUpdateController { +@@ -213,11 +213,20 @@ public class BromiteInlineUpdateController implements InlineUpdateController { Log.i(TAG, "BromiteUpdater: obtained response '%s' and redirect URL '%s'", endpointResponse.getResponseString(), redirectURL); if (redirectURL.indexOf(REDIRECT_URL_PREFIX) == 0) { redirectURL = redirectURL.substring(REDIRECT_URL_PREFIX.length()); @@ -9158,7 +9158,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/Br OmahaBase.setLatestModifiedVersion(parts[0]); callback.onResult(version); return; -@@ -239,6 +248,10 @@ public class BromiteInlineUpdateController implements InlineUpdateController { +@@ -240,6 +249,10 @@ public class BromiteInlineUpdateController implements InlineUpdateController { } private void checkLatestUpstreamVersion(final Callback callback) { diff --git a/build/patches/Disable-PrivacyGuide.patch b/build/patches/Disable-PrivacyGuide.patch index 4a696a40..536a978c 100644 --- a/build/patches/Disable-PrivacyGuide.patch +++ b/build/patches/Disable-PrivacyGuide.patch @@ -4,10 +4,10 @@ Subject: Disable PrivacyGuide License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - chrome/android/java/res/xml/privacy_preferences.xml | 1 + - chrome/browser/ui/webui/settings/settings_ui.cc | 3 +-- - .../common/chrome_features_cc/Disable-PrivacyGuide.inc | 9 +++++++++ - 3 files changed, 11 insertions(+), 2 deletions(-) + chrome/android/java/res/xml/privacy_preferences.xml | 1 + + chrome/browser/ui/webui/settings/settings_ui.cc | 3 +-- + .../common/chrome_features_cc/Disable-PrivacyGuide.inc | 6 ++++++ + 3 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 cromite_flags/chrome/common/chrome_features_cc/Disable-PrivacyGuide.inc diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml @@ -38,10 +38,7 @@ diff --git a/cromite_flags/chrome/common/chrome_features_cc/Disable-PrivacyGuide new file mode 100644 --- /dev/null +++ b/cromite_flags/chrome/common/chrome_features_cc/Disable-PrivacyGuide.inc -@@ -0,0 +1,9 @@ -+SET_CROMITE_FEATURE_DISABLED(kPrivacyGuide3); -+SET_CROMITE_FEATURE_DISABLED(kPrivacyGuidePreload); -+ +@@ -0,0 +1,6 @@ +#if BUILDFLAG(IS_ANDROID) + +SET_CROMITE_FEATURE_DISABLED(kPrivacyGuideAndroid3); diff --git a/build/patches/Disable-all-predictors-code.patch b/build/patches/Disable-all-predictors-code.patch index 5185ab30..78db9b59 100644 --- a/build/patches/Disable-all-predictors-code.patch +++ b/build/patches/Disable-all-predictors-code.patch @@ -5,32 +5,33 @@ Subject: Disable all predictors code Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - chrome/browser/BUILD.gn | 2 -- - .../preloading_model_keyed_service.cc | 1 + - .../preloading_model_keyed_service_factory.cc | 4 +--- - .../chrome_hints_manager.cc | 1 + - .../model_validator_keyed_service.cc | 6 +++++- - .../optimization_guide_keyed_service.cc | 1 - - .../predictors/loading_predictor_config.cc | 4 ++-- - .../browser/predictors/predictors_features.cc | 11 ++-------- - chrome/browser/ui/tab_helpers.cc | 1 - - .../ui/webui/omnibox/omnibox_page_handler.cc | 2 ++ - .../browser/autofill_optimization_guide.cc | 5 +++-- - .../browser/autocomplete_controller.cc | 2 ++ - .../optimization_guide/core/hints_fetcher.cc | 1 + - .../optimization_guide/core/hints_manager.cc | 5 +++++ - .../core/optimization_guide_features.cc | 21 +++++++++++++------ - .../core/prediction_model_download_manager.cc | 6 ++++-- - .../core/prediction_model_fetcher_impl.cc | 1 + - components/optimization_guide/features.gni | 3 +-- - components/search/ntp_features.cc | 3 +++ - .../Disable-all-predictors-code.inc | 4 ++++ - .../Disable-all-predictors-code.inc | 7 +++++++ - .../Disable-all-predictors-code.inc | 4 ++++ - .../Disable-all-predictors-code.inc | 2 ++ - .../document_speculation_rules.cc | 1 + - .../platform/runtime_enabled_features.json5 | 2 +- - 25 files changed, 68 insertions(+), 32 deletions(-) + chrome/browser/BUILD.gn | 2 -- + .../preloading_model_keyed_service.cc | 1 + + .../preloading_model_keyed_service_factory.cc | 4 +--- + .../optimization_guide/chrome_hints_manager.cc | 1 + + .../model_validator_keyed_service.cc | 6 +++++- + .../optimization_guide_keyed_service.cc | 1 - + .../predictors/loading_predictor_config.cc | 4 ++-- + chrome/browser/predictors/predictors_features.cc | 11 ++--------- + chrome/browser/ui/tab_helpers.cc | 1 - + .../ui/webui/omnibox/omnibox_page_handler.cc | 2 ++ + .../core/browser/autofill_optimization_guide.cc | 5 +++-- + .../omnibox/browser/autocomplete_controller.cc | 2 ++ + .../optimization_guide/core/hints_fetcher.cc | 1 + + .../optimization_guide/core/hints_manager.cc | 5 +++++ + .../core/optimization_guide_features.cc | 15 +++++++++------ + .../core/prediction_model_download_manager.cc | 6 ++++-- + .../core/prediction_model_fetcher_impl.cc | 1 + + components/optimization_guide/features.gni | 3 +-- + .../core/page_content_annotations_features.cc | 5 +++++ + components/search/ntp_features.cc | 3 +++ + .../Disable-all-predictors-code.inc | 4 ++++ + .../Disable-all-predictors-code.inc | 1 + + .../features_cc/Disable-all-predictors-code.inc | 4 ++++ + .../features_cc/Disable-all-predictors-code.inc | 2 ++ + .../document_speculation_rules.cc | 1 + + .../platform/runtime_enabled_features.json5 | 2 +- + 26 files changed, 61 insertions(+), 32 deletions(-) create mode 100644 cromite_flags/chrome/browser/browser_features_cc/Disable-all-predictors-code.inc create mode 100644 cromite_flags/chrome/common/chrome_features_cc/Disable-all-predictors-code.inc create mode 100644 cromite_flags/components/permissions/features_cc/Disable-all-predictors-code.inc @@ -322,7 +323,7 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b } RequestContextSet GetAllowedContextsForPersonalizedMetadata() { -@@ -817,5 +812,19 @@ double GetOnDeviceModelDefaultTemperature() { +@@ -817,5 +812,13 @@ double GetOnDeviceModelDefaultTemperature() { return kTemperature.Get(); } @@ -331,14 +332,8 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b +SET_CROMITE_FEATURE_DISABLED(kRemoteOptimizationGuideFetchingAnonymousDataConsent); +SET_CROMITE_FEATURE_DISABLED(kOptimizationTargetPrediction); +SET_CROMITE_FEATURE_DISABLED(kOptimizationGuideModelDownloading); -+SET_CROMITE_FEATURE_DISABLED(kPageContentAnnotations); -+SET_CROMITE_FEATURE_DISABLED(kRemotePageMetadata); -+SET_CROMITE_FEATURE_DISABLED(kPageEntitiesPageContentAnnotations); +SET_CROMITE_FEATURE_DISABLED(kPushNotifications); -+SET_CROMITE_FEATURE_DISABLED(kPageVisibilityBatchAnnotations); -+SET_CROMITE_FEATURE_DISABLED(kPageContentAnnotationsValidation); +SET_CROMITE_FEATURE_DISABLED(kPreventLongRunningPredictionModels); -+SET_CROMITE_FEATURE_DISABLED(kPageContentAnnotationsPersistSalientImageMetadata); +SET_CROMITE_FEATURE_DISABLED(kOptimizationGuideFetchingForSRP); } // namespace features } // namespace optimization_guide @@ -403,6 +398,19 @@ diff --git a/components/optimization_guide/features.gni b/components/optimizatio } declare_args() { +diff --git a/components/page_content_annotations/core/page_content_annotations_features.cc b/components/page_content_annotations/core/page_content_annotations_features.cc +--- a/components/page_content_annotations/core/page_content_annotations_features.cc ++++ b/components/page_content_annotations/core/page_content_annotations_features.cc +@@ -264,4 +264,9 @@ size_t MaxRelatedSearchesCacheSize() { + "max_related_searches_cache_size", 10); + } + ++SET_CROMITE_FEATURE_DISABLED(kPageContentAnnotations); ++SET_CROMITE_FEATURE_DISABLED(kRemotePageMetadata); ++SET_CROMITE_FEATURE_DISABLED(kPageVisibilityBatchAnnotations); ++SET_CROMITE_FEATURE_DISABLED(kPageContentAnnotationsValidation); ++SET_CROMITE_FEATURE_DISABLED(kPageContentAnnotationsPersistSalientImageMetadata); + } // namespace page_content_annotations::features diff --git a/components/search/ntp_features.cc b/components/search/ntp_features.cc --- a/components/search/ntp_features.cc +++ b/components/search/ntp_features.cc @@ -427,14 +435,8 @@ diff --git a/cromite_flags/chrome/common/chrome_features_cc/Disable-all-predicto new file mode 100644 --- /dev/null +++ b/cromite_flags/chrome/common/chrome_features_cc/Disable-all-predictors-code.inc -@@ -0,0 +1,7 @@ +@@ -0,0 +1 @@ +SET_CROMITE_FEATURE_DISABLED(kPrerenderFallbackToPreconnect); -+ -+#if !BUILDFLAG(IS_ANDROID) -+ -+SET_CROMITE_FEATURE_DISABLED(kSafetyCheckNotificationPermissions); -+ -+#endif diff --git a/cromite_flags/components/permissions/features_cc/Disable-all-predictors-code.inc b/cromite_flags/components/permissions/features_cc/Disable-all-predictors-code.inc new file mode 100644 --- /dev/null diff --git a/build/patches/Disable-conversion-measurement-api.patch b/build/patches/Disable-conversion-measurement-api.patch index c90e0f09..5d1deb4f 100644 --- a/build/patches/Disable-conversion-measurement-api.patch +++ b/build/patches/Disable-conversion-measurement-api.patch @@ -46,14 +46,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webview/browser/aw_content_browser_client.cc --- a/android_webview/browser/aw_content_browser_client.cc +++ b/android_webview/browser/aw_content_browser_client.cc -@@ -1153,6 +1153,7 @@ bool AwContentBrowserClient::ShouldPreconnectNavigation( - - void AwContentBrowserClient::OnDisplayInsecureContent( - content::WebContents* web_contents) { +@@ -1178,6 +1178,7 @@ network::mojom::AttributionSupport + AwContentBrowserClient::GetAttributionSupport( + AttributionReportingOsApiState state, + bool client_os_disabled) { + if ((true)) return network::mojom::AttributionSupport::kNone; - AwSettings* aw_settings = AwSettings::FromWebContents(web_contents); - if (aw_settings) { - UMA_HISTOGRAM_ENUMERATION( + // WebView only supports OS-level attribution and not web-attribution. + switch (state) { + case AttributionReportingOsApiState::kDisabled: @@ -1196,6 +1197,8 @@ bool AwContentBrowserClient::IsAttributionReportingOperationAllowed( const url::Origin* destination_origin, const url::Origin* reporting_origin, diff --git a/build/patches/Disallowing-MIDI-permission-by-default.patch b/build/patches/Disallowing-MIDI-permission-by-default.patch index e58ac894..3c85b06d 100644 --- a/build/patches/Disallowing-MIDI-permission-by-default.patch +++ b/build/patches/Disallowing-MIDI-permission-by-default.patch @@ -4,14 +4,14 @@ Subject: Disallowing MIDI permission by default License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- - .../Disallowing-MIDI-permission-by-default.inc | 1 + + .../features_cc/Disallowing-MIDI-permission-by-default.inc | 1 + 1 file changed, 1 insertion(+) - create mode 100644 cromite_flags/content/public/common/content_features_cc/Disallowing-MIDI-permission-by-default.inc + create mode 100644 cromite_flags/third_party/blink/common/features_cc/Disallowing-MIDI-permission-by-default.inc -diff --git a/cromite_flags/content/public/common/content_features_cc/Disallowing-MIDI-permission-by-default.inc b/cromite_flags/content/public/common/content_features_cc/Disallowing-MIDI-permission-by-default.inc +diff --git a/cromite_flags/third_party/blink/common/features_cc/Disallowing-MIDI-permission-by-default.inc b/cromite_flags/third_party/blink/common/features_cc/Disallowing-MIDI-permission-by-default.inc new file mode 100644 --- /dev/null -+++ b/cromite_flags/content/public/common/content_features_cc/Disallowing-MIDI-permission-by-default.inc ++++ b/cromite_flags/third_party/blink/common/features_cc/Disallowing-MIDI-permission-by-default.inc @@ -0,0 +1 @@ +SET_CROMITE_FEATURE_ENABLED(kBlockMidiByDefault); -- diff --git a/build/patches/Enable-native-Android-autofill.patch b/build/patches/Enable-native-Android-autofill.patch index c584331a..b6c91178 100644 --- a/build/patches/Enable-native-Android-autofill.patch +++ b/build/patches/Enable-native-Android-autofill.patch @@ -17,11 +17,10 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- chrome/android/BUILD.gn | 1 + .../settings/PasswordSettings.java | 81 ++++++++++++++++++- - .../chromium/chrome/browser/tab/TabImpl.java | 55 +++++++++++++ - .../browser/tab/TabViewAndroidDelegate.java | 14 ++++ + .../chromium/chrome/browser/tab/TabImpl.java | 42 ++++++++++ + .../browser/tab/TabViewAndroidDelegate.java | 4 + chrome/browser/BUILD.gn | 7 ++ - chrome/browser/android/tab_android.cc | 15 ++++ - chrome/browser/android/tab_android.h | 2 + + chrome/browser/android/tab_android.cc | 9 +++ .../strings/android_chrome_strings.grd | 6 ++ components/android_autofill/browser/BUILD.gn | 1 + .../browser/android_autofill_manager.cc | 2 + @@ -31,7 +30,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../BrowserSelectionActionMenuDelegate.java | 62 ++++++++++++++ .../browser/content_autofill_driver.cc | 55 +++++++++++++ .../content/browser/content_autofill_driver.h | 10 +++ - .../content_autofill_driver_factory.cc | 13 +++ + .../content_autofill_driver_factory.cc | 12 +++ .../content/renderer/autofill_agent.cc | 6 ++ .../renderer/password_autofill_agent.cc | 5 +- .../autofill/core/browser/autofill_driver.h | 2 + @@ -40,9 +39,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../core/browser/browser_autofill_manager.h | 2 + .../autofill/core/common/autofill_prefs.cc | 2 + .../autofill/core/common/autofill_prefs.h | 5 ++ - .../embedder_support/view/ContentView.java | 46 +++++++++++ - .../chromium/ui/base/ViewAndroidDelegate.java | 8 ++ - 27 files changed, 415 insertions(+), 3 deletions(-) + .../embedder_support/view/ContentView.java | 47 +++++++++++ + .../chromium/ui/base/ViewAndroidDelegate.java | 4 + + 26 files changed, 380 insertions(+), 3 deletions(-) create mode 100644 components/android_autofill/browser/java/src/org/chromium/components/autofill/BrowserSelectionActionMenuDelegate.java diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn @@ -185,7 +184,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java -@@ -81,6 +81,18 @@ import org.chromium.url.GURL; +@@ -81,6 +81,19 @@ import org.chromium.url.GURL; import java.nio.ByteBuffer; import java.util.Objects; @@ -199,21 +198,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav +import org.chromium.components.autofill.BrowserSelectionActionMenuDelegate; +import org.chromium.content_public.browser.SelectionPopupController; +import org.chromium.chrome.browser.preferences.Pref; ++import org.chromium.chrome.browser.profiles.ProfileManager; +import org.chromium.components.user_prefs.UserPrefs; + /** * Implementation of the interface {@link Tab}. Contains and manages a {@link ContentView}. This * class is not intended to be extended. -@@ -243,6 +255,8 @@ class TabImpl implements Tab { - - private String mPendingNativePageHost; - -+ AutofillProvider mAutofillProvider; -+ - /** - * Creates an instance of a {@link TabImpl}. Package-private. Use {@link TabBuilder} to create - * an instance. -@@ -882,6 +896,11 @@ class TabImpl implements Tab { +@@ -882,6 +895,11 @@ class TabImpl implements Tab { for (TabObserver observer : mObservers) observer.onDestroyed(this); mObservers.clear(); @@ -225,34 +216,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav mUserDataHost.destroy(); mTabViewManager.destroy(); hideNativePage(false, null); -@@ -1539,6 +1558,16 @@ class TabImpl implements Tab { - return mWebContentsState == null ? -1 : mWebContentsState.version(); - } - -+ public void onProvideAutofillVirtualStructure(ViewStructure structure, int flags) { -+ if (mAutofillProvider != null) -+ mAutofillProvider.onProvideAutoFillVirtualStructure(structure, flags); -+ } -+ -+ public void autofill(final SparseArray values) { -+ if (mAutofillProvider != null) -+ mAutofillProvider.autofill(values); -+ } -+ - /** - * Initializes the {@link WebContents}. Completes the browser content components initialization - * around a native WebContents pointer. -@@ -1610,6 +1639,30 @@ class TabImpl implements Tab { +@@ -1610,6 +1628,30 @@ class TabImpl implements Tab { prepareAutofillProvider(webContents) ? View.IMPORTANT_FOR_AUTOFILL_YES : View.IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + boolean autofillEnabled = false; + if (isIncognito()) { -+ autofillEnabled = UserPrefs.get(Profile.getLastUsedRegularProfile()) ++ autofillEnabled = UserPrefs.get(ProfileManager.getLastUsedRegularProfile()) + .getBoolean(Pref.AUTOFILL_ANDROID_INCOGNITO_ENABLED); + } else { -+ autofillEnabled = UserPrefs.get(Profile.getLastUsedRegularProfile()) ++ autofillEnabled = UserPrefs.get(ProfileManager.getLastUsedRegularProfile()) + .getBoolean(Pref.AUTOFILL_ANDROID_ENABLED); + } + @@ -273,15 +247,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav TabHelpers.initWebContentsHelpers(this); notifyContentChanged(); } finally { -@@ -2131,6 +2184,8 @@ class TabImpl implements Tab { - - boolean handleNonNavigationAboutURL(GURL url); - -+ void initializeAutofillIfNecessary(long nativeTabAndroid); -+ - void onShow(long nativeTabAndroid); - } - } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabViewAndroidDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabViewAndroidDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabViewAndroidDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabViewAndroidDelegate.java @@ -296,23 +261,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabViewAndr /** Implementation of the abstract class {@link ViewAndroidDelegate} for Chrome. */ public class TabViewAndroidDelegate extends ViewAndroidDelegate { private final TabImpl mTab; -@@ -86,6 +90,16 @@ public class TabViewAndroidDelegate extends ViewAndroidDelegate { - mTab.onBackgroundColorChanged(color); - } - -+ @Override -+ public void onProvideAutofillVirtualStructure(ViewStructure structure, int flags) { -+ mTab.onProvideAutofillVirtualStructure(structure, flags); -+ } -+ -+ @Override -+ public void autofill(final SparseArray values) { -+ mTab.autofill(values); -+ } -+ - @Override - public void onControlsChanged( - int topControlsOffsetY, diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn @@ -347,30 +295,19 @@ diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_ using base::android::AttachCurrentThread; using base::android::ConvertUTF8ToJavaString; using base::android::JavaParamRef; -@@ -536,3 +543,11 @@ static void JNI_TabImpl_Init(JNIEnv* env, +@@ -364,6 +371,7 @@ void TabAndroid::InitializeAutofillIfNecessary(JNIEnv* env) { + if (autofill::AutofillProvider::FromWebContents(web_contents_.get())) { + return; + } ++ autofill::ChromeAutofillClient::CreateForWebContents(web_contents_.get()); + android_autofill::AndroidAutofillClient::CreateForWebContents( + web_contents_.get(), [&](const JavaRef& client) {}); + +@@ -536,3 +544,4 @@ static void JNI_TabImpl_Init(JNIEnv* env, // This will automatically bind to the Java object and pass ownership there. new TabAndroid(env, obj, profile, id); } + -+void TabAndroid::InitializeAutofillIfNecessary(JNIEnv* env) { -+ if (!autofill::ContentAutofillDriverFactory::FromWebContents( -+ web_contents_.get())) { -+ content::WebContents* web_contents = web_contents_.get(); -+ autofill::ChromeAutofillClient::CreateForWebContents(web_contents); -+ } -+} -diff --git a/chrome/browser/android/tab_android.h b/chrome/browser/android/tab_android.h ---- a/chrome/browser/android/tab_android.h -+++ b/chrome/browser/android/tab_android.h -@@ -173,6 +173,8 @@ class TabAndroid : public base::SupportsUserData { - - void SetDevToolsAgentHost(scoped_refptr host); - -+ void InitializeAutofillIfNecessary(JNIEnv* env); -+ - // This should never return null, unless it is called in a state where no - // tabs exist (such as on FRE), which should never happen. If it is called - // then, a nullptr will be returned and must be handled accordingly. 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 @@ -765,15 +702,14 @@ diff --git a/components/autofill/content/browser/content_autofill_driver_factory namespace autofill { class ScopedAutofillManagersObservation; -@@ -95,6 +101,13 @@ ContentAutofillDriver* ContentAutofillDriverFactory::DriverForFrame( +@@ -95,6 +101,12 @@ ContentAutofillDriver* ContentAutofillDriverFactory::DriverForFrame( // 5. `render_frame_host->~RenderFrameHostImpl()` finishes. if (render_frame_host->IsRenderFrameLive()) { driver = std::make_unique(render_frame_host, this); +#if BUILDFLAG(IS_ANDROID) + if (!driver->GetAutofillManager().IsAndroidAutofill()) { + driver->set_secondary_autofill_manager( -+ base::WrapUnique(new AndroidAutofillManager(driver.get(), -+ &client_.get()))); ++ base::WrapUnique(new AndroidAutofillManager(driver.get()))); + } +#endif for (Observer& observer : observers_) { @@ -907,10 +843,11 @@ diff --git a/components/autofill/core/common/autofill_prefs.h b/components/autof diff --git a/components/embedder_support/android/java/src/org/chromium/components/embedder_support/view/ContentView.java b/components/embedder_support/android/java/src/org/chromium/components/embedder_support/view/ContentView.java --- a/components/embedder_support/android/java/src/org/chromium/components/embedder_support/view/ContentView.java +++ b/components/embedder_support/android/java/src/org/chromium/components/embedder_support/view/ContentView.java -@@ -43,6 +43,11 @@ import org.chromium.ui.dragdrop.DragEventDispatchHelper.DragEventDispatchDestina +@@ -43,6 +43,12 @@ import org.chromium.ui.dragdrop.DragEventDispatchHelper.DragEventDispatchDestina import java.util.function.Supplier; ++import android.os.Build; +import org.chromium.base.Log; +import android.util.SparseArray; +import android.view.autofill.AutofillValue; @@ -919,7 +856,7 @@ diff --git a/components/embedder_support/android/java/src/org/chromium/component /** * The containing view for {@link WebContents} that exists in the Android UI hierarchy and exposes * the various {@link View} functionality to it. -@@ -97,6 +102,8 @@ public class ContentView extends FrameLayout +@@ -97,6 +103,8 @@ public class ContentView extends FrameLayout Context context, @Nullable EventOffsetHandler eventOffsetHandler, @Nullable WebContents webContents) { @@ -928,7 +865,7 @@ diff --git a/components/embedder_support/android/java/src/org/chromium/component return new ContentView(context, eventOffsetHandler, webContents); } -@@ -660,4 +667,43 @@ public class ContentView extends FrameLayout +@@ -660,4 +668,43 @@ public class ContentView extends FrameLayout mDragDropEventOffsetHandler.onPostDispatchDragEvent(event.getAction()); return ret; } @@ -986,13 +923,4 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/ViewAndroidDelegate.java b /** Class to acquire, position, and remove anchor views from the implementing View. */ @JNINamespace("ui") public class ViewAndroidDelegate { -@@ -597,4 +601,8 @@ public class ViewAndroidDelegate { - sDragAndDropDelegateForTesting = testDelegate; - ResettersForTesting.register(() -> sDragAndDropDelegateForTesting = null); - } -+ -+ public void onProvideAutofillVirtualStructure(ViewStructure structure, int flags) {} -+ -+ public void autofill(final SparseArray values) {} - } -- diff --git a/build/patches/Enable-share-intent.patch b/build/patches/Enable-share-intent.patch index 53b63469..49948399 100644 --- a/build/patches/Enable-share-intent.patch +++ b/build/patches/Enable-share-intent.patch @@ -12,19 +12,19 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- chrome/android/chrome_java_resources.gni | 1 + chrome/android/chrome_java_sources.gni | 1 + - chrome/android/java/AndroidManifest.xml | 28 +++- + chrome/android/java/AndroidManifest.xml | 28 ++- .../res/layout/sharing_intent_content.xml | 88 ++++++++++ .../chrome/browser/IntentHandler.java | 16 +- .../browser/LaunchIntentDispatcher.java | 14 +- .../init/ProcessInitializationHandler.java | 3 + - .../SharedIntentShareActivity.java | 158 ++++++++++++++++++ + .../SharedIntentShareActivity.java | 159 ++++++++++++++++++ .../flags/android/chrome_feature_list.cc | 1 + .../browser/flags/ChromeFeatureList.java | 1 + .../strings/android_chrome_strings.grd | 13 ++ .../about_flags_cc/Enable-share-intent.inc | 12 ++ .../Enable-share-intent.inc | 3 + .../Enable-share-intent.inc | 1 + - 14 files changed, 332 insertions(+), 8 deletions(-) + 14 files changed, 333 insertions(+), 8 deletions(-) create mode 100644 chrome/android/java/res/layout/sharing_intent_content.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/sharing/shared_intent/SharedIntentShareActivity.java create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Enable-share-intent.inc @@ -306,7 +306,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sharing/shared_ new file mode 100644 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/sharing/shared_intent/SharedIntentShareActivity.java -@@ -0,0 +1,158 @@ +@@ -0,0 +1,159 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. @@ -340,6 +340,7 @@ new file mode 100644 +import org.chromium.chrome.browser.profiles.ProfileProvider; +import org.chromium.ui.widget.ButtonCompat; +import org.chromium.chrome.browser.profiles.Profile; ++import org.chromium.chrome.browser.profiles.ProfileManager; +import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; +import org.chromium.chrome.browser.privacy.settings.PrivacySettings; + @@ -427,7 +428,7 @@ new file mode 100644 + String scheme = Uri.parse(linkUrl).getScheme(); + if (scheme == null) { + linkUrl = -+ TemplateUrlServiceFactory.getForProfile(Profile.getLastUsedRegularProfile()) ++ TemplateUrlServiceFactory.getForProfile(ProfileManager.getLastUsedRegularProfile()) + .getUrlForSearchQuery(linkUrl); + } + updateTextLink(); diff --git a/build/patches/Eyeo-Adblock-Remove-Privacy-Issues.patch b/build/patches/Eyeo-Adblock-Remove-Privacy-Issues.patch index 1a72493e..a805292a 100644 --- a/build/patches/Eyeo-Adblock-Remove-Privacy-Issues.patch +++ b/build/patches/Eyeo-Adblock-Remove-Privacy-Issues.patch @@ -46,7 +46,7 @@ deactivation of all pop-ups (default disabled) .../AdblockCustomFiltersFragment.java | 7 +- .../settings/AdblockCustomItemFragment.java | 20 +- .../settings/AdblockFilterListsAdapter.java | 6 + - .../settings/AdblockSettingsFragment.java | 45 +- + .../settings/AdblockSettingsFragment.java | 50 +- components/adblock/content/browser/BUILD.gn | 18 +- .../adblock_controller_factory_base.cc | 5 +- .../browser/adblock_url_loader_factory.cc | 17 +- @@ -128,7 +128,7 @@ deactivation of all pop-ups (default disabled) .../blink/renderer/core/css/style_engine.h | 1 + .../renderer/core/exported/web_document.cc | 15 +- .../definitions/adblock_private.d.ts | 14 + - 118 files changed, 9188 insertions(+), 1264 deletions(-) + 118 files changed, 9191 insertions(+), 1266 deletions(-) create mode 100644 chrome/browser/resources/settings/adblock_page/adblock_page.html create mode 100644 chrome/browser/resources/settings/adblock_page/adblock_page.ts rename components/adblock/android/java/res/xml/{adblock_preferences.xml => eyeo_adblock_preferences.xml} (56%) @@ -2375,7 +2375,15 @@ diff --git a/components/adblock/android/java/src/org/chromium/components/adblock import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; -@@ -32,7 +33,19 @@ public class AdblockSettingsFragment +@@ -20,6 +21,7 @@ import androidx.preference.PreferenceFragmentCompat; + import org.chromium.build.BuildConfig; + import org.chromium.chrome.browser.preferences.Pref; + import org.chromium.chrome.browser.profiles.Profile; ++import org.chromium.chrome.browser.profiles.ProfileManager; + import org.chromium.components.adblock.AdblockController; + import org.chromium.components.adblock.R; + import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; +@@ -32,7 +34,19 @@ public class AdblockSettingsFragment private Preference mFilterLists; private Preference mAllowedDomains; private Preference mMoreOptions; @@ -2396,7 +2404,7 @@ diff --git a/components/adblock/android/java/src/org/chromium/components/adblock private static final String SETTINGS_ENABLED_KEY = "fragment_adblock_settings_enabled_key"; private static final String SETTINGS_FILTER_LISTS_KEY = "fragment_adblock_settings_filter_lists_key"; -@@ -49,9 +62,20 @@ public class AdblockSettingsFragment +@@ -49,27 +63,49 @@ public class AdblockSettingsFragment private long mOnOffTogleTimestamp; private void bindPreferences() { @@ -2417,7 +2425,11 @@ diff --git a/components/adblock/android/java/src/org/chromium/components/adblock mAllowedDomains = findPreference(SETTINGS_ALLOWED_DOMAINS_KEY); mMoreOptions = findPreference(SETTINGS_MORE_OPTIONS_KEY); } -@@ -62,14 +86,25 @@ public class AdblockSettingsFragment + + private boolean areMoreOptionsEnabled() { +- return UserPrefs.get(Profile.getLastUsedRegularProfile()) ++ return UserPrefs.get(ProfileManager.getLastUsedRegularProfile()) + .getBoolean(Pref.ADBLOCK_MORE_OPTIONS_ENABLED); } private void applyAdblockEnabled(boolean enabledValue) { @@ -2445,7 +2457,16 @@ diff --git a/components/adblock/android/java/src/org/chromium/components/adblock boolean enabled = AdblockController.getInstance().isEnabled(); mAdblockEnabled.setChecked(enabled); mAdblockEnabled.setOnPreferenceChangeListener(this); -@@ -107,7 +142,7 @@ public class AdblockSettingsFragment +@@ -95,7 +131,7 @@ public class AdblockSettingsFragment + + mOnOffTogleTimestamp = now; + if (mOnOffClickCount >= ON_OFF_TOGGLE_COUNT_TO_ENABLE_MORE_OPTIONS) { +- UserPrefs.get(Profile.getLastUsedRegularProfile()) ++ UserPrefs.get(ProfileManager.getLastUsedRegularProfile()) + .setBoolean(Pref.ADBLOCK_MORE_OPTIONS_ENABLED, true); + } + } +@@ -107,7 +143,7 @@ public class AdblockSettingsFragment @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { @@ -2454,7 +2475,7 @@ diff --git a/components/adblock/android/java/src/org/chromium/components/adblock bindPreferences(); synchronizePreferences(); } -@@ -126,6 +161,8 @@ public class AdblockSettingsFragment +@@ -126,6 +162,8 @@ public class AdblockSettingsFragment maybeEnableMoreOptions(); applyAdblockEnabled((Boolean) newValue); diff --git a/build/patches/Logcat-crash-reports-UI.patch b/build/patches/Logcat-crash-reports-UI.patch index 81881af6..7e2c5a30 100644 --- a/build/patches/Logcat-crash-reports-UI.patch +++ b/build/patches/Logcat-crash-reports-UI.patch @@ -6,7 +6,7 @@ Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later. License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../crash/MinidumpUploadServiceImpl.java | 22 +++ - .../crash_upload_list_android.cc | 25 ++- + .../crash_upload_list_android.cc | 19 +- .../crash_upload_list_android.h | 1 + chrome/browser/net/chrome_network_delegate.cc | 7 + chrome/browser/ui/BUILD.gn | 1 + @@ -23,7 +23,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../upload_list/text_log_upload_list.cc | 1 + components/upload_list/upload_list.cc | 14 ++ components/upload_list/upload_list.h | 9 + - 18 files changed, 385 insertions(+), 139 deletions(-) + 18 files changed, 379 insertions(+), 139 deletions(-) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/crash/MinidumpUploadServiceImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/crash/MinidumpUploadServiceImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/crash/MinidumpUploadServiceImpl.java @@ -111,20 +111,14 @@ diff --git a/chrome/browser/crash_upload_list/crash_upload_list_android.cc b/chr // Crash reports can have multiple extensions (e.g. foo.dmp, foo.dmp.try1, // foo.skipped.try0). file = file.BaseName(); -@@ -135,7 +148,15 @@ void CrashUploadListAndroid::LoadUnsuccessfulUploadList( +@@ -135,7 +148,9 @@ void CrashUploadListAndroid::LoadUnsuccessfulUploadList( RecordUnsuccessfulUploadListState( UnsuccessfulUploadListState::ADDING_AN_UPLOAD_ENTRY); id = id.substr(pos + 1); - uploads->push_back(std::make_unique( - id, info.creation_time, upload_state, file_size)); -+ // Since current thread is an IO thread -+ // to avoid failed DCHECK ThreadRestrictions::AssertSingletonAllowed() -+ // remove ui::FormatBytes(): dcheck fail because it use base::FormatDouble() -+ // and LazyInstance::DestructorAtExit(). -+ // also "upload.file_size" is unused. -+ std::u16string file_size_string; + auto upload = std::make_unique( -+ id, info.creation_time, upload_state, file_size_string); ++ id, info.creation_time, upload_state, file_size); + upload->file_path = file_path; + uploads->push_back(std::move(upload)); } diff --git a/build/patches/Move-navigation-bar-to-bottom.patch b/build/patches/Move-navigation-bar-to-bottom.patch index 3840a161..7e085acd 100644 --- a/build/patches/Move-navigation-bar-to-bottom.patch +++ b/build/patches/Move-navigation-bar-to-bottom.patch @@ -28,14 +28,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../tab_management/TabListRecyclerView.java | 19 +++- .../tab_management/TabSwitcherMediator.java | 27 +++++- .../settings/AccessibilitySettings.java | 16 ++++ - .../ChromeAccessibilitySettingsDelegate.java | 50 ++++++++++ + .../ChromeAccessibilitySettingsDelegate.java | 51 ++++++++++ .../chrome/browser/app/ChromeActivity.java | 13 +++ .../compositor/CompositorViewHolder.java | 8 ++ .../layouts/LayoutManagerChrome.java | 17 +++- .../layouts/LayoutManagerChromeTablet.java | 4 +- .../layouts/ToolbarSwipeLayout.java | 14 ++- .../overlays/strip/StripLayoutHelper.java | 2 +- - .../strip/StripLayoutHelperManager.java | 37 +++++++- + .../strip/StripLayoutHelperManager.java | 38 +++++++- .../scene_layer/StaticTabSceneLayer.java | 7 +- .../scene_layer/TabListSceneLayer.java | 8 ++ .../scene_layer/TabStripSceneLayer.java | 22 ++++- @@ -75,7 +75,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../toolbar/LocationBarFocusScrimHandler.java | 5 + .../bottom/BottomControlsContentDelegate.java | 9 +- .../bottom/BottomControlsCoordinator.java | 11 ++- - .../bottom/BottomControlsMediator.java | 8 ++ + .../bottom/BottomControlsMediator.java | 18 +++- .../bottom/BottomControlsProperties.java | 6 +- .../bottom/BottomControlsViewBinder.java | 2 + .../bottom/ScrollingBottomViewSceneLayer.java | 19 +++- @@ -87,7 +87,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../AccessibilitySettingsDelegate.java | 6 ++ .../render_widget_host_view_android.cc | 3 + .../Move-navigation-bar-to-bottom.inc | 12 +++ - 74 files changed, 901 insertions(+), 84 deletions(-) + 74 files changed, 909 insertions(+), 88 deletions(-) create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Move-navigation-bar-to-bottom.inc diff --git a/cc/base/features.cc b/cc/base/features.cc @@ -720,7 +720,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser 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 -@@ -49,6 +49,9 @@ public class AccessibilitySettings extends PreferenceFragmentCompat +@@ -50,6 +50,9 @@ public class AccessibilitySettings extends PreferenceFragmentCompat private BooleanPreferenceDelegate mForceTabletUIDelegate; static final String PREF_FORCE_TABLET_UI = "force_tablet_ui"; @@ -730,7 +730,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s private TextScalePreference mTextScalePref; private PageZoomPreference mPageZoomDefaultZoomPref; private ChromeSwitchPreference mPageZoomIncludeOSAdjustment; -@@ -84,6 +87,10 @@ public class AccessibilitySettings extends PreferenceFragmentCompat +@@ -85,6 +88,10 @@ public class AccessibilitySettings extends PreferenceFragmentCompat mFontSizePrefs = FontSizePrefs.getInstance(delegate.getBrowserContextHandle()); } @@ -741,7 +741,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); -@@ -152,6 +159,12 @@ public class AccessibilitySettings extends PreferenceFragmentCompat +@@ -153,6 +160,12 @@ public class AccessibilitySettings extends PreferenceFragmentCompat forceTabletUiPref.setChecked(mForceTabletUIDelegate.isEnabled()); forceTabletUiPref.setOnPreferenceChangeListener(this); @@ -754,7 +754,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s Preference captions = findPreference(PREF_CAPTIONS); captions.setOnPreferenceClickListener( preference -> { -@@ -234,6 +247,9 @@ public class AccessibilitySettings extends PreferenceFragmentCompat +@@ -235,6 +248,9 @@ public class AccessibilitySettings extends PreferenceFragmentCompat mDelegate.getBrowserContextHandle(), (Integer) newValue); } else if (PREF_PAGE_ZOOM_ALWAYS_SHOW.equals(preference.getKey())) { PageZoomUtils.setShouldAlwaysShowZoomMenuItem((Boolean) newValue); @@ -767,10 +767,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s 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 -@@ -15,6 +15,12 @@ import org.chromium.chrome.browser.flags.CromiteNativeUtils; +@@ -15,6 +15,13 @@ import org.chromium.chrome.browser.flags.CromiteNativeUtils; import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; ++import org.chromium.chrome.R; +import android.app.Activity; +import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; +import org.chromium.chrome.browser.ui.messages.snackbar.INeedSnackbarManager; @@ -780,7 +781,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s /** The Chrome implementation of AccessibilitySettingsDelegate. */ public class ChromeAccessibilitySettingsDelegate implements AccessibilitySettingsDelegate { private static class TextSizeContrastAccessibilityDelegate -@@ -57,6 +63,12 @@ public class ChromeAccessibilitySettingsDelegate implements AccessibilitySetting +@@ -57,6 +64,12 @@ public class ChromeAccessibilitySettingsDelegate implements AccessibilitySetting return new ForceTabletUIDelegate(); } @@ -793,7 +794,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s private final Profile mProfile; /** -@@ -67,6 +79,44 @@ public class ChromeAccessibilitySettingsDelegate implements AccessibilitySetting +@@ -67,6 +80,44 @@ public class ChromeAccessibilitySettingsDelegate implements AccessibilitySetting mProfile = profile; } @@ -1038,7 +1039,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java -@@ -81,6 +81,8 @@ import org.chromium.ui.interpolators.Interpolators; +@@ -24,6 +24,7 @@ import androidx.annotation.VisibleForTesting; + import androidx.appcompat.content.res.AppCompatResources; + + import org.chromium.base.supplier.ObservableSupplier; ++import org.chromium.base.supplier.Supplier; + import org.chromium.chrome.R; + import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider; + import org.chromium.chrome.browser.compositor.LayerTitleCache; +@@ -81,6 +82,8 @@ import org.chromium.ui.interpolators.Interpolators; import org.chromium.ui.resources.ResourceManager; import org.chromium.ui.util.ColorUtils; import org.chromium.url.GURL; @@ -1047,7 +1056,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over import java.util.List; -@@ -205,12 +207,16 @@ public class StripLayoutHelperManager +@@ -205,12 +208,16 @@ public class StripLayoutHelperManager // Drag-Drop @Nullable private TabDragSource mTabDragSource; @@ -1064,7 +1073,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over if (mModelSelectorButton.onDown(x, y, fromMouse)) { return; } -@@ -233,6 +239,7 @@ public class StripLayoutHelperManager +@@ -233,6 +240,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } @@ -1072,7 +1081,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over mModelSelectorButton.drag(x, y); getActiveStripLayoutHelper().drag(time(), x, y, dx); } -@@ -242,6 +249,7 @@ public class StripLayoutHelperManager +@@ -242,6 +250,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } @@ -1080,7 +1089,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over long time = time(); if (mModelSelectorButton.click(x, y)) { mModelSelectorButton.handleClick(time); -@@ -255,6 +263,7 @@ public class StripLayoutHelperManager +@@ -255,6 +264,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } @@ -1088,7 +1097,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over getActiveStripLayoutHelper().fling(time(), x, y, velocityX, velocityY); } -@@ -263,6 +272,7 @@ public class StripLayoutHelperManager +@@ -263,6 +273,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } @@ -1096,7 +1105,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over getActiveStripLayoutHelper().onLongPress(time(), x, y); } -@@ -364,7 +374,8 @@ public class StripLayoutHelperManager +@@ -364,7 +375,8 @@ public class StripLayoutHelperManager @NonNull WindowAndroid windowAndroid, // TODO(crbug.com/1498252): Avoid passing the ToolbarManager instance. Potentially // implement an interface to manage strip transition states. @@ -1106,7 +1115,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over mUpdateHost = updateHost; mLayerTitleCacheSupplier = layerTitleCacheSupplier; mDensity = context.getResources().getDisplayMetrics().density; -@@ -492,6 +503,8 @@ public class StripLayoutHelperManager +@@ -492,6 +504,8 @@ public class StripLayoutHelperManager mTabDragSource, toolbarContainerView, windowAndroid); @@ -1115,7 +1124,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over tabHoverCardViewStub.setOnInflateListener( (viewStub, view) -> { -@@ -655,6 +668,10 @@ public class StripLayoutHelperManager +@@ -655,6 +669,10 @@ public class StripLayoutHelperManager // value. yOffset -= getHeight(); } @@ -1126,7 +1135,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over mTabStripTreeProvider.pushAndUpdateStrip( this, mLayerTitleCacheSupplier.get(), -@@ -667,7 +684,9 @@ public class StripLayoutHelperManager +@@ -667,7 +685,9 @@ public class StripLayoutHelperManager getStripTransitionScrimColor(), scrimOpacity, mLeftPadding, @@ -1137,7 +1146,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over return mTabStripTreeProvider; } -@@ -725,11 +744,21 @@ public class StripLayoutHelperManager +@@ -725,11 +745,21 @@ public class StripLayoutHelperManager mLeftPadding, mRightPadding); @@ -2114,8 +2123,8 @@ diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/ch + if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) { + // reverses the order of items in the menu + ModelList modelListReversed = new ModelList(); -+ for (int i = 0; i < modelList.size(); i++) { -+ modelListReversed.add(0, modelList.get(i)); ++ for (int i = 0; i < mModelList.size(); i++) { ++ modelListReversed.add(0, mModelList.get(i)); + } + mModelList = modelListReversed; + } @@ -2613,6 +2622,23 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow int minHeight = mBrowserControlsSizer.getBottomControlsMinHeight(); mModel.set(BottomControlsProperties.Y_OFFSET, bottomOffset - minHeight); +@@ -275,10 +283,12 @@ class BottomControlsMediator + && !mIsInSwipeLayout + && mBrowserControlsSizer.getBottomControlOffset() == 0; + if (visible) { +- // Translate view so that its bottom is aligned with browser controls min height. +- mModel.set( +- BottomControlsProperties.ANDROID_VIEW_TRANSLATE_Y, +- -mBrowserControlsSizer.getBottomControlsMinHeight()); ++ if (!ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) { ++ // Translate view so that its bottom is aligned with browser controls min height. ++ mModel.set( ++ BottomControlsProperties.ANDROID_VIEW_TRANSLATE_Y, ++ -mBrowserControlsSizer.getBottomControlsMinHeight()); ++ } + } + mModel.set(BottomControlsProperties.ANDROID_VIEW_VISIBLE, visible); + } diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsProperties.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsProperties.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsProperties.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsProperties.java @@ -2842,7 +2868,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c import org.chromium.content_public.browser.BrowserContextHandle; /** -@@ -23,6 +25,10 @@ public interface AccessibilitySettingsDelegate { +@@ -32,6 +34,10 @@ public interface AccessibilitySettingsDelegate { void setValue(int value); } diff --git a/build/patches/Partition-HSTS-cache-by-NAK.patch b/build/patches/Partition-HSTS-cache-by-NAK.patch index b1457952..b09c325b 100644 --- a/build/patches/Partition-HSTS-cache-by-NAK.patch +++ b/build/patches/Partition-HSTS-cache-by-NAK.patch @@ -577,7 +577,7 @@ 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 -@@ -1187,7 +1187,8 @@ ssl_verify_result_t SSLClientSocketImpl::HandleVerifyResult() { +@@ -1190,7 +1190,8 @@ ssl_verify_result_t SSLClientSocketImpl::HandleVerifyResult() { TransportSecurityState::PKPStatus pin_validity = context_->transport_security_state()->CheckPublicKeyPins( host_and_port_, server_cert_verify_result_.is_issued_by_known_root, @@ -587,7 +587,7 @@ diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket switch (pin_validity) { case TransportSecurityState::PKPStatus::VIOLATED: server_cert_verify_result_.cert_status |= -@@ -1209,7 +1210,7 @@ ssl_verify_result_t SSLClientSocketImpl::HandleVerifyResult() { +@@ -1212,7 +1213,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( diff --git a/build/patches/Partition-blobs-by-top-frame-URL.patch b/build/patches/Partition-blobs-by-top-frame-URL.patch index 0cbdb2ca..ab955788 100644 --- a/build/patches/Partition-blobs-by-top-frame-URL.patch +++ b/build/patches/Partition-blobs-by-top-frame-URL.patch @@ -24,13 +24,13 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/ +bool BlobURLStoreImpl::IsSamePartition( + const GURL& blob_url, + const base::UnguessableToken& unsafe_agent_cluster_id, -+ const absl::optional& unsafe_top_level_site) { -+ const absl::optional& top_level_site = ++ const std::optional& unsafe_top_level_site) { ++ const std::optional& top_level_site = + registry_->GetUnsafeTopLevelSite(blob_url); + if (top_level_site.has_value()) + return top_level_site == unsafe_top_level_site; + -+ absl::optional agent_cluster_id = ++ std::optional agent_cluster_id = + registry_->GetUnsafeAgentClusterID(blob_url); + return agent_cluster_id == unsafe_agent_cluster_id; +} @@ -45,14 +45,14 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/ -void BlobURLStoreImpl::Resolve(const GURL& url, ResolveCallback callback) { +void BlobURLStoreImpl::Resolve(const GURL& url, + const base::UnguessableToken& unsafe_agent_cluster_id, -+ const absl::optional& unsafe_top_level_site, ++ const std::optional& unsafe_top_level_site, + ResolveCallback callback) { if (!registry_) { std::move(callback).Run(mojo::NullRemote(), std::nullopt); return; } + if (!IsSamePartition(url, unsafe_agent_cluster_id, unsafe_top_level_site)) { -+ std::move(callback).Run(mojo::NullRemote(), absl::nullopt); ++ std::move(callback).Run(mojo::NullRemote(), std::nullopt); + return; + } mojo::PendingRemote blob = registry_->GetBlobFromUrl(url); @@ -63,7 +63,7 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/ const GURL& url, mojo::PendingReceiver receiver, + const base::UnguessableToken& unsafe_agent_cluster_id, -+ const absl::optional& unsafe_top_level_site, ++ const std::optional& unsafe_top_level_site, ResolveAsURLLoaderFactoryCallback callback) { if (!registry_) { BlobURLLoaderFactory::Create(mojo::NullRemote(), url, std::move(receiver)); @@ -73,7 +73,7 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/ + if (!IsSamePartition(url, unsafe_agent_cluster_id, unsafe_top_level_site)) { + BlobURLLoaderFactory::Create(mojo::NullRemote(), url, std::move(receiver)); -+ std::move(callback).Run(absl::nullopt, absl::nullopt); ++ std::move(callback).Run(std::nullopt, std::nullopt); + return; + } + @@ -85,14 +85,14 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/ const GURL& url, mojo::PendingReceiver token, + const base::UnguessableToken& unsafe_agent_cluster_id, -+ const absl::optional& unsafe_top_level_site, ++ const std::optional& unsafe_top_level_site, ResolveForNavigationCallback callback) { if (!registry_) { std::move(callback).Run(std::nullopt); return; } + if (!IsSamePartition(url, unsafe_agent_cluster_id, unsafe_top_level_site)) { -+ std::move(callback).Run(absl::nullopt); ++ std::move(callback).Run(std::nullopt); + return; + } mojo::PendingRemote blob = registry_->GetBlobFromUrl(url); @@ -108,19 +108,19 @@ diff --git a/storage/browser/blob/blob_url_store_impl.h b/storage/browser/blob/b - void Resolve(const GURL& url, ResolveCallback callback) override; + void Resolve(const GURL& url, + const base::UnguessableToken& unsafe_agent_cluster_id, -+ const absl::optional& unsafe_top_level_site, ++ const std::optional& unsafe_top_level_site, + ResolveCallback callback) override; void ResolveAsURLLoaderFactory( const GURL& url, mojo::PendingReceiver receiver, + const base::UnguessableToken& unsafe_agent_cluster_id, -+ const absl::optional& unsafe_top_level_site, ++ const std::optional& unsafe_top_level_site, ResolveAsURLLoaderFactoryCallback callback) override; void ResolveForNavigation( const GURL& url, mojo::PendingReceiver token, + const base::UnguessableToken& unsafe_agent_cluster_id, -+ const absl::optional& unsafe_top_level_site, ++ const std::optional& unsafe_top_level_site, ResolveForNavigationCallback callback) override; private: @@ -131,7 +131,7 @@ diff --git a/storage/browser/blob/blob_url_store_impl.h b/storage/browser/blob/b + bool IsSamePartition( + const GURL& blob_url, + const base::UnguessableToken& unsafe_agent_cluster_id, -+ const absl::optional& unsafe_top_level_site); ++ const std::optional& unsafe_top_level_site); + const blink::StorageKey storage_key_; @@ -179,9 +179,9 @@ diff --git a/third_party/blink/renderer/core/fileapi/public_url_manager.cc b/thi BlobURLNullOriginMap::GetInstance()->Remove(blob_url); } -+static absl::optional GetInsecureTopLevelSite( ++static std::optional GetInsecureTopLevelSite( + ExecutionContext* execution_context) { -+ absl::optional top_level_site; ++ std::optional top_level_site; + if (execution_context->IsWindow()) { + auto* window = To(execution_context); + if (window->top() && window->top()->GetFrame()) { diff --git a/build/patches/Partitioning-all-cookies-by-top-frame-domain.patch b/build/patches/Partitioning-all-cookies-by-top-frame-domain.patch index a6f8d166..ee911628 100644 --- a/build/patches/Partitioning-all-cookies-by-top-frame-domain.patch +++ b/build/patches/Partitioning-all-cookies-by-top-frame-domain.patch @@ -12,25 +12,26 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../browser/chrome_content_browser_client.cc | 2 +- .../net/profile_network_context_service.cc | 12 ++--- .../privacy_sandbox_settings_delegate.cc | 1 + + ...storage_access_grant_permission_context.cc | 12 +++++ .../experiment/experiment_manager_impl.cc | 1 + .../core/browser/cookie_settings.cc | 2 + .../core/common/cookie_settings_base.cc | 48 ------------------- ...ioning-all-cookies-by-top-frame-domain.inc | 3 ++ - ...ioning-all-cookies-by-top-frame-domain.inc | 2 + ...ioning-all-cookies-by-top-frame-domain.inc | 1 + - ...ioning-all-cookies-by-top-frame-domain.inc | 10 ++++ + ...ioning-all-cookies-by-top-frame-domain.inc | 1 + + ...ioning-all-cookies-by-top-frame-domain.inc | 9 ++++ net/cookies/canonical_cookie.cc | 13 +---- net/cookies/cookie_deletion_info.cc | 3 +- - net/cookies/parsed_cookie.h | 7 ++- - .../sqlite/sqlite_persistent_cookie_store.cc | 10 ++++ + net/cookies/parsed_cookie.h | 6 ++- + .../sqlite/sqlite_persistent_cookie_store.cc | 8 ++++ net/url_request/url_request_http_job.cc | 10 ++-- services/network/cookie_settings.cc | 5 +- services/network/restricted_cookie_manager.cc | 6 +++ .../modules/cookie_store/cookie_init.idl | 2 +- - .../modules/cookie_store/cookie_store.cc | 12 +++++ + .../modules/cookie_store/cookie_store.cc | 3 ++ .../cookie_store_delete_options.idl | 2 +- ui/webui/webui_allowlist.cc | 1 + - 21 files changed, 72 insertions(+), 81 deletions(-) + 22 files changed, 70 insertions(+), 81 deletions(-) create mode 100644 cromite_flags/components/content_settings/core/common/features_cc/Partitioning-all-cookies-by-top-frame-domain.inc create mode 100644 cromite_flags/components/permissions/features_cc/Partitioning-all-cookies-by-top-frame-domain.inc create mode 100644 cromite_flags/content/public/common/content_features_cc/Partitioning-all-cookies-by-top-frame-domain.inc @@ -85,6 +86,28 @@ diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_settings_delegate.cc if (net::cookie_util::IsForceThirdPartyCookieBlockingEnabled()) { return false; } +diff --git a/chrome/browser/storage_access_api/storage_access_grant_permission_context.cc b/chrome/browser/storage_access_api/storage_access_grant_permission_context.cc +--- a/chrome/browser/storage_access_api/storage_access_grant_permission_context.cc ++++ b/chrome/browser/storage_access_api/storage_access_grant_permission_context.cc +@@ -319,6 +319,18 @@ void StorageAccessGrantPermissionContext::CheckForAutoGrantOrAutoDenial( + permissions::PermissionRequestData request_data, + permissions::BrowserPermissionCallback callback, + net::FirstPartySetMetadata metadata) { ++ if ((true)) { ++ // don't use implicit grants or heuristic, ask to user ++ PermissionContextBase::DecidePermission(std::move(request_data), ++ std::move(callback)); ++ // to deny: ++ // NotifyPermissionSetInternal(request_data.id, request_data.requesting_origin, ++ // request_data.embedding_origin, ++ // std::move(callback), ++ // /*persist=*/true, CONTENT_SETTING_BLOCK, ++ // RequestOutcome::kDeniedByFirstPartySet); ++ return; ++ } + if (metadata.AreSitesInSameFirstPartySet()) { + switch (metadata.top_frame_entry()->site_type()) { + case net::SiteType::kPrimary: diff --git a/chrome/browser/tpcd/experiment/experiment_manager_impl.cc b/chrome/browser/tpcd/experiment/experiment_manager_impl.cc --- a/chrome/browser/tpcd/experiment/experiment_manager_impl.cc +++ b/chrome/browser/tpcd/experiment/experiment_manager_impl.cc @@ -197,8 +220,7 @@ diff --git a/cromite_flags/components/permissions/features_cc/Partitioning-all-c new file mode 100644 --- /dev/null +++ b/cromite_flags/components/permissions/features_cc/Partitioning-all-cookies-by-top-frame-domain.inc -@@ -0,0 +1,2 @@ -+SET_CROMITE_FEATURE_DISABLED(kPermissionStorageAccessAPI); +@@ -0,0 +1 @@ +SET_CROMITE_FEATURE_ENABLED(kShowRelatedWebsiteSetsPermissionGrants); diff --git a/cromite_flags/content/public/common/content_features_cc/Partitioning-all-cookies-by-top-frame-domain.inc b/cromite_flags/content/public/common/content_features_cc/Partitioning-all-cookies-by-top-frame-domain.inc new file mode 100644 @@ -210,8 +232,7 @@ diff --git a/cromite_flags/net/base/features_cc/Partitioning-all-cookies-by-top- new file mode 100644 --- /dev/null +++ b/cromite_flags/net/base/features_cc/Partitioning-all-cookies-by-top-frame-domain.inc -@@ -0,0 +1,10 @@ -+SET_CROMITE_FEATURE_ENABLED(kPartitionedCookies); +@@ -0,0 +1,9 @@ +SET_CROMITE_FEATURE_ENABLED(kCookieDomainRejectNonASCII); + +SET_CROMITE_FEATURE_DISABLED(kForceThirdPartyCookieBlocking); @@ -275,14 +296,13 @@ diff --git a/net/cookies/parsed_cookie.h b/net/cookies/parsed_cookie.h #include "net/base/net_export.h" #include "net/cookies/cookie_constants.h" -@@ -85,7 +86,11 @@ class NET_EXPORT ParsedCookie { +@@ -85,7 +86,10 @@ class NET_EXPORT ParsedCookie { CookieSameSite SameSite( CookieSameSiteString* samesite_string = nullptr) const; CookiePriority Priority() const; - bool IsPartitioned() const { return partitioned_index_ != 0; } + bool IsPartitioned() const { -+ if (base::FeatureList::IsEnabled(net::features::kPartitionedCookies)) -+ return true; ++ if ((true)) return true; + return partitioned_index_ != 0; + } bool HasInternalHtab() const { return internal_htab_; } @@ -291,7 +311,7 @@ diff --git a/net/cookies/parsed_cookie.h b/net/cookies/parsed_cookie.h diff --git a/net/extras/sqlite/sqlite_persistent_cookie_store.cc b/net/extras/sqlite/sqlite_persistent_cookie_store.cc --- a/net/extras/sqlite/sqlite_persistent_cookie_store.cc +++ b/net/extras/sqlite/sqlite_persistent_cookie_store.cc -@@ -694,6 +694,16 @@ bool SQLitePersistentCookieStore::Backend::DoInitializeDatabase() { +@@ -694,6 +694,14 @@ bool SQLitePersistentCookieStore::Backend::DoInitializeDatabase() { if (!restore_old_session_cookies_) DeleteSessionCookiesOnStartup(); @@ -299,10 +319,8 @@ diff --git a/net/extras/sqlite/sqlite_persistent_cookie_store.cc b/net/extras/sq + // (the information would be missing), we clean the current ones + // present because they would otherwise be sent in third-party contexts + // even if the flag is active. -+ if (base::FeatureList::IsEnabled(features::kPartitionedCookies)) { -+ if (!db()->Execute("DELETE FROM cookies WHERE top_frame_site_key = ''")) { -+ LOG(WARNING) << "Unable to delete unpartitioned cookies."; -+ } ++ if (!db()->Execute("DELETE FROM cookies WHERE top_frame_site_key = ''")) { ++ LOG(WARNING) << "Unable to delete unpartitioned cookies."; + } + return true; @@ -379,36 +397,27 @@ diff --git a/third_party/blink/renderer/modules/cookie_store/cookie_init.idl b/t diff --git a/third_party/blink/renderer/modules/cookie_store/cookie_store.cc b/third_party/blink/renderer/modules/cookie_store/cookie_store.cc --- a/third_party/blink/renderer/modules/cookie_store/cookie_store.cc +++ b/third_party/blink/renderer/modules/cookie_store/cookie_store.cc -@@ -341,6 +341,10 @@ ScriptPromiseTyped CookieStore::set( +@@ -341,6 +341,7 @@ ScriptPromiseTyped CookieStore::set( CookieInit* set_options = CookieInit::Create(); set_options->setName(name); set_options->setValue(value); -+ if (RuntimeEnabledFeatures::PartitionedCookiesEnabled( -+ CurrentExecutionContext(script_state->GetIsolate()))) { -+ set_options->setPartitioned(true); -+ } ++ set_options->setPartitioned(true); return set(script_state, set_options, exception_state); } -@@ -365,6 +369,10 @@ ScriptPromiseTyped CookieStore::Delete( +@@ -365,6 +366,7 @@ ScriptPromiseTyped CookieStore::Delete( set_options->setName(name); set_options->setValue("deleted"); set_options->setExpires(0); -+ if (RuntimeEnabledFeatures::PartitionedCookiesEnabled( -+ CurrentExecutionContext(script_state->GetIsolate()))) { -+ set_options->setPartitioned(true); -+ } ++ set_options->setPartitioned(true); return DoWrite(script_state, set_options, exception_state); } -@@ -380,6 +388,10 @@ ScriptPromiseTyped CookieStore::Delete( +@@ -380,6 +382,7 @@ ScriptPromiseTyped CookieStore::Delete( set_options->setPath(options->path()); set_options->setSameSite("strict"); set_options->setPartitioned(options->partitioned()); -+ if (RuntimeEnabledFeatures::PartitionedCookiesEnabled( -+ CurrentExecutionContext(script_state->GetIsolate()))) { -+ set_options->setPartitioned(true); -+ } ++ set_options->setPartitioned(true); return DoWrite(script_state, set_options, exception_state); } diff --git a/build/patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch b/build/patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch index 2dbde84b..3286eb36 100644 --- a/build/patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch +++ b/build/patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch @@ -18,7 +18,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../res/xml/referer_policy_preferences.xml | 31 +++++++ .../privacy/settings/PrivacySettings.java | 6 ++ .../RadioButtonGroupRefererSettings.java | 89 +++++++++++++++++++ - .../settings/RefererSettingsFragment.java | 79 ++++++++++++++++ + .../settings/RefererSettingsFragment.java | 80 +++++++++++++++++ .../api/settings_private/prefs_util.cc | 5 ++ .../net/system_network_context_manager.cc | 4 + chrome/browser/renderer_preferences_util.cc | 1 + @@ -34,7 +34,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../renderer_host/navigation_request.cc | 9 ++ .../network/public/cpp/resource_request.h | 2 +- .../renderer_preferences.h | 1 + - 23 files changed, 371 insertions(+), 1 deletion(-) + 23 files changed, 372 insertions(+), 1 deletion(-) create mode 100644 chrome/android/java/res/layout/radio_button_group_referer_policy_preference.xml create mode 100644 chrome/android/java/res/xml/referer_policy_preferences.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/RadioButtonGroupRefererSettings.java @@ -295,7 +295,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting new file mode 100644 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/RefererSettingsFragment.java -@@ -0,0 +1,79 @@ +@@ -0,0 +1,80 @@ +/* + This file is part of Bromite. + @@ -324,6 +324,7 @@ new file mode 100644 +import org.chromium.chrome.R; +import org.chromium.chrome.browser.preferences.Pref; +import org.chromium.chrome.browser.profiles.Profile; ++import org.chromium.chrome.browser.profiles.ProfileManager; +import org.chromium.components.browser_ui.settings.TextMessagePreference; +import org.chromium.components.browser_ui.settings.SettingsUtils; +import org.chromium.components.prefs.PrefService; @@ -336,10 +337,10 @@ new file mode 100644 + static final String PREF_REFERER_POLICY = "referer_page_radio_button_group"; + + private RadioButtonGroupRefererSettings mRefererPreference; -+ private final PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile()); ++ private final PrefService prefService = UserPrefs.get(ProfileManager.getLastUsedRegularProfile()); + + public static String getRefererSummaryString(Context context) { -+ int policy = UserPrefs.get(Profile.getLastUsedRegularProfile()) ++ int policy = UserPrefs.get(ProfileManager.getLastUsedRegularProfile()) + .getInteger(Pref.REFERRERS_POLICY); + + if (policy == 0) { @@ -368,9 +369,9 @@ new file mode 100644 + + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { -+ UserPrefs.get(Profile.getLastUsedRegularProfile()) ++ UserPrefs.get(ProfileManager.getLastUsedRegularProfile()) + .setInteger(Pref.REFERRERS_POLICY, (int)newValue); -+ UserPrefs.get(Profile.getLastUsedRegularProfile()) ++ UserPrefs.get(ProfileManager.getLastUsedRegularProfile()) + .setBoolean(Pref.ENABLE_REFERRERS, (int)newValue != 0); + return true; + } diff --git a/build/patches/Remove-blocklisted-URLs-upon-bookmark-creation.patch b/build/patches/Remove-blocklisted-URLs-upon-bookmark-creation.patch index 70f454c0..8975cb68 100644 --- a/build/patches/Remove-blocklisted-URLs-upon-bookmark-creation.patch +++ b/build/patches/Remove-blocklisted-URLs-upon-bookmark-creation.patch @@ -4,17 +4,18 @@ Subject: Remove blocklisted URLs upon bookmark creation License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../chrome/browser/bookmarks/TabBookmarker.java | 13 +++++++++++++ - 1 file changed, 13 insertions(+) + .../chrome/browser/bookmarks/TabBookmarker.java | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/TabBookmarker.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/TabBookmarker.java --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/TabBookmarker.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/TabBookmarker.java -@@ -19,6 +19,11 @@ import org.chromium.components.bookmarks.BookmarkItem; +@@ -19,6 +19,12 @@ import org.chromium.components.bookmarks.BookmarkItem; import org.chromium.components.bookmarks.BookmarkType; import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; +import org.chromium.chrome.browser.profiles.Profile; ++import org.chromium.chrome.browser.profiles.ProfileManager; +import org.chromium.chrome.browser.suggestions.SuggestionsDependencyFactory; +import org.chromium.chrome.browser.suggestions.mostvisited.MostVisitedSites; +import org.chromium.url.GURL; @@ -22,7 +23,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/TabBo /** * Helper class for managing the UI flow for bookmarking the active tab and kicking off the backend. * Shows a snackbar if a new bookmark was added. If the bookmark already exists, kicks off edit -@@ -30,6 +35,7 @@ public class TabBookmarker { +@@ -30,6 +36,7 @@ public class TabBookmarker { private final Supplier mBottomSheetControllerSupplier; private final Supplier mSnackbarManagerSupplier; private final boolean mIsCustomTab; @@ -30,14 +31,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/TabBo /** * Constructor. -@@ -105,6 +111,13 @@ public class TabBookmarker { +@@ -105,6 +112,13 @@ public class TabBookmarker { return; } + // remove blocklisted URL from most visited sites + if (mMostVisitedSites == null) { + mMostVisitedSites = -+ SuggestionsDependencyFactory.getInstance().createMostVisitedSites(Profile.getLastUsedRegularProfile()); ++ SuggestionsDependencyFactory.getInstance().createMostVisitedSites(ProfileManager.getLastUsedRegularProfile()); + } + mMostVisitedSites.removeBlocklistedUrl(tabToBookmark.getOriginalUrl()); + diff --git a/build/patches/Remove-navigator.connection-info.patch b/build/patches/Remove-navigator.connection-info.patch index 312ec489..7f456d9a 100644 --- a/build/patches/Remove-navigator.connection-info.patch +++ b/build/patches/Remove-navigator.connection-info.patch @@ -69,7 +69,7 @@ diff --git a/third_party/blink/renderer/platform/network/network_state_notifier. + SetNetworkConnectionInfoOverride( + /*on_line*/ true, + /*type*/ WebConnectionType::kWebConnectionTypeWifi, -+ /*effective_type*/ absl::nullopt, ++ /*effective_type*/ std::nullopt, + /*http_rtt_msec*/ 0, + /*max_bandwidth_mbps*/ std::numeric_limits::max()); + SetNetworkQuality(/*effective_type*/ WebEffectiveConnectionType::kType4G, base::TimeDelta(), base::TimeDelta(), 10000); diff --git a/build/patches/Revert-removal-of-execution-context-address-space.patch b/build/patches/Revert-removal-of-execution-context-address-space.patch index 2ad8f92b..b9a39f10 100644 --- a/build/patches/Revert-removal-of-execution-context-address-space.patch +++ b/build/patches/Revert-removal-of-execution-context-address-space.patch @@ -110,7 +110,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc MakeGarbageCollected(), std::make_unique( std::move(content_settings)), -+ absl::nullopt /* response_address_space */, ++ std::nullopt /* response_address_space */, nullptr /* inherited_trial_features */, devtools_worker_token, std::move(worker_settings), mojom::blink::V8CacheOptions::kDefault, nullptr /* worklet_module_response_map */, @@ -272,7 +272,7 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.cc b/third nullptr /* worker_main_script_load_params */, network::mojom::ReferrerPolicy::kDefault, Vector(), -+ absl::nullopt /* response_address_space */, ++ std::nullopt /* response_address_space */, String() /* source_code */, reject_coep_unsafe_none, std::move(back_forward_cache_controller_host)); return; @@ -280,7 +280,7 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.cc b/third ContinueStart(script_request_url_, std::move(worker_main_script_load_params), network::mojom::ReferrerPolicy::kDefault, Vector(), -+ absl::nullopt /* response_address_space */, ++ std::nullopt /* response_address_space */, String() /* source_code */, RejectCoepUnsafeNone(false), std::move(back_forward_cache_controller_host)); } @@ -296,7 +296,7 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.cc b/third network::mojom::ReferrerPolicy referrer_policy, Vector response_content_security_policies, -+ absl::optional response_address_space, ++ std::optional response_address_space, const String& source_code, RejectCoepUnsafeNone reject_coep_unsafe_none, mojo::PendingRemote @@ -316,7 +316,7 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.cc b/third Vector - response_content_security_policies) { + response_content_security_policies, -+ absl::optional response_address_space) { ++ std::optional response_address_space) { base::UnguessableToken parent_devtools_token; std::unique_ptr settings; ExecutionContext* execution_context = GetExecutionContext(); @@ -335,7 +335,7 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.h b/third_ network::mojom::ReferrerPolicy, Vector response_content_security_policies, -+ absl::optional response_address_space, ++ std::optional response_address_space, const String& source_code, RejectCoepUnsafeNone reject_coep_unsafe_none, mojo::PendingRemote @@ -345,7 +345,7 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.h b/third_ Vector - response_content_security_policies); + response_content_security_policies, -+ absl::optional response_address_space); ++ std::optional response_address_space); scoped_refptr CreateWebWorkerFetchContext(); // May return nullptr. std::unique_ptr CreateWebContentSettingsClient(); @@ -356,7 +356,7 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker_global_sco KURL response_script_url = creation_params->script_url; network::mojom::ReferrerPolicy response_referrer_policy = creation_params->referrer_policy; -+ absl::optional response_address_space = ++ std::optional response_address_space = + creation_params->response_address_space; const bool parent_cross_origin_isolated_capability = creation_params->parent_cross_origin_isolated_capability; @@ -414,7 +414,7 @@ diff --git a/third_party/blink/renderer/core/workers/global_scope_creation_param HttpsState starter_https_state, WorkerClients* worker_clients, std::unique_ptr content_settings_client, -+ absl::optional response_address_space, ++ std::optional response_address_space, const Vector* inherited_trial_features, const base::UnguessableToken& parent_devtools_token, std::unique_ptr worker_settings, @@ -441,7 +441,7 @@ diff --git a/third_party/blink/renderer/core/workers/global_scope_creation_param HttpsState starter_https_state, WorkerClients*, std::unique_ptr, -+ absl::optional, ++ std::optional, const Vector* inherited_trial_features, const base::UnguessableToken& parent_devtools_token, std::unique_ptr, @@ -452,7 +452,7 @@ diff --git a/third_party/blink/renderer/core/workers/global_scope_creation_param + // Worker script response's address space. This is valid only when the worker + // script is fetched on the main thread (i.e., when + // |off_main_thread_fetch_option| is kDisabled). -+ absl::optional response_address_space; ++ std::optional response_address_space; + base::UnguessableToken parent_devtools_token; @@ -765,7 +765,7 @@ diff --git a/third_party/blink/renderer/modules/exported/web_embedded_worker_imp starter_secure_context, starter_https_state, nullptr /* worker_clients */, - std::move(content_settings_proxy), nullptr /* inherited_trial_features */, + std::move(content_settings_proxy), -+ absl::nullopt /* response_address_space */, ++ std::nullopt /* response_address_space */, + nullptr /* inherited_trial_features */, worker_start_data->devtools_worker_token, std::move(worker_settings), // Generate the full code cache in the first execution of the script. diff --git a/build/patches/Show-warnings-on-downloads-over-HTTP.patch b/build/patches/Show-warnings-on-downloads-over-HTTP.patch deleted file mode 100644 index 8e2de200..00000000 --- a/build/patches/Show-warnings-on-downloads-over-HTTP.patch +++ /dev/null @@ -1,17 +0,0 @@ -From: uazo -Date: Mon, 17 Jul 2023 15:26:11 +0000 -Subject: Show warnings on downloads over HTTP - -License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html ---- - .../chrome_features_cc/Show-warnings-on-downloads-over-HTTP.inc | 1 + - 1 file changed, 1 insertion(+) - create mode 100644 cromite_flags/chrome/common/chrome_features_cc/Show-warnings-on-downloads-over-HTTP.inc - -diff --git a/cromite_flags/chrome/common/chrome_features_cc/Show-warnings-on-downloads-over-HTTP.inc b/cromite_flags/chrome/common/chrome_features_cc/Show-warnings-on-downloads-over-HTTP.inc -new file mode 100644 ---- /dev/null -+++ b/cromite_flags/chrome/common/chrome_features_cc/Show-warnings-on-downloads-over-HTTP.inc -@@ -0,0 +1 @@ -+SET_CROMITE_FEATURE_ENABLED(kInsecureDownloadWarnings); --- diff --git a/build/patches/User-agent-customization.patch b/build/patches/User-agent-customization.patch index 2bf4fa6c..a5b5e6a4 100644 --- a/build/patches/User-agent-customization.patch +++ b/build/patches/User-agent-customization.patch @@ -531,8 +531,8 @@ new file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java -@@ -93,6 +93,11 @@ import org.chromium.content_public.browser.SelectionPopupController; - import org.chromium.chrome.browser.preferences.Pref; +@@ -94,6 +94,11 @@ import org.chromium.chrome.browser.preferences.Pref; + import org.chromium.chrome.browser.profiles.ProfileManager; import org.chromium.components.user_prefs.UserPrefs; +import org.chromium.content_public.browser.NavigationController; @@ -543,7 +543,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav /** * Implementation of the interface {@link Tab}. Contains and manages a {@link ContentView}. This * class is not intended to be extended. -@@ -633,6 +638,32 @@ class TabImpl implements Tab { +@@ -632,6 +637,32 @@ class TabImpl implements Tab { params.setOverrideUserAgent(calculateUserAgentOverrideOption(null)); } @@ -576,7 +576,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav LoadUrlResult result = loadUrlInternal(params, fixedUrl); for (TabObserver observer : mObservers) { -@@ -1609,9 +1640,16 @@ class TabImpl implements Tab { +@@ -1598,9 +1629,16 @@ class TabImpl implements Tab { mWebContents.setImportance(mImportance); @@ -596,7 +596,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav mContentView.addOnAttachStateChangeListener(mAttachStateChangeListener); updateInteractableState(); -@@ -1802,6 +1840,10 @@ class TabImpl implements Tab { +@@ -1791,6 +1829,10 @@ class TabImpl implements Tab { } mIsBeingRestored = true; for (TabObserver observer : mObservers) observer.onRestoreStarted(this); @@ -607,7 +607,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav } finally { TraceEvent.end("Tab.restoreIfNeeded"); } -@@ -2066,6 +2108,13 @@ class TabImpl implements Tab { +@@ -2055,6 +2097,13 @@ class TabImpl implements Tab { } private @UserAgentOverrideOption int calculateUserAgentOverrideOption(@Nullable GURL url) { @@ -621,7 +621,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav WebContents webContents = getWebContents(); boolean currentRequestDesktopSite = TabUtils.isUsingDesktopUserAgent(webContents); @TabUserAgent int tabUserAgent = TabUtils.getTabUserAgent(this); -@@ -2147,6 +2196,42 @@ class TabImpl implements Tab { +@@ -2136,6 +2185,42 @@ class TabImpl implements Tab { } } diff --git a/build/patches/add-browser-policy.patch b/build/patches/add-browser-policy.patch index 19faa632..8c803b42 100644 --- a/build/patches/add-browser-policy.patch +++ b/build/patches/add-browser-policy.patch @@ -4,7 +4,7 @@ Subject: Add browser policy License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- - base/win/win_util.cc | 63 +------- + base/win/win_util.cc | 63 +-------- chrome/android/java/AndroidManifest.xml | 4 - .../privacy_preferences_manager_impl.cc | 5 + .../metrics/chrome_feature_list_creator.cc | 12 ++ @@ -14,13 +14,14 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html ...ccount_consistency_mode_manager_factory.cc | 2 +- .../throttled_gaia_auth_fetcher.cc | 5 + chrome/browser/signin/chrome_signin_client.cc | 7 +- - .../ui/webui/policy/policy_ui_handler.cc | 104 ++++++++++++- + .../browser/signin/dice_response_handler.cc | 2 + + .../ui/webui/policy/policy_ui_handler.cc | 104 +++++++++++++- .../ui/webui/policy/policy_ui_handler.h | 2 + .../strings/android/browser_ui_strings.grd | 2 +- - .../commerce/core/commerce_feature_list.cc | 65 ++------ + .../commerce/core/commerce_feature_list.cc | 65 ++------- .../core/browser/browser_policy_connector.cc | 3 + .../common/command_line_policy_provider.cc | 3 + - .../core/common/policy_loader_command_line.cc | 140 ++++++++++++++++-- + .../core/common/policy_loader_command_line.cc | 133 +++++++++++++++--- .../policy/core/common/policy_pref_names.cc | 3 + .../policy/core/common/policy_pref_names.h | 1 + .../policy/core/common/policy_service_impl.cc | 3 + @@ -33,7 +34,8 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html components/signin/features.gni | 2 +- .../gaia_cookie_manager_service.cc | 4 + google_apis/gaia/gaia_auth_fetcher.cc | 1 + - 29 files changed, 319 insertions(+), 150 deletions(-) + net/socket/ssl_client_socket_impl.cc | 3 + + 31 files changed, 317 insertions(+), 150 deletions(-) diff --git a/base/win/win_util.cc b/base/win/win_util.cc --- a/base/win/win_util.cc @@ -326,6 +328,20 @@ diff --git a/chrome/browser/signin/chrome_signin_client.cc b/chrome/browser/sign wait_for_network_callback_helper_->DelayNetworkCall(std::move(callback)); } +diff --git a/chrome/browser/signin/dice_response_handler.cc b/chrome/browser/signin/dice_response_handler.cc +--- a/chrome/browser/signin/dice_response_handler.cc ++++ b/chrome/browser/signin/dice_response_handler.cc +@@ -464,8 +464,10 @@ void DiceResponseHandler::ProcessDiceSignoutHeader( + // - If there is a policy restriction on removing the primary account. + bool invalidate_only_primary_account = + identity_manager_->HasPrimaryAccount(signin::ConsentLevel::kSync) || ++#if BUILDFLAG(ENABLE_BOUND_SESSION_CREDENTIALS) + switches::IsExplicitBrowserSigninUIOnDesktopEnabled( + switches::ExplicitBrowserSigninPhase::kFull) || ++#endif + !signin_client_->IsClearPrimaryAccountAllowed( + /*has_sync_account=*/false); + diff --git a/chrome/browser/ui/webui/policy/policy_ui_handler.cc b/chrome/browser/ui/webui/policy/policy_ui_handler.cc --- a/chrome/browser/ui/webui/policy/policy_ui_handler.cc +++ b/chrome/browser/ui/webui/policy/policy_ui_handler.cc @@ -448,7 +464,7 @@ diff --git a/chrome/browser/ui/webui/policy/policy_ui_handler.cc b/chrome/browse + base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY); + + // remove policy -+ base::EraseIf(disabled_policies, ++ std::erase_if(disabled_policies, + [policy_name](const std::string& name) { return name == policy_name; }); + + // readd if exists and enabled @@ -645,7 +661,7 @@ diff --git a/components/policy/core/common/policy_loader_command_line.cc b/compo namespace policy { -@@ -21,25 +46,108 @@ PolicyLoaderCommandLine::~PolicyLoaderCommandLine() = default; +@@ -21,25 +46,101 @@ PolicyLoaderCommandLine::~PolicyLoaderCommandLine() = default; PolicyBundle PolicyLoaderCommandLine::Load() { PolicyBundle bundle; @@ -731,13 +747,6 @@ diff --git a/components/policy/core/common/policy_loader_command_line.cc b/compo + // Disable automatic https upgrade + AddPolicy(disabled_policies_list, policy_map, policy::key::kHttpsUpgradesEnabled, base::Value(false)); + -+ // Check RSA key usage for server certicates issued by local trust anchors -+ // Enforce TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 expects the digitalSignature key usage bit. -+ AddPolicy(disabled_policies_list, policy_map, policy::key::kRSAKeyUsageForLocalAnchorsEnabled, base::Value(true)); -+ -+ // Disable Insecure Handshake Hashes -+ AddPolicy(disabled_policies_list, policy_map, policy::key::kInsecureHashesInTLSHandshakesEnabled, base::Value(false)); -+ +#if !BUILDFLAG(IS_ANDROID) + AddPolicy(disabled_policies_list, policy_map, policy::key::kSideSearchEnabled, base::Value(false)); +#endif @@ -961,4 +970,24 @@ diff --git a/google_apis/gaia/gaia_auth_fetcher.cc b/google_apis/gaia/gaia_auth_ CreateAndStartGaiaFetcher( " ", // To force an HTTP POST. kFormEncodedContentType, "Origin: https://www.google.com", +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 +@@ -772,6 +772,7 @@ int SSLClientSocketImpl::Init() { + return ERR_UNEXPECTED; + } + ++ // Disable Insecure Handshake Hashes + // Disable SHA-1 server signatures. + // TODO(crbug.com/boringssl/699): Once the default is flipped in BoringSSL, we + // no longer need to override it. +@@ -1180,6 +1181,8 @@ ssl_verify_result_t SSLClientSocketImpl::HandleVerifyResult() { + + cert_verifier_request_.reset(); + ++ SSL_set_enforce_rsa_key_usage(ssl_.get(), true); ++ + // If the connection was good, check HPKP and CT status simultaneously, + // but prefer to treat the HPKP error as more serious, if there was one. + if (result == OK) { --