diff --git a/build/patches/Add-an-always-incognito-mode.patch b/build/patches/Add-an-always-incognito-mode.patch index edf675ce..8cd14b20 100644 --- a/build/patches/Add-an-always-incognito-mode.patch +++ b/build/patches/Add-an-always-incognito-mode.patch @@ -27,7 +27,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../chrome/browser/ChromeTabbedActivity.java | 28 ++- .../chrome/browser/app/ChromeActivity.java | 4 + .../AppMenuPropertiesDelegateImpl.java | 28 ++- - .../ChromeContextMenuPopulator.java | 7 +- + .../ChromeContextMenuPopulator.java | 6 +- .../CustomTabActivityLifecycleUmaTracker.java | 39 ----- .../CustomTabAppMenuPropertiesDelegate.java | 4 + .../CustomTabIntentDataProvider.java | 10 ++ @@ -86,7 +86,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../add-an-always-incognito-mode.inc | 1 + .../add-an-always-incognito-mode.inc | 3 + .../add-an-always-incognito-mode.inc | 1 + - 67 files changed, 797 insertions(+), 112 deletions(-) + 67 files changed, 796 insertions(+), 112 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 @@ -403,15 +403,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr List> groupedItems = new ArrayList<>(); if (mParams.isPage() && shouldShowEmptySpaceContextMenu()) { -@@ -320,6 +324,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { - if (mMode == ContextMenuMode.NORMAL) { - linkGroup.add(createListItem(Item.OPEN_IN_NEW_TAB_IN_GROUP)); - linkGroup.add(createListItem(Item.OPEN_IN_NEW_TAB)); -+ - if (!mItemDelegate.isIncognito() && mItemDelegate.isIncognitoSupported()) { - linkGroup.add(createListItem(Item.OPEN_IN_INCOGNITO_TAB)); - } -@@ -350,7 +355,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -350,7 +354,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { } } if (FirstRunStatus.getFirstRunFlowComplete()) { diff --git a/build/patches/Add-bookmark-import-export-actions.patch b/build/patches/Add-bookmark-import-export-actions.patch index 83892bd3..c39db94b 100644 --- a/build/patches/Add-bookmark-import-export-actions.patch +++ b/build/patches/Add-bookmark-import-export-actions.patch @@ -44,7 +44,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../add-bookmark-import-export-actions.inc | 12 + .../add-bookmark-import-export-actions.inc | 4 + .../add-bookmark-import-export-actions.inc | 1 + - .../chromium/ui/base/SelectFileDialog.java | 18 +- + .../chromium/ui/base/SelectFileDialog.java | 24 +- .../java/strings/android_ui_strings.grd | 3 + ui/shell_dialogs/select_file_dialog.h | 2 + .../select_file_dialog_android.cc | 6 + @@ -52,7 +52,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html ui/shell_dialogs/select_file_dialog_linux.cc | 4 + ui/shell_dialogs/select_file_dialog_linux.h | 2 + ui/shell_dialogs/select_file_dialog_win.cc | 5 + - 41 files changed, 900 insertions(+), 29 deletions(-) + 41 files changed, 906 insertions(+), 29 deletions(-) create mode 100644 cromite_flags/chrome/browser/about_flags_cc/add-bookmark-import-export-actions.inc create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-bookmark-import-export-actions.inc create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/add-bookmark-import-export-actions.inc @@ -1638,19 +1638,25 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui private static final String AUDIO_TYPE = "audio"; private static final String ALL_TYPES = "*/*"; private static final String GENERIC_TYPE = "application/octet-stream"; -@@ -323,6 +325,11 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick +@@ -323,6 +325,17 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick mMimeTypes = convertToSupportedMimeTypes(mFileTypes); } + @CalledByNative + private void showToast(String message) { -+ Toast.makeText(ContextUtils.getApplicationContext(), message, Toast.LENGTH_LONG).show(); ++ ThreadUtils.runOnUiThread( ++ new Runnable() { ++ @Override ++ public void run() { ++ Toast.makeText(ContextUtils.getApplicationContext(), message, Toast.LENGTH_LONG).show(); ++ } ++ }); + } + /** * Creates and starts an intent based on the passed fileTypes and capture value. * -@@ -407,7 +414,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick +@@ -407,7 +420,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick List missingPermissions = new ArrayList<>(); String storagePermission = Manifest.permission.READ_EXTERNAL_STORAGE; boolean shouldUsePhotoPicker = shouldUsePhotoPicker(); @@ -1659,7 +1665,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui // The permission scenario for accessing media has evolved a bit over the years: // Early on, READ_EXTERNAL_STORAGE was required to access media, but that permission was // later deprecated. In its place (starting with Android T) READ_MEDIA_IMAGES and -@@ -460,7 +467,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick +@@ -460,7 +473,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick // TODO(finnur): Remove once we figure out the cause of // crbug.com/950024. @@ -1668,7 +1674,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui if (permissions.length != requestPermissions.length) { throw new RuntimeException( String.format( -@@ -477,7 +484,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick +@@ -477,7 +490,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick } } @@ -1677,7 +1683,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui if (permissions[i].equals(storagePermission) || permissions[i].equals( Manifest.permission.READ_MEDIA_IMAGES) -@@ -783,6 +790,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick +@@ -783,6 +796,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick mimeTypes.add(mimeType); } } @@ -1685,7 +1691,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui return mimeTypes; } -@@ -1156,6 +1164,10 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick +@@ -1156,6 +1170,10 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick return countAcceptTypesFor(superType) == mMimeTypes.size(); } diff --git a/build/patches/Add-lifetime-options-for-permissions.patch b/build/patches/Add-lifetime-options-for-permissions.patch index ba504d15..1816c7fe 100644 --- a/build/patches/Add-lifetime-options-for-permissions.patch +++ b/build/patches/Add-lifetime-options-for-permissions.patch @@ -465,7 +465,7 @@ diff --git a/components/page_info/android/java/src/org/chromium/components/page_ warningTextResource = R.string.page_info_android_permission_blocked; } + if (permission.is_user_session) { -+ permissionParams.warningTextResource = ++ warningTextResource = + R.string.page_info_android_permission_session_permission; + } } 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 0e981b10..464cf7ed 100644 --- a/build/patches/Add-menu-item-to-bookmark-all-tabs.patch +++ b/build/patches/Add-menu-item-to-bookmark-all-tabs.patch @@ -10,7 +10,6 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../bookmarks/android/bookmark_bridge.h | 8 ++++ .../browser/bookmarks/BookmarkBridge.java | 41 ++++++++++++++++++ .../browser/bookmarks/bookmark_html_writer.cc | 14 +++++- - .../bookmark_merged_surface_service.cc | 2 + .../bookmarks/bookmark_parent_folder.cc | 1 + .../permanent_folder_ordering_tracker.cc | 2 + .../dialogs/DownloadLocationCustomView.java | 4 +- @@ -30,7 +29,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 + - 26 files changed, 243 insertions(+), 14 deletions(-) + 25 files changed, 241 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 @@ -385,18 +384,6 @@ diff --git a/chrome/browser/bookmarks/bookmark_html_writer.cc b/chrome/browser/b if (model->account_bookmark_bar_node()) { CHECK(model->account_other_node()); -diff --git a/chrome/browser/bookmarks/bookmark_merged_surface_service.cc b/chrome/browser/bookmarks/bookmark_merged_surface_service.cc ---- a/chrome/browser/bookmarks/bookmark_merged_surface_service.cc -+++ b/chrome/browser/bookmarks/bookmark_merged_surface_service.cc -@@ -108,6 +108,8 @@ BookmarkMergedSurfaceService::BookmarkMergedSurfaceService( - BookmarkMergedSurfaceService::~BookmarkMergedSurfaceService() { - for (auto& observer : observers_) { - observer.BookmarkMergedSurfaceServiceBeingDeleted(); -+ case BookmarkNode::Type::TABS_COLLECTION: -+ NOTREACHED(); - } - } - diff --git a/chrome/browser/bookmarks/bookmark_parent_folder.cc b/chrome/browser/bookmarks/bookmark_parent_folder.cc --- a/chrome/browser/bookmarks/bookmark_parent_folder.cc +++ b/chrome/browser/bookmarks/bookmark_parent_folder.cc diff --git a/build/patches/Add-search-engine.patch b/build/patches/Add-search-engine.patch index 9ebb08cf..c3684987 100644 --- a/build/patches/Add-search-engine.patch +++ b/build/patches/Add-search-engine.patch @@ -15,13 +15,13 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../cromite/cromite_prepopulated_engines.json | 37 ++++++++++++++++++ .../search_engine_choice_utils.cc | 5 +-- .../search_engines/search_engine_type.h | 5 +++ - .../template_url_prepopulate_data.cc | 5 ++- + .../template_url_prepopulate_data.cc | 15 ++++++- .../template_url_prepopulate_data.h | 7 ---- tools/json_to_struct/json_to_struct.gni | 9 +++++ tools/json_to_struct/json_to_struct.py | 26 ++++++++---- tools/json_to_struct/struct_generator.py | 10 +++-- tools/variations/fieldtrial_to_struct.py | 4 +- - 13 files changed, 99 insertions(+), 25 deletions(-) + 13 files changed, 108 insertions(+), 26 deletions(-) create mode 100644 components/resources/default_100_percent/search_engine_choice/default_favicon.png create mode 100644 components/search_engines/cromite/BUILD.gn create mode 100644 components/search_engines/cromite/cromite_prepopulated_engines.json @@ -197,16 +197,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon namespace TemplateURLPrepopulateData { // Helpers -------------------------------------------------------------------- -@@ -53,6 +55,8 @@ const RegionalSettings& GetRegionalSettings(CountryId country_id) { - iter = kRegionalSettings.find(CountryId()); - } - -+ t_url.push_back({SearchEngineTier::kTopEngines, &googleen}); -+ t_url.push_back({SearchEngineTier::kTopEngines, &duckduckgo_light}); - return *iter->second; - } - -@@ -85,7 +89,6 @@ GetPrepopulatedEnginesForEeaRegionCountries(CountryId country_id, +@@ -85,11 +87,10 @@ GetPrepopulatedEnginesForEeaRegionCountries(CountryId country_id, generator.seed(profile_seed); std::shuffle(t_urls.begin(), t_urls.end(), generator); @@ -214,6 +205,28 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon return t_urls; } +-std::vector> GetPrepopulatedTemplateURLData( ++std::vector> GetPrepopulatedTemplateURLDataChromium( + CountryId country_id, + PrefService& prefs) { + if (regional_capabilities::HasSearchEngineCountryListOverride()) { +@@ -115,6 +116,16 @@ std::vector> GetPrepopulatedTemplateURLData( + &PrepopulatedEngineToTemplateURLData); + } + ++std::vector> GetPrepopulatedTemplateURLData( ++ CountryId country_id, ++ PrefService& prefs) { ++ std::vector> t_urls = ++ GetPrepopulatedTemplateURLDataChromium(country_id, prefs); ++ t_urls.push_back(TemplateURLDataFromPrepopulatedEngine(googleen)); ++ t_urls.push_back(TemplateURLDataFromPrepopulatedEngine(duckduckgo_light)); ++ return t_urls; ++} ++ + // These values are persisted to logs. Entries should not be renumbered and + // numeric values should never be reused. + enum class SearchProviderOverrideStatus { diff --git a/components/search_engines/template_url_prepopulate_data.h b/components/search_engines/template_url_prepopulate_data.h --- a/components/search_engines/template_url_prepopulate_data.h +++ b/components/search_engines/template_url_prepopulate_data.h @@ -245,8 +258,8 @@ diff --git a/tools/json_to_struct/json_to_struct.gni b/tools/json_to_struct/json + action(action_name) { visibility = [ ":$source_set_name" ] - script = "//tools/json_to_struct/json_to_struct.py" -@@ -61,6 +66,10 @@ template("json_to_struct") { + script = "//build/gn_run_binary.py" +@@ -63,6 +68,10 @@ template("json_to_struct") { "--namespace=" + invoker.namespace, "--schema=" + rebase_path(invoker.schema_file, root_build_dir), ] 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 15a6fdec..4edcf91b 100644 --- a/build/patches/Add-setting-to-clear-data-on-exit.patch +++ b/build/patches/Add-setting-to-clear-data-on-exit.patch @@ -33,14 +33,14 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../core/clear_browsing_data_tab.h | 3 +- components/browsing_data/core/pref_names.cc | 17 ++++ components/browsing_data/core/pref_names.h | 10 +++ - components/favicon/core/favicon_database.cc | 12 +++ + components/favicon/core/favicon_database.cc | 9 +++ components/favicon/core/favicon_database.h | 2 + .../search_engines/template_url_service.cc | 1 + content/browser/btm/btm_service_impl.cc | 2 +- content/browser/storage_partition_impl.cc | 1 + .../public/browser/browsing_data_remover.h | 7 +- .../Add-setting-to-clear-data-on-exit.inc | 8 ++ - 36 files changed, 409 insertions(+), 33 deletions(-) + 36 files changed, 406 insertions(+), 33 deletions(-) create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragmentAtStart.java create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-setting-to-clear-data-on-exit.grdp create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Add-setting-to-clear-data-on-exit.inc @@ -938,13 +938,10 @@ diff --git a/components/favicon/core/favicon_database.cc b/components/favicon/co // Description of database tables: // // icon_mapping -@@ -508,6 +512,14 @@ bool FaviconDatabase::SetFaviconBitmapLastUpdateTime(FaviconBitmapID bitmap_id, +@@ -508,6 +512,11 @@ bool FaviconDatabase::SetFaviconBitmapLastUpdateTime(FaviconBitmapID bitmap_id, bool FaviconDatabase::SetFaviconsOutOfDateBetween(base::Time begin, base::Time end) { -+ LOG(INFO) << "---FaviconDatabase::SetFaviconsOutOfDateBetween" -+ << " begin=" << begin << " " << begin.is_null() -+ << " end=" << end << " " << end.is_null(); + if (begin.is_null() && base::FeatureList::IsEnabled(kClearFaviconsData)) { + std::ignore = db_.Execute("DELETE FROM favicon_bitmaps"); + std::ignore = db_.Execute("DELETE FROM favicons"); diff --git a/build/patches/Ask-for-restart-on-connection-change.patch b/build/patches/Ask-for-restart-on-connection-change.patch index f7f9f4bf..532aba56 100644 --- a/build/patches/Ask-for-restart-on-connection-change.patch +++ b/build/patches/Ask-for-restart-on-connection-change.patch @@ -421,8 +421,8 @@ diff --git a/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chro + @Override + public void setPagesFrozen(boolean frozen) { -+ for (int i = 0; i < mSelectors.size(); i++) { -+ TabModelSelector selector = mSelectors.get(i); ++ for (int i : mWindowIdToSelectors.keySet()) { ++ TabModelSelector selector = mWindowIdToSelectors.get(i); + if (selector != null) { + selector.setPagesFrozen(frozen); + } diff --git a/build/patches/Chrome-web-store-protection.patch b/build/patches/Chrome-web-store-protection.patch index 980c98e0..a572be7d 100644 --- a/build/patches/Chrome-web-store-protection.patch +++ b/build/patches/Chrome-web-store-protection.patch @@ -544,7 +544,7 @@ diff --git a/chrome/browser/resources/extensions/manager.ts b/chrome/browser/res accessor inDevMode: boolean = loadTimeData.getBoolean('inDevMode'); accessor isMv2DeprecationNoticeDismissed: boolean = loadTimeData.getBoolean('MV2DeprecationNoticeDismissed'); -+ isExtUpdateEnabled: boolean = ++ accessor isExtUpdateEnabled: boolean = + loadTimeData.getBoolean('isExtUpdateEnabled'); accessor showActivityLog: boolean = loadTimeData.getBoolean('showActivityLog'); @@ -648,8 +648,8 @@ diff --git a/chrome/browser/resources/extensions/toolbar.ts b/chrome/browser/res accessor extensions: chrome.developerPrivate.ExtensionInfo[] = []; accessor delegate: ToolbarDelegate = new DummyToolbarDelegate(); accessor inDevMode: boolean = false; -+ isExtUpdateEnabled: boolean = false; -+ shouldShowRelaunchDialog: boolean = false; ++ accessor isExtUpdateEnabled: boolean = false; ++ accessor shouldShowRelaunchDialog: boolean = false; accessor devModeControlledByPolicy: boolean = false; accessor isChildAccount: boolean = false; diff --git a/build/patches/Content-settings-infrastructure.patch b/build/patches/Content-settings-infrastructure.patch index 2968d8fc..6e3ef83d 100644 --- a/build/patches/Content-settings-infrastructure.patch +++ b/build/patches/Content-settings-infrastructure.patch @@ -43,7 +43,7 @@ Require: bromite-build-utils.patch .../BromiteCustomContentSetting.java | 155 +++++++ .../BromiteCustomContentSettingImpl.java | 412 ++++++++++++++++++ ...tomTriStateSiteSettingsPreferenceImpl.java | 24 + - .../ContentSettingsResources.java | 16 +- + .../ContentSettingsResources.java | 38 +- .../site_settings/SingleCategorySettings.java | 54 ++- .../site_settings/SingleWebsiteSettings.java | 58 ++- .../site_settings/SiteSettings.java | 33 +- @@ -84,7 +84,7 @@ Require: bromite-build-utils.patch .../platform/web_content_settings_client.h | 13 + .../execution_context/execution_context.cc | 16 + .../execution_context/execution_context.h | 5 + - 73 files changed, 1942 insertions(+), 102 deletions(-) + 73 files changed, 1964 insertions(+), 102 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 @@ -175,7 +175,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch + static getSettingTemplate(template: HTMLTemplateElement, + name: string) : SettingsCategoryDefaultRadioGroupElement | undefined { + let value : SettingsCategoryDefaultRadioGroupElement | undefined = undefined; -+ let page : any = template.content!.querySelector("settings-animated-pages"); ++ let page : any = template.content.querySelector("settings-animated-pages"); + + page.querySelectorAll("template")!.forEach( + (subTemplate: HTMLTemplateElement) => { @@ -2192,16 +2192,38 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c private final int mIcon; private final int mIconBlocked; private final int mTitle; -@@ -54,7 +54,7 @@ public class ContentSettingsResources { +@@ -54,7 +54,29 @@ public class ContentSettingsResources { private int mEnabledDescriptionText; private int mDisabledDescriptionText; - ResourceItem( ++ public ResourceItem( ++ int icon, ++ int title, ++ @ContentSettingValues @Nullable Integer defaultEnabledValue, ++ @ContentSettingValues @Nullable Integer defaultDisabledValue, ++ int enabledSummary, ++ int disabledSummary, ++ int summaryOverrideForScreenReader) { ++ mIcon = icon; ++ mIconBlocked = 0; ++ mTitle = title; ++ mDefaultEnabledValue = defaultEnabledValue; ++ mDefaultDisabledValue = defaultDisabledValue; ++ mEnabledSummary = enabledSummary; ++ mDisabledSummary = disabledSummary; ++ mSummaryOverrideForScreenReader = summaryOverrideForScreenReader; ++ mEnabledPrimaryText = 0; ++ mDisabledPrimaryText = 0; ++ mEnabledDescriptionText = 0; ++ mDisabledDescriptionText = 0; ++ } ++ + public ResourceItem( int icon, int title, @ContentSettingValues @Nullable Integer defaultEnabledValue, -@@ -641,6 +641,8 @@ public class ContentSettingsResources { +@@ -641,6 +663,8 @@ public class ContentSettingsResources { R.string.website_settings_vr_ask, R.string.website_settings_vr_block); } @@ -2210,7 +2232,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c assert false; // NOTREACHED return assumeNonNull(null); } -@@ -799,6 +801,14 @@ public class ContentSettingsResources { +@@ -799,6 +823,14 @@ public class ContentSettingsResources { return getResourceItem(contentType).getDefaultDisabledValue(); } @@ -2225,7 +2247,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c /** * Returns the string resource id for a given ContentSetting to show with a permission category. * -@@ -973,6 +983,8 @@ public class ContentSettingsResources { +@@ -973,6 +1005,8 @@ public class ContentSettingsResources { */ public static int @Nullable [] getTriStateSettingDescriptionIDs( int contentType, boolean isPermissionSiteSettingsRadioButtonFeatureEnabled) { diff --git a/build/patches/Cromite-Branding--improve-settings-ui.patch b/build/patches/Cromite-Branding--improve-settings-ui.patch index de3ea353..651db391 100644 --- a/build/patches/Cromite-Branding--improve-settings-ui.patch +++ b/build/patches/Cromite-Branding--improve-settings-ui.patch @@ -8,10 +8,10 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- chrome/android/chrome_java_resources.gni | 2 +- .../android/java/res/xml/main_preferences.xml | 4 +- - .../res/xml/privacy_preferences_cromite.xml | 197 ++++++++++++++++++ - .../privacy/settings/PrivacySettings.java | 4 +- + .../res/xml/privacy_preferences_cromite.xml | 192 ++++++++++++++++++ + .../privacy/settings/PrivacySettings.java | 12 +- .../Cromite-settings-ui.grdp | 15 ++ - 5 files changed, 217 insertions(+), 5 deletions(-) + 5 files changed, 217 insertions(+), 8 deletions(-) create mode 100644 chrome/android/java/res/xml/privacy_preferences_cromite.xml create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Cromite-settings-ui.grdp @@ -52,7 +52,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences_cromite.xml b/chrom new file mode 100644 --- /dev/null +++ b/chrome/android/java/res/xml/privacy_preferences_cromite.xml -@@ -0,0 +1,197 @@ +@@ -0,0 +1,192 @@ + + HasSwitch( + switches::kDisableComponentUpdate); + } diff --git a/chrome/browser/first_party_sets/first_party_sets_navigation_throttle.cc b/chrome/browser/first_party_sets/first_party_sets_navigation_throttle.cc --- a/chrome/browser/first_party_sets/first_party_sets_navigation_throttle.cc +++ b/chrome/browser/first_party_sets/first_party_sets_navigation_throttle.cc @@ -116,6 +128,18 @@ diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_settings_delegate.cc auto* identity_manager = IdentityManagerFactory::GetForProfile(profile_); if (!identity_manager || +diff --git a/chrome/browser/resources/settings/privacy_page/cookies_page.ts b/chrome/browser/resources/settings/privacy_page/cookies_page.ts +--- a/chrome/browser/resources/settings/privacy_page/cookies_page.ts ++++ b/chrome/browser/resources/settings/privacy_page/cookies_page.ts +@@ -272,7 +272,7 @@ export class SettingsCookiesPageElement extends SettingsCookiesPageElementBase { + } + + private relatedWebsiteSetsToggleDisabled_() { +- return this.getPref('profile.cookie_controls_mode').value !== ++ return ((true)) || this.getPref('profile.cookie_controls_mode').value !== + CookieControlsMode.BLOCK_THIRD_PARTY; + } + diff --git a/chrome/browser/ui/privacy_sandbox/privacy_sandbox_prompt.cc b/chrome/browser/ui/privacy_sandbox/privacy_sandbox_prompt.cc --- a/chrome/browser/ui/privacy_sandbox/privacy_sandbox_prompt.cc +++ b/chrome/browser/ui/privacy_sandbox/privacy_sandbox_prompt.cc @@ -126,6 +150,27 @@ diff --git a/chrome/browser/ui/privacy_sandbox/privacy_sandbox_prompt.cc b/chrom + if ((true)) return; ShowPrivacySandboxDialog(browser, prompt_type); } +diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/RwsCookieSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/RwsCookieSettings.java +--- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/RwsCookieSettings.java ++++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/RwsCookieSettings.java +@@ -135,7 +135,7 @@ public class RwsCookieSettings extends BaseSiteSettingsFragment + mAllowRwsPreference.setChecked( + getSiteSettingsDelegate().isRelatedWebsiteSetsDataAccessEnabled()); + +- if (!isBlockThirdPartyCookieSelected()) { ++ if (((true)) || !isBlockThirdPartyCookieSelected()) { + mAllowRwsPreference.setEnabled(false); + } + mAllowRwsPreference.setOnPreferenceChangeListener(this); +@@ -151,7 +151,7 @@ public class RwsCookieSettings extends BaseSiteSettingsFragment + public boolean onPreferenceChange(Preference preference, Object newValue) { + String key = preference.getKey(); + if (ALLOW_RWS_COOKIE_PREFERENCE.equals(key)) { +- getSiteSettingsDelegate().setRelatedWebsiteSetsDataAccessEnabled((boolean) newValue); ++ getSiteSettingsDelegate().setRelatedWebsiteSetsDataAccessEnabled((boolean) false); + } else { + assert false : "Should not be reached"; + } diff --git a/components/history/core/browser/history_backend.cc b/components/history/core/browser/history_backend.cc --- a/components/history/core/browser/history_backend.cc +++ b/components/history/core/browser/history_backend.cc @@ -164,14 +209,13 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_attestations/privacy_san diff --git a/components/privacy_sandbox/privacy_sandbox_features.cc b/components/privacy_sandbox/privacy_sandbox_features.cc --- a/components/privacy_sandbox/privacy_sandbox_features.cc +++ b/components/privacy_sandbox/privacy_sandbox_features.cc -@@ -288,4 +288,8 @@ BASE_FEATURE(kPrivacySandboxMigratePrefsToSchemaV2, +@@ -288,4 +288,7 @@ BASE_FEATURE(kPrivacySandboxMigratePrefsToSchemaV2, BASE_FEATURE(kPrivacySandboxFirstTimeNoticeV2, "PrivacySandboxFirstTimeNoticeV2", base::FEATURE_DISABLED_BY_DEFAULT); +SET_CROMITE_FEATURE_DISABLED(kPrivacySandboxSettings4); +SET_CROMITE_FEATURE_ENABLED(kDisablePrivacySandboxPrompts); +SET_CROMITE_FEATURE_DISABLED(kEnforcePrivacySandboxAttestations); -+SET_CROMITE_FEATURE_DISABLED(kPrivacySandboxFirstPartySetsUI); } // namespace privacy_sandbox diff --git a/components/privacy_sandbox/privacy_sandbox_prefs.cc b/components/privacy_sandbox/privacy_sandbox_prefs.cc --- a/components/privacy_sandbox/privacy_sandbox_prefs.cc @@ -318,6 +362,18 @@ diff --git a/content/browser/shared_storage/shared_storage_document_service_impl // `CreateWorklet()` cannot differentiate between calls from addModule() and // createWorklet(). Hence, we skip the mojom validation for opaque origin // context for addModule(). +diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc +--- a/content/public/browser/content_browser_client.cc ++++ b/content/public/browser/content_browser_client.cc +@@ -1677,7 +1677,7 @@ bool ContentBrowserClient::ShouldPreconnectNavigation( + } + + bool ContentBrowserClient::IsFirstPartySetsEnabled() { +- return true; ++ return false; + } + + bool ContentBrowserClient::WillProvidePublicFirstPartySets() { diff --git a/cromite_flags/content/common/features_cc/Disable-privacy-sandbox.inc b/cromite_flags/content/common/features_cc/Disable-privacy-sandbox.inc new file mode 100644 --- /dev/null diff --git a/build/patches/Disable-safety-check.patch b/build/patches/Disable-safety-check.patch index c85c1ec5..ae1c83dc 100644 --- a/build/patches/Disable-safety-check.patch +++ b/build/patches/Disable-safety-check.patch @@ -4,18 +4,19 @@ Subject: Disable safety check License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - chrome/android/BUILD.gn | 5 --- + chrome/android/BUILD.gn | 5 -- chrome/android/chrome_java_sources.gni | 1 - .../android/java/res/xml/main_preferences.xml | 3 +- - .../settings/FragmentDependencyProvider.java | 32 ------------------- + .../PasswordCheckupLauncher.java | 57 +------------------ + .../settings/FragmentDependencyProvider.java | 32 ----------- .../chrome/browser/settings/MainSettings.java | 2 +- - .../settings/SettingsNavigationImpl.java | 13 ++------ + .../settings/SettingsNavigationImpl.java | 13 +---- chrome/browser/BUILD.gn | 1 - - .../suggestions/action/OmniboxPedal.java | 3 -- + .../suggestions/action/OmniboxPedal.java | 3 - chrome/browser/ui/tab_helpers.cc | 2 +- .../site_settings/SiteSettings.java | 2 +- .../Disable-safety-check.inc | 1 + - 11 files changed, 8 insertions(+), 57 deletions(-) + 12 files changed, 9 insertions(+), 113 deletions(-) create mode 100644 cromite_flags/chrome/common/chrome_features_cc/Disable-safety-check.inc diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn @@ -29,7 +30,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//chrome/browser/safety_hub/android:java", "//chrome/browser/screenshot_monitor:java", "//chrome/browser/search_engines/android:java", -@@ -1090,8 +1089,6 @@ if (current_toolchain == default_toolchain) { +@@ -1092,8 +1091,6 @@ if (current_toolchain == default_toolchain) { "//chrome/browser/recent_tabs:junit", "//chrome/browser/recent_tabs/internal:junit", "//chrome/browser/safe_browsing/android:junit", @@ -38,7 +39,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//chrome/browser/search_engines/android:junit", "//chrome/browser/search_resumption:junit", "//chrome/browser/signin/services/android:junit", -@@ -1366,8 +1363,6 @@ if (current_toolchain == default_toolchain) { +@@ -1368,8 +1365,6 @@ if (current_toolchain == default_toolchain) { "//chrome/browser/quick_delete:javatests", "//chrome/browser/renderer_host/android:javatests", "//chrome/browser/safe_browsing/android:javatests", @@ -71,6 +72,103 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j getModalDialogManagerSupplier( diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java diff --git a/build/patches/Enable-network-isolation-features.patch b/build/patches/Enable-network-isolation-features.patch index 5433a3d7..8cc29450 100644 --- a/build/patches/Enable-network-isolation-features.patch +++ b/build/patches/Enable-network-isolation-features.patch @@ -68,7 +68,7 @@ diff --git a/net/http/http_cache.cc b/net/http/http_cache.cc if (is_initiator_cross_site) { - is_cross_site_main_frame_navigation_prefix = - kCrossSiteMainFrameNavigationPrefix; -+ DLOG(INFO) << "---initiator_site cs=" << base::StrCat({"ni_", initiator_site.Serialize(), " "}); ++ // LOG(INFO) << "---initiator_site cs=" << base::StrCat({"ni_", initiator->Serialize(), " "}); + return ""; } } @@ -81,7 +81,7 @@ diff --git a/net/http/http_cache.cc b/net/http/http_cache.cc + auto key = base::StringPrintf("%c/%" PRId64 "/%s%s", credential_key, upload_data_identifier, isolation_key.c_str(), HttpUtil::SpecForRequest(url).c_str()); -+ DLOG(INFO) << "---key=" << key; ++ // LOG(INFO) << "---key=" << key; + return key; } diff --git a/build/patches/Enable-search-engine-settings-desktop-ui.patch b/build/patches/Enable-search-engine-settings-desktop-ui.patch index fcd63f9a..8fbb5330 100644 --- a/build/patches/Enable-search-engine-settings-desktop-ui.patch +++ b/build/patches/Enable-search-engine-settings-desktop-ui.patch @@ -16,7 +16,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../chrome_browser_interface_binders_webui.cc | 21 ++ chrome/browser/resources/BUILD.gn | 6 + chrome/browser/resources/settings/BUILD.gn | 2 +- - .../resources/settings/page_visibility.ts | 40 ++- + .../resources/settings/page_visibility.ts | 36 ++- .../search_engine_edit_dialog.html | 6 + .../search_engine_edit_dialog.ts | 6 +- .../search_engines_browser_proxy.ts | 8 +- @@ -77,7 +77,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html ui/webui/resources/images/BUILD.gn | 2 +- ui/webui/resources/js/BUILD.gn | 2 +- ui/webui/resources/js/load_time_data.ts | 17 +- - 70 files changed, 1156 insertions(+), 69 deletions(-) + 70 files changed, 1152 insertions(+), 69 deletions(-) create mode 100644 chrome/app/settings_strings_android.grdp create mode 100644 chrome/browser/search_engines/android/java/res/layout/search_engine_layout.xml create mode 100644 chrome/browser/ui/webui/settings/settings_localized_strings_provider_android.cc @@ -524,18 +524,14 @@ diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resourc diff --git a/chrome/browser/resources/settings/page_visibility.ts b/chrome/browser/resources/settings/page_visibility.ts --- a/chrome/browser/resources/settings/page_visibility.ts +++ b/chrome/browser/resources/settings/page_visibility.ts -@@ -42,8 +42,46 @@ export interface PrivacyPageVisibility { +@@ -42,8 +42,42 @@ export interface PrivacyPageVisibility { searchPrediction: boolean; } +const isAndroid = (loadTimeData.getString('chromeAndroid') !== ""); +if (isAndroid) { + // @ts-expect-error -+ chrome.autofillPrivate = { -+ isUserEligibleForAutofillImprovements(): Promise { -+ return Promise.resolve(false); -+ } -+ }; ++ chrome.autofillPrivate = {}; + + // @ts-expect-error + chrome.languageSettingsPrivate = {}; diff --git a/build/patches/Enable-share-intent.patch b/build/patches/Enable-share-intent.patch index 8ba518cb..176de0e2 100644 --- a/build/patches/Enable-share-intent.patch +++ b/build/patches/Enable-share-intent.patch @@ -140,7 +140,7 @@ new file mode 100644 + android:layout_width ="match_parent" + app:cornerRadiusTopEnd="14dp" + app:cornerRadiusTopStart="14dp" -+ app:roundedfillColor="@color/sheet_bg_color_baseline" ++ app:roundedfillColor="@macro/sheet_container_bg_color" + app:srcCompat="@drawable/ic_launcher"/> + + ++ android:background="@macro/sheet_container_bg_color"> + + getBrowserControlsManager() ++ /*browserControlsManagerSupplier*/ () -> getBrowserControlsManager()); addSceneOverlay(mTabStripLayoutHelperManager); addObserver(mTabStripLayoutHelperManager.getTabSwitcherObserver()); mDesktopWindowStateManager = desktopWindowStateManager; diff --git a/build/patches/Partition-Blink-memory-cache.patch b/build/patches/Partition-Blink-memory-cache.patch index 0c39fbad..58ee8d3d 100644 --- a/build/patches/Partition-Blink-memory-cache.patch +++ b/build/patches/Partition-Blink-memory-cache.patch @@ -17,14 +17,12 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../core/html/parser/html_srcset_parser.cc | 3 +- .../core/inspector/inspector_network_agent.cc | 2 +- .../core/inspector/inspector_page_agent.cc | 2 +- - .../core/loader/frame_fetch_context.cc | 2 + .../renderer/core/loader/image_loader.cc | 3 +- - .../core/loader/worker_fetch_context.cc | 3 + .../platform/loader/fetch/memory_cache.cc | 8 +-- .../platform/loader/fetch/memory_cache.h | 5 +- .../platform/loader/fetch/resource_fetcher.cc | 57 ++++++++++++++++--- .../platform/loader/fetch/resource_fetcher.h | 7 ++- - 10 files changed, 69 insertions(+), 23 deletions(-) + 8 files changed, 64 insertions(+), 23 deletions(-) diff --git a/third_party/blink/renderer/core/html/parser/html_srcset_parser.cc b/third_party/blink/renderer/core/html/parser/html_srcset_parser.cc --- a/third_party/blink/renderer/core/html/parser/html_srcset_parser.cc @@ -63,18 +61,6 @@ diff --git a/third_party/blink/renderer/core/inspector/inspector_page_agent.cc b } if (!cached_resource) { cached_resource = loader->ResourceForURL(url); -diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/third_party/blink/renderer/core/loader/frame_fetch_context.cc ---- a/third_party/blink/renderer/core/loader/frame_fetch_context.cc -+++ b/third_party/blink/renderer/core/loader/frame_fetch_context.cc -@@ -866,6 +866,8 @@ void FrameFetchContext::PopulateResourceRequestBeforeCacheAccess( - if (document_loader_->ForceFetchCacheMode()) { - request.SetCacheMode(*document_loader_->ForceFetchCacheMode()); - } -+ if (!request.TopFrameOrigin()) -+ request.SetTopFrameOrigin(GetTopFrameOrigin()); - // ResourceFetcher::DidLoadResourceFromMemoryCache() may call out in such a - // way that the AttributionSupport is needed. - if (const AttributionSrcLoader* attribution_src_loader = diff --git a/third_party/blink/renderer/core/loader/image_loader.cc b/third_party/blink/renderer/core/loader/image_loader.cc --- a/third_party/blink/renderer/core/loader/image_loader.cc +++ b/third_party/blink/renderer/core/loader/image_loader.cc @@ -88,19 +74,6 @@ diff --git a/third_party/blink/renderer/core/loader/image_loader.cc b/third_part if (resource && !resource->ErrorOccurred() && CanReuseFromListOfAvailableImages( -diff --git a/third_party/blink/renderer/core/loader/worker_fetch_context.cc b/third_party/blink/renderer/core/loader/worker_fetch_context.cc ---- a/third_party/blink/renderer/core/loader/worker_fetch_context.cc -+++ b/third_party/blink/renderer/core/loader/worker_fetch_context.cc -@@ -260,6 +260,9 @@ void WorkerFetchContext::AddResourceTiming( - - void WorkerFetchContext::ModifyRequestForMixedContentUpgrade( - ResourceRequest& request) { -+ if (!request.TopFrameOrigin()) -+ request.SetTopFrameOrigin(GetTopFrameOrigin()); -+ - MixedContentChecker::UpgradeInsecureRequest( - request, &GetResourceFetcherProperties().GetFetchClientSettingsObject(), - global_scope_, mojom::blink::RequestContextFrameType::kNone, diff --git a/third_party/blink/renderer/platform/loader/fetch/memory_cache.cc b/third_party/blink/renderer/platform/loader/fetch/memory_cache.cc --- a/third_party/blink/renderer/platform/loader/fetch/memory_cache.cc +++ b/third_party/blink/renderer/platform/loader/fetch/memory_cache.cc diff --git a/build/patches/Partition-blobs-by-top-frame-URL.patch b/build/patches/Partition-blobs-by-top-frame-URL.patch index 68a5cdc1..6ba74d16 100644 --- a/build/patches/Partition-blobs-by-top-frame-URL.patch +++ b/build/patches/Partition-blobs-by-top-frame-URL.patch @@ -10,12 +10,12 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../renderer_host/render_frame_host_impl.cc | 2 + .../Partition-blobs-by-top-frame-URL.inc | 1 + - storage/browser/blob/blob_url_store_impl.cc | 71 ++++++++++++++++++- + storage/browser/blob/blob_url_store_impl.cc | 73 ++++++++++++++++++- storage/browser/blob/blob_url_store_impl.h | 13 ++++ storage/browser/blob/features.cc | 1 + - .../public/mojom/blob/blob_url_store.mojom | 8 ++- + .../public/mojom/blob/blob_url_store.mojom | 8 +- .../core/fileapi/public_url_manager.cc | 17 +++++ - 7 files changed, 110 insertions(+), 3 deletions(-) + 7 files changed, 112 insertions(+), 3 deletions(-) create mode 100644 cromite_flags/third_party/blink/common/features_cc/Partition-blobs-by-top-frame-URL.inc diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc @@ -39,7 +39,7 @@ new file mode 100644 diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/blob_url_store_impl.cc --- a/storage/browser/blob/blob_url_store_impl.cc +++ b/storage/browser/blob/blob_url_store_impl.cc -@@ -21,6 +21,16 @@ +@@ -21,6 +21,18 @@ namespace storage { @@ -52,11 +52,13 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/ + BlobUrlRegistry::MappingStatus mapping_status) { + return false; +} ++ ++} + // Self deletes when the last binding to it is closed. class BlobURLTokenImpl : public blink::mojom::BlobURLToken { public: -@@ -93,6 +103,30 @@ BlobURLStoreImpl::~BlobURLStoreImpl() { +@@ -93,6 +105,30 @@ BlobURLStoreImpl::~BlobURLStoreImpl() { } } @@ -87,7 +89,7 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/ void BlobURLStoreImpl::Register( mojo::PendingRemote blob, const GURL& url, -@@ -107,6 +141,14 @@ void BlobURLStoreImpl::Register( +@@ -107,6 +143,14 @@ void BlobURLStoreImpl::Register( return; } @@ -102,7 +104,7 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/ if (registry_) registry_->AddUrlMapping(url, std::move(blob), storage_key_, renderer_origin_, render_process_host_id_, -@@ -127,21 +169,32 @@ void BlobURLStoreImpl::Revoke(const GURL& url) { +@@ -127,21 +171,32 @@ void BlobURLStoreImpl::Revoke(const GURL& url) { void BlobURLStoreImpl::ResolveAsURLLoaderFactory( const GURL& url, mojo::PendingReceiver receiver, @@ -136,7 +138,7 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/ if (registry_->IsUrlMapped(BlobUrlUtils::ClearUrlFragment(url), storage_key_) == BlobUrlRegistry::MappingStatus::kNotMappedCrossPartitionSameOrigin) { -@@ -150,6 +203,7 @@ void BlobURLStoreImpl::FinishResolveAsURLLoaderFactory( +@@ -150,6 +205,7 @@ void BlobURLStoreImpl::FinishResolveAsURLLoaderFactory( features::kBlockCrossPartitionBlobUrlFetching) && !partitioning_disabled_by_policy_; if (feature_and_policy_check && !has_storage_access_handle) { @@ -144,7 +146,7 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/ partitioning_blob_url_closure_.Run(url, blink::mojom::PartitioningBlobURLInfo:: kBlockedCrossPartitionFetching); -@@ -162,6 +216,12 @@ void BlobURLStoreImpl::FinishResolveAsURLLoaderFactory( +@@ -162,6 +218,12 @@ void BlobURLStoreImpl::FinishResolveAsURLLoaderFactory( partitioning_blob_url_closure_.Run(url, std::nullopt); } @@ -157,16 +159,15 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/ BlobURLLoaderFactory::Create(registry_->GetBlobFromUrl(url), url, std::move(receiver)); // When a fragment URL is present, registry_->GetUnsafeAgentClusterID(url) and -@@ -175,6 +235,8 @@ void BlobURLStoreImpl::FinishResolveAsURLLoaderFactory( - void BlobURLStoreImpl::ResolveAsBlobURLToken( +@@ -176,12 +238,15 @@ void BlobURLStoreImpl::ResolveAsBlobURLToken( const GURL& url, mojo::PendingReceiver token, + bool is_top_level_navigation, + const base::UnguessableToken& unsafe_agent_cluster_id, + const std::optional& unsafe_top_level_site, - bool is_top_level_navigation, ResolveAsBlobURLTokenCallback callback) { if (!registry_) { -@@ -182,6 +244,7 @@ void BlobURLStoreImpl::ResolveAsBlobURLToken( + std::move(callback).Run(std::nullopt); return; } FinishResolveAsBlobURLToken(url, std::move(token), is_top_level_navigation, @@ -174,7 +175,7 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/ std::move(callback), storage_access_check_callback_.Run()); } -@@ -190,8 +253,14 @@ void BlobURLStoreImpl::FinishResolveAsBlobURLToken( +@@ -190,8 +255,14 @@ void BlobURLStoreImpl::FinishResolveAsBlobURLToken( const GURL& url, mojo::PendingReceiver token, bool is_top_level_navigation, 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 1489f02a..de8aeb18 100644 --- a/build/patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch +++ b/build/patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch @@ -23,7 +23,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../net/system_network_context_manager.cc | 4 + chrome/browser/renderer_preferences_util.cc | 1 + .../settings/privacy_page/privacy_page.html | 10 +++ - .../settings/privacy_page/privacy_page.ts | 17 ++++ + .../settings/privacy_page/privacy_page.ts | 18 ++++ .../strings/android_chrome_strings.grd | 24 +++++ chrome/browser/ui/prefs/pref_watcher.cc | 2 + chrome/browser/ui/prefs/prefs_tab_helper.cc | 2 + @@ -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, 372 insertions(+), 1 deletion(-) + 23 files changed, 373 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 @@ -464,7 +464,15 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch isGuest_: { type: Boolean, value() { -@@ -518,6 +529,12 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { +@@ -407,6 +418,7 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { + private isPrivacySandboxRestrictedNoticeEnabled_: boolean; + private enableAutomaticFullscreenContentSetting_: boolean; + private enablePermissionSiteSettingsRadioButton_: boolean; ++ private referersPolicyOptions_: object[]; + private privateStateTokensEnabled_: boolean; + private autoPictureInPictureEnabled_: boolean; + private capturedSurfaceControlEnabled_: boolean; +@@ -519,6 +531,12 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { Router.getInstance().navigateTo(routes.TRACKING_PROTECTION); } diff --git a/build/patches/Remove-binary-blob-integrations.patch b/build/patches/Remove-binary-blob-integrations.patch index 730bee2a..1b681f20 100644 --- a/build/patches/Remove-binary-blob-integrations.patch +++ b/build/patches/Remove-binary-blob-integrations.patch @@ -27,7 +27,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html ...em_webview_bundle.AndroidManifest.expected | 5 - build/android/gyp/proguard.py | 2 + build/config/android/config.gni | 4 +- - chrome/android/BUILD.gn | 34 +- + chrome/android/BUILD.gn | 32 +- chrome/android/chrome_java_sources.gni | 5 - chrome/android/java/AndroidManifest.xml | 50 -- .../browser/ChromeBackgroundService.java | 10 +- @@ -72,12 +72,12 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../caf/BaseSessionController.java | 112 +-- .../caf/CafBaseMediaRouteProvider.java | 113 +-- .../caf/CafMediaRouteProvider.java | 21 - - .../media_router/caf/CafMessageHandler.java | 104 +-- + .../media_router/caf/CafMessageHandler.java | 106 +-- .../media_router/caf/CastMediaSource.java | 10 +- .../media_router/caf/CastOptionsProvider.java | 21 +- .../caf/CastSessionController.java | 87 --- .../media_router/caf/CastUtils.java | 8 - - .../CafExpandedControllerActivity.java | 37 +- + .../CafExpandedControllerActivity.java | 46 +- .../CafRemotingMediaRouteProvider.java | 4 +- .../remoting/FlingingControllerAdapter.java | 96 --- .../caf/remoting/RemotingMediaSource.java | 8 +- @@ -88,7 +88,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../components/omnibox/OmniboxFeatures.java | 8 - components/signin/public/android/BUILD.gn | 3 - components/webauthn/android/BUILD.gn | 15 +- - .../webauthn/AuthenticatorImpl.java | 81 +- + .../webauthn/AuthenticatorImpl.java | 81 +-- .../webauthn/ConditionalUiState.java | 15 + .../components/webauthn/GmsCoreUtils.java | 28 +- .../webauthn/WebauthnModeProvider.java | 15 - @@ -96,19 +96,19 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../cred_man/CredManMetricsHelper.java | 2 +- .../push_messaging/push_messaging_manager.cc | 2 +- content/public/android/BUILD.gn | 5 - - .../webid/IdentityCredentialsDelegate.java | 79 +- + .../webid/IdentityCredentialsDelegate.java | 87 +-- content/test/BUILD.gn | 4 - device/BUILD.gn | 3 - device/fido/features.cc | 1 + services/BUILD.gn | 9 - services/device/geolocation/BUILD.gn | 4 - services/shape_detection/BUILD.gn | 2 - - third_party/android_deps/BUILD.gn | 701 +----------------- + third_party/android_deps/BUILD.gn | 663 +----------------- .../preconditions/javatests/BUILD.gn | 1 - .../gms/ChromiumPlayServicesAvailability.java | 10 +- third_party/androidx/customizations.gni | 14 +- third_party/cardboard/BUILD.gn | 4 - - 84 files changed, 118 insertions(+), 2202 deletions(-) + 84 files changed, 120 insertions(+), 2179 deletions(-) create mode 100644 components/webauthn/android/java/src/org/chromium/components/webauthn/ConditionalUiState.java diff --git a/android_webview/expectations/system_webview_bundle.AndroidManifest.expected b/android_webview/expectations/system_webview_bundle.AndroidManifest.expected @@ -177,16 +177,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//base:content_uri_utils_java", "//base:service_loader_java", "//base/version_info/android:version_constants_java", -@@ -610,8 +602,6 @@ if (current_toolchain == default_toolchain) { - "//components/feed/core/proto:proto_java_v2", - "//components/feed/core/v2:feedv2_core_java", - "//components/find_in_page/android:java", -- "//components/gcm_driver/android:gcm_driver_java", -- "//components/gcm_driver/instance_id/android:instance_id_driver_java", - "//components/image_fetcher:java", - "//components/infobars/android:infobar_android_enums_java", - "//components/infobars/android:java", -@@ -721,11 +711,20 @@ if (current_toolchain == default_toolchain) { +@@ -721,11 +713,20 @@ if (current_toolchain == default_toolchain) { "//services/shape_detection:shape_detection_java", "//services/shape_detection/public/mojom:mojom_java", "//skia/public/mojom:mojom_java", @@ -209,7 +200,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//third_party/android_deps:protobuf_lite_runtime_java", "//third_party/android_media:android_media_java", "//third_party/android_swipe_refresh:android_swipe_refresh_java", -@@ -1906,7 +1905,6 @@ if (current_toolchain == default_toolchain) { +@@ -1906,7 +1907,6 @@ if (current_toolchain == default_toolchain) { ] deps = [ ":chrome_java", @@ -217,7 +208,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//base:base_java", "//base:base_java_test_support", "//build/android:build_java", -@@ -2010,7 +2008,6 @@ if (current_toolchain == default_toolchain) { +@@ -2010,7 +2010,6 @@ if (current_toolchain == default_toolchain) { # is in a DFM. android_library("base_module_java") { sources = [ @@ -225,7 +216,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "java/src/org/chromium/chrome/app/TrichromeZygotePreload.java", "java/src/org/chromium/chrome/browser/ChromeBackgroundService.java", "java/src/org/chromium/chrome/browser/DeferredStartupHandler.java", -@@ -2027,8 +2024,6 @@ if (current_toolchain == default_toolchain) { +@@ -2027,8 +2026,6 @@ if (current_toolchain == default_toolchain) { "java/src/org/chromium/chrome/browser/base/SplitCompatBackupAgent.java", "java/src/org/chromium/chrome/browser/base/SplitCompatContentProvider.java", "java/src/org/chromium/chrome/browser/base/SplitCompatCustomTabsService.java", @@ -234,7 +225,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "java/src/org/chromium/chrome/browser/base/SplitCompatIntentService.java", "java/src/org/chromium/chrome/browser/base/SplitCompatJobService.java", "java/src/org/chromium/chrome/browser/base/SplitCompatMinidumpUploadJobService.java", -@@ -2054,15 +2049,10 @@ if (current_toolchain == default_toolchain) { +@@ -2054,15 +2051,10 @@ if (current_toolchain == default_toolchain) { "java/src/org/chromium/chrome/browser/photo_picker/DecoderService.java", "java/src/org/chromium/chrome/browser/provider/ChromeBrowserProvider.java", "java/src/org/chromium/chrome/browser/provider/PageContentProvider.java", @@ -250,7 +241,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//base:base_java", "//chrome/browser/autofill/android:third_party_provider_java", "//chrome/browser/download/android:file_provider_java", -@@ -2077,7 +2067,6 @@ if (current_toolchain == default_toolchain) { +@@ -2077,7 +2069,6 @@ if (current_toolchain == default_toolchain) { "//components/media_router/browser/android:cast_options_provider_java", "//components/minidump_uploader:minidump_uploader_java", "//components/module_installer/android:module_installer_java", @@ -258,7 +249,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//third_party/androidx:androidx_annotation_annotation_java", "//third_party/androidx:androidx_collection_collection_java", "//third_party/jni_zero:jni_zero_java", -@@ -2097,7 +2086,6 @@ if (current_toolchain == default_toolchain) { +@@ -2097,7 +2088,6 @@ if (current_toolchain == default_toolchain) { # Deps to pull services into base module. # TODO(crbug.com/40148088): Consider moving these to the chrome module to # reduce base dex size. @@ -2169,10 +2160,11 @@ diff --git a/components/media_router/browser/android/java/src/org/chromium/compo import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; -@@ -336,50 +332,7 @@ public class CafMessageHandler { +@@ -335,51 +331,7 @@ public class CafMessageHandler { + throws JSONException { if (volumeMessage == null) return false; if (!mSessionController.isConnected()) return false; - assumeNonNull(mSessionController.getSession()); +- assumeNonNull(mSessionController.getSession()); - boolean shouldWaitForVolumeChange = false; - try { - if (!volumeMessage.isNull("muted")) { @@ -2221,7 +2213,12 @@ diff --git a/components/media_router/browser/android/java/src/org/chromium/compo } @VisibleForTesting -@@ -678,21 +631,11 @@ public class CafMessageHandler { +@@ -673,26 +625,15 @@ public class CafMessageHandler { + /** @return A message containing the information of the {@link CastSession}. */ + public String buildSessionMessage() { + if (!mSessionController.isConnected()) return "{}"; +- assumeNonNull(mSessionController.getSession()); + try { // "volume" is a part of "receiver" initialized below. JSONObject jsonVolume = new JSONObject(); @@ -2243,7 +2240,7 @@ diff --git a/components/media_router/browser/android/java/src/org/chromium/compo jsonReceiver.put("displayStatus", null); jsonReceiver.put("receiverType", "cast"); -@@ -705,28 +648,12 @@ public class CafMessageHandler { +@@ -705,28 +646,12 @@ public class CafMessageHandler { JSONObject jsonMessage = new JSONObject(); jsonMessage.put("sessionId", mSessionController.getSessionId()); @@ -2272,7 +2269,7 @@ diff --git a/components/media_router/browser/android/java/src/org/chromium/compo return jsonMessage.toString(); } catch (JSONException e) { Log.w(TAG, "Building session message failed", e); -@@ -804,33 +731,6 @@ public class CafMessageHandler { +@@ -804,33 +729,6 @@ public class CafMessageHandler { boolean sendStringCastMessage( String message, String namespace, String clientId, int sequenceNumber) { if (!mSessionController.isConnected()) return false; @@ -2538,7 +2535,28 @@ diff --git a/components/media_router/browser/android/java/src/org/chromium/compo diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafExpandedControllerActivity.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafExpandedControllerActivity.java --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafExpandedControllerActivity.java +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafExpandedControllerActivity.java -@@ -55,43 +55,29 @@ public class CafExpandedControllerActivity extends FragmentActivity +@@ -19,8 +19,6 @@ import android.widget.TextView; + import androidx.fragment.app.FragmentActivity; + import androidx.mediarouter.app.MediaRouteButton; + +-import com.google.android.gms.cast.framework.media.RemoteMediaClient; +- + import org.chromium.build.annotations.NullMarked; + import org.chromium.build.annotations.Nullable; + import org.chromium.components.media_router.R; +@@ -43,55 +41,34 @@ public class CafExpandedControllerActivity extends FragmentActivity + private TextView mTitleView; + private Runnable mUpdateProgressRunnable; + +- private RemoteMediaClient getRemoteMediaClient() { +- RemoteMediaClient ret = +- assumeNonNull(mSessionController.getSession()).getRemoteMediaClient(); +- assert ret != null; +- return ret; +- } +- + /** Handle actions from on-screen media controls. */ + private MediaController.Delegate mControllerDelegate = new MediaController.Delegate() { @Override public void play() { @@ -2585,7 +2603,7 @@ diff --git a/components/media_router/browser/android/java/src/org/chromium/compo } @Override -@@ -99,11 +85,6 @@ public class CafExpandedControllerActivity extends FragmentActivity +@@ -99,11 +76,6 @@ public class CafExpandedControllerActivity extends FragmentActivity long flags = PlaybackStateCompat.ACTION_REWIND | PlaybackStateCompat.ACTION_FAST_FORWARD; @@ -2597,7 +2615,7 @@ diff --git a/components/media_router/browser/android/java/src/org/chromium/compo return flags; } }; -@@ -203,22 +184,10 @@ public class CafExpandedControllerActivity extends FragmentActivity +@@ -203,22 +175,10 @@ public class CafExpandedControllerActivity extends FragmentActivity private void updateUi() { if (!mSessionController.isConnected()) return; @@ -3488,6 +3506,28 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/webid/ } public Promise create(Activity window, String origin, String request) { +@@ -186,7 +109,7 @@ public class IdentityCredentialsDelegate { + @VisibleForTesting + public static DigitalCredential extractDigitalCredentialFromResponseBundle( + int code, Bundle bundle) +- throws JSONException, NullPointerException, GetCredentialException { ++ throws JSONException, NullPointerException { + // Try to read the new format. + var digitalCredential = extractDigitalCredentialFromModernResponse(bundle); + if (digitalCredential != null) { +@@ -195,11 +118,7 @@ public class IdentityCredentialsDelegate { + // TODO(crbug.com/336329411) Handle the case when the intent doesn't contain the modern + // response, but contains the modern exception. + +- // Fallback to the legacy format. +- var response = IntentHelper.extractGetCredentialResponse(code, bundle); +- var token = response.getCredential().getData().getByteArray(BUNDLE_KEY_IDENTITY_TOKEN); +- +- return new DigitalCredential(null, Objects.requireNonNull(token)); ++ throw new NullPointerException(); + } + + /** diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn --- a/content/test/BUILD.gn +++ b/content/test/BUILD.gn @@ -3605,7 +3645,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD. } # The section below is generated by running -@@ -154,221 +145,6 @@ java_prebuilt("com_android_tools_sdk_common_java") { +@@ -154,13 +145,6 @@ java_prebuilt("com_android_tools_sdk_common_java") { visibility = [ "//build/android/unused_resources:*" ] } @@ -3616,45 +3656,13 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD. - enable_bytecode_checks = false -} - --# This is generated, do not edit. Update BuildConfigGenerator.groovy instead. --java_prebuilt("com_squareup_javapoet_java") { -- jar_path = "cipd/libs/com_squareup_javapoet/javapoet-1.13.0.jar" -- output_name = "com_squareup_javapoet" -- enable_bytecode_checks = false --} --if (!limit_android_deps) { -- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. -- java_prebuilt("com_android_support_support_annotations_java") { -- jar_path = "cipd/libs/com_android_support_support_annotations/support-annotations-28.0.0.jar" -- output_name = "com_android_support_support_annotations" -- supports_android = true -- requires_android = true -- enable_bytecode_checks = false -- } -- -- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. -- android_aar_prebuilt( -- "com_google_android_apps_common_testing_accessibility_framework_accessibility_test_framework_java") { -- aar_path = "cipd/libs/com_google_android_apps_common_testing_accessibility_framework_accessibility_test_framework/accessibility-test-framework-4.0.0.aar" -- info_path = "libs/com_google_android_apps_common_testing_accessibility_framework_accessibility_test_framework/com_google_android_accessibility_test_framework.info" -- enable_bytecode_checks = false -- testonly = true -- deps = [ -- ":com_google_errorprone_error_prone_annotations_java", -- ":org_checkerframework_checker_qual_java", -- ":org_jsoup_jsoup_java", -- "//third_party/android_deps:guava_android_java", -- "//third_party/android_deps:material_design_java", -- "//third_party/android_deps:protobuf_lite_runtime_java", -- "//third_party/androidx:androidx_core_core_java", -- "//third_party/androidx:androidx_test_services_storage_java", -- "//third_party/hamcrest:hamcrest_core_java", -- "//third_party/hamcrest:hamcrest_library_java", -- ] -- proguard_configs = -- [ "local_modifications/accessibility_test_framework.pcfg" ] -- } -- + # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. + java_prebuilt("com_squareup_javapoet_java") { + jar_path = "cipd/libs/com_squareup_javapoet/javapoet-1.13.0.jar" +@@ -200,176 +184,6 @@ if (!limit_android_deps) { + [ "local_modifications/accessibility_test_framework.pcfg" ] + } + - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt( @@ -3824,10 +3832,11 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD. - ] - } - } - +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. if (!defined(material_design_target)) { -@@ -417,24 +193,6 @@ if (!limit_android_deps) { + android_aar_prebuilt("com_google_android_material_material_java") { +@@ -417,24 +231,6 @@ if (!limit_android_deps) { } } @@ -3852,7 +3861,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD. # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. android_aar_prebuilt("com_google_ar_impress_java") { aar_path = "cipd/libs/com_google_ar_impress/impress-0.0.2.aar" -@@ -470,93 +228,6 @@ if (!limit_android_deps) { +@@ -470,93 +266,6 @@ if (!limit_android_deps) { } # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. @@ -3946,7 +3955,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD. # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. if (!defined(guava_android_target)) { -@@ -736,20 +407,6 @@ if (!limit_android_deps) { +@@ -736,20 +445,6 @@ if (!limit_android_deps) { ] } @@ -3967,7 +3976,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD. # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. java_prebuilt("org_jsoup_jsoup_java") { jar_path = "cipd/libs/org_jsoup_jsoup/jsoup-1.15.1.jar" -@@ -812,362 +469,6 @@ if (!limit_android_deps) { +@@ -812,362 +507,6 @@ if (!limit_android_deps) { deps = [ ":org_mockito_mockito_core_java" ] } diff --git a/build/patches/Restore-Simplified-NTP-launch.patch b/build/patches/Restore-Simplified-NTP-launch.patch index f5b8bfdd..0d7b1061 100644 --- a/build/patches/Restore-Simplified-NTP-launch.patch +++ b/build/patches/Restore-Simplified-NTP-launch.patch @@ -12,32 +12,34 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../java/res/layout/mv_tiles_layout.xml | 13 +- .../java/res/layout/new_tab_page_layout.xml | 7 + .../new_tab_page_tile_grid_placeholder.xml | 8 +- - .../android/java/res/layout/ntp_shortcuts.xml | 65 ++++++ + .../android/java/res/layout/ntp_shortcuts.xml | 65 ++++ chrome/android/java/res/values/attrs.xml | 4 + chrome/android/java/res/values/dimens.xml | 2 + .../chrome/browser/ChromeTabbedActivity.java | 3 +- .../browser/TabbedModeTabDelegateFactory.java | 9 +- .../feedback/ChromeFeedbackCollector.java | 1 + - .../feedback/SimplifiedNtpFeedbackSource.java | 38 ++++ + .../feedback/SimplifiedNtpFeedbackSource.java | 38 +++ .../identity_disc/IdentityDiscController.java | 5 +- .../native_page/NativePageFactory.java | 19 +- .../NativePageNavigationDelegateImpl.java | 2 +- .../chrome/browser/ntp/NewTabPage.java | 8 +- - .../chrome/browser/ntp/NewTabPageLayout.java | 25 ++- - .../SuggestionsNavigationDelegate.java | 27 ++- + .../chrome/browser/ntp/NewTabPageLayout.java | 29 +- + .../SuggestionsNavigationDelegate.java | 27 +- .../mostvisited/MostVisitedSitesBridge.java | 2 +- - .../tile/MostVisitedTilesCoordinator.java | 7 +- - .../tile/MostVisitedTilesGridLayout.java | 193 ++++++++++++++++++ - .../tile/MostVisitedTilesMediator.java | 9 +- + .../tile/MostVisitedTilesCoordinator.java | 6 +- + .../tile/MostVisitedTilesGridLayout.java | 283 ++++++++++++++++++ + .../tile/MostVisitedTilesMediator.java | 4 +- + .../suggestions/tile/TileRenderer.java | 4 +- + .../suggestions/tile/TilesLinearLayout.java | 2 +- .../engagement/important_sites_util.cc | 2 +- .../flags/android/chrome_feature_list.cc | 1 + .../browser/flags/ChromeFeatureList.java | 3 +- .../client_util/HomeModulesRankingHelper.java | 1 + .../history/core/browser/top_sites_impl.h | 2 +- - .../Restore-Simplified-NTP-launch.inc | 12 ++ + .../Restore-Simplified-NTP-launch.inc | 12 + .../Restore-Simplified-NTP-launch.inc | 5 + .../Restore-Simplified-NTP-launch.inc | 1 + - 31 files changed, 437 insertions(+), 42 deletions(-) + 33 files changed, 528 insertions(+), 45 deletions(-) create mode 100644 chrome/android/java/res/layout/ntp_shortcuts.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/feedback/SimplifiedNtpFeedbackSource.java create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesGridLayout.java @@ -536,6 +538,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL import org.chromium.chrome.browser.lens.LensMetrics; import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher; import org.chromium.chrome.browser.logo.LogoBridge.Logo; +@@ -45,7 +47,7 @@ import org.chromium.chrome.browser.profiles.Profile; + import org.chromium.chrome.browser.suggestions.tile.MostVisitedTilesCoordinator; + import org.chromium.chrome.browser.suggestions.tile.TileGroup; + import org.chromium.chrome.browser.suggestions.tile.TileGroup.Delegate; +-import org.chromium.chrome.browser.suggestions.tile.TilesLinearLayout; ++import org.chromium.chrome.browser.suggestions.tile.MostVisitedTilesGridLayout; + import org.chromium.chrome.browser.tab_ui.InvalidationAwareThumbnailProvider; + import org.chromium.chrome.browser.ui.native_page.TouchEnabledDelegate; + import org.chromium.chrome.browser.util.BrowserUiUtils; @@ -86,6 +88,8 @@ public class NewTabPageLayout extends LinearLayout { private @Nullable DisplayStyleObserver mDisplayStyleObserver; private CallbackController mCallbackController = new CallbackController(); @@ -562,6 +573,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL initializeSearchBoxTextView(); initializeVoiceSearchButton(); initializeLensButton(); +@@ -506,7 +511,7 @@ public class NewTabPageLayout extends LinearLayout { + + if (mInitialTileNum == null) { + mInitialTileNum = +- ((TilesLinearLayout) findViewById(R.id.mv_tiles_layout)).getTileCount(); ++ ((MostVisitedTilesGridLayout) findViewById(R.id.mv_tiles_layout)).getTileCount(); + } + + int currentOrientation = getResources().getConfiguration().orientation; @@ -574,7 +579,7 @@ public class NewTabPageLayout extends LinearLayout { && mInitialized) { return; @@ -655,15 +675,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/mos diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator.java -@@ -38,6 +38,7 @@ public class MostVisitedTilesCoordinator implements ConfigurationChangedObserver - private final MostVisitedTilesMediator mMediator; - private final WindowAndroid mWindowAndroid; - private final UiConfig mUiConfig; -+ private PropertyModelChangeProcessor mModelChangeProcessor; - private TileRenderer mRenderer; - private ContextMenuManager mContextMenuManager; - private OfflinePageBridge mOfflinePageBridge; -@@ -65,15 +66,11 @@ public class MostVisitedTilesCoordinator implements ConfigurationChangedObserver +@@ -65,15 +65,11 @@ public class MostVisitedTilesCoordinator implements ConfigurationChangedObserver mWindowAndroid = windowAndroid; ((ViewStub) mvTilesContainerLayout.findViewById(R.id.mv_tiles_layout_stub)).inflate(); @@ -684,7 +696,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/til new file mode 100644 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesGridLayout.java -@@ -0,0 +1,193 @@ +@@ -0,0 +1,283 @@ +// Copyright 2015 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. @@ -708,8 +720,12 @@ new file mode 100644 +import org.chromium.chrome.R; +import org.chromium.chrome.browser.flags.ChromeFeatureList; +import org.chromium.chrome.browser.suggestions.SiteSuggestion; ++import org.chromium.components.browser_ui.widget.tile.TileView; +import org.chromium.ui.base.DeviceFormFactor; + ++import java.util.ArrayList; ++import java.util.List; ++ +/** A layout that arranges tiles in a grid. */ +public class MostVisitedTilesGridLayout extends FrameLayout { + private final int mMinHorizontalSpacing; @@ -720,6 +736,8 @@ new file mode 100644 + private int mMaxRows = 4; + private int mMaxColumns = 4; + ++ private List mTileList = new ArrayList(); ++ + /** + * Constructor for inflating from XML. + * @@ -877,47 +895,145 @@ new file mode 100644 + private int getGridMVTVerticalSpacingResourcesId() { + return R.dimen.tile_grid_layout_vertical_spacing; + } ++ ++ @Override ++ public void removeAllViews() { ++ mTileList.clear(); ++ super.removeAllViews(); ++ } ++ ++ /** ++ * Updates the start margin of all children except the first, to control spacing between. ++ * ++ * @param margin The margin to set. ++ */ ++ void setIntervalMargins(int margin) { ++ int childCount = getChildCount(); ++ for (int i = 1; i < childCount; i++) { ++ updateViewStartMargin(getChildAt(i), margin); ++ } ++ } ++ ++ /** ++ * Updates the start (end) margin the first (last) child, to control spacing around content. ++ * ++ * @param margin The margin to set. ++ */ ++ void setEdgeMargins(int margin) { ++ int childCount = getChildCount(); ++ if (childCount > 0) { ++ updateViewStartMargin(getChildAt(0), margin); ++ updateViewEndMargin(getChildAt(childCount - 1), margin); ++ } ++ } ++ ++ /** ++ * Specialized addView() for tiles. ++ * ++ * @param tileView The tile View to add. ++ */ ++ public void addTile(TileView tileView) { ++ super.addView(tileView); ++ mTileList.add(tileView); ++ } ++ ++ /** ++ * Specialized getChildCount() for tiles. ++ * ++ * @return The count of TileView children, added from addTile(). ++ */ ++ public int getTileCount() { ++ return mTileList.size(); ++ } ++ ++ /** ++ * Specialized getChildAt() for tiles. ++ * ++ * @return The (index+1)-th TileView added via addTile(). ++ */ ++ public TileView getTileAt(int index) { ++ return mTileList.get(index); ++ } ++ ++ private void updateViewStartMargin(View view, int newStartMargin) { ++ MarginLayoutParams layoutParams = (MarginLayoutParams) view.getLayoutParams(); ++ if (newStartMargin != layoutParams.getMarginStart()) { ++ layoutParams.setMarginStart(newStartMargin); ++ view.setLayoutParams(layoutParams); ++ } ++ } ++ ++ private void updateViewEndMargin(View view, int newEndMargin) { ++ MarginLayoutParams layoutParams = (MarginLayoutParams) view.getLayoutParams(); ++ if (newEndMargin != layoutParams.getMarginEnd()) { ++ layoutParams.setMarginEnd(newEndMargin); ++ view.setLayoutParams(layoutParams); ++ } ++ } ++ ++ void destroy() { ++ for (int i = 0; i < getTileCount(); i++) { ++ TileView tileView = getTileAt(i); ++ tileView.setOnClickListener(null); ++ tileView.setOnCreateContextMenuListener(null); ++ } ++ removeAllViews(); ++ } +} diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesMediator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesMediator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesMediator.java -@@ -12,6 +12,7 @@ import static org.chromium.chrome.browser.suggestions.tile.MostVisitedTilesPrope - - import android.content.res.Configuration; - import android.content.res.Resources; -+import android.view.ViewGroup; - import android.view.ViewStub; - - import androidx.annotation.Nullable; -@@ -37,7 +38,7 @@ public class MostVisitedTilesMediator implements TileGroup.Observer, TemplateUrl +@@ -37,7 +37,7 @@ public class MostVisitedTilesMediator implements TileGroup.Observer, TemplateUrl private final Resources mResources; private final UiConfig mUiConfig; - private final MostVisitedTilesLayout mMvTilesLayout; -+ private final ViewGroup mMvTilesLayout; ++ private final MostVisitedTilesGridLayout mMvTilesLayout; private final ViewStub mNoMvPlaceholderStub; private final PropertyModel mModel; private final boolean mIsTablet; -@@ -59,7 +60,7 @@ public class MostVisitedTilesMediator implements TileGroup.Observer, TemplateUrl +@@ -59,7 +59,7 @@ public class MostVisitedTilesMediator implements TileGroup.Observer, TemplateUrl public MostVisitedTilesMediator( Resources resources, UiConfig uiConfig, - MostVisitedTilesLayout mvTilesLayout, -+ ViewGroup mvTilesLayout, ++ MostVisitedTilesGridLayout mvTilesLayout, ViewStub noMvPlaceholderStub, TileRenderer renderer, PropertyModel propertyModel, -@@ -166,8 +167,8 @@ public class MostVisitedTilesMediator implements TileGroup.Observer, TemplateUrl - } +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java +@@ -162,7 +162,7 @@ public class TileRenderer { + */ + public void renderTileSection( + List sectionTiles, +- TilesLinearLayout parent, ++ MostVisitedTilesGridLayout parent, + TileGroup.TileSetupDelegate setupDelegate) { + try (TraceEvent e = TraceEvent.scoped("TileRenderer.renderTileSection")) { + // Map the old tile views by url so they can be reused later. +@@ -216,7 +216,7 @@ public class TileRenderer { + */ + @VisibleForTesting + SuggestionsTileView buildTileView( +- Tile tile, TilesLinearLayout parent, TileGroup.TileSetupDelegate setupDelegate) { ++ Tile tile, MostVisitedTilesGridLayout parent, TileGroup.TileSetupDelegate setupDelegate) { + SuggestionsTileView tileView = + (SuggestionsTileView) + LayoutInflater.from(parent.getContext()).inflate(mLayout, parent, false); +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TilesLinearLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TilesLinearLayout.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TilesLinearLayout.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TilesLinearLayout.java +@@ -23,7 +23,7 @@ import java.util.List; + * #getChildCount()} and {@link #getChildAt()}. + */ + @NullMarked +-public class TilesLinearLayout extends LinearLayout { ++class TilesLinearLayout extends LinearLayout { + private List mTileList = new ArrayList(); - public void destroy() { -- if (mMvTilesLayout != null) { -- mMvTilesLayout.destroy(); -+ if (mMvTilesLayout instanceof MostVisitedTilesLayout) { -+ ((MostVisitedTilesLayout)mMvTilesLayout).destroy(); - } - - if (mTileGroup != null) { + public TilesLinearLayout(Context context, @Nullable AttributeSet attrs) { diff --git a/chrome/browser/engagement/important_sites_util.cc b/chrome/browser/engagement/important_sites_util.cc --- a/chrome/browser/engagement/important_sites_util.cc +++ b/chrome/browser/engagement/important_sites_util.cc diff --git a/build/patches/User-agent-customization.patch b/build/patches/User-agent-customization.patch index 5cba73f1..26637f83 100644 --- a/build/patches/User-agent-customization.patch +++ b/build/patches/User-agent-customization.patch @@ -1047,8 +1047,8 @@ diff --git a/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chro + @Override + public void SetOverrideUserAgentForAllTabs(boolean usingDesktopUserAgent) { -+ for (int selectorIndex = 0; selectorIndex < mSelectors.size(); selectorIndex++) { -+ TabModelSelector selector = mSelectors.get(selectorIndex); ++ for (int selectorIndex : mWindowIdToSelectors.keySet()) { ++ TabModelSelector selector = mWindowIdToSelectors.get(selectorIndex); + if (selector != null) { + List models = selector.getModels(); + for (int modelIndex = 0; modelIndex < models.size(); modelIndex++) { diff --git a/build/patches/Welcome-screen.patch b/build/patches/Welcome-screen.patch index bcf8fe42..b57119d8 100644 --- a/build/patches/Welcome-screen.patch +++ b/build/patches/Welcome-screen.patch @@ -13,7 +13,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/android/java/res/values/styles.xml | 24 ++ .../DefaultSearchEngineFirstRunFragment.java | 3 - .../browser/firstrun/FirstRunActivity.java | 23 +- - .../firstrun/FirstRunFlowSequencer.java | 60 +--- + .../firstrun/FirstRunFlowSequencer.java | 58 +-- .../browser/firstrun/FirstRunUtils.java | 1 + .../firstrun/ToSAndUMAFirstRunFragment.java | 335 +++++++++++++++++ .../firstrun/TosAndUmaFragmentView.java | 336 ++++++++++++++++++ @@ -21,7 +21,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html ...creenSigninAndHistorySyncActivityBase.java | 6 +- .../browser/locale/LocaleManagerDelegate.java | 5 +- .../Welcome-screen.grdp | 27 ++ - 15 files changed, 919 insertions(+), 79 deletions(-) + 15 files changed, 917 insertions(+), 79 deletions(-) create mode 100644 chrome/android/java/res/layout/fre_tosanduma.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/firstrun/TosAndUmaFragmentView.java @@ -401,7 +401,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR } } -@@ -137,18 +115,8 @@ public abstract class FirstRunFlowSequencer { +@@ -137,18 +115,6 @@ public abstract class FirstRunFlowSequencer { * method. */ void start() { @@ -417,12 +417,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR - mAccountsAvailable = true; - maybeProcessFreEnvironmentPreNative(); - }); -+ mIsChild = false; -+ maybeProcessFreEnvironmentPreNative(); } @VisibleForTesting -@@ -167,9 +135,6 @@ public abstract class FirstRunFlowSequencer { +@@ -167,9 +133,6 @@ public abstract class FirstRunFlowSequencer { } private void maybeProcessFreEnvironmentPreNative() { @@ -432,7 +430,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR if (mIsFlowKnown) return; mIsFlowKnown = true; onFlowIsKnown(mIsChild); -@@ -181,8 +146,8 @@ public abstract class FirstRunFlowSequencer { +@@ -181,8 +144,8 @@ public abstract class FirstRunFlowSequencer { * @param freProperties Resulting FRE properties bundle. */ public void updateFirstRunProperties(Bundle freProperties) { @@ -443,7 +441,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR assert freProperties != null; freProperties.putBoolean( FirstRunActivity.SHOW_HISTORY_SYNC_PAGE, shouldShowHistorySyncOptIn()); -@@ -201,8 +166,6 @@ public abstract class FirstRunFlowSequencer { +@@ -201,8 +164,6 @@ public abstract class FirstRunFlowSequencer { // Mark the FRE flow as complete. FirstRunStatus.setFirstRunFlowComplete(true); @@ -452,7 +450,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR } /** -@@ -301,9 +264,6 @@ public abstract class FirstRunFlowSequencer { +@@ -301,9 +262,6 @@ public abstract class FirstRunFlowSequencer { Log.d(TAG, "Redirecting user through FRE."); CrashKeys.getInstance().set(CrashKeyIndex.FIRST_RUN, "yes"); @@ -462,7 +460,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR if (inSameTask) { FreIntentCreator intentCreator = new FreIntentCreator(); Intent freIntent = -@@ -329,13 +289,17 @@ public abstract class FirstRunFlowSequencer { +@@ -329,13 +287,17 @@ public abstract class FirstRunFlowSequencer { if (!(caller instanceof Activity)) { freIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); } diff --git a/build/patches/add-browser-policy.patch b/build/patches/add-browser-policy.patch index 8834e53a..acb1c8ed 100644 --- a/build/patches/add-browser-policy.patch +++ b/build/patches/add-browser-policy.patch @@ -19,7 +19,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../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 | 67 ++------- + .../commerce/core/commerce_feature_list.cc | 64 ++------ .../core/browser/browser_policy_connector.cc | 3 + .../common/command_line_policy_provider.cc | 3 + .../core/common/policy_loader_command_line.cc | 137 ++++++++++++++++-- @@ -37,7 +37,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../gaia_cookie_manager_service.cc | 4 + google_apis/gaia/gaia_auth_fetcher.cc | 1 + net/socket/ssl_client_socket_impl.cc | 3 + - 33 files changed, 325 insertions(+), 158 deletions(-) + 33 files changed, 322 insertions(+), 158 deletions(-) diff --git a/base/win/win_util.cc b/base/win/win_util.cc --- a/base/win/win_util.cc @@ -624,16 +624,13 @@ diff --git a/components/commerce/core/commerce_feature_list.cc b/components/comm auto* pattern_from_component = commerce_heuristics::CommerceHeuristicsData::GetInstance() .GetNoDiscountMerchantPattern(); -@@ -495,4 +446,12 @@ bool IsNoDiscountMerchant(const GURL& url) { +@@ -495,4 +446,9 @@ bool IsNoDiscountMerchant(const GURL& url) { return RE2::PartialMatch(url.host_piece(), *pattern_from_component); } #endif + +SET_CROMITE_FEATURE_DISABLED(kShoppingListRegionLaunched); + -+SET_CROMITE_FEATURE_DISABLED(kParcelTracking); -+SET_CROMITE_FEATURE_DISABLED(kParcelTrackingRegionLaunched); -+ +SET_CROMITE_FEATURE_DISABLED(kEnableDiscountInfoApi); +SET_CROMITE_FEATURE_DISABLED(kEnableDiscountInfoApiRegionLaunched); } // namespace commerce @@ -936,7 +933,7 @@ diff --git a/components/policy/resources/webui/policy_row.ts b/components/policy } + const enabledBox = this.shadowRoot!.querySelector('.enabled_box'); -+ enabledBox!.checked = !policy.disabled; ++ enabledBox.checked = !policy.disabled; + // Populate the remaining columns with policy scope, level and value if a // value has been set. Otherwise, leave them blank.