diff --git a/build/bromite_patches_list.txt b/build/bromite_patches_list.txt index 8e212df5..2cf2f193 100644 --- a/build/bromite_patches_list.txt +++ b/build/bromite_patches_list.txt @@ -211,10 +211,11 @@ Add-kill-switch-for-unsupported-clangd-flags.patch 00109-ADDTO-Add-webGL-site-setting.patch 00109-ADDTO-Add-webRTC-site-settings.patch 00109-ADDTO-Add-a-proxy-configuration-page.patch - 00109-ADDTO-OpenSearch--miscellaneous.patch + 00AdblockPlus.patch 00Eyeo-Adblock-Remove-Privacy-Issues.patch + 00WIN-ADDTO-Eyeo-Adblock.patch 00WIN-ADDTO-Add-an-always-incognito-mode.patch 00WIN-ADDTO-Experimental-user-scripts-support.patch @@ -246,6 +247,7 @@ Add-kill-switch-for-unsupported-clangd-flags.patch 00WIN-ADDTO-ungoogled-chromium--no-special-hosts-d.patch 00WIN-ADDTO-Logcat-crash-reports-UI.patch 00WIN-ADDTO-Add-AllowUserCertificates-flag.patch + 00109-ADDNEW-ungoogled-chr-no-special-hosts-domains.patch 00109-ADDNEW-Disable-fetching-of-all-field-trials.patch 00109-ADDNEW-Guard-for-user-agent-reduction.patch @@ -254,6 +256,7 @@ Add-kill-switch-for-unsupported-clangd-flags.patch 00109-ADDNEW-Remove-HTTP-referrals-in-cross-origin-navi.patch 00109-ADDNEW-Enable-share-intent.patch 00109-ADDNEW-Add-an-always-incognito-mode.patch + 00110-ADDTO-Samsung-Note-9-SDK27-crazylinker-workaro.patch 00110-ADDTO-Remove-signin-and-sync-integrations.patch 00110-ADDTO-Experimental-user-scripts-support.patch @@ -270,16 +273,17 @@ Add-kill-switch-for-unsupported-clangd-flags.patch 00110-ADDTO-JIT-site-settings.patch 00110-ADDTO-Site-setting-for-images.patch 00110-ADDTO-Allow-building-without-enable-reporting.patch -00110-ADDTO-Viewport-Protection-flag.patch 00110-ADDTO-Revert-removal-of-execution-context-addr.patch 00110-ADDTO-Add-custom-tab-intents-privacy-option.patch 00110-ADDTO-Multiple-fingerprinting-mitigations.patch 00110-ADDTO-Disable-all-predictors-code.patch + 00WIN-enable-pdf-plugin.patch 00WIN-disable-annotate-downloads.patch 00WIN-enable-HighEfficiencyMode-by-default.patch 00WIN-enable-file-system-access-blocklist.patch 00WIN-Fix-windows-build.patch + 00Temp-Disable-kAutomaticLazyFrameLoadingToEmbeds.patch 00temporary-fix-libaom-build-error.patch 00Remove-experimental-relative-c---abi-vtables.patch @@ -294,3 +298,4 @@ AudioBuffer-AnalyserNode-fp-mitigations.patch 00Disable-BackForwardCache.patch 00Evict-the-entire-FrameTree-like-desktop.patch 00WIP-disable-visited-pseudo-class.patch +00Add-setting-to-clear-data-on-exit.patch diff --git a/build/patches/00110-ADDTO-Viewport-Protection-flag.patch b/build/patches/00110-ADDTO-Viewport-Protection-flag.patch deleted file mode 100644 index 013c63cc..00000000 --- a/build/patches/00110-ADDTO-Viewport-Protection-flag.patch +++ /dev/null @@ -1,22 +0,0 @@ -From: Your Name -Date: Tue, 14 Feb 2023 16:05:49 +0000 -Subject: 110 ADDTO Viewport Protection flag - ---- - third_party/blink/renderer/core/css/media_values.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/third_party/blink/renderer/core/css/media_values.cc b/third_party/blink/renderer/core/css/media_values.cc ---- a/third_party/blink/renderer/core/css/media_values.cc -+++ b/third_party/blink/renderer/core/css/media_values.cc -@@ -176,7 +176,7 @@ bool MediaValues::CalculateStrictMode(LocalFrame* frame) { - } - - float MediaValues::CalculateDevicePixelRatio(LocalFrame* frame) { -- return frame->DevicePixelRatio(); -+ return frame->DevicePixelRatio(false); - } - - bool MediaValues::CalculateDeviceSupportsHDR(LocalFrame* frame) { --- -2.25.1 diff --git a/build/patches/00Add-setting-to-clear-data-on-exit.patch b/build/patches/00Add-setting-to-clear-data-on-exit.patch new file mode 100644 index 00000000..8081676d --- /dev/null +++ b/build/patches/00Add-setting-to-clear-data-on-exit.patch @@ -0,0 +1,605 @@ +From: Your Name +Date: Thu, 16 Feb 2023 15:28:16 +0000 +Subject: Add setting to clear data on exit + +--- + chrome/android/chrome_java_sources.gni | 1 + + .../chrome/browser/ChromeTabbedActivity.java | 7 +- + .../ClearBrowsingDataFragment.java | 6 ++ + .../ClearBrowsingDataFragmentAtStart.java | 74 +++++++++++++++++++ + .../ClearBrowsingDataTabsFragment.java | 7 +- + chrome/app/settings_strings.grdp | 3 + + .../browsing_data/browsing_data_bridge.cc | 2 +- + .../chrome_browsing_data_lifetime_manager.cc | 22 +++++- + .../chrome_browsing_data_remover_delegate.cc | 7 ++ + .../api/settings_private/prefs_util.cc | 17 +++++ + .../browser/profiles/ProfileManagerUtils.java | 5 ++ + .../profiles/android/profile_manager_utils.cc | 5 ++ + chrome/browser/profiles/profile_manager.cc | 13 ++++ + chrome/browser/profiles/profile_manager.h | 2 + + .../clear_browsing_data_dialog.html | 44 +++++++++++ + .../clear_browsing_data_dialog.ts | 1 + + .../strings/android_chrome_strings.grd | 3 + + .../settings_localized_strings_provider.cc | 1 + + .../browsing_data/core/browsing_data_utils.cc | 34 +++++++++ + .../core/clear_browsing_data_tab.h | 2 +- + components/browsing_data/core/pref_names.cc | 35 +++++++++ + components/browsing_data/core/pref_names.h | 9 +++ + 22 files changed, 294 insertions(+), 6 deletions(-) + create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragmentAtStart.java + +diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni +--- a/chrome/android/chrome_java_sources.gni ++++ b/chrome/android/chrome_java_sources.gni +@@ -272,6 +272,7 @@ chrome_java_sources = [ + "java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragmentAdvanced.java", + "java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragmentBasic.java", + "java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataTabsFragment.java", ++ "java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragmentAtStart.java", + "java/src/org/chromium/chrome/browser/browsing_data/ConfirmImportantSitesDialogFragment.java", + "java/src/org/chromium/chrome/browser/browsing_data/OtherFormsOfHistoryDialogFragment.java", + "java/src/org/chromium/chrome/browser/browsing_data/UrlFilter.java", +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +@@ -135,6 +135,7 @@ import org.chromium.chrome.browser.preferences.SharedPreferencesManager; + import org.chromium.chrome.browser.profiles.OTRProfileID; + import org.chromium.chrome.browser.profiles.Profile; + import org.chromium.chrome.browser.profiles.ProfileManager; ++import org.chromium.chrome.browser.profiles.ProfileManagerUtils; + import org.chromium.chrome.browser.read_later.ReadingListBackPressHandler; + import org.chromium.chrome.browser.read_later.ReadingListUtils; + import org.chromium.chrome.browser.reengagement.ReengagementNotificationController; +@@ -1321,7 +1322,11 @@ public class ChromeTabbedActivity extends ChromeActivity. ++*/ ++ ++package org.chromium.chrome.browser.browsing_data; ++ ++import android.content.Context; ++import android.os.Bundle; ++import android.view.View; ++ ++import androidx.annotation.IntDef; ++import androidx.preference.Preference; ++ ++import org.chromium.base.Callback; ++import org.chromium.chrome.R; ++import org.chromium.chrome.browser.profiles.Profile; ++import org.chromium.components.browser_ui.settings.SpinnerPreference; ++ ++import java.lang.annotation.Retention; ++import java.lang.annotation.RetentionPolicy; ++import java.util.Arrays; ++import java.util.List; ++ ++public class ClearBrowsingDataFragmentAtStart extends ClearBrowsingDataFragment { ++ static final String PREF_TIME_RANGE = "time_period_spinner"; ++ ++ @Override ++ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { ++ super.onCreatePreferences(savedInstanceState, rootKey); ++ ++ SpinnerPreference spinner = (SpinnerPreference) findPreference(PREF_TIME_RANGE); ++ if (spinner != null) { ++ getPreferenceScreen().removePreference(spinner); ++ } ++ } ++ ++ private boolean isHistorySyncEnabled() { ++ return false; ++ } ++ ++ @Override ++ protected int getClearBrowsingDataTabType() { ++ return ClearBrowsingDataTab.AT_START; ++ } ++ ++ @Override ++ protected List getDialogOptions() { ++ return Arrays.asList(DialogOption.CLEAR_HISTORY, DialogOption.CLEAR_COOKIES_AND_SITE_DATA, ++ DialogOption.CLEAR_CACHE, DialogOption.CLEAR_PASSWORDS, ++ DialogOption.CLEAR_FORM_DATA, DialogOption.CLEAR_SITE_SETTINGS); ++ } ++ ++ @Override ++ protected void onClearBrowsingData() { ++ } ++ ++ @Override ++ protected boolean shouldClearBrowsingData() { ++ return false; ++ } ++} +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataTabsFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataTabsFragment.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataTabsFragment.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataTabsFragment.java +@@ -33,7 +33,7 @@ import org.chromium.chrome.browser.settings.SettingsActivity; + * Fragment with a {@link TabLayout} containing a basic and an advanced version of the CBD dialog. + */ + public class ClearBrowsingDataTabsFragment extends Fragment { +- public static final int CBD_TAB_COUNT = 2; ++ public static final int CBD_TAB_COUNT = 3; + + private ClearBrowsingDataFetcher mFetcher; + +@@ -91,6 +91,8 @@ public class ClearBrowsingDataTabsFragment extends Fragment { + return getActivity().getString(R.string.clear_browsing_data_basic_tab_title); + case 1: + return getActivity().getString(R.string.prefs_section_advanced); ++ case 2: ++ return getActivity().getString(R.string.clear_browsing_data_atstart_tab_title); + default: + throw new RuntimeException("invalid position: " + position); + } +@@ -128,6 +130,9 @@ public class ClearBrowsingDataTabsFragment extends Fragment { + case 1: + fragment = new ClearBrowsingDataFragmentAdvanced(); + break; ++ case 2: ++ fragment = new ClearBrowsingDataFragmentAtStart(); ++ break; + default: + throw new RuntimeException("invalid position: " + position); + } +diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp +--- a/chrome/app/settings_strings.grdp ++++ b/chrome/app/settings_strings.grdp +@@ -2533,6 +2533,9 @@ + + Clear browsing data + ++ ++ At Startup ++ + + Clear history, cookies, cache, and more + +diff --git a/chrome/browser/android/browsing_data/browsing_data_bridge.cc b/chrome/browser/android/browsing_data/browsing_data_bridge.cc +--- a/chrome/browser/android/browsing_data/browsing_data_bridge.cc ++++ b/chrome/browser/android/browsing_data/browsing_data_bridge.cc +@@ -340,7 +340,7 @@ static void JNI_BrowsingDataBridge_SetLastClearBrowsingDataTab( + const JavaParamRef& obj, + jint tab_index) { + DCHECK_GE(tab_index, 0); +- DCHECK_LT(tab_index, 2); ++ DCHECK_LT(tab_index, 3); + GetPrefService()->SetInteger(browsing_data::prefs::kLastClearBrowsingDataTab, + tab_index); + } +diff --git a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.cc b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.cc +--- a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.cc ++++ b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.cc +@@ -303,8 +303,26 @@ void ChromeBrowsingDataLifetimeManager::Shutdown() { + + void ChromeBrowsingDataLifetimeManager::ClearBrowsingDataForOnExitPolicy( + bool keep_browser_alive) { +- const base::Value::List& data_types = profile_->GetPrefs()->GetList( +- browsing_data::prefs::kClearBrowsingDataOnExitList); ++ base::Value::List data_types = profile_->GetPrefs()->GetList( ++ browsing_data::prefs::kClearBrowsingDataOnExitList).Clone(); ++ ++ if (profile_->GetPrefs()->GetBoolean(browsing_data::prefs::kDeleteBrowsingHistoryAtStart)) ++ data_types.Append(browsing_data::policy_data_types::kBrowsingHistory); ++ if (profile_->GetPrefs()->GetBoolean(browsing_data::prefs::kDeleteDownloadHistoryAtStart)) ++ data_types.Append(browsing_data::policy_data_types::kDownloadHistory); ++ if (profile_->GetPrefs()->GetBoolean(browsing_data::prefs::kDeleteCacheAtStart)) ++ data_types.Append(browsing_data::policy_data_types::kCachedImagesAndFiles); ++ if (profile_->GetPrefs()->GetBoolean(browsing_data::prefs::kDeleteCookiesAtStart)) ++ data_types.Append(browsing_data::policy_data_types::kCookiesAndOtherSiteData); ++ if (profile_->GetPrefs()->GetBoolean(browsing_data::prefs::kDeletePasswordsAtStart)) ++ data_types.Append(browsing_data::policy_data_types::kPasswordSignin); ++ if (profile_->GetPrefs()->GetBoolean(browsing_data::prefs::kDeleteFormDataAtStart)) ++ data_types.Append(browsing_data::policy_data_types::kAutofill); ++ if (profile_->GetPrefs()->GetBoolean(browsing_data::prefs::kDeleteHostedAppsDataAtStart)) ++ data_types.Append(browsing_data::policy_data_types::kHostedAppData); ++ if (profile_->GetPrefs()->GetBoolean(browsing_data::prefs::kDeleteSiteSettingsAtStart)) ++ data_types.Append(browsing_data::policy_data_types::kSiteSettings); ++ + if (!data_types.empty() && !SyncServiceFactory::IsSyncAllowed(profile_)) { + profile_->GetPrefs()->SetBoolean( + browsing_data::prefs::kClearBrowsingDataOnExitDeletionPending, true); +diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc +--- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc ++++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc +@@ -423,6 +423,9 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( + delete_end_, CreateTaskCompletionClosure(TracingDataType::kHistory), + &history_task_tracker_); + } ++ } ++ ++ if (remove_mask & content::BrowsingDataRemover::DATA_TYPE_CACHE) { + if (ClipboardRecentContent::GetInstance()) + ClipboardRecentContent::GetInstance()->SuppressClipboardContent(); + +@@ -473,7 +476,9 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( + prerender::NoStatePrefetchManager::CLEAR_PRERENDER_CONTENTS | + prerender::NoStatePrefetchManager::CLEAR_PRERENDER_HISTORY); + } ++ } + ++ if ((remove_mask & constants::DATA_TYPE_HISTORY) && may_delete_history) { + // The saved Autofill profiles and credit cards can include the origin from + // which these profiles and credit cards were learned. These are a form of + // history, so clear them as well. +@@ -494,7 +499,9 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( + if (data_manager) + data_manager->Refresh(); + } ++ } + ++ if (remove_mask & content::BrowsingDataRemover::DATA_TYPE_CACHE) { + base::ThreadPool::PostTaskAndReply( + FROM_HERE, {base::TaskPriority::USER_VISIBLE, base::MayBlock()}, + base::BindOnce( +diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chrome/browser/extensions/api/settings_private/prefs_util.cc +--- a/chrome/browser/extensions/api/settings_private/prefs_util.cc ++++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc +@@ -474,6 +474,23 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { + (*s_allowlist)[browsing_data::prefs::kLastClearBrowsingDataTab] = + settings_api::PrefType::PREF_TYPE_NUMBER; + ++ (*s_allowlist)[browsing_data::prefs::kDeleteBrowsingHistoryAtStart] = ++ settings_api::PrefType::PREF_TYPE_BOOLEAN; ++ (*s_allowlist)[browsing_data::prefs::kDeleteDownloadHistoryAtStart] = ++ settings_api::PrefType::PREF_TYPE_BOOLEAN; ++ (*s_allowlist)[browsing_data::prefs::kDeleteCacheAtStart] = ++ settings_api::PrefType::PREF_TYPE_BOOLEAN; ++ (*s_allowlist)[browsing_data::prefs::kDeleteCookiesAtStart] = ++ settings_api::PrefType::PREF_TYPE_BOOLEAN; ++ (*s_allowlist)[browsing_data::prefs::kDeletePasswordsAtStart] = ++ settings_api::PrefType::PREF_TYPE_BOOLEAN; ++ (*s_allowlist)[browsing_data::prefs::kDeleteFormDataAtStart] = ++ settings_api::PrefType::PREF_TYPE_BOOLEAN; ++ (*s_allowlist)[browsing_data::prefs::kDeleteSiteSettingsAtStart] = ++ settings_api::PrefType::PREF_TYPE_BOOLEAN; ++ (*s_allowlist)[browsing_data::prefs::kDeleteHostedAppsDataAtStart] = ++ settings_api::PrefType::PREF_TYPE_BOOLEAN; ++ + // Accessibility. + (*s_allowlist)[::prefs::kAccessibilityImageLabelsEnabled] = + settings_api::PrefType::PREF_TYPE_BOOLEAN; +diff --git a/chrome/browser/profiles/android/java/src/org/chromium/chrome/browser/profiles/ProfileManagerUtils.java b/chrome/browser/profiles/android/java/src/org/chromium/chrome/browser/profiles/ProfileManagerUtils.java +--- a/chrome/browser/profiles/android/java/src/org/chromium/chrome/browser/profiles/ProfileManagerUtils.java ++++ b/chrome/browser/profiles/android/java/src/org/chromium/chrome/browser/profiles/ProfileManagerUtils.java +@@ -52,9 +52,14 @@ public class ProfileManagerUtils { + } + } + ++ public static void removeBrowsingDataAtStart() { ++ ProfileManagerUtilsJni.get().removeBrowsingDataAtStart(); ++ } ++ + @NativeMethods + interface Natives { + void flushPersistentDataForAllProfiles(); + void removeSessionCookiesForAllProfiles(); ++ void removeBrowsingDataAtStart(); + } + } +diff --git a/chrome/browser/profiles/android/profile_manager_utils.cc b/chrome/browser/profiles/android/profile_manager_utils.cc +--- a/chrome/browser/profiles/android/profile_manager_utils.cc ++++ b/chrome/browser/profiles/android/profile_manager_utils.cc +@@ -66,3 +66,8 @@ static void JNI_ProfileManagerUtils_RemoveSessionCookiesForAllProfiles( + g_browser_process->profile_manager()->GetLoadedProfiles(), + RemoveSessionCookiesForProfile); + } ++ ++static void JNI_ProfileManagerUtils_RemoveBrowsingDataAtStart( ++ JNIEnv* env) { ++ g_browser_process->profile_manager()->RemoveBrowsingDataAtStart(); ++} +diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc +--- a/chrome/browser/profiles/profile_manager.cc ++++ b/chrome/browser/profiles/profile_manager.cc +@@ -1390,6 +1390,19 @@ void ProfileManager::DoFinalInit(ProfileInfo* profile_info, + } + } + ++void ProfileManager::RemoveBrowsingDataAtStart() { ++ base::ranges::for_each( ++ GetLoadedProfiles(), ++ [](Profile* profile) { ++ auto* browsing_data_lifetime_manager = ++ ChromeBrowsingDataLifetimeManagerFactory::GetForProfile(profile); ++ if (browsing_data_lifetime_manager && !profile->IsOffTheRecord()) { ++ browsing_data_lifetime_manager->ClearBrowsingDataForOnExitPolicy( ++ /*keep_browser_alive=*/false); ++ } ++ }); ++} ++ + void ProfileManager::DoFinalInitForServices(Profile* profile, + bool go_off_the_record) { + if (!do_final_services_init_ || +diff --git a/chrome/browser/profiles/profile_manager.h b/chrome/browser/profiles/profile_manager.h +--- a/chrome/browser/profiles/profile_manager.h ++++ b/chrome/browser/profiles/profile_manager.h +@@ -195,6 +195,8 @@ class ProfileManager : public Profile::Delegate { + // profiles. + std::vector GetLoadedProfiles() const; + ++ void RemoveBrowsingDataAtStart(); ++ + // If a profile with the given path is currently managed by this object and + // fully initialized, return a pointer to the corresponding Profile object; + // otherwise return null. +diff --git a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.html b/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.html +--- a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.html ++++ b/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.html +@@ -283,6 +283,50 @@ + disabled="[[clearingInProgress_]]" no-set-pref> + + ++
++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
+ + +
+diff --git a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.ts b/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.ts +--- a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.ts ++++ b/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.ts +@@ -229,6 +229,7 @@ export class SettingsClearBrowsingDataDialogElement extends + value: () => + [loadTimeData.getString('basicPageTitle'), + loadTimeData.getString('advancedPageTitle'), ++ loadTimeData.getString('atStartPageTitle'), + ], + }, + +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 +@@ -1649,6 +1649,9 @@ Your Google account may have other forms of browsing history like searches and a + + Basic + ++ ++ At Startup ++ + + Your Google Account may have other forms of browsing history at <link>myactivity.google.com</link>. + +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 +@@ -1705,6 +1705,7 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source, + {"clearedData", IDS_SETTINGS_CLEARED_DATA}, + {"clearBrowsingData", IDS_SETTINGS_CLEAR_BROWSING_DATA}, + {"clearBrowsingDataDescription", IDS_SETTINGS_CLEAR_DATA_DESCRIPTION}, ++ {"atStartPageTitle", IDS_CLEAR_BROWSING_DATA_ATSTART_TAB_TITLE}, + {"titleAndCount", IDS_SETTINGS_TITLE_AND_COUNT}, + {"safeBrowsingEnableExtendedReportingDesc", + IDS_SETTINGS_SAFEBROWSING_ENABLE_REPORTING_DESC}, +diff --git a/components/browsing_data/core/browsing_data_utils.cc b/components/browsing_data/core/browsing_data_utils.cc +--- a/components/browsing_data/core/browsing_data_utils.cc ++++ b/components/browsing_data/core/browsing_data_utils.cc +@@ -302,6 +302,40 @@ bool GetDeletionPreferenceFromDataType( + BrowsingDataType data_type, + ClearBrowsingDataTab clear_browsing_data_tab, + std::string* out_pref) { ++ if (clear_browsing_data_tab == ClearBrowsingDataTab::AT_START) { ++ switch (data_type) { ++ case BrowsingDataType::HISTORY: ++ *out_pref = prefs::kDeleteBrowsingHistoryAtStart; ++ return true; ++ case BrowsingDataType::CACHE: ++ *out_pref = prefs::kDeleteCacheAtStart; ++ return true; ++ case BrowsingDataType::COOKIES: ++ *out_pref = prefs::kDeleteCookiesAtStart; ++ return true; ++ case BrowsingDataType::PASSWORDS: ++ *out_pref = prefs::kDeletePasswordsAtStart; ++ return true; ++ case BrowsingDataType::FORM_DATA: ++ *out_pref = prefs::kDeleteFormDataAtStart; ++ return true; ++ case BrowsingDataType::BOOKMARKS: ++ return false; ++ case BrowsingDataType::SITE_SETTINGS: ++ *out_pref = prefs::kDeleteSiteSettingsAtStart; ++ return true; ++ case BrowsingDataType::DOWNLOADS: ++ *out_pref = prefs::kDeleteDownloadHistoryAtStart; ++ return true; ++ case BrowsingDataType::HOSTED_APPS_DATA: ++ *out_pref = prefs::kDeleteHostedAppsDataAtStart; ++ return true; ++ case BrowsingDataType::NUM_TYPES: ++ NOTREACHED(); // This is not an actual type. ++ return false; ++ } ++ } ++ + if (clear_browsing_data_tab == ClearBrowsingDataTab::BASIC) { + switch (data_type) { + case BrowsingDataType::HISTORY: +diff --git a/components/browsing_data/core/clear_browsing_data_tab.h b/components/browsing_data/core/clear_browsing_data_tab.h +--- a/components/browsing_data/core/clear_browsing_data_tab.h ++++ b/components/browsing_data/core/clear_browsing_data_tab.h +@@ -18,7 +18,7 @@ namespace browsing_data { + // + // A Java counterpart will be generated for this enum. + // GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.browsing_data +-enum class ClearBrowsingDataTab { BASIC, ADVANCED, NUM_TYPES }; ++enum class ClearBrowsingDataTab { BASIC, ADVANCED, AT_START, NUM_TYPES }; + + } // namespace browsing_data + +diff --git a/components/browsing_data/core/pref_names.cc b/components/browsing_data/core/pref_names.cc +--- a/components/browsing_data/core/pref_names.cc ++++ b/components/browsing_data/core/pref_names.cc +@@ -28,6 +28,16 @@ const char kClearBrowsingDataOnExitDeletionPending[] = + // delete just before browser shutdown. + const char kClearBrowsingDataOnExitList[] = "browser.clear_data.clear_on_exit"; + ++// Clear Browsing Data dialog datatype preferences. ++const char kDeleteBrowsingHistoryAtStart[] = "browser.clear_data.browsing_history_at_start"; ++const char kDeleteDownloadHistoryAtStart[] = "browser.clear_data.download_history_at_start"; ++const char kDeleteCacheAtStart[] = "browser.clear_data.cache_at_start"; ++const char kDeleteCookiesAtStart[] = "browser.clear_data.cookies_at_start"; ++const char kDeletePasswordsAtStart[] = "browser.clear_data.passwords_at_start"; ++const char kDeleteFormDataAtStart[] = "browser.clear_data.form_data_at_start"; ++const char kDeleteHostedAppsDataAtStart[] = "browser.clear_data.hosted_apps_data_at_start"; ++const char kDeleteSiteSettingsAtStart[] = "browser.clear_data.site_settings_at_start"; ++ + // Clear browsing data deletion time period. + const char kDeleteTimePeriod[] = "browser.clear_data.time_period"; + const char kDeleteTimePeriodBasic[] = "browser.clear_data.time_period_basic"; +@@ -89,6 +99,31 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { + registry->RegisterIntegerPref( + kClearBrowsingDataHistoryNoticeShownTimes, 0); + ++ registry->RegisterBooleanPref( ++ kDeleteBrowsingHistoryAtStart, false, ++ user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); ++ registry->RegisterBooleanPref( ++ kDeleteDownloadHistoryAtStart, false, ++ user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); ++ registry->RegisterBooleanPref( ++ kDeleteCacheAtStart, false, ++ user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); ++ registry->RegisterBooleanPref( ++ kDeleteCookiesAtStart, false, ++ user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); ++ registry->RegisterBooleanPref( ++ kDeletePasswordsAtStart, false, ++ user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); ++ registry->RegisterBooleanPref( ++ kDeleteFormDataAtStart, false, ++ user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); ++ registry->RegisterBooleanPref( ++ kDeleteHostedAppsDataAtStart, false, ++ user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); ++ registry->RegisterBooleanPref( ++ kDeleteSiteSettingsAtStart, false, ++ user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); ++ + #if !BUILDFLAG(IS_IOS) + registry->RegisterBooleanPref( + kDeleteDownloadHistory, true, +diff --git a/components/browsing_data/core/pref_names.h b/components/browsing_data/core/pref_names.h +--- a/components/browsing_data/core/pref_names.h ++++ b/components/browsing_data/core/pref_names.h +@@ -17,6 +17,15 @@ extern const char kBrowsingDataLifetime[]; + extern const char kClearBrowsingDataOnExitDeletionPending[]; + extern const char kClearBrowsingDataOnExitList[]; + ++extern const char kDeleteBrowsingHistoryAtStart[]; ++extern const char kDeleteDownloadHistoryAtStart[]; ++extern const char kDeleteCacheAtStart[]; ++extern const char kDeleteCookiesAtStart[]; ++extern const char kDeletePasswordsAtStart[]; ++extern const char kDeleteFormDataAtStart[]; ++extern const char kDeleteHostedAppsDataAtStart[]; ++extern const char kDeleteSiteSettingsAtStart[]; ++ + extern const char kDeleteTimePeriod[]; + extern const char kDeleteTimePeriodBasic[]; + +-- +2.25.1 diff --git a/build/patches/00Viewport-Protection-flag.patch b/build/patches/00Viewport-Protection-flag.patch index d7152286..80485d32 100644 --- a/build/patches/00Viewport-Protection-flag.patch +++ b/build/patches/00Viewport-Protection-flag.patch @@ -9,6 +9,7 @@ Subject: Viewport Protection flag third_party/blink/common/features.cc | 4 + third_party/blink/public/common/features.h | 3 + .../common/widget/device_emulation_params.h | 6 +- + .../blink/renderer/core/css/media_values.cc | 2 +- .../core/css/resolver/style_resolver.cc | 7 +- .../blink/renderer/core/events/mouse_event.h | 19 ++++- .../renderer/core/events/pointer_event.h | 11 +++ @@ -23,7 +24,8 @@ Subject: Viewport Protection flag .../blink/renderer/core/input/touch.cc | 17 ++++- third_party/blink/renderer/core/page/page.cc | 76 +++++++++++++++++++ third_party/blink/renderer/core/page/page.h | 7 ++ - 20 files changed, 239 insertions(+), 16 deletions(-) + .../platform/runtime_enabled_features.json5 | 2 +- + 22 files changed, 241 insertions(+), 18 deletions(-) diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc @@ -119,6 +121,18 @@ diff --git a/third_party/blink/public/common/widget/device_emulation_params.h b/ } inline bool operator!=(const DeviceEmulationParams& a, +diff --git a/third_party/blink/renderer/core/css/media_values.cc b/third_party/blink/renderer/core/css/media_values.cc +--- a/third_party/blink/renderer/core/css/media_values.cc ++++ b/third_party/blink/renderer/core/css/media_values.cc +@@ -176,7 +176,7 @@ bool MediaValues::CalculateStrictMode(LocalFrame* frame) { + } + + float MediaValues::CalculateDevicePixelRatio(LocalFrame* frame) { +- return frame->DevicePixelRatio(); ++ return frame->DevicePixelRatio(false); + } + + bool MediaValues::CalculateDeviceSupportsHDR(LocalFrame* frame) { diff --git a/third_party/blink/renderer/core/css/resolver/style_resolver.cc b/third_party/blink/renderer/core/css/resolver/style_resolver.cc --- a/third_party/blink/renderer/core/css/resolver/style_resolver.cc +++ b/third_party/blink/renderer/core/css/resolver/style_resolver.cc @@ -629,5 +643,17 @@ diff --git a/third_party/blink/renderer/core/page/page.h b/third_party/blink/ren // If the page is hosted inside an MPArch fenced frame, this tracks the // mode that the fenced frame is set to. This will always be set to kDefault // for the ShadowDOM implementation of fenced frames. +diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 +--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 ++++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 +@@ -1413,7 +1413,7 @@ + // assume that screen dimensions match window.innerWidth/innerHeight while + // a page is fullscreen, but that is not always true. crbug.com/1367416 + name: "FullscreenScreenSizeMatchesDisplay", +- status: "experimental", ++ status: "stable", + base_feature: "FullscreenScreenSizeMatchesDisplay", + }, + { -- 2.25.1