patches for v124

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