diff --git a/build/patches/Content-settings-infrastructure.patch b/build/patches/Content-settings-infrastructure.patch index e5ffba29..a945d2ea 100644 --- a/build/patches/Content-settings-infrastructure.patch +++ b/build/patches/Content-settings-infrastructure.patch @@ -72,8 +72,8 @@ Require: bromite-build-utils.patch .../common/content_settings_mojom_traits.cc | 12 +- .../common/content_settings_mojom_traits.h | 24 + .../core/common/content_settings_types.mojom | 1 + - .../renderer/content_settings_agent_impl.cc | 45 +- - .../renderer/content_settings_agent_impl.h | 9 +- + .../renderer/content_settings_agent_impl.cc | 43 ++ + .../renderer/content_settings_agent_impl.h | 7 + .../PageInfoPermissionsController.java | 9 + .../PermissionParamsListBuilder.java | 1 + .../android/page_info_controller_android.cc | 18 + @@ -83,7 +83,7 @@ Require: bromite-build-utils.patch .../platform/web_content_settings_client.h | 9 + .../execution_context/execution_context.cc | 16 + .../execution_context/execution_context.h | 5 + - 72 files changed, 1868 insertions(+), 95 deletions(-) + 72 files changed, 1866 insertions(+), 93 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 @@ -97,7 +97,7 @@ Require: bromite-build-utils.patch diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java -@@ -59,6 +59,10 @@ import org.chromium.url.GURL; +@@ -62,6 +62,10 @@ import org.chromium.url.GURL; import java.util.Set; @@ -108,7 +108,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/C /** A SiteSettingsDelegate instance that contains Chrome-specific Site Settings logic. */ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { public static final String EMBEDDED_CONTENT_HELP_CENTER_URL = -@@ -217,7 +221,7 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { +@@ -227,7 +231,7 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { @Override public boolean isHelpAndFeedbackEnabled() { @@ -117,7 +117,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/C } @Override -@@ -349,6 +353,17 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { +@@ -359,6 +363,17 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { return mPrivacySandboxBridge.getFirstPartySetOwner(memberOrigin); } @@ -138,7 +138,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/C diff --git a/chrome/browser/content_settings/page_specific_content_settings_delegate.cc b/chrome/browser/content_settings/page_specific_content_settings_delegate.cc --- a/chrome/browser/content_settings/page_specific_content_settings_delegate.cc +++ b/chrome/browser/content_settings/page_specific_content_settings_delegate.cc -@@ -166,7 +166,7 @@ namespace { +@@ -162,7 +162,7 @@ namespace { void GetGuestViewDefaultContentSettingRules( bool incognito, RendererContentSettingRules* rules) { @@ -150,7 +150,7 @@ diff --git a/chrome/browser/content_settings/page_specific_content_settings_dele diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/chrome/browser/resources/settings/privacy_page/privacy_page.html --- a/chrome/browser/resources/settings/privacy_page/privacy_page.html +++ b/chrome/browser/resources/settings/privacy_page/privacy_page.html -@@ -1474,4 +1474,5 @@ +@@ -1534,4 +1534,5 @@ @@ -159,7 +159,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/chrome/browser/resources/settings/privacy_page/privacy_page.ts --- a/chrome/browser/resources/settings/privacy_page/privacy_page.ts +++ b/chrome/browser/resources/settings/privacy_page/privacy_page.ts -@@ -53,6 +53,7 @@ import {SiteSettingsPrefsBrowserProxyImpl} from '../site_settings/site_settings_ +@@ -54,6 +54,7 @@ import {SiteSettingsPrefsBrowserProxyImpl} from '../site_settings/site_settings_ import {PrivacyGuideAvailabilityMixin} from './privacy_guide/privacy_guide_availability_mixin.js'; import {getTemplate} from './privacy_page.html.js'; @@ -167,7 +167,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch interface BlockAutoplayStatus { enabled: boolean; -@@ -76,8 +77,82 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { +@@ -77,8 +78,82 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { return 'settings-privacy-page'; } @@ -262,9 +262,9 @@ diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resourc /** * Add all of the child routes that originate from the privacy route, -@@ -154,6 +155,7 @@ function addPrivacyChildRoutes(r: Partial) { - r.SITE_SETTINGS_AUTOMATIC_FULLSCREEN = - r.SITE_SETTINGS.createChild('automaticFullScreen'); +@@ -165,6 +166,7 @@ function addPrivacyChildRoutes(r: Partial) { + r.SITE_SETTINGS_WEB_APP_INSTALLATION = + r.SITE_SETTINGS.createChild('webApplications'); } + setupContentSettingsRoutes(r); } @@ -294,7 +294,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/settings_category_d diff --git a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts --- a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts +++ b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts -@@ -31,6 +31,7 @@ import {ContentSettingProvider} from './site_settings_prefs_browser_proxy.js'; +@@ -31,6 +31,7 @@ import {DefaultSettingSource} from './site_settings_prefs_browser_proxy.js'; export enum SiteContentRadioSetting { DISABLED = 0, ENABLED = 1, @@ -337,7 +337,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/settings_category_d private getAllowOptionForCategory_(): ContentSetting { switch (this.category) { case ContentSettingsTypes.ADS: -@@ -169,6 +184,8 @@ export class SettingsCategoryDefaultRadioGroupElement extends +@@ -172,6 +187,8 @@ export class SettingsCategoryDefaultRadioGroupElement extends // "Ask" vs "Blocked". return ContentSetting.ASK; default: @@ -346,7 +346,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/settings_category_d assertNotReached('Invalid category: ' + this.category); } } -@@ -193,6 +210,7 @@ export class SettingsCategoryDefaultRadioGroupElement extends +@@ -196,6 +213,7 @@ export class SettingsCategoryDefaultRadioGroupElement extends /** @type {!ContentSetting} */ (this.getAllowOptionForCategory_()); this.browserProxy.setDefaultValueForContentType( this.category, @@ -354,7 +354,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/settings_category_d this.categoryEnabled_ ? allowOption : ContentSetting.BLOCK); } -@@ -224,7 +242,10 @@ export class SettingsCategoryDefaultRadioGroupElement extends +@@ -227,7 +245,10 @@ export class SettingsCategoryDefaultRadioGroupElement extends } const enabled = this.computeIsSettingEnabled(update.setting); @@ -369,11 +369,11 @@ diff --git a/chrome/browser/resources/settings/site_settings/settings_category_d diff --git a/chrome/browser/resources/settings/site_settings/site_details.html b/chrome/browser/resources/settings/site_settings/site_details.html --- a/chrome/browser/resources/settings/site_settings/site_details.html +++ b/chrome/browser/resources/settings/site_settings/site_details.html -@@ -309,4 +309,5 @@ - label="$i18n{siteSettingsPointerLock}"> +@@ -322,4 +322,5 @@ + label="$i18n{siteSettingsWebAppInstallation}"> - -+
+ ++
diff --git a/chrome/browser/resources/settings/site_settings/site_details.ts b/chrome/browser/resources/settings/site_settings/site_details.ts --- a/chrome/browser/resources/settings/site_settings/site_details.ts @@ -588,7 +588,7 @@ diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_ { route: routes.SITE_SETTINGS_ADS, id: Id.ADS, -@@ -435,10 +435,36 @@ function getCategoryItemMap(): Map { +@@ -463,10 +463,36 @@ function getCategoryItemMap(): Map { disabledLabel: 'trackingProtectionLinkRowSubLabel', }); } @@ -625,7 +625,7 @@ diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_ function buildItemListFromIds(orderedIdList: ContentSettingsTypes[]): CategoryListItem[] { const map = getCategoryItemMap(); -@@ -524,7 +550,7 @@ export class SettingsSiteSettingsPageElement extends +@@ -554,7 +580,7 @@ export class SettingsSiteSettingsPageElement extends Id.IMAGES, Id.POPUPS, ]), @@ -692,8 +692,8 @@ diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_ /** * Determine localization string for i18n for a given content settings type. * Sorted alphabetically by |ContentSettingsType|. -@@ -102,6 +150,13 @@ export function getLocalizationStringForContentType( - case ContentSettingsTypes.OFFER_WRITING_HELP: +@@ -107,6 +155,13 @@ export function getLocalizationStringForContentType( + case ContentSettingsTypes.SMART_CARD_READERS: return null; default: + for (let index=0; index < loadTimeData.getInteger("br_cs_count"); index++) { @@ -709,7 +709,7 @@ diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn -@@ -2041,6 +2041,7 @@ static_library("ui") { +@@ -1990,6 +1990,7 @@ static_library("ui") { "//components/commerce/core:shopping_service", "//components/commerce/core/webui", "//components/endpoint_fetcher:endpoint_fetcher", @@ -745,7 +745,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b #include "ui/views/view_class_properties.h" #if BUILDFLAG(FULL_SAFE_BROWSING) -@@ -251,8 +252,20 @@ void PageInfoMainView::SetPermissionInfo( +@@ -252,8 +253,20 @@ void PageInfoMainView::SetPermissionInfo( scroll_view->SetDrawOverflowIndicator(false); auto* content_view = scroll_view->SetContents(std::make_unique()); @@ -768,7 +768,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b content_view->SetID(PageInfoViewFactory::VIEW_ID_PAGE_INFO_PERMISSION_VIEW); content_view->SetProperty(views::kElementIdentifierKey, kPermissionsElementId); -@@ -267,11 +280,16 @@ void PageInfoMainView::SetPermissionInfo( +@@ -268,11 +281,16 @@ void PageInfoMainView::SetPermissionInfo( } } @@ -785,7 +785,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b toggle_row->SetProperty(views::kCrossAxisAlignmentKey, views::LayoutAlignment::kStretch); syncable_permission_rows_.emplace(permission.type, toggle_row); -@@ -279,6 +297,8 @@ void PageInfoMainView::SetPermissionInfo( +@@ -280,6 +298,8 @@ void PageInfoMainView::SetPermissionInfo( } for (auto& object : chosen_object_info_list) { @@ -794,7 +794,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b // The view takes ownership of the object info. auto object_view = std::make_unique( std::move(object), -@@ -289,6 +309,10 @@ void PageInfoMainView::SetPermissionInfo( +@@ -290,6 +310,10 @@ void PageInfoMainView::SetPermissionInfo( content_view->AddChildView(std::move(object_view))); } @@ -817,7 +817,7 @@ 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" -@@ -246,7 +248,14 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( +@@ -261,7 +263,14 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( ContentSetting setting = info.setting == CONTENT_SETTING_DEFAULT ? info.default_setting : info.setting; @@ -832,7 +832,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrom // For guard content settings and Automatic Picture-in-Picture, ASK is treated // as an "on" state. const bool show_blocked_badge = -@@ -528,6 +537,17 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( +@@ -555,6 +564,17 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( icon = &vector_icons::kPointerLockIcon; break; default: @@ -853,7 +853,7 @@ 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,11 @@ class PageInfoViewFactory { +@@ -88,6 +88,11 @@ class PageInfoViewFactory { const PageInfo::PermissionInfo& info, bool blocked_on_system_level = false); @@ -1039,8 +1039,8 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c + choose_button_ = row_view_->AddControlUnderLabel(std::move(toggle_button)); const int icon_size = GetLayoutConstant(PAGE_INFO_ICON_SIZE); - // TODO(crbug.com/40101962): Update below code to only display the updated -@@ -250,9 +349,6 @@ void PermissionToggleRowView::InitForUserSource( + +@@ -226,9 +325,6 @@ void PermissionToggleRowView::InitForUserSource( auto spacer_view = std::make_unique(); spacer_view->SetPreferredSize(gfx::Size(icon_size, icon_size)); spacer_view_ = row_view_->AddControl(std::move(spacer_view)); @@ -1050,7 +1050,7 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c } } } -@@ -324,6 +420,33 @@ void PermissionToggleRowView::UpdateUiOnPermissionChanged() { +@@ -300,6 +396,33 @@ void PermissionToggleRowView::UpdateUiOnPermissionChanged() { } } } @@ -1109,7 +1109,7 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.h b/ch METADATA_HEADER(PermissionToggleRowView, views::View) public: -@@ -66,6 +72,12 @@ class PermissionToggleRowView : public views::View { +@@ -68,6 +74,12 @@ class PermissionToggleRowView : public views::View { private: friend class test::PageInfoBubbleViewTestApi; @@ -1122,7 +1122,7 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.h b/ch void OnToggleButtonPressed(); void InitForUserSource(bool should_show_spacer_view, const std::u16string& toggle_accessible_name); -@@ -82,6 +94,10 @@ class PermissionToggleRowView : public views::View { +@@ -84,6 +96,10 @@ class PermissionToggleRowView : public views::View { raw_ptr toggle_button_ = nullptr; raw_ptr spacer_view_ = nullptr; @@ -1144,7 +1144,7 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide #include "build/branding_buildflags.h" #include "build/build_config.h" #include "build/buildflag.h" -@@ -75,6 +76,9 @@ +@@ -76,6 +77,9 @@ #include "components/google/core/common/google_util.h" #include "components/history/core/common/pref_names.h" #include "components/omnibox/common/omnibox_features.h" @@ -1154,7 +1154,7 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide #include "components/password_manager/core/browser/leak_detection_dialog_utils.h" #include "components/password_manager/core/browser/manage_passwords_referrer.h" #include "components/password_manager/core/common/password_manager_features.h" -@@ -3756,6 +3760,56 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, +@@ -3693,6 +3697,56 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, policy_indicator::AddLocalizedStrings(html_source); AddSecurityKeysStrings(html_source); @@ -1223,7 +1223,7 @@ 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_types.h" -@@ -239,13 +241,13 @@ const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = { +@@ -246,13 +248,13 @@ const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = { {ContentSettingsType::STORAGE_ACCESS_HEADER_ORIGIN_TRIAL, nullptr}, }; @@ -1244,7 +1244,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b struct SiteSettingSourceStringMapping { SiteSettingSource source; -@@ -477,6 +479,13 @@ bool HasRegisteredGroupName(ContentSettingsType type) { +@@ -482,6 +484,13 @@ bool HasRegisteredGroupName(ContentSettingsType type) { return true; } } @@ -1258,7 +1258,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b return false; } -@@ -490,11 +499,24 @@ ContentSettingsType ContentSettingsTypeFromGroupName(std::string_view name) { +@@ -495,11 +504,24 @@ ContentSettingsType ContentSettingsTypeFromGroupName(std::string_view name) { return entry.type; } } @@ -1284,7 +1284,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b for (const auto& entry : kContentSettingsTypeGroupNames) { if (type == entry.type) { // Content setting types that aren't represented in the settings UI -@@ -509,7 +531,6 @@ std::string_view ContentSettingsTypeToGroupName(ContentSettingsType type) { +@@ -514,7 +536,6 @@ std::string_view ContentSettingsTypeToGroupName(ContentSettingsType type) { return entry.name ? entry.name : std::string_view(); } } @@ -1292,8 +1292,8 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b NOTREACHED_IN_MIGRATION() << static_cast(type) << " is not a recognized content settings type."; return std::string_view(); -@@ -609,6 +630,13 @@ std::vector GetVisiblePermissionCategories( - base_types->push_back(ContentSettingsType::POINTER_LOCK); +@@ -624,6 +645,13 @@ std::vector GetVisiblePermissionCategories( + base_types->push_back(ContentSettingsType::WEB_APP_INSTALLATION); } + content_settings::WebsiteSettingsRegistry* website_settings = @@ -1309,7 +1309,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b diff --git a/components/browser_ui/settings/android/BUILD.gn b/components/browser_ui/settings/android/BUILD.gn --- a/components/browser_ui/settings/android/BUILD.gn +++ b/components/browser_ui/settings/android/BUILD.gn -@@ -83,6 +83,7 @@ android_resources("java_resources") { +@@ -84,6 +84,7 @@ android_resources("java_resources") { "java/res/layout/managed_disclaimer_preference_for_radio_groups.xml", "java/res/layout/preference_chrome_image_view.xml", "java/res/layout/preference_spinner.xml", @@ -1507,7 +1507,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/AllSiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/AllSiteSettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/AllSiteSettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/AllSiteSettings.java -@@ -372,7 +372,8 @@ public class AllSiteSettings extends BaseSiteSettingsFragment +@@ -383,7 +383,8 @@ public class AllSiteSettings extends BaseSiteSettingsFragment if (queryHasChanged) getInfoForOrigins(); }); @@ -1517,7 +1517,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c MenuItem help = menu.add( Menu.NONE, -@@ -384,6 +385,8 @@ public class AllSiteSettings extends BaseSiteSettingsFragment +@@ -395,6 +396,8 @@ public class AllSiteSettings extends BaseSiteSettingsFragment getResources(), R.drawable.ic_help_and_feedback, getContext().getTheme())); @@ -2153,7 +2153,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c int icon, int title, @ContentSettingValues @Nullable Integer defaultEnabledValue, -@@ -415,6 +415,8 @@ public class ContentSettingsResources { +@@ -425,6 +425,8 @@ public class ContentSettingsResources { R.string.website_settings_category_vr_blocked, R.string.website_settings_category_vr_a11y); } @@ -2162,7 +2162,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c assert false; // NOTREACHED return null; } -@@ -573,6 +575,14 @@ public class ContentSettingsResources { +@@ -583,6 +585,14 @@ public class ContentSettingsResources { return getResourceItem(contentType).getDefaultDisabledValue(); } @@ -2177,7 +2177,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. * -@@ -736,6 +746,8 @@ public class ContentSettingsResources { +@@ -746,6 +756,8 @@ public class ContentSettingsResources { * Blocked states, in that order. */ public static int[] getTriStateSettingDescriptionIDs(int contentType) { @@ -2189,7 +2189,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java -@@ -331,6 +331,10 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -337,6 +337,10 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment website.site() .getContentSetting( browserContextHandle, mCategory.getContentSettingsType()); @@ -2200,7 +2200,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (contentSetting != null) { return ContentSettingValues.BLOCK == contentSetting; } -@@ -495,6 +499,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -501,6 +505,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment ? new HashSet<>(getArguments().getStringArrayList(EXTRA_SELECTED_DOMAINS)) : null; @@ -2208,7 +2208,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c configureGlobalToggles(); if (mCategory.getType() == SiteSettingsCategory.Type.REQUEST_DESKTOP_SITE) { RecordUserAction.record("DesktopSiteContentSetting.SettingsPage.Entered"); -@@ -525,7 +530,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -536,7 +541,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment if (queryHasChanged) getInfoForOrigins(); }); @@ -2218,7 +2218,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c MenuItem help = menu.add( Menu.NONE, -@@ -537,12 +543,20 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -548,12 +554,20 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment getResources(), R.drawable.ic_help_and_feedback, getContext().getTheme())); @@ -2239,7 +2239,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (mCategory.getType() == SiteSettingsCategory.Type.PROTECTED_MEDIA) { getSiteSettingsDelegate() .launchProtectedContentHelpAndFeedbackActivity(getActivity()); -@@ -614,6 +628,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -625,6 +639,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment BrowserContextHandle browserContextHandle = getSiteSettingsDelegate().getBrowserContextHandle(); PrefService prefService = UserPrefs.get(browserContextHandle); @@ -2251,7 +2251,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (BINARY_TOGGLE_KEY.equals(preference.getKey())) { assert !mCategory.isManaged(); boolean toggleValue = (boolean) newValue; -@@ -808,6 +827,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -819,6 +838,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment .website_settings_allowed_group_heading_request_desktop_site; break; } @@ -2260,7 +2260,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c assert resource > 0; return getString(resource); } -@@ -923,6 +944,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -934,6 +955,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment default: break; } @@ -2269,7 +2269,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (allowSpecifyingExceptions) { getPreferenceScreen() .addPreference( -@@ -1109,8 +1132,16 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1120,8 +1143,16 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment private boolean isBlocked() { switch (mGlobalToggleLayout) { case GlobalToggleLayout.TRI_STATE_TOGGLE: @@ -2286,7 +2286,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c return (triStateToggle.getCheckedSetting() == ContentSettingValues.BLOCK); case GlobalToggleLayout.TRI_STATE_COOKIE_TOGGLE: TriStateCookieSettingsPreference triStateCookieToggle = -@@ -1177,7 +1208,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1188,7 +1219,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment } else if (mCategory.getType() == SiteSettingsCategory.Type.STORAGE_ACCESS) { infoText.setSummary(getStorageAccessSummary()); } else { @@ -2299,7 +2299,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } // Hide the anti-abuse text preferences, as needed. -@@ -1214,6 +1249,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1225,6 +1260,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment } else { screen.removePreference(mLocationTriStatePref); } @@ -2307,7 +2307,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (permissionBlockedByOs) { maybeShowOsWarning(screen); -@@ -1370,7 +1406,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1381,7 +1417,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment getSiteSettingsDelegate().getBrowserContextHandle(), contentType); int[] descriptionIds = ContentSettingsResources.getTriStateSettingDescriptionIDs(contentType); @@ -2316,7 +2316,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } private void configureBinaryToggle(ChromeSwitchPreference binaryToggle, int contentType) { -@@ -1494,6 +1530,14 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1505,6 +1541,14 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment @ContentSettingValues Integer value = site.getContentSetting(browserContextHandle, contentSettingsType); @@ -2334,7 +2334,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java -@@ -48,6 +48,7 @@ import java.util.Collection; +@@ -51,6 +51,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -2342,7 +2342,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c /** Shows the permissions and other settings for a particular website. */ public class SingleWebsiteSettings extends BaseSiteSettingsFragment -@@ -166,7 +167,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -172,7 +173,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment case ContentSettingsType.CLIPBOARD_READ_WRITE: return "clipboard_permission_list"; default: @@ -2351,7 +2351,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } } -@@ -536,8 +537,21 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -549,8 +550,21 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment private void setupContentSettingsPreferences() { mMaxPermissionOrder = findPreference(PREF_PERMISSIONS_HEADER).getOrder(); @@ -2375,7 +2375,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c preference.setKey(getPreferenceKey(type)); if (type == ContentSettingsType.ADS) { -@@ -1080,20 +1094,32 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1096,20 +1110,32 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment @ContentSettingValues @Nullable Integer value, boolean isEmbargoed, boolean isOneTime) { @@ -2414,7 +2414,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c AppCompatResources.getColorStateList(getContext(), mHighlightColor) .getDefaultColor()); } -@@ -1309,14 +1335,20 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1325,14 +1351,20 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment permission = (Boolean) newValue ? ContentSettingValues.ALLOW : ContentSettingValues.BLOCK; } else { @@ -2440,15 +2440,15 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java -@@ -46,6 +46,7 @@ public class SiteSettings extends BaseSiteSettingsFragment +@@ -51,6 +51,7 @@ public class SiteSettings extends BaseSiteSettingsFragment SettingsUtils.addPreferencesFromResource(this, R.xml.site_settings_preferences); - getActivity().setTitle(getContext().getString(R.string.prefs_site_settings)); + mPageTitle.set(getContext().getString(R.string.prefs_site_settings)); + BromiteCustomContentSettingImpl.configurePreferences(this); configurePreferences(); updatePreferenceStates(); } -@@ -67,7 +68,7 @@ public class SiteSettings extends BaseSiteSettingsFragment +@@ -77,7 +78,7 @@ public class SiteSettings extends BaseSiteSettingsFragment // Remove unsupported settings categories. for (@SiteSettingsCategory.Type int type = 0; @@ -2457,7 +2457,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c type++) { if (!getSiteSettingsDelegate().isCategoryVisible(type)) { getPreferenceScreen().removePreference(findPreference(type)); -@@ -89,7 +90,7 @@ public class SiteSettings extends BaseSiteSettingsFragment +@@ -99,7 +100,7 @@ public class SiteSettings extends BaseSiteSettingsFragment @CookieControlsMode int cookieControlsMode = UserPrefs.get(browserContextHandle).getInteger(COOKIE_CONTROLS_MODE); @@ -2466,7 +2466,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c Preference p = findPreference(prefCategory); int contentType = SiteSettingsCategory.contentSettingsType(prefCategory); // p can be null if the Preference was removed in configurePreferences. -@@ -158,19 +159,21 @@ public class SiteSettings extends BaseSiteSettingsFragment +@@ -169,19 +170,21 @@ public class SiteSettings extends BaseSiteSettingsFragment } else if (Type.ZOOM == prefCategory) { // Don't want to set a summary for Zoom because we don't want any message to display // under the Zoom row on site settings. @@ -2503,7 +2503,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsCategory.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsCategory.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsCategory.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsCategory.java -@@ -70,7 +70,7 @@ public class SiteSettingsCategory { +@@ -73,7 +73,7 @@ public class SiteSettingsCategory { Type.ZOOM, Type.STORAGE_ACCESS, Type.TRACKING_PROTECTION, @@ -2512,16 +2512,16 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c }) @Retention(RetentionPolicy.SOURCE) public @interface Type { -@@ -109,7 +109,7 @@ public class SiteSettingsCategory { - int TRACKING_PROTECTION = 30; +@@ -113,7 +113,7 @@ public class SiteSettingsCategory { + int HAND_TRACKING = 31; /** Number of handled categories used for calculating array sizes. */ -- int NUM_ENTRIES = 31; -+ int NUM_ENTRIES_CHROMIUM = 31; +- int NUM_ENTRIES = 32; ++ int NUM_ENTRIES_CHROMIUM = 32; } private final BrowserContextHandle mBrowserContextHandle; -@@ -154,6 +154,9 @@ public class SiteSettingsCategory { +@@ -162,6 +162,9 @@ public class SiteSettingsCategory { } else { permission = ""; } @@ -2531,7 +2531,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c return new SiteSettingsCategory(browserContextHandle, type, permission); } -@@ -162,7 +165,7 @@ public class SiteSettingsCategory { +@@ -170,7 +173,7 @@ public class SiteSettingsCategory { @ContentSettingsType.EnumType int contentSettingsType) { assert contentSettingsType != -1; assert Type.ALL_SITES == 0; @@ -2540,7 +2540,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (contentSettingsType(i) == contentSettingsType) { return createFromType(browserContextHandle, i); } -@@ -173,7 +176,7 @@ public class SiteSettingsCategory { +@@ -181,7 +184,7 @@ public class SiteSettingsCategory { public static SiteSettingsCategory createFromPreferenceKey( BrowserContextHandle browserContextHandle, String preferenceKey) { assert Type.ALL_SITES == 0; @@ -2549,7 +2549,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (preferenceKey(i).equals(preferenceKey)) { return createFromType(browserContextHandle, i); } -@@ -244,8 +247,7 @@ public class SiteSettingsCategory { +@@ -254,8 +257,7 @@ public class SiteSettingsCategory { case Type.TRACKING_PROTECTION: return ContentSettingsType.DEFAULT; // Conversion unavailable. } @@ -2559,7 +2559,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } /** -@@ -330,8 +332,12 @@ public class SiteSettingsCategory { +@@ -342,8 +344,12 @@ public class SiteSettingsCategory { case Type.ZOOM: return "zoom"; default: @@ -2647,7 +2647,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java -@@ -107,7 +107,7 @@ public class WebsitePermissionsFetcher { +@@ -108,7 +108,7 @@ public class WebsitePermissionsFetcher { case ContentSettingsType.USB_GUARD: return WebsitePermissionsType.CHOSEN_OBJECT_INFO; default: @@ -2786,9 +2786,9 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. namespace content_settings { -@@ -813,6 +814,7 @@ void ContentSettingsRegistry::Init() { +@@ -836,6 +837,7 @@ void ContentSettingsRegistry::Init() { WebsiteSettingsRegistry::DESKTOP, - ContentSettingsInfo::DONT_INHERIT_IN_INCOGNITO, + ContentSettingsInfo::INHERIT_IF_LESS_PERMISSIVE, ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); +#include "components/content_settings/core/browser/bromite_content_settings.inc" } @@ -2797,7 +2797,7 @@ 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 -@@ -203,11 +203,7 @@ void RecordContentSettingsHistogram(const std::string& name, +@@ -205,11 +205,7 @@ void RecordContentSettingsHistogram(const std::string& name, } int ContentSettingTypeToHistogramValue(ContentSettingsType content_setting) { @@ -3129,17 +3129,17 @@ diff --git a/components/content_settings/core/common/content_settings_mojom_trai diff --git a/components/content_settings/core/common/content_settings_types.mojom b/components/content_settings/core/common/content_settings_types.mojom --- a/components/content_settings/core/common/content_settings_types.mojom +++ b/components/content_settings/core/common/content_settings_types.mojom -@@ -451,5 +451,6 @@ enum ContentSettingsType { - // origins to retry a request or load with storage access. - // BLOCK (default): no effect. - STORAGE_ACCESS_HEADER_ORIGIN_TRIAL, +@@ -458,5 +458,6 @@ enum ContentSettingsType { + // Website setting to indicate whether user has opted in to allow web apps to + // install other web apps. + WEB_APP_INSTALLATION, +#include "components/content_settings/core/common/bromite_content_settings.inc" }; // LINT.ThenChange(//components/content_settings/core/browser/content_settings_uma_util.cc:kHistogramValue) diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc b/components/content_settings/renderer/content_settings_agent_impl.cc --- a/components/content_settings/renderer/content_settings_agent_impl.cc +++ b/components/content_settings/renderer/content_settings_agent_impl.cc -@@ -202,6 +202,49 @@ void ContentSettingsAgentImpl::SendRendererContentSettingRules( +@@ -200,6 +200,49 @@ void ContentSettingsAgentImpl::SendRendererContentSettingRules( std::move(renderer_settings)); } @@ -3189,19 +3189,10 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc void ContentSettingsAgentImpl::OnContentSettingsAgentRequest( mojo::PendingAssociatedReceiver receiver) { receivers_.Add(this, std::move(receiver)); -@@ -353,7 +396,7 @@ void ContentSettingsAgentImpl::ClearBlockedContentSettings() { - cached_storage_permissions_.clear(); - } - --bool ContentSettingsAgentImpl::IsAllowlistedForContentSettings() const { -+bool ContentSettingsAgentImpl::IsAllowlistedForContentSettingsCromite() const { - if (should_allowlist_) - return true; - diff --git a/components/content_settings/renderer/content_settings_agent_impl.h b/components/content_settings/renderer/content_settings_agent_impl.h --- a/components/content_settings/renderer/content_settings_agent_impl.h +++ b/components/content_settings/renderer/content_settings_agent_impl.h -@@ -80,6 +80,13 @@ class ContentSettingsAgentImpl +@@ -77,6 +77,13 @@ class ContentSettingsAgentImpl static mojom::ContentSettingsManager::StorageType ConvertToMojoStorageType( StorageType storage_type); @@ -3215,15 +3206,6 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.h // blink::WebContentSettingsClient: void AllowStorageAccess(StorageType storage_type, base::OnceCallback callback) override; -@@ -135,7 +142,7 @@ class ContentSettingsAgentImpl - // Helpers. - // True if `render_frame()` contains content that is allowlisted for content - // settings. -- bool IsAllowlistedForContentSettings() const; -+ bool IsAllowlistedForContentSettingsCromite() const; - - // A getter for `content_settings_manager_` that ensures it is bound. - mojom::ContentSettingsManager& GetContentSettingsManager(); diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java --- a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java +++ b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java @@ -3257,7 +3239,7 @@ diff --git a/components/page_info/android/java/src/org/chromium/components/page_ diff --git a/components/page_info/android/page_info_controller_android.cc b/components/page_info/android/page_info_controller_android.cc --- a/components/page_info/android/page_info_controller_android.cc +++ b/components/page_info/android/page_info_controller_android.cc -@@ -12,6 +12,7 @@ +@@ -13,6 +13,7 @@ #include "base/containers/contains.h" #include "base/feature_list.h" #include "components/content_settings/core/browser/host_content_settings_map.h" @@ -3265,7 +3247,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp #include "components/content_settings/core/common/content_settings.h" #include "components/content_settings/core/common/content_settings_types.h" #include "components/page_info/android/page_info_client.h" -@@ -151,6 +152,15 @@ void PageInfoControllerAndroid::SetPermissionInfo( +@@ -162,6 +163,15 @@ void PageInfoControllerAndroid::SetPermissionInfo( } permissions_to_display.push_back(ContentSettingsType::STORAGE_ACCESS); @@ -3281,7 +3263,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp std::map user_specified_settings_to_display; std::map -@@ -210,6 +220,14 @@ std::optional PageInfoControllerAndroid::GetSettingToDisplay( +@@ -221,6 +231,14 @@ std::optional PageInfoControllerAndroid::GetSettingToDisplay( return permission.setting; } @@ -3307,7 +3289,7 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info. #include "components/content_settings/browser/ui/cookie_controls_controller.h" #include "components/content_settings/core/browser/content_settings_registry.h" #include "components/content_settings/core/browser/content_settings_uma_util.h" -@@ -1240,6 +1241,14 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, +@@ -1242,6 +1243,14 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, // applies to permissions listed in |kPermissionType|. bool PageInfo::ShouldShowPermission( const PageInfo::PermissionInfo& info) const { @@ -3322,7 +3304,7 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info. // Note |ContentSettingsType::ADS| will show up regardless of its default // value when it has been activated on the current origin. if (info.type == ContentSettingsType::ADS) { -@@ -1347,7 +1356,19 @@ void PageInfo::PresentSitePermissions() { +@@ -1356,7 +1365,19 @@ void PageInfo::PresentSitePermissions() { HostContentSettingsMap* content_settings = GetContentSettings(); DCHECK(web_contents_); @@ -3354,7 +3336,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in #include "components/page_info/core/features.h" #include "components/page_info/page_info.h" #include "components/page_info/page_info_ui_delegate.h" -@@ -623,6 +624,12 @@ PageInfoUI::~PageInfoUI() = default; +@@ -625,6 +626,12 @@ PageInfoUI::~PageInfoUI() = default; // static std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) { @@ -3367,7 +3349,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in for (const PermissionUIInfo& info : GetContentSettingsUIInfo()) { if (info.type == type) return l10n_util::GetStringUTF16(info.string_id); -@@ -634,6 +641,12 @@ std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) { +@@ -636,6 +643,12 @@ std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) { // static std::u16string PageInfoUI::PermissionTypeToUIStringMidSentence( ContentSettingsType type) { @@ -3380,7 +3362,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in for (const PermissionUIInfo& info : GetContentSettingsUIInfo()) { if (info.type == type) return l10n_util::GetStringUTF16(info.string_id_mid_sentence); -@@ -1079,6 +1092,11 @@ bool PageInfoUI::ContentSettingsTypeInPageInfo(ContentSettingsType type) { +@@ -1081,6 +1094,11 @@ bool PageInfoUI::ContentSettingsTypeInPageInfo(ContentSettingsType type) { if (info.type == type) return true; } diff --git a/build/patches/Disable-omission-of-URL-elements.patch b/build/patches/Disable-omission-of-URL-elements.patch index 62d929c8..c55b91c7 100644 --- a/build/patches/Disable-omission-of-URL-elements.patch +++ b/build/patches/Disable-omission-of-URL-elements.patch @@ -6,28 +6,15 @@ Disabling some omissions of complete urls License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- - .../ephemeraltab/EphemeralTabSheetContent.java | 3 +-- - .../share_sheet/ShareSheetBottomSheetContent.java | 4 +--- - .../toolbar/chrome_location_bar_model_delegate.cc | 2 +- - .../ui/views/page_info/page_info_main_view.cc | 15 ++++++++++----- - .../components/bookmarks/BookmarkItem.java | 1 + - .../omnibox/browser/titled_url_match_utils.cc | 2 +- - .../components/page_info/PageInfoController.java | 3 +-- - 7 files changed, 16 insertions(+), 14 deletions(-) + .../ShareSheetBottomSheetContent.java | 4 +- + .../EphemeralTabSheetContent.java | 3 +- + .../chrome_location_bar_model_delegate.cc | 2 +- + .../ui/views/page_info/page_info_main_view.cc | 67 ++++++++++--------- + .../components/bookmarks/BookmarkItem.java | 1 + + .../omnibox/browser/titled_url_match_utils.cc | 2 +- + .../page_info/PageInfoController.java | 3 +- + 7 files changed, 41 insertions(+), 41 deletions(-) -diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/ephemeraltab/EphemeralTabSheetContent.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/ephemeraltab/EphemeralTabSheetContent.java ---- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/ephemeraltab/EphemeralTabSheetContent.java -+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/ephemeraltab/EphemeralTabSheetContent.java -@@ -235,8 +235,7 @@ public class EphemeralTabSheetContent implements BottomSheetContent { - /** Sets the ephemeral tab URL. */ - public void updateURL(GURL url) { - TextView originView = mToolbarView.findViewById(R.id.origin); -- originView.setText( -- UrlFormatter.formatUrlForSecurityDisplay(url, SchemeDisplay.OMIT_HTTP_AND_HTTPS)); -+ originView.setText(url.getSpec()); - } - - /** Sets the security icon. */ diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/share_sheet/ShareSheetBottomSheetContent.java b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/share_sheet/ShareSheetBottomSheetContent.java --- a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/share_sheet/ShareSheetBottomSheetContent.java +++ b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/share_sheet/ShareSheetBottomSheetContent.java @@ -42,6 +29,19 @@ diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/s if (contentTypes.contains(ContentType.IMAGE) || contentTypes.contains(ContentType.IMAGE_AND_LINK)) { +diff --git a/chrome/browser/ui/android/ephemeraltab/java/src/org/chromium/chrome/browser/ephemeraltab/EphemeralTabSheetContent.java b/chrome/browser/ui/android/ephemeraltab/java/src/org/chromium/chrome/browser/ephemeraltab/EphemeralTabSheetContent.java +--- a/chrome/browser/ui/android/ephemeraltab/java/src/org/chromium/chrome/browser/ephemeraltab/EphemeralTabSheetContent.java ++++ b/chrome/browser/ui/android/ephemeraltab/java/src/org/chromium/chrome/browser/ephemeraltab/EphemeralTabSheetContent.java +@@ -234,8 +234,7 @@ public class EphemeralTabSheetContent implements BottomSheetContent { + /** Sets the ephemeral tab URL. */ + public void updateURL(GURL url) { + TextView originView = mToolbarView.findViewById(R.id.origin); +- originView.setText( +- UrlFormatter.formatUrlForSecurityDisplay(url, SchemeDisplay.OMIT_HTTP_AND_HTTPS)); ++ originView.setText(url.getSpec()); + } + + /** Sets the security icon. */ diff --git a/chrome/browser/ui/toolbar/chrome_location_bar_model_delegate.cc b/chrome/browser/ui/toolbar/chrome_location_bar_model_delegate.cc --- a/chrome/browser/ui/toolbar/chrome_location_bar_model_delegate.cc +++ b/chrome/browser/ui/toolbar/chrome_location_bar_model_delegate.cc @@ -55,33 +55,76 @@ diff --git a/chrome/browser/ui/toolbar/chrome_location_bar_model_delegate.cc b/c diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/browser/ui/views/page_info/page_info_main_view.cc --- a/chrome/browser/ui/views/page_info/page_info_main_view.cc +++ b/chrome/browser/ui/views/page_info/page_info_main_view.cc -@@ -562,10 +562,14 @@ void PageInfoMainView::ChildPreferredSizeChanged(views::View* child) { +@@ -562,38 +562,41 @@ void PageInfoMainView::ChildPreferredSizeChanged(views::View* child) { } std::unique_ptr PageInfoMainView::CreateBubbleHeaderView() { -- auto header = std::make_unique(); -- header->SetLayoutManager(std::make_unique()) +- return views::Builder() +- .SetInteriorMargin(gfx::Insets::VH(0, 20)) +- .AddChildren( +- views::Builder( +- std::make_unique( +- std::u16string(), views::style::CONTEXT_DIALOG_TITLE, +- views::style::STYLE_HEADLINE_4, +- gfx::DirectionalityMode::DIRECTIONALITY_AS_URL)) +- .CopyAddressTo(&title_) +- .SetMultiLine(true) +- .SetAllowCharacterBreak(true) +- .SetHorizontalAlignment(gfx::ALIGN_LEFT) +- .SetProperty(views::kFlexBehaviorKey, +- views::FlexSpecification( +- views::LayoutOrientation::kHorizontal, +- views::MinimumFlexSizeRule::kScaleToZero, +- views::MaximumFlexSizeRule::kUnbounded) +- .WithWeight(1)), +- views::Builder( +- views::BubbleFrameView::CreateCloseButton( +- base::BindRepeating(&PageInfoNavigationHandler::CloseBubble, +- base::Unretained(navigation_handler_)))) +- .SetVisible(true) +- .SetProperty(views::kCrossAxisAlignmentKey, +- views::LayoutAlignment::kStart) +- .CustomConfigure(base::BindOnce([](views::View* button) { +- // Set views::kInternalPaddingKey for flex layout to account for +- // internal button padding when calculating margins. +- button->SetProperty(views::kInternalPaddingKey, +- button->GetInsets()); +- }))) +- .Build(); + auto cromite_header = std::make_unique(); + cromite_header->SetVerticalScrollBarMode(views::ScrollView::ScrollBarMode::kHiddenButEnabled); + cromite_header->SetHorizontalScrollBarMode(views::ScrollView::ScrollBarMode::kDisabled); + cromite_header->ClipHeightTo(0, 150); + auto scroll_contents = std::make_unique(); + scroll_contents->SetLayoutManager(std::make_unique()) - ->SetInteriorMargin(gfx::Insets::VH(0, 20)); -- title_ = header->AddChildView(std::make_unique( ++ ->SetInteriorMargin(gfx::Insets::VH(0, 20)); + title_ = scroll_contents->AddChildView(std::make_unique( - std::u16string(), views::style::CONTEXT_DIALOG_TITLE, - views::style::STYLE_HEADLINE_4, - gfx::DirectionalityMode::DIRECTIONALITY_AS_URL)); -@@ -589,9 +593,10 @@ std::unique_ptr PageInfoMainView::CreateBubbleHeaderView() { - // button padding when calculating margins. - close_button->SetProperty(views::kInternalPaddingKey, - close_button->GetInsets()); -- header->AddChildView(close_button.release()); ++ std::u16string(), views::style::CONTEXT_DIALOG_TITLE, ++ views::style::STYLE_HEADLINE_4, ++ gfx::DirectionalityMode::DIRECTIONALITY_AS_URL)); ++ title_->SetMultiLine(true); ++ title_->SetAllowCharacterBreak(true); ++ title_->SetHorizontalAlignment(gfx::ALIGN_LEFT); ++ title_->SetProperty( ++ views::kFlexBehaviorKey, ++ views::FlexSpecification(views::MinimumFlexSizeRule::kScaleToZero, ++ views::MaximumFlexSizeRule::kUnbounded, ++ /*adjust_height_for_width =*/true) ++ .WithWeight(1)); ++ auto close_button = views::BubbleFrameView::CreateCloseButton( ++ base::BindRepeating(&PageInfoNavigationHandler::CloseBubble, ++ base::Unretained(navigation_handler_))); ++ ++ close_button->SetVisible(true); ++ close_button->SetProperty(views::kCrossAxisAlignmentKey, ++ views::LayoutAlignment::kStart); ++ // Set views::kInternalPaddingKey for flex layout to account for internal ++ // button padding when calculating margins. ++ close_button->SetProperty(views::kInternalPaddingKey, ++ close_button->GetInsets()); + scroll_contents->AddChildView(close_button.release()); + cromite_header->SetContents(std::move(scroll_contents)); - -- return header; ++ + return cromite_header; } diff --git a/build/patches/Disable-safety-check.patch b/build/patches/Disable-safety-check.patch index b93ae4b5..027ed83c 100644 --- a/build/patches/Disable-safety-check.patch +++ b/build/patches/Disable-safety-check.patch @@ -4,19 +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/chrome_java_sources.gni | 1 - - .../android/java/res/xml/main_preferences.xml | 5 ----- - .../browser/settings/SettingsActivity.java | 18 ------------------ - .../browser/settings/SettingsLauncherImpl.java | 8 ++------ - chrome/browser/BUILD.gn | 1 - - .../suggestions/action/OmniboxPedal.java | 3 --- - 7 files changed, 2 insertions(+), 39 deletions(-) + chrome/android/BUILD.gn | 5 --- + chrome/android/chrome_java_sources.gni | 1 - + .../android/java/res/xml/main_preferences.xml | 10 ----- + .../settings/FragmentDependencyProvider.java | 37 ------------------- + .../settings/SettingsLauncherImpl.java | 13 +------ + chrome/browser/BUILD.gn | 1 - + .../suggestions/action/OmniboxPedal.java | 3 -- + 7 files changed, 2 insertions(+), 68 deletions(-) diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -465,7 +465,6 @@ if (current_toolchain == default_toolchain) { +@@ -475,7 +475,6 @@ if (current_toolchain == default_toolchain) { "//chrome/browser/recent_tabs:helper_java", "//chrome/browser/recent_tabs:java", "//chrome/browser/safe_browsing/android:java", @@ -24,7 +24,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", -@@ -1122,8 +1121,6 @@ if (current_toolchain == default_toolchain) { +@@ -1139,8 +1138,6 @@ if (current_toolchain == default_toolchain) { "//chrome/browser/recent_tabs:java", "//chrome/browser/recent_tabs:junit", "//chrome/browser/recent_tabs/internal:junit", @@ -33,7 +33,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//chrome/browser/safety_hub/android:java", "//chrome/browser/safety_hub/android:junit", "//chrome/browser/screenshot_monitor:java", -@@ -1778,8 +1775,6 @@ if (current_toolchain == default_toolchain) { +@@ -1803,8 +1800,6 @@ if (current_toolchain == default_toolchain) { "//chrome/browser/readaloud/android:java", "//chrome/browser/safe_browsing/android:java", "//chrome/browser/safe_browsing/android:javatests", @@ -56,33 +56,41 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml --- a/chrome/android/java/res/xml/main_preferences.xml +++ b/chrome/android/java/res/xml/main_preferences.xml -@@ -73,11 +73,6 @@ found in the LICENSE file. +@@ -56,16 +56,6 @@ for the previous order (main_preferences_legacy). --> android:key="privacy" - android:order="12" + android:order="8" android:title="@string/prefs_privacy_security"/> - - + + Profile::CreateProfile(const base::FilePath& path, +@@ -379,6 +379,7 @@ std::unique_ptr Profile::CreateProfile(const base::FilePath& path, void ProfileImpl::RegisterProfilePrefs( user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref(prefs::kSavingBrowserHistoryDisabled, false); @@ -218,7 +218,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/chrome/browser/resources/settings/privacy_page/privacy_page.ts --- a/chrome/browser/resources/settings/privacy_page/privacy_page.ts +++ b/chrome/browser/resources/settings/privacy_page/privacy_page.ts -@@ -82,6 +82,23 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { +@@ -83,6 +83,23 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { static get properties() { return { @@ -245,7 +245,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch 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 -@@ -1329,6 +1329,18 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1383,6 +1383,18 @@ Your Google account may have other forms of browsing history like searches and a Browsing history @@ -267,7 +267,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc --- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -@@ -1849,6 +1849,11 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source, +@@ -1770,6 +1770,11 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source, IDS_SETTINGS_SAFEBROWSING_ENHANCED_THINGS_TO_CONSIDER_BULLET_THREE}, {"safeBrowsingStandard", IDS_SETTINGS_SAFEBROWSING_STANDARD}, {"safeBrowsingStandardDesc", IDS_SETTINGS_SAFEBROWSING_STANDARD_DESC}, @@ -455,16 +455,7 @@ diff --git a/components/history/core/browser/expire_history_backend.h b/componen 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 -@@ -165,7 +165,7 @@ const int kMaxRedirectCount = 32; - - // The number of days old a history entry can be before it is considered "old" - // and is deleted. --constexpr int kExpireDaysThreshold = 90; -+int kExpireDaysThreshold = 90; - - // The maximum number of days for which domain visit metrics are computed - // each time HistoryBackend::GetDomainDiversity() is called. -@@ -1312,6 +1312,19 @@ void HistoryBackend::InitImpl( +@@ -1320,6 +1320,19 @@ void HistoryBackend::InitImpl( expirer_.StartExpiringOldStuff(base::Days(kExpireDaysThreshold)); } @@ -487,7 +478,16 @@ diff --git a/components/history/core/browser/history_backend.cc b/components/his diff --git a/components/history/core/browser/history_backend.h b/components/history/core/browser/history_backend.h --- a/components/history/core/browser/history_backend.h +++ b/components/history/core/browser/history_backend.h -@@ -233,6 +233,8 @@ class HistoryBackend : public base::RefCountedThreadSafe, +@@ -208,7 +208,7 @@ class HistoryBackend : public base::RefCountedThreadSafe, + + // The number of days old a history entry can be before it is considered "old" + // and is deleted. +- static constexpr int kExpireDaysThreshold = 90; ++ static int kExpireDaysThreshold = 90; + + // Init must be called to complete object creation. This object can be + // constructed on any thread, but all other functions including Init() must +@@ -237,6 +237,8 @@ class HistoryBackend : public base::RefCountedThreadSafe, void Init(bool force_fail, const HistoryDatabaseParams& history_database_params); @@ -509,7 +509,7 @@ diff --git a/components/history/core/browser/history_service.cc b/components/his #include "components/history/core/browser/download_row.h" #include "components/history/core/browser/features.h" #include "components/history/core/browser/history_backend.h" -@@ -568,6 +571,33 @@ base::CancelableTaskTracker::TaskId HistoryService::ScheduleDBTask( +@@ -564,6 +567,33 @@ base::CancelableTaskTracker::TaskId HistoryService::ScheduleDBTask( return task_id; } @@ -543,7 +543,7 @@ diff --git a/components/history/core/browser/history_service.cc b/components/his void HistoryService::ScheduleDBTaskForUI( base::OnceCallback callback) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -@@ -1492,6 +1522,9 @@ void HistoryService::Cleanup() { +@@ -1493,6 +1523,9 @@ void HistoryService::Cleanup() { return; } diff --git a/build/patches/Restore-Simplified-NTP-launch.patch b/build/patches/Restore-Simplified-NTP-launch.patch index 48e80251..62c5afa2 100644 --- a/build/patches/Restore-Simplified-NTP-launch.patch +++ b/build/patches/Restore-Simplified-NTP-launch.patch @@ -25,12 +25,12 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../tile/MostVisitedTilesMediator.java | 9 +- .../engagement/important_sites_util.cc | 2 +- .../flags/android/chrome_feature_list.cc | 1 + - .../browser/flags/ChromeFeatureList.java | 5 +- + .../browser/flags/ChromeFeatureList.java | 3 +- .../history/core/browser/top_sites_impl.h | 2 +- .../Restore-Simplified-NTP-launch.inc | 12 ++ .../Restore-Simplified-NTP-launch.inc | 6 + .../Restore-Simplified-NTP-launch.inc | 1 + - 24 files changed, 396 insertions(+), 30 deletions(-) + 24 files changed, 395 insertions(+), 29 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 @@ -41,7 +41,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -543,6 +543,7 @@ chrome_java_resources = [ +@@ -544,6 +544,7 @@ chrome_java_resources = [ "java/res/layout/new_tab_page_layout.xml", "java/res/layout/new_tab_page_tile_grid_placeholder.xml", "java/res/layout/open_full_chrome_history_header.xml", @@ -60,7 +60,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java "java/src/org/chromium/chrome/browser/findinpage/FindToolbar.java", "java/src/org/chromium/chrome/browser/findinpage/FindToolbarManager.java", "java/src/org/chromium/chrome/browser/findinpage/FindToolbarObserver.java", -@@ -1042,6 +1043,7 @@ chrome_java_sources = [ +@@ -1045,6 +1046,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/suggestions/mostvisited/MostVisitedSitesMetadataUtils.java", "java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator.java", "java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesLayout.java", @@ -194,7 +194,7 @@ diff --git a/chrome/android/java/res/values/attrs.xml b/chrome/android/java/res/ diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml --- a/chrome/android/java/res/values/dimens.xml +++ b/chrome/android/java/res/values/dimens.xml -@@ -127,6 +127,8 @@ found in the LICENSE file. +@@ -124,6 +124,8 @@ found in the LICENSE file. 62dp @@ -692,7 +692,7 @@ diff --git a/chrome/browser/engagement/important_sites_util.cc b/chrome/browser/ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -254,6 +254,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -257,6 +257,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kGtsCloseTabAnimation, &kIncognitoReauthenticationForAndroid, &kIncognitoScreenshot, @@ -703,7 +703,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -360,6 +360,7 @@ public abstract class ChromeFeatureList { +@@ -366,6 +366,7 @@ public abstract class ChromeFeatureList { public static final String MAYLAUNCHURL_USES_SEPARATE_STORAGE_PARTITION = "MayLaunchUrlUsesSeparateStoragePartition"; public static final String MESSAGES_FOR_ANDROID_ADS_BLOCKED = "MessagesForAndroidAdsBlocked"; @@ -711,7 +711,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final String SEARCH_READY_OMNIBOX = "SearchReadyOmnibox"; public static final String MOST_VISITED_TILES_RESELECT = "MostVisitedTilesReselect"; public static final String MUlTI_INSTANCE_APPLICATION_STATUS_CLEANUP = -@@ -640,7 +641,7 @@ public abstract class ChromeFeatureList { +@@ -658,7 +659,7 @@ public abstract class ChromeFeatureList { public static final CachedFlag sLogoPolish = newCachedFlag(LOGO_POLISH, true); public static final CachedFlag sLogoPolishAnimationKillSwitch = newCachedFlag(LOGO_POLISH_ANIMATION_KILL_SWITCH, true); @@ -720,15 +720,6 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final CachedFlag sMayLaunchurlUsesSeparateStoragePartition = newCachedFlag(MAYLAUNCHURL_USES_SEPARATE_STORAGE_PARTITION, false); public static final CachedFlag sMostVisitedTilesReselect = newCachedFlag(MOST_VISITED_TILES_RESELECT, false); -@@ -676,7 +677,7 @@ public abstract class ChromeFeatureList { - newCachedFlag(SMALLER_TAB_STRIP_TITLE_LIMIT, true); - public static final CachedFlag sStartSurfaceReturnTime = - newCachedFlag(START_SURFACE_RETURN_TIME, true); -- public static final CachedFlag sSurfacePolish = newCachedFlag(SURFACE_POLISH, true); -+ public static final CachedFlag sSurfacePolish = newCachedFlag(SURFACE_POLISH, false); - public static final CachedFlag sTabDragDropAsWindowAndroid = - newCachedFlag(TAB_DRAG_DROP_ANDROID, false); - public static final CachedFlag sTabGroupCreationDialogAndroid = diff --git a/components/history/core/browser/top_sites_impl.h b/components/history/core/browser/top_sites_impl.h --- a/components/history/core/browser/top_sites_impl.h +++ b/components/history/core/browser/top_sites_impl.h diff --git a/build/patches/Use-dummy-DFM-installer.patch b/build/patches/Use-dummy-DFM-installer.patch index f14d7c2f..9cb5346d 100644 --- a/build/patches/Use-dummy-DFM-installer.patch +++ b/build/patches/Use-dummy-DFM-installer.patch @@ -4,42 +4,31 @@ Subject: Use dummy DFM installer License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - components/module_installer/android/BUILD.gn | 2 - - .../engine/SplitCompatEngine.java | 77 +------------------ - .../engine/SplitCompatEngineFacade.java | 29 ++----- - .../module_installer/logger/Logger.java | 16 +--- - .../logger/PlayCoreLogger.java | 50 ++---------- - .../logger/SplitAvailabilityLogger.java | 40 ---------- - .../logger/SplitInstallStatusLogger.java | 30 +------- - .../module_installer/util/ModuleUtil.java | 5 -- + components/module_installer/android/BUILD.gn | 1 - + .../engine/SplitCompatEngine.java | 64 +------------------ + .../engine/SplitCompatEngineFacade.java | 26 +------- + .../module_installer/util/ModuleUtil.java | 3 - .../util/SplitCompatInitializer.java | 6 -- - 9 files changed, 19 insertions(+), 236 deletions(-) + 5 files changed, 3 insertions(+), 97 deletions(-) diff --git a/components/module_installer/android/BUILD.gn b/components/module_installer/android/BUILD.gn --- a/components/module_installer/android/BUILD.gn +++ b/components/module_installer/android/BUILD.gn -@@ -21,13 +21,11 @@ android_library("module_installer_java") { - "java/src/org/chromium/components/module_installer/logger/Logger.java", - "java/src/org/chromium/components/module_installer/logger/PlayCoreLogger.java", - "java/src/org/chromium/components/module_installer/logger/SplitAvailabilityLogger.java", -- "java/src/org/chromium/components/module_installer/logger/SplitInstallFailureLogger.java", - "java/src/org/chromium/components/module_installer/logger/SplitInstallStatusLogger.java", - "java/src/org/chromium/components/module_installer/observer/ActivityObserver.java", +@@ -22,7 +22,6 @@ android_library("module_installer_java") { "java/src/org/chromium/components/module_installer/observer/ActivityObserverFacade.java", "java/src/org/chromium/components/module_installer/observer/InstallerObserver.java", "java/src/org/chromium/components/module_installer/util/ActivityObserverUtil.java", - "java/src/org/chromium/components/module_installer/util/CrashKeyRecorder.java", "java/src/org/chromium/components/module_installer/util/ModuleUtil.java", "java/src/org/chromium/components/module_installer/util/SplitCompatInitializer.java", - "java/src/org/chromium/components/module_installer/util/Timer.java", + ] diff --git a/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngine.java b/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngine.java --- a/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngine.java +++ b/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngine.java -@@ -8,11 +8,6 @@ import android.app.Activity; +@@ -8,10 +8,6 @@ import android.app.Activity; import androidx.annotation.VisibleForTesting; --import com.google.android.play.core.splitinstall.SplitInstallException; -import com.google.android.play.core.splitinstall.SplitInstallRequest; -import com.google.android.play.core.splitinstall.SplitInstallStateUpdatedListener; -import com.google.android.play.core.splitinstall.model.SplitInstallSessionStatus; @@ -47,7 +36,7 @@ diff --git a/components/module_installer/android/java/src/org/chromium/component import org.chromium.base.ThreadUtils; import java.util.ArrayList; -@@ -25,7 +20,6 @@ import java.util.Set; +@@ -24,7 +20,6 @@ import java.util.Set; /** Install engine that uses Play Core and SplitCompat to install modules. */ class SplitCompatEngine implements InstallEngine { private final SplitCompatEngineFacade mFacade; @@ -55,7 +44,7 @@ diff --git a/components/module_installer/android/java/src/org/chromium/component private static final Map> sSessions = new HashMap<>(); public SplitCompatEngine() { -@@ -43,83 +37,20 @@ class SplitCompatEngine implements InstallEngine { +@@ -42,70 +37,19 @@ class SplitCompatEngine implements InstallEngine { @Override public boolean isInstalled(String moduleName) { @@ -67,7 +56,6 @@ diff --git a/components/module_installer/android/java/src/org/chromium/component @Override public void installDeferred(String moduleName) { - mFacade.getSplitManager().deferredInstall(Collections.singletonList(moduleName)); - mFacade.getLogger().logRequestDeferredStart(moduleName); } @Override @@ -92,18 +80,8 @@ diff --git a/components/module_installer/android/java/src/org/chromium/component - .startInstall(request) - .addOnFailureListener( - ex -> { -- int errorCode = -- ex instanceof SplitInstallException -- ? ((SplitInstallException) ex).getErrorCode() -- : mFacade.getLogger().getUnknownRequestErrorCode(); -- -- // TODO(fredmello): look into potential issues with mixing split error -- // code with our logger codes - fix accordingly. -- mFacade.getLogger().logRequestFailure(moduleName, errorCode); - notifyListeners(moduleName, false); - }); -- -- mFacade.getLogger().logRequestStart(moduleName); - } - - private SplitInstallStateUpdatedListener getStatusUpdateListener() { @@ -124,10 +102,8 @@ diff --git a/components/module_installer/android/java/src/org/chromium/component - break; - case SplitInstallSessionStatus.FAILED: - notifyListeners(moduleName, false); -- mFacade.getLogger().logStatusFailure(moduleName, state.errorCode()); - break; - } -- mFacade.getLogger().logStatus(moduleName, status); - } - }; } @@ -140,7 +116,7 @@ diff --git a/components/module_installer/android/java/src/org/chromium/component sSessions.remove(moduleName); unregisterUpdateListener(); -@@ -134,15 +65,9 @@ class SplitCompatEngine implements InstallEngine { +@@ -120,15 +64,9 @@ class SplitCompatEngine implements InstallEngine { } private void registerUpdateListener() { @@ -159,52 +135,39 @@ diff --git a/components/module_installer/android/java/src/org/chromium/component diff --git a/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngineFacade.java b/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngineFacade.java --- a/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngineFacade.java +++ b/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngineFacade.java -@@ -6,32 +6,28 @@ package org.chromium.components.module_installer.engine; +@@ -6,48 +6,26 @@ package org.chromium.components.module_installer.engine; import android.app.Activity; -import com.google.android.play.core.splitcompat.SplitCompat; -+/*import com.google.android.play.core.splitcompat.SplitCompat; - import com.google.android.play.core.splitinstall.SplitInstallManager; - import com.google.android.play.core.splitinstall.SplitInstallManagerFactory; +-import com.google.android.play.core.splitinstall.SplitInstallManager; +-import com.google.android.play.core.splitinstall.SplitInstallManagerFactory; -import com.google.android.play.core.splitinstall.SplitInstallRequest; -+import com.google.android.play.core.splitinstall.SplitInstallRequest;*/ - +- import org.chromium.base.ContextUtils; - import org.chromium.components.module_installer.logger.Logger; - import org.chromium.components.module_installer.logger.PlayCoreLogger; -import org.chromium.components.module_installer.util.ModuleUtil; -+//import org.chromium.components.module_installer.util.ModuleUtil; /** - * PlayCore SplitCompatEngine Context. Class used to segregate external dependencies that - * cannot be easily mocked and simplify the engine's design. + * PlayCore SplitCompatEngine Context. Class used to segregate external dependencies that cannot be + * easily mocked and simplify the engine's design. */ class SplitCompatEngineFacade { - private final SplitInstallManager mSplitManager; - private final Logger mLogger; - +- public SplitCompatEngineFacade() { -- this( -- SplitInstallManagerFactory.create(ContextUtils.getApplicationContext()), -- new PlayCoreLogger()); -+ this(new PlayCoreLogger()); - } - -- public SplitCompatEngineFacade(SplitInstallManager manager, Logger umaLogger) { +- this(SplitInstallManagerFactory.create(ContextUtils.getApplicationContext())); +- } +- +- public SplitCompatEngineFacade(SplitInstallManager manager) { - mSplitManager = manager; -+ public SplitCompatEngineFacade(Logger umaLogger) { - mLogger = umaLogger; - } - -@@ -39,25 +35,14 @@ class SplitCompatEngineFacade { - return mLogger; ++ this(null); } - public SplitInstallManager getSplitManager() { - return mSplitManager; -- } -- ++ public SplitCompatEngineFacade(Logger umaLogger) { + } + public void installActivity(Activity activity) { - // Note that SplitCompat (install) needs to be called on the Application Context prior - // to calling this method - this is guaranteed by the behavior of SplitCompatEngine. @@ -217,281 +180,22 @@ diff --git a/components/module_installer/android/java/src/org/chromium/component - - public SplitInstallRequest createSplitInstallRequest(String moduleName) { - return SplitInstallRequest.newBuilder().addModule(moduleName).build(); -+ //ModuleUtil.notifyModuleInstalled(); } public void updateCrashKeys() { - ModuleUtil.updateCrashKeys(); -+ //ModuleUtil.updateCrashKeys(); } } -diff --git a/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/Logger.java b/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/Logger.java ---- a/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/Logger.java -+++ b/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/Logger.java -@@ -4,9 +4,6 @@ - - package org.chromium.components.module_installer.logger; - --import com.google.android.play.core.splitinstall.model.SplitInstallErrorCode; --import com.google.android.play.core.splitinstall.model.SplitInstallSessionStatus; -- - /** Logger for SplitCompat Engine. */ - public interface Logger { - /** -@@ -15,7 +12,7 @@ public interface Logger { - * @param moduleName The module name. - * @param errorCode The error code. - */ -- void logRequestFailure(String moduleName, @SplitInstallErrorCode int errorCode); -+ void logRequestFailure(String moduleName, int errorCode); - - /** - * Logs exceptions that happen during the installation process. -@@ -23,7 +20,7 @@ public interface Logger { - * @param moduleName The module name. - * @param errorCode The error code. - */ -- void logStatusFailure(String moduleName, @SplitInstallErrorCode int errorCode); -+ void logStatusFailure(String moduleName, int errorCode); - - /** - * Logs the status count and duration during a module installation process. -@@ -31,7 +28,7 @@ public interface Logger { - * @param moduleName The module name - * @param status The status code - */ -- void logStatus(String moduleName, @SplitInstallSessionStatus int status); -+ void logStatus(String moduleName, int status); - - /** - * Logs the request start time. -@@ -46,11 +43,4 @@ public interface Logger { - * @param moduleName The module name. - */ - void logRequestDeferredStart(String moduleName); -- -- /** -- * Gets the error code for an unknown error thrown at module request time. -- * -- * @return The error code. -- */ -- int getUnknownRequestErrorCode(); - } -diff --git a/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/PlayCoreLogger.java b/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/PlayCoreLogger.java ---- a/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/PlayCoreLogger.java -+++ b/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/PlayCoreLogger.java -@@ -4,74 +4,38 @@ - - package org.chromium.components.module_installer.logger; - --import com.google.android.play.core.splitinstall.model.SplitInstallErrorCode; --import com.google.android.play.core.splitinstall.model.SplitInstallSessionStatus; -- - /** Concrete Logger for SplitCompat Installers (proxy to specific loggers). */ - public class PlayCoreLogger implements Logger { -- private final SplitInstallFailureLogger mFailureLogger; -- private final SplitInstallStatusLogger mStatusLogger; -- private final SplitAvailabilityLogger mAvailabilityLogger; -- - public PlayCoreLogger() { - this( -- new SplitInstallFailureLogger(), -- new SplitInstallStatusLogger(), -- new SplitAvailabilityLogger()); -+ null, -+ null, -+ null); - } - - public PlayCoreLogger( -- SplitInstallFailureLogger failureLogger, -+ Object failureLogger, - SplitInstallStatusLogger statusLogger, - SplitAvailabilityLogger availabilityLogger) { -- mFailureLogger = failureLogger; -- mStatusLogger = statusLogger; -- mAvailabilityLogger = availabilityLogger; - } - - @Override -- public void logRequestFailure(String moduleName, @SplitInstallErrorCode int errorCode) { -- mFailureLogger.logRequestFailure(moduleName, errorCode); -+ public void logRequestFailure(String moduleName, int errorCode) { - } - - @Override -- public void logStatusFailure(String moduleName, @SplitInstallErrorCode int errorCode) { -- mFailureLogger.logStatusFailure(moduleName, errorCode); -+ public void logStatusFailure(String moduleName, int errorCode) { - } - - @Override -- public void logStatus(String moduleName, @SplitInstallSessionStatus int status) { -- mStatusLogger.logStatusChange(moduleName, status); -- -- if (status == SplitInstallSessionStatus.INSTALLED) { -- mAvailabilityLogger.storeModuleInstalled(moduleName, status); -- mAvailabilityLogger.logInstallTimes(moduleName); -- -- // Keep old behavior where we log a 'success' bit with all other failures. -- mFailureLogger.logStatusSuccess(moduleName); -- } else if (status == SplitInstallSessionStatus.CANCELED) { -- // Keep old behavior where we log a 'canceled' bit with all other failures. -- mFailureLogger.logStatusCanceled(moduleName); -- } else if (status == SplitInstallSessionStatus.DOWNLOADED) { -- // Keep old behavior where we log a 'no split compat' bit with all other failures. -- mFailureLogger.logStatusNoSplitCompat(moduleName); -- } -+ public void logStatus(String moduleName, int status) { - } - - @Override - public void logRequestStart(String moduleName) { -- mStatusLogger.logRequestStart(moduleName); -- mAvailabilityLogger.storeRequestStart(moduleName); - } - - @Override - public void logRequestDeferredStart(String moduleName) { -- mStatusLogger.logRequestDeferredStart(moduleName); -- mAvailabilityLogger.storeRequestDeferredStart(moduleName); -- } -- -- @Override -- public int getUnknownRequestErrorCode() { -- return SplitInstallFailureLogger.UNKNOWN_REQUEST_ERROR; - } - } -diff --git a/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/SplitAvailabilityLogger.java b/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/SplitAvailabilityLogger.java ---- a/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/SplitAvailabilityLogger.java -+++ b/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/SplitAvailabilityLogger.java -@@ -9,10 +9,6 @@ import android.content.SharedPreferences; - import android.os.SystemClock; - import android.util.SparseLongArray; - --import com.google.android.play.core.splitinstall.SplitInstallManager; --import com.google.android.play.core.splitinstall.SplitInstallManagerFactory; --import com.google.android.play.core.splitinstall.model.SplitInstallSessionStatus; -- - import org.chromium.base.ContextUtils; - import org.chromium.base.metrics.RecordHistogram; - -@@ -50,21 +46,6 @@ public class SplitAvailabilityLogger { - Set requestedModules = new HashSet<>(); - requestedModules.addAll(prefs.getStringSet(ONDEMAND_REQ_PREV, new HashSet<>())); - requestedModules.addAll(prefs.getStringSet(DEFERRED_REQ_PREV, new HashSet<>())); -- -- Context context = ContextUtils.getApplicationContext(); -- SplitInstallManager manager = SplitInstallManagerFactory.create(context); -- Set installedModules = manager.getInstalledModules(); -- -- for (String name : requestedModules) { -- recordAvailabilityStatus( -- name, installedModules.contains(name) ? INSTALLED_REQUESTED : REQUESTED); -- } -- -- for (String name : installedModules) { -- if (!requestedModules.contains(name)) { -- recordAvailabilityStatus(name, INSTALLED_UNREQUESTED); -- } -- } - } - - private static void recordAvailabilityStatus(String moduleName, int status) { -@@ -78,26 +59,6 @@ public class SplitAvailabilityLogger { - * @param moduleName The module name. - */ - public void logInstallTimes(String moduleName) { -- recordInstallTime( -- moduleName, -- "", -- SplitInstallSessionStatus.UNKNOWN, -- SplitInstallSessionStatus.INSTALLED); -- recordInstallTime( -- moduleName, -- ".PendingDownload", -- SplitInstallSessionStatus.UNKNOWN, -- SplitInstallSessionStatus.DOWNLOADING); -- recordInstallTime( -- moduleName, -- ".Download", -- SplitInstallSessionStatus.DOWNLOADING, -- SplitInstallSessionStatus.INSTALLING); -- recordInstallTime( -- moduleName, -- ".Installing", -- SplitInstallSessionStatus.INSTALLING, -- SplitInstallSessionStatus.INSTALLED); - } - - /** -@@ -184,7 +145,6 @@ public class SplitAvailabilityLogger { - - public InstallTimes(boolean isCached) { - mIsCached = isCached; -- mInstallTimes.put(SplitInstallSessionStatus.UNKNOWN, SystemClock.uptimeMillis()); - } - } - } -diff --git a/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/SplitInstallStatusLogger.java b/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/SplitInstallStatusLogger.java ---- a/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/SplitInstallStatusLogger.java -+++ b/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/SplitInstallStatusLogger.java -@@ -4,8 +4,6 @@ - - package org.chromium.components.module_installer.logger; - --import com.google.android.play.core.splitinstall.model.SplitInstallSessionStatus; -- - import org.chromium.base.metrics.RecordHistogram; - - class SplitInstallStatusLogger { -@@ -28,33 +26,7 @@ class SplitInstallStatusLogger { - // Keep this one at the end and increment appropriately when adding new status. - private static final int COUNT = 12; - -- private int getHistogramCode(@SplitInstallSessionStatus int code) { -- switch (code) { -- case SplitInstallSessionStatus.PENDING: -- return PENDING; -- case SplitInstallSessionStatus.DOWNLOADING: -- return DOWNLOADING; -- case SplitInstallSessionStatus.DOWNLOADED: -- return DOWNLOADED; -- case SplitInstallSessionStatus.INSTALLING: -- return INSTALLING; -- case SplitInstallSessionStatus.INSTALLED: -- return INSTALLED; -- case SplitInstallSessionStatus.FAILED: -- return FAILED; -- case SplitInstallSessionStatus.CANCELING: -- return CANCELING; -- case SplitInstallSessionStatus.CANCELED: -- return CANCELED; -- case SplitInstallSessionStatus.REQUIRES_USER_CONFIRMATION: -- return REQUIRES_USER_CONFIRMATION; -- } -- -- return UNKNOWN_CODE; -- } -- -- public void logStatusChange(String moduleName, @SplitInstallSessionStatus int status) { -- recordInstallStatus(moduleName, getHistogramCode(status)); -+ public void logStatusChange(String moduleName, int status) { - } - - public void logRequestStart(String moduleName) { diff --git a/components/module_installer/android/java/src/org/chromium/components/module_installer/util/ModuleUtil.java b/components/module_installer/android/java/src/org/chromium/components/module_installer/util/ModuleUtil.java --- a/components/module_installer/android/java/src/org/chromium/components/module_installer/util/ModuleUtil.java +++ b/components/module_installer/android/java/src/org/chromium/components/module_installer/util/ModuleUtil.java -@@ -23,11 +23,6 @@ public class ModuleUtil { - +@@ -10,9 +10,6 @@ import org.chromium.build.BuildConfig; + public class ModuleUtil { /** Updates the CrashKey report containing modules currently present. */ public static void updateCrashKeys() { -- if (!BundleUtils.isBundle()) return; +- if (!BuildConfig.IS_BUNDLE) return; - -- try (Timer timer = new Timer()) { -- CrashKeyRecorder.updateCrashKeys(); -- } +- CrashKeyRecorder.updateCrashKeys(); } /** Initializes the PlayCore SplitCompat framework. */