Patches for v129 - require checking (#1458)

This commit is contained in:
Carmelo Messina
2024-09-09 13:20:07 +02:00
parent 9bf9414244
commit bbffd0fa31
21 changed files with 498 additions and 728 deletions
@@ -229,7 +229,7 @@ diff --git a/chrome/browser/permissions/one_time_permissions_tracker_factory.cc
diff --git a/chrome/browser/ui/views/permissions/embedded_permission_prompt.cc b/chrome/browser/ui/views/permissions/embedded_permission_prompt.cc
--- a/chrome/browser/ui/views/permissions/embedded_permission_prompt.cc
+++ b/chrome/browser/ui/views/permissions/embedded_permission_prompt.cc
@@ -650,7 +650,7 @@ void EmbeddedPermissionPrompt::SendDelegateAction(Action action) {
@@ -654,7 +654,7 @@ void EmbeddedPermissionPrompt::SendDelegateAction(Action action) {
delegate_->Accept();
break;
case Action::kAllowThisTime:
@@ -288,7 +288,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
private void setUpClearDataPreference() {
ClearWebsiteStorage preference = findPreference(PREF_CLEAR_DATA);
long usage = mSite.getTotalUsage();
@@ -1091,6 +1096,10 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
@@ -1092,6 +1097,10 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
AppCompatResources.getColorStateList(getContext(), mHighlightColor)
.getDefaultColor());
}
@@ -329,7 +329,7 @@ diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/comp
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
@@ -155,6 +155,42 @@ bool IsConstraintPersistent(const ContentSettingConstraints& constraints) {
@@ -160,6 +160,42 @@ bool IsConstraintPersistent(const ContentSettingConstraints& constraints) {
return constraints.session_model() == mojom::SessionModel::DURABLE;
}
@@ -509,7 +509,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp
diff --git a/components/page_info/page_info.cc b/components/page_info/page_info.cc
--- a/components/page_info/page_info.cc
+++ b/components/page_info/page_info.cc
@@ -1178,6 +1178,8 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info,
@@ -1179,6 +1179,8 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info,
permission_info.is_one_time =
(info.metadata.session_model() ==
content_settings::mojom::SessionModel::ONE_TIME);
@@ -667,7 +667,7 @@ diff --git a/components/permissions/android/java/src/org/chromium/components/per
diff --git a/components/permissions/android/permission_prompt/permission_dialog_delegate.cc b/components/permissions/android/permission_prompt/permission_dialog_delegate.cc
--- a/components/permissions/android/permission_prompt/permission_dialog_delegate.cc
+++ b/components/permissions/android/permission_prompt/permission_dialog_delegate.cc
@@ -159,6 +159,11 @@ void PermissionDialogJavaDelegate::DismissDialog() {
@@ -158,6 +158,11 @@ void PermissionDialogJavaDelegate::DismissDialog() {
Java_PermissionDialogDelegate_dismissFromNative(env, j_delegate_);
}
@@ -679,7 +679,7 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_
// static
void PermissionDialogDelegate::Create(
content::WebContents* web_contents,
@@ -187,6 +192,13 @@ PermissionDialogDelegate* PermissionDialogDelegate::CreateForTesting(
@@ -186,6 +191,13 @@ PermissionDialogDelegate* PermissionDialogDelegate::CreateForTesting(
void PermissionDialogDelegate::Accept(JNIEnv* env,
const JavaParamRef<jobject>& obj) {
CHECK(permission_prompt_);
@@ -693,7 +693,7 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_
permission_prompt_->Accept();
}
@@ -194,12 +206,22 @@ void PermissionDialogDelegate::AcceptThisTime(
@@ -193,12 +205,22 @@ void PermissionDialogDelegate::AcceptThisTime(
JNIEnv* env,
const JavaParamRef<jobject>& obj) {
CHECK(permission_prompt_);
@@ -1212,8 +1212,8 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
if (should_auto_approve_request) {
if (should_auto_approve_request == PermissionAction::GRANTED) {
- request->PermissionGranted(/*is_one_time=*/false);
+ request->PermissionGranted(/*is_one_time=*/false, content_settings::mojom::LifetimeMode::ALWAYS);
- request->PermissionGranted(/*is_one_time=*/true);
+ request->PermissionGranted(/*is_one_time=*/true, content_settings::mojom::LifetimeMode::UNTIL_ORIGIN_CLOSED);
}
request->RequestFinished();
return;
@@ -6,8 +6,8 @@ And allow use about:blank as default homepage
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../tab_management/TabGridDialogMediator.java | 9 ++++++++-
.../tasks/tab_management/TabGroupUiMediator.java | 8 +++++++-
.../browser/tasks/tab_management/TabUiUtils.java | 9 ++++++++-
.../java/res/xml/homepage_preferences.xml | 5 +++++
.../chrome/browser/homepage/HomepageManager.java | 16 ++++++++++++++++
.../homepage/settings/HomepageSettings.java | 12 ++++++++++++
@@ -20,43 +20,6 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
chrome/common/pref_names.h | 4 ++++
12 files changed, 67 insertions(+), 3 deletions(-)
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java
@@ -30,6 +30,7 @@ import org.chromium.base.task.TaskTraits;
import org.chromium.chrome.browser.data_sharing.DataSharingNotificationManager;
import org.chromium.chrome.browser.data_sharing.ui.shared_image_tiles.SharedImageTilesCoordinator;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.chrome.browser.homepage.HomepageManager;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabCreationState;
import org.chromium.chrome.browser.tab.TabLaunchType;
@@ -65,6 +66,7 @@ import org.chromium.ui.KeyboardVisibilityDelegate;
import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.ui.modelutil.PropertyModel;
import org.chromium.ui.text.EmptyTextWatcher;
+import org.chromium.url.GURL;
import java.util.ArrayList;
import java.util.List;
@@ -820,11 +822,16 @@ public class TabGridDialogMediator
assert relatedTabs.size() > 0;
+ String url = UrlConstants.NTP_URL;
+ if (HomepageManager.getInstance().getPrefNTPIsHomepageEnabled()) {
+ GURL gurl = HomepageManager.getInstance().getHomepageGurl();
+ url = gurl != null ? gurl.getSpec() : url;
+ }
Tab parentTabToAttach = relatedTabs.get(relatedTabs.size() - 1);
mTabCreatorManager
.getTabCreator(currentTab.isIncognito())
.createNewTab(
- new LoadUrlParams(UrlConstants.NTP_URL),
+ new LoadUrlParams(url),
TabLaunchType.FROM_TAB_GROUP_UI,
parentTabToAttach);
RecordUserAction.record("MobileNewTabOpened." + mComponentName);
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java
@@ -68,7 +31,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
import org.chromium.chrome.browser.layouts.LayoutStateProvider;
import org.chromium.chrome.browser.layouts.LayoutStateProvider.LayoutStateObserver;
import org.chromium.chrome.browser.layouts.LayoutType;
@@ -427,10 +428,15 @@ public class TabGroupUiMediator implements BackPressHandler {
@@ -433,10 +434,15 @@ public class TabGroupUiMediator implements BackPressHandler {
assert relatedTabs.size() > 0;
parentTabToAttach = relatedTabs.get(relatedTabs.size() - 1);
@@ -85,6 +48,33 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
TabLaunchType.FROM_TAB_GROUP_UI,
parentTabToAttach);
RecordUserAction.record(
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiUtils.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiUtils.java
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiUtils.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiUtils.java
@@ -31,6 +31,8 @@ import org.chromium.components.tab_group_sync.SavedTabGroup;
import org.chromium.components.tab_group_sync.TabGroupSyncService;
import org.chromium.components.tab_groups.TabGroupColorId;
import org.chromium.content_public.browser.LoadUrlParams;
+import org.chromium.chrome.browser.homepage.HomepageManager;
+import org.chromium.url.GURL;
import java.util.List;
import java.util.Objects;
@@ -191,8 +193,13 @@ public class TabUiUtils {
List<Tab> relatedTabs = filter.getRelatedTabList(tabId);
assert relatedTabs.size() > 0;
+ String url = UrlConstants.NTP_URL;
+ if (HomepageManager.getInstance().getPrefNTPIsHomepageEnabled()) {
+ GURL gurl = HomepageManager.getInstance().getHomepageGurl();
+ url = gurl != null ? gurl.getSpec() : url;
+ }
Tab parentTabToAttach = relatedTabs.get(relatedTabs.size() - 1);
- tabCreator.createNewTab(new LoadUrlParams(UrlConstants.NTP_URL), type, parentTabToAttach);
+ tabCreator.createNewTab(new LoadUrlParams(url), type, parentTabToAttach);
}
/**
diff --git a/chrome/android/java/res/xml/homepage_preferences.xml b/chrome/android/java/res/xml/homepage_preferences.xml
--- a/chrome/android/java/res/xml/homepage_preferences.xml
+++ b/chrome/android/java/res/xml/homepage_preferences.xml
@@ -103,7 +93,7 @@ diff --git a/chrome/android/java/res/xml/homepage_preferences.xml b/chrome/andro
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java
@@ -238,6 +238,22 @@ public class HomepageManager
@@ -237,6 +237,22 @@ public class HomepageManager
notifyHomepageUpdated();
}
@@ -184,7 +174,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
import org.chromium.chrome.browser.prefetch.settings.PreloadPagesSettingsBridge;
import org.chromium.chrome.browser.prefetch.settings.PreloadPagesState;
import org.chromium.chrome.browser.profiles.Profile;
@@ -484,6 +485,13 @@ public class ChromeTabCreator extends TabCreator {
@@ -486,6 +487,13 @@ public class ChromeTabCreator extends TabCreator {
* @return the created tab.
*/
public Tab launchUrl(String url, @TabLaunchType int type, Intent intent, long intentTimestamp) {
@@ -223,7 +213,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro
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
@@ -1414,6 +1414,9 @@ Your Google account may have other forms of browsing history like searches and a
@@ -1453,6 +1453,9 @@ Your Google account may have other forms of browsing history like searches and a
<message name="IDS_CLEAR_BROWSING_DATA_TAB_PERIOD_HOUR" desc="The option to delete browsing data from the last hour.">
Last hour
</message>
@@ -236,7 +226,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc
--- a/chrome/browser/ui/browser_ui_prefs.cc
+++ b/chrome/browser/ui/browser_ui_prefs.cc
@@ -89,6 +89,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
@@ -91,6 +91,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterBooleanPref(
prefs::kShowForwardButton, true,
GetHomeAndForwardButtonAndHomePageIsNewTabPageFlags());
@@ -248,7 +238,7 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
--- a/chrome/common/pref_names.h
+++ b/chrome/common/pref_names.h
@@ -1350,6 +1350,10 @@ inline constexpr char kShowHomeButton[] = "browser.show_home_button";
@@ -1361,6 +1361,10 @@ inline constexpr char kShowHomeButton[] = "browser.show_home_button";
// toolbar.
inline constexpr char kShowForwardButton[] = "browser.show_forward_button";
@@ -566,7 +566,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
--- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -1823,6 +1823,7 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source,
@@ -1814,6 +1814,7 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source,
{"clearedData", IDS_SETTINGS_CLEARED_DATA},
{"clearBrowsingData", IDS_SETTINGS_CLEAR_BROWSING_DATA},
{"clearBrowsingDataDescription", IDS_SETTINGS_CLEAR_DATA_DESCRIPTION},
@@ -15,7 +15,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/base/android/content_uri_utils.cc b/base/android/content_uri_utils.cc
--- a/base/android/content_uri_utils.cc
+++ b/base/android/content_uri_utils.cc
@@ -39,6 +39,16 @@ int64_t GetContentUriFileSize(const FilePath& content_uri) {
@@ -68,6 +68,16 @@ int64_t GetContentUriFileSize(const FilePath& content_uri) {
return Java_ContentUriUtils_getContentUriFileSize(env, j_uri);
}
@@ -35,9 +35,9 @@ diff --git a/base/android/content_uri_utils.cc b/base/android/content_uri_utils.
diff --git a/base/android/content_uri_utils.h b/base/android/content_uri_utils.h
--- a/base/android/content_uri_utils.h
+++ b/base/android/content_uri_utils.h
@@ -18,6 +18,10 @@ namespace base {
// Returns -1 if the URI is invalid.
BASE_EXPORT File OpenContentUriForRead(const FilePath& content_uri);
@@ -27,6 +27,10 @@ BASE_EXPORT std::optional<std::string> TranslateOpenFlagsToJavaMode(
BASE_EXPORT File OpenContentUri(const FilePath& content_uri,
uint32_t open_flags);
+// Opens a content URI for write and returns the file descriptor to the caller.
+// Returns -1 if the URI is invalid.
@@ -67,7 +67,7 @@ diff --git a/base/android/java/src/org/chromium/base/ContentUriUtils.java b/base
/** This class provides methods to access content URI schemes. */
public abstract class ContentUriUtils {
private static final String TAG = "ContentUriUtils";
@@ -86,6 +90,36 @@ public abstract class ContentUriUtils {
@@ -89,6 +93,36 @@ public abstract class ContentUriUtils {
return -1;
}
@@ -4,61 +4,37 @@ Subject: Allow building without supervised users
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
chrome/android/BUILD.gn | 1 -
.../browser/feed/FeedSurfaceCoordinator.java | 5 +----
.../feedback/ChromeFeedbackCollector.java | 1 -
chrome/browser/BUILD.gn | 2 --
chrome/browser/feedback/android/BUILD.gn | 2 --
.../prefs/chrome_pref_service_factory.cc | 2 +-
.../profiles/profile_attributes_entry.cc | 2 +-
chrome/browser/profiles/profile_impl.cc | 5 +----
chrome/browser/profiles/profile_manager.cc | 20 -------------------
chrome/browser/ui/webui/managed_ui_handler.cc | 4 ----
.../webui/management/management_ui_handler.cc | 4 ----
.../browser/supervised_user_pref_store.cc | 1 +
.../browser/supervised_user_preferences.cc | 6 +++++-
.../core/browser/supervised_user_service.cc | 5 +----
.../core/browser/supervised_user_utils.cc | 1 +
.../supervised_user/core/common/features.cc | 6 ++++++
16 files changed, 18 insertions(+), 49 deletions(-)
chrome/android/BUILD.gn | 1 -
.../chrome/browser/feedback/ChromeFeedbackCollector.java | 1 -
chrome/browser/feedback/android/BUILD.gn | 2 --
chrome/browser/prefs/chrome_pref_service_factory.cc | 2 +-
chrome/browser/profiles/profile_attributes_entry.cc | 2 +-
chrome/browser/profiles/profile_impl.cc | 5 +----
chrome/browser/profiles/profile_manager.cc | 7 -------
chrome/browser/ui/webui/managed_ui_handler.cc | 4 ----
.../browser/ui/webui/management/management_ui_handler.cc | 4 ----
.../core/browser/supervised_user_pref_store.cc | 1 +
.../core/browser/supervised_user_preferences.cc | 6 +++++-
.../core/browser/supervised_user_service.cc | 5 +----
.../supervised_user/core/browser/supervised_user_utils.cc | 1 +
components/supervised_user/core/common/features.cc | 6 ++++++
14 files changed, 17 insertions(+), 30 deletions(-)
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -780,7 +780,6 @@ if (current_toolchain == default_toolchain) {
"//components/dom_distiller/core:distiller_type_java",
"//components/ntp_tiles:ntp_tiles_enums_java",
@@ -783,7 +783,6 @@ if (current_toolchain == default_toolchain) {
"//components/offline_pages/core:offline_page_model_enums_java",
"//components/sharing_message:sharing_dialog_type_generated_enum",
"//components/sharing_message:sharing_send_message_result_generated_enum",
- "//components/supervised_user/core/browser:supervised_user_utils_enum_javagen",
]
# From java_sources.gni.
diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java
--- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java
+++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java
@@ -67,7 +67,6 @@ import org.chromium.components.browser_ui.widget.displaystyle.UiConfig;
import org.chromium.components.feature_engagement.EventConstants;
import org.chromium.components.feature_engagement.Tracker;
import org.chromium.components.prefs.PrefService;
-import org.chromium.components.supervised_user.SupervisedUserPreferences;
import org.chromium.components.user_prefs.UserPrefs;
import org.chromium.third_party.android.swiperefresh.SwipeRefreshLayout;
import org.chromium.ui.base.DeviceFormFactor;
@@ -784,9 +783,7 @@ public class FeedSurfaceCoordinator
* Returns true if the supervised user feed should be displayed.
*/
public boolean shouldDisplaySupervisedFeed() {
- PrefService prefService = UserPrefs.get(mProfile);
- return SupervisedUserPreferences.isSubjectToParentalControls(prefService)
- && ChromeFeatureList.isEnabled(ChromeFeatureList.KID_FRIENDLY_CONTENT_FEED);
+ return false;
}
/**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java b/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java
@@ -85,7 +85,6 @@ public class ChromeFeedbackCollector extends FeedbackCollector<ChromeFeedbackCol
@@ -91,7 +91,6 @@ public class ChromeFeedbackCollector extends FeedbackCollector<ChromeFeedbackCol
// FamilyInfoFeedbackSource relies on IdentityManager which is not available for the
// incognito profile.
if (!initParams.profile.isOffTheRecord()) {
@@ -66,22 +42,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/feedback/Chrome
}
return sources;
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -3263,8 +3263,6 @@ static_library("browser") {
"feed/android/refresh_task_scheduler_impl.cc",
"feed/android/refresh_task_scheduler_impl.h",
"feed/android/web_feed_bridge.cc",
- "feedback/android/family_info_feedback_source.cc",
- "feedback/android/family_info_feedback_source.h",
"first_run/android/first_run_prefs.cc",
"first_run/android/first_run_prefs.h",
"first_run/android/first_run_utils.cc",
diff --git a/chrome/browser/feedback/android/BUILD.gn b/chrome/browser/feedback/android/BUILD.gn
--- a/chrome/browser/feedback/android/BUILD.gn
+++ b/chrome/browser/feedback/android/BUILD.gn
@@ -7,7 +7,6 @@ import("//third_party/jni_zero/jni_zero.gni")
@@ -8,7 +8,6 @@ import("//third_party/jni_zero/jni_zero.gni")
generate_jni("jni_headers") {
sources = [
@@ -89,18 +53,18 @@ diff --git a/chrome/browser/feedback/android/BUILD.gn b/chrome/browser/feedback/
"java/src/org/chromium/chrome/browser/feedback/ProcessIdFeedbackSource.java",
"java/src/org/chromium/chrome/browser/feedback/SystemInfoFeedbackSource.java",
]
@@ -32,7 +31,6 @@ android_library("java") {
@@ -55,7 +54,6 @@ android_library("java") {
sources = [
"java/src/org/chromium/chrome/browser/feedback/AsyncFeedbackSourceAdapter.java",
"java/src/org/chromium/chrome/browser/feedback/DeviceInfoFeedbackSource.java",
- "java/src/org/chromium/chrome/browser/feedback/FamilyInfoFeedbackSource.java",
"java/src/org/chromium/chrome/browser/feedback/FeedbackContextFeedbackSource.java",
"java/src/org/chromium/chrome/browser/feedback/FragmentHelpAndFeedbackLauncher.java",
"java/src/org/chromium/chrome/browser/feedback/HelpAndFeedbackLauncher.java",
"java/src/org/chromium/chrome/browser/feedback/IMEFeedbackSource.java",
diff --git a/chrome/browser/prefs/chrome_pref_service_factory.cc b/chrome/browser/prefs/chrome_pref_service_factory.cc
--- a/chrome/browser/prefs/chrome_pref_service_factory.cc
+++ b/chrome/browser/prefs/chrome_pref_service_factory.cc
@@ -338,7 +338,7 @@ void PrepareFactory(
@@ -337,7 +337,7 @@ void PrepareFactory(
policy::BrowserPolicyConnector* policy_connector) {
factory->SetManagedPolicies(policy_service, policy_connector);
factory->SetRecommendedPolicies(policy_service, policy_connector);
@@ -112,7 +76,7 @@ diff --git a/chrome/browser/prefs/chrome_pref_service_factory.cc b/chrome/browse
diff --git a/chrome/browser/profiles/profile_attributes_entry.cc b/chrome/browser/profiles/profile_attributes_entry.cc
--- a/chrome/browser/profiles/profile_attributes_entry.cc
+++ b/chrome/browser/profiles/profile_attributes_entry.cc
@@ -459,7 +459,7 @@ bool ProfileAttributesEntry::IsSigninRequired() const {
@@ -454,7 +454,7 @@ bool ProfileAttributesEntry::IsSigninRequired() const {
}
std::string ProfileAttributesEntry::GetSupervisedUserId() const {
@@ -135,7 +99,7 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/p
// Changes in the profile avatar.
pref_change_registrar_.Add(
@@ -1629,6 +1625,7 @@ GURL ProfileImpl::GetHomePage() {
@@ -1631,6 +1627,7 @@ GURL ProfileImpl::GetHomePage() {
}
void ProfileImpl::UpdateSupervisedUserIdInStorage() {
@@ -146,31 +110,18 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/p
diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc
--- a/chrome/browser/profiles/profile_manager.cc
+++ b/chrome/browser/profiles/profile_manager.cc
@@ -1212,23 +1212,6 @@ void ProfileManager::InitProfileUserPrefs(Profile* profile) {
@@ -1213,10 +1213,6 @@ void ProfileManager::InitProfileUserPrefs(Profile* profile) {
profile->GetPrefs()->SetString(prefs::kProfileName, profile_name);
}
- base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
- bool force_supervised_user_id =
-#if BUILDFLAG(IS_CHROMEOS_ASH)
- !ash::IsSigninBrowserContext(profile) &&
- !ash::IsLockScreenAppBrowserContext(profile) &&
-#endif
- command_line->HasSwitch(switches::kSupervisedUserId);
-
- if (force_supervised_user_id) {
- supervised_user_id =
- command_line->GetSwitchValueASCII(switches::kSupervisedUserId);
- }
- if (force_supervised_user_id ||
- !profile->GetPrefs()->HasPrefPath(prefs::kSupervisedUserId)) {
- if (!profile->GetPrefs()->HasPrefPath(prefs::kSupervisedUserId)) {
- profile->GetPrefs()->SetString(prefs::kSupervisedUserId,
- supervised_user_id);
- }
#if !BUILDFLAG(IS_ANDROID)
if (profile->IsNewProfile()) {
profile->GetPrefs()->SetBoolean(prefs::kHasSeenWelcomePage, false);
@@ -2041,9 +2024,6 @@ void ProfileManager::AddProfileToStorage(Profile* profile) {
@@ -2029,9 +2025,6 @@ void ProfileManager::AddProfileToStorage(Profile* profile) {
init_params.icon_index =
profile->GetPrefs()->GetInteger(prefs::kProfileAvatarIndex);
@@ -222,7 +173,7 @@ diff --git a/components/supervised_user/core/browser/supervised_user_pref_store.
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
@@ -165,6 +165,10 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
@@ -158,6 +158,10 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
}
void EnableParentalControls(PrefService& pref_service) {
@@ -233,7 +184,7 @@ diff --git a/components/supervised_user/core/browser/supervised_user_preferences
pref_service.SetString(prefs::kSupervisedUserId,
supervised_user::kChildAccountSUID);
SetIsChildAccountStatusKnown(pref_service);
@@ -187,7 +191,7 @@ bool IsSafeSitesEnabled(const PrefService& pref_service) {
@@ -180,7 +184,7 @@ bool IsSafeSitesEnabled(const PrefService& pref_service) {
}
bool IsSubjectToParentalControls(const PrefService& pref_service) {
@@ -241,7 +192,7 @@ diff --git a/components/supervised_user/core/browser/supervised_user_preferences
+ return false;
}
bool AreExtensionsPermissionsEnabled(const PrefService& pref_service) {
} // namespace supervised_user
diff --git a/components/supervised_user/core/browser/supervised_user_service.cc b/components/supervised_user/core/browser/supervised_user_service.cc
--- a/components/supervised_user/core/browser/supervised_user_service.cc
+++ b/components/supervised_user/core/browser/supervised_user_service.cc
@@ -256,7 +207,7 @@ diff --git a/components/supervised_user/core/browser/supervised_user_service.cc
FirstTimeInterstitialBannerState banner_state =
static_cast<FirstTimeInterstitialBannerState>(
user_prefs_->GetInteger(prefs::kFirstTimeInterstitialBannerState));
@@ -190,6 +186,7 @@ FirstTimeInterstitialBannerState SupervisedUserService::GetUpdatedBannerState(
@@ -187,6 +183,7 @@ FirstTimeInterstitialBannerState SupervisedUserService::GetUpdatedBannerState(
}
void SupervisedUserService::SetActive(bool active) {
@@ -278,7 +229,7 @@ diff --git a/components/supervised_user/core/browser/supervised_user_utils.cc b/
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
@@ -179,4 +179,10 @@ bool IsKidFriendlyContentFeedAvailable() {
@@ -177,4 +177,10 @@ bool IsKidFriendlyContentFeedAvailable() {
return base::FeatureList::IsEnabled(kKidFriendlyContentFeed);
}
@@ -6,18 +6,18 @@ Ignore any partner-provided home page.
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../chromium/chrome/browser/homepage/HomepageManager.java | 4 ----
.../partnercustomizations/PartnerBrowserCustomizations.java | 2 +-
.../org/chromium/components/search_engines/TemplateUrl.java | 1 +
.../search_engines/android/template_url_service_android.cc | 5 +----
.../always-use-new-tab-page-for-default-home-page.inc | 2 ++
5 files changed, 5 insertions(+), 9 deletions(-)
.../org/chromium/chrome/browser/homepage/HomepageManager.java | 4 ----
.../partnercustomizations/PartnerBrowserCustomizations.java | 2 +-
.../org/chromium/components/search_engines/TemplateUrl.java | 1 +
.../search_engines/android/template_url_service_android.cc | 1 +
.../always-use-new-tab-page-for-default-home-page.inc | 2 ++
5 files changed, 5 insertions(+), 5 deletions(-)
create mode 100755 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/always-use-new-tab-page-for-default-home-page.inc
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java
@@ -156,10 +156,6 @@ public class HomepageManager
@@ -155,10 +155,6 @@ public class HomepageManager
* tab page if the homepage button is force enabled via flag.
*/
public GURL getDefaultHomepageGurl() {
@@ -54,18 +54,14 @@ diff --git a/components/search_engines/android/java/src/org/chromium/components/
diff --git a/components/search_engines/android/template_url_service_android.cc b/components/search_engines/android/template_url_service_android.cc
--- a/components/search_engines/android/template_url_service_android.cc
+++ b/components/search_engines/android/template_url_service_android.cc
@@ -405,10 +405,7 @@ jboolean TemplateUrlServiceAndroid::SetPlayAPISearchEngine(
@@ -404,6 +404,7 @@ jboolean TemplateUrlServiceAndroid::SetPlayAPISearchEngine(
jimage_translate_source_language_param_key,
const base::android::JavaParamRef<jstring>&
jimage_translate_target_language_param_key,
jboolean set_as_default) {
- // The function is scheduled to run only when the service is loaded, see
- // `TemplateUrlService#runWhenLoaded()`.
- CHECK(template_url_service_->loaded(), base::NotFatalUntil::M128);
-
jimage_translate_target_language_param_key) {
+ if ((true)) return false;
// Check if there is already a search engine created from Play API.
TemplateURLService::TemplateURLVector template_urls =
template_url_service_->GetTemplateURLs();
// The function is scheduled to run only when the service is loaded, see
// `TemplateUrlService#runWhenLoaded()`.
CHECK(template_url_service_->loaded(), base::NotFatalUntil::M128);
diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/always-use-new-tab-page-for-default-home-page.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/always-use-new-tab-page-for-default-home-page.inc
new file mode 100755
--- /dev/null
@@ -22,7 +22,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../android/java/res/xml/main_preferences.xml | 5 +
.../browser/settings/AdBlockEditor.java | 91 ++++++
.../browser/settings/AdBlockPreferences.java | 58 ++++
.../chrome/browser/tabmodel/TabModelImpl.java | 2 +-
.../chrome/browser/tabmodel/TabModelImpl.java | 4 +-
chrome/app/generated_resources.grd | 10 +
chrome/browser/after_startup_task_utils.cc | 4 +
chrome/browser/browser_process.h | 6 +
@@ -52,7 +52,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../core/browser/verified_ruleset_dealer.cc | 4 +
.../core/common/indexed_ruleset.cc | 5 +-
.../Bromite-subresource-adblocker.inc | 3 +
40 files changed, 1256 insertions(+), 127 deletions(-)
40 files changed, 1256 insertions(+), 129 deletions(-)
create mode 100644 chrome/android/java/res/layout/adblock_editor.xml
create mode 100644 chrome/android/java/res/xml/adblock_preferences.xml
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java
@@ -68,7 +68,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -353,6 +353,7 @@ if (current_toolchain == default_toolchain) {
@@ -357,6 +357,7 @@ if (current_toolchain == default_toolchain) {
"//chrome/android/modules/cablev2_authenticator/public:java",
"//chrome/android/modules/stack_unwinder/provider:java",
"//chrome/android/webapk/libs/client:client_java",
@@ -79,7 +79,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni
--- a/chrome/android/chrome_java_resources.gni
+++ b/chrome/android/chrome_java_resources.gni
@@ -428,6 +428,7 @@ chrome_java_resources = [
@@ -433,6 +433,7 @@ chrome_java_resources = [
"java/res/layout/account_divider_preference.xml",
"java/res/layout/account_management_account_row.xml",
"java/res/layout/app_history_filter.xml",
@@ -87,7 +87,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja
"java/res/layout/auto_sign_in_first_run_dialog.xml",
"java/res/layout/autofill_billing_address_dropdown.xml",
"java/res/layout/autofill_card_name_and_number.xml",
@@ -620,6 +621,7 @@ chrome_java_resources = [
@@ -623,6 +624,7 @@ chrome_java_resources = [
"java/res/xml/about_chrome_preferences.xml",
"java/res/xml/account_management_preferences.xml",
"java/res/xml/ad_services_config.xml",
@@ -98,7 +98,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
--- a/chrome/android/chrome_java_sources.gni
+++ b/chrome/android/chrome_java_sources.gni
@@ -950,6 +950,8 @@ chrome_java_sources = [
@@ -941,6 +941,8 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/permissions/PermissionSettingsBridge.java",
"java/src/org/chromium/chrome/browser/permissions/PermissionUpdateRequester.java",
"java/src/org/chromium/chrome/browser/photo_picker/DecoderServiceImpl.java",
@@ -428,19 +428,21 @@ new file mode 100644
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java
@@ -860,7 +860,7 @@ public class TabModelImpl extends TabModelJniBridge {
protected boolean createTabWithWebContents(
Tab parent, Profile profile, WebContents webContents) {
return getTabCreator(profile.isOffTheRecord())
- .createTabWithWebContents(parent, webContents, TabLaunchType.FROM_RECENT_TABS);
+ .createTabWithWebContents(parent, webContents, TabLaunchType.FROM_LINK);
@@ -853,9 +853,7 @@ public class TabModelImpl extends TabModelJniBridge {
.createTabWithWebContents(
parent,
webContents,
- select
- ? TabLaunchType.FROM_RECENT_TABS_FOREGROUND
- : TabLaunchType.FROM_RECENT_TABS);
+ TabLaunchType.FROM_LINK);
}
@Override
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -15805,6 +15805,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
@@ -15905,6 +15905,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
Never show this again.
</message>
@@ -481,7 +483,7 @@ diff --git a/chrome/browser/after_startup_task_utils.cc b/chrome/browser/after_s
diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h
--- a/chrome/browser/browser_process.h
+++ b/chrome/browser/browser_process.h
@@ -21,6 +21,7 @@
@@ -31,6 +31,7 @@
#include "build/chromeos_buildflags.h"
#include "chrome/common/buildflags.h"
#include "media/media_buildflags.h"
@@ -489,7 +491,7 @@ diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h
class BackgroundModeManager;
class BrowserProcessPlatformPart;
@@ -72,6 +73,10 @@ namespace component_updater {
@@ -86,6 +87,10 @@ namespace component_updater {
class ComponentUpdateService;
}
@@ -497,10 +499,10 @@ diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h
+class AdBlockUpdaterService;
+}
+
namespace extensions {
class EventRouterForwarder;
namespace gcm {
class GCMDriver;
}
@@ -255,6 +260,7 @@ class BrowserProcess {
@@ -264,6 +269,7 @@ class BrowserProcess {
#endif
virtual component_updater::ComponentUpdateService* component_updater() = 0;
@@ -550,7 +552,7 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc
MediaFileSystemRegistry* media_file_system_registry() override;
WebRtcLogUploader* webrtc_log_uploader() override;
network_time::NetworkTimeTracker* network_time_tracker() override;
@@ -420,6 +421,7 @@ class BrowserProcessImpl : public BrowserProcess,
@@ -419,6 +420,7 @@ class BrowserProcessImpl : public BrowserProcess,
// to concerns over integrity of data shared between profiles,
// but some users of component updater only install per-user.
std::unique_ptr<component_updater::ComponentUpdateService> component_updater_;
@@ -561,7 +563,7 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc
diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc
--- a/chrome/browser/chrome_browser_main.cc
+++ b/chrome/browser/chrome_browser_main.cc
@@ -474,6 +474,9 @@ StartupProfileInfo CreateInitialProfile(
@@ -470,6 +470,9 @@ StartupProfileInfo CreateInitialProfile(
// missing code in the above test.
CHECK(profile_info.profile) << "Cannot get default profile.";
@@ -672,7 +674,7 @@ new file mode 100755
diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc
--- a/chrome/browser/net/system_network_context_manager.cc
+++ b/chrome/browser/net/system_network_context_manager.cc
@@ -630,6 +630,10 @@ SystemNetworkContextManager::~SystemNetworkContextManager() {
@@ -635,6 +635,10 @@ SystemNetworkContextManager::~SystemNetworkContextManager() {
void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) {
StubResolverConfigReader::RegisterPrefs(registry);
@@ -686,7 +688,7 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows
diff --git a/chrome/browser/sessions/session_restore_android.cc b/chrome/browser/sessions/session_restore_android.cc
--- a/chrome/browser/sessions/session_restore_android.cc
+++ b/chrome/browser/sessions/session_restore_android.cc
@@ -56,8 +56,10 @@ content::WebContents* SessionRestore::RestoreForeignSessionTab(
@@ -57,8 +57,10 @@ content::WebContents* SessionRestore::RestoreForeignSessionTab(
DCHECK(current_tab);
// If swapped, return the current tab's most up-to-date web contents.
if (disposition == WindowOpenDisposition::CURRENT_TAB) {
@@ -726,7 +728,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
--- a/chrome/common/pref_names.h
+++ b/chrome/common/pref_names.h
@@ -2779,6 +2779,11 @@ inline constexpr char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
@@ -2824,6 +2824,11 @@ inline constexpr char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
inline constexpr char kAudioCaptureAllowedUrls[] =
"hardware.audio_capture_allowed_urls";
@@ -1568,7 +1570,7 @@ diff --git a/components/subresource_filter/content/browser/content_subresource_f
web_contents_helper_(web_contents_helper) {}
ContentSubresourceFilterThrottleManager::
@@ -668,6 +672,17 @@ ContentSubresourceFilterThrottleManager::
@@ -667,6 +671,17 @@ ContentSubresourceFilterThrottleManager::
throttle->NotifyPageActivationWithRuleset(EnsureRulesetHandle(),
ad_tagging_state);
}
+21 -30
View File
@@ -20,9 +20,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../blink/renderer/core/frame/navigator_ua.idl | 4 +++-
.../renderer/core/frame/navigator_ua_data.cc | 1 +
.../renderer/core/frame/navigator_ua_data.idl | 5 ++++-
.../renderer/core/loader/base_fetch_context.cc | 6 ++++--
.../renderer/core/loader/frame_fetch_context.cc | 4 +++-
.../platform/runtime_enabled_features.json5 | 5 +++++
15 files changed, 56 insertions(+), 14 deletions(-)
15 files changed, 55 insertions(+), 13 deletions(-)
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Client-hints-overrides.inc
create mode 100644 cromite_flags/content/common/features_cc/Client-hints-overrides.inc
create mode 100644 cromite_flags/services/network/public/cpp/features_cc/Client-hints-overrides.inc
@@ -90,7 +90,7 @@ diff --git a/content/browser/client_hints/client_hints.cc b/content/browser/clie
diff --git a/content/browser/loader/navigation_url_loader_impl.cc b/content/browser/loader/navigation_url_loader_impl.cc
--- a/content/browser/loader/navigation_url_loader_impl.cc
+++ b/content/browser/loader/navigation_url_loader_impl.cc
@@ -1206,6 +1206,11 @@ void NavigationURLLoaderImpl::OnAcceptCHFrameReceived(
@@ -1208,6 +1208,11 @@ void NavigationURLLoaderImpl::OnAcceptCHFrameReceived(
return;
}
@@ -131,7 +131,7 @@ new file mode 100644
diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc
--- a/net/http/http_network_transaction.cc
+++ b/net/http/http_network_transaction.cc
@@ -107,6 +107,7 @@ const size_t kMaxRestarts = 32;
@@ -108,6 +108,7 @@ const size_t kMaxRestarts = 32;
// Returns true when Early Hints are allowed on the given protocol.
bool EarlyHintsAreAllowedOn(HttpConnectionInfo connection_info) {
@@ -231,40 +231,31 @@ diff --git a/third_party/blink/renderer/core/frame/navigator_ua_data.idl b/third
[HighEntropy, MeasureAs=NavigatorUAData_Brands] readonly attribute FrozenArray<NavigatorUABrandVersion> brands;
[HighEntropy=Direct, MeasureAs=NavigatorUAData_Mobile] readonly attribute boolean mobile;
[HighEntropy=Direct, MeasureAs=NavigatorUAData_Platform] readonly attribute DOMString platform;
diff --git a/third_party/blink/renderer/core/loader/base_fetch_context.cc b/third_party/blink/renderer/core/loader/base_fetch_context.cc
--- a/third_party/blink/renderer/core/loader/base_fetch_context.cc
+++ b/third_party/blink/renderer/core/loader/base_fetch_context.cc
@@ -167,7 +167,7 @@ void BaseFetchContext::AddClientHintsIfNecessary(
// specifying accomponying client hints, in which case we disable sending
// them.
using network::mojom::blink::WebClientHintsType;
- if (ua) {
+ if (RuntimeEnabledFeatures::UserAgentClientHintEnabled() && ua) {
// ShouldSendClientHint is called to make sure UA is controlled by
// Permissions Policy.
if (ShouldSendClientHint(policy, resource_origin, is_1p_origin,
@@ -329,7 +329,7 @@ void BaseFetchContext::AddClientHintsIfNecessary(
diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/third_party/blink/renderer/core/loader/frame_fetch_context.cc
--- a/third_party/blink/renderer/core/loader/frame_fetch_context.cc
+++ b/third_party/blink/renderer/core/loader/frame_fetch_context.cc
@@ -216,6 +216,8 @@ bool ShouldSendClientHint(const PermissionsPolicy& policy,
bool is_1p_origin,
network::mojom::blink::WebClientHintsType type,
const ClientHintsPreferences& hints_preferences) {
+ if (!RuntimeEnabledFeatures::UserAgentClientHintEnabled())
+ return false;
// For subresource requests, sending the hint in the fetch request based on
// the permissions policy.
if (!policy.IsFeatureEnabledForOrigin(
@@ -600,7 +602,7 @@ void FrameFetchContext::AddClientHintsIfNecessary(
}
// Only send User Agent hints if the info is available
- if (ua) {
+ if (RuntimeEnabledFeatures::UserAgentClientHintEnabled() && ua) {
if (ShouldSendClientHint(policy, resource_origin, is_1p_origin,
WebClientHintsType::kUAArch, hints_preferences)) {
SetHttpHeader(WebClientHintsType::kUAArch,
@@ -682,6 +682,8 @@ bool BaseFetchContext::ShouldSendClientHint(
bool is_1p_origin,
network::mojom::blink::WebClientHintsType type,
const ClientHintsPreferences& hints_preferences) const {
+ if (!RuntimeEnabledFeatures::UserAgentClientHintEnabled())
+ return false;
// For subresource requests, sending the hint in the fetch request based on
// the permissions policy.
if ((!policy ||
// ShouldSendClientHint is called to make sure UA is controlled by
// Permissions Policy.
if (ShouldSendClientHint(*policy, resource_origin, is_1p_origin,
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -361,6 +361,11 @@
@@ -381,6 +381,11 @@
name: "AtomicMoveAPI",
status: "test",
},
+14 -14
View File
@@ -13137,7 +13137,7 @@ e)fqMZZ`3a)Ds&5H<cfp<0000<MNUMnLSTYHt&Yn8
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -2062,6 +2062,7 @@ static_library("browser") {
@@ -1899,6 +1899,7 @@ static_library("browser") {
"//build:chromeos_buildflags",
"//build/config/chromebox_for_meetings:buildflags",
"//build/config/compiler:compiler_buildflags",
@@ -13160,7 +13160,7 @@ diff --git a/chrome/browser/omaha/android/java/src/org/chromium/chrome/browser/o
diff --git a/chrome/browser/prefs/chrome_pref_service_factory.cc b/chrome/browser/prefs/chrome_pref_service_factory.cc
--- a/chrome/browser/prefs/chrome_pref_service_factory.cc
+++ b/chrome/browser/prefs/chrome_pref_service_factory.cc
@@ -25,6 +25,7 @@
@@ -30,6 +30,7 @@
#include "build/branding_buildflags.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
@@ -13168,7 +13168,7 @@ diff --git a/chrome/browser/prefs/chrome_pref_service_factory.cc b/chrome/browse
#include "chrome/browser/browser_process.h"
#include "chrome/browser/enterprise/signin/enterprise_signin_prefs.h"
#include "chrome/browser/policy/chrome_browser_policy_connector.h"
@@ -291,10 +292,7 @@ std::unique_ptr<ProfilePrefStoreManager> CreateProfilePrefStoreManager(
@@ -290,10 +291,7 @@ std::unique_ptr<ProfilePrefStoreManager> CreateProfilePrefStoreManager(
#endif
std::string seed;
CHECK(ui::ResourceBundle::HasSharedInstance());
@@ -13218,7 +13218,7 @@ diff --git a/chrome/browser/resources/settings/settings_menu/settings_menu.html
</a>
<a role="menuitem" id="about-menu" href="/help"
class="cr-nav-menu-item">
- <iron-icon icon="settings:about"></iron-icon>
- <iron-icon icon="cr:chrome-product"></iron-icon>
+ <span id="aboutIcon" class="cr-icon" role="presentation"></span>
$i18n{aboutPageTitle}
<cr-ripple></cr-ripple>
@@ -13226,7 +13226,7 @@ diff --git a/chrome/browser/resources/settings/settings_menu/settings_menu.html
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
@@ -2438,7 +2438,7 @@ Your Google account may have other forms of browsing history like searches and a
@@ -2393,7 +2393,7 @@ Your Google account may have other forms of browsing history like searches and a
About Chrome
</message>
<message name="IDS_LEGAL_INFORMATION_SUMMARY" desc="Summary for legal information" meaning="Android">
@@ -18920,7 +18920,7 @@ diff --git a/components/version_ui/resources/about_version_mobile.css b/componen
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
--- a/content/child/runtime_features.cc
+++ b/content/child/runtime_features.cc
@@ -617,7 +617,7 @@ void ResolveInvalidConfigurations() {
@@ -622,7 +622,7 @@ void ResolveInvalidConfigurations() {
base::FeatureList::IsEnabled(
features::kPrivacySandboxAdsAPIsM1Override)) &&
!base::FeatureList::IsEnabled(blink::features::kFencedFrames)) {
@@ -18929,7 +18929,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
<< "Fenced frames cannot be enabled in this configuration. Use --"
<< switches::kEnableFeatures << "="
<< blink::features::kFencedFrames.name << " instead.";
@@ -627,9 +627,8 @@ void ResolveInvalidConfigurations() {
@@ -632,9 +632,8 @@ void ResolveInvalidConfigurations() {
if (!base::FeatureList::IsEnabled(blink::features::kFencedFrames) &&
base::FeatureList::IsEnabled(
blink::features::kFencedFramesLocalUnpartitionedDataAccess)) {
@@ -18941,7 +18941,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
<< "Fenced frames must be enabled in order to enable local "
"unpartitioned "
<< "data access. Use --" << switches::kEnableFeatures << "="
@@ -642,7 +641,7 @@ void ResolveInvalidConfigurations() {
@@ -647,7 +646,7 @@ void ResolveInvalidConfigurations() {
// The Document API should be additionally gated by the
// `kBrowsingTopicsDocumentAPI` feature.
if (!base::FeatureList::IsEnabled(blink::features::kBrowsingTopics)) {
@@ -18950,7 +18950,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
<< "Topics cannot be enabled in this configuration. Use --"
<< switches::kEnableFeatures << "="
<< blink::features::kBrowsingTopics.name << " in addition.";
@@ -662,7 +661,7 @@ void ResolveInvalidConfigurations() {
@@ -667,7 +666,7 @@ void ResolveInvalidConfigurations() {
}
if (!base::FeatureList::IsEnabled(blink::features::kSharedStorageAPI)) {
@@ -18959,7 +18959,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
<< "SharedStorage cannot be enabled in this "
"configuration. Use --"
<< switches::kEnableFeatures << "="
@@ -672,7 +671,7 @@ void ResolveInvalidConfigurations() {
@@ -677,7 +676,7 @@ void ResolveInvalidConfigurations() {
if (!base::FeatureList::IsEnabled(blink::features::kSharedStorageAPIM118) ||
!base::FeatureList::IsEnabled(blink::features::kSharedStorageAPI)) {
@@ -18968,7 +18968,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
<< "SharedStorage for M118+ cannot be enabled in this "
"configuration. Use --"
<< switches::kEnableFeatures << "="
@@ -683,7 +682,7 @@ void ResolveInvalidConfigurations() {
@@ -688,7 +687,7 @@ void ResolveInvalidConfigurations() {
if (!base::FeatureList::IsEnabled(blink::features::kSharedStorageAPIM125) ||
!base::FeatureList::IsEnabled(blink::features::kSharedStorageAPI)) {
@@ -18977,7 +18977,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
<< "SharedStorage for M125+ cannot be enabled in this "
"configuration. Use --"
<< switches::kEnableFeatures << "="
@@ -694,7 +693,7 @@ void ResolveInvalidConfigurations() {
@@ -699,7 +698,7 @@ void ResolveInvalidConfigurations() {
if (!base::FeatureList::IsEnabled(
attribution_reporting::features::kConversionMeasurement)) {
@@ -18986,7 +18986,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
<< "AttributionReporting cannot be enabled in this "
"configuration. Use --"
<< switches::kEnableFeatures << "="
@@ -707,8 +706,8 @@ void ResolveInvalidConfigurations() {
@@ -712,8 +711,8 @@ void ResolveInvalidConfigurations() {
attribution_reporting::features::kConversionMeasurement) ||
!base::FeatureList::IsEnabled(
network::features::kAttributionReportingCrossAppWeb)) {
@@ -18997,7 +18997,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
<< "AttributionReportingCrossAppWeb cannot be enabled in this "
"configuration. Use --"
<< switches::kEnableFeatures << "="
@@ -719,7 +718,7 @@ void ResolveInvalidConfigurations() {
@@ -724,7 +723,7 @@ void ResolveInvalidConfigurations() {
}
if (!base::FeatureList::IsEnabled(blink::features::kInterestGroupStorage)) {
@@ -4,32 +4,12 @@ Subject: Disable feeds support by default
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
chrome/browser/BUILD.gn | 9 +++++++++
chrome/browser/feed/android/web_feed_bridge.cc | 18 ++++++++++++++++++
chrome/browser/prefs/browser_prefs.cc | 10 +++++-----
chrome/browser/prefs/browser_prefs.cc | 2 +-
.../feed/core/shared_prefs/pref_names.cc | 2 +-
components/feed/feed_feature_list.cc | 3 +++
5 files changed, 36 insertions(+), 6 deletions(-)
4 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -2658,6 +2658,15 @@ static_library("browser") {
]
}
+ if (is_android && !enable_feed_v2) {
+ sources += [
+ "feed/feed_service_factory.cc",
+ "feed/feed_service_factory.h",
+ ]
+ deps += [
+ "//components/feed:feature_list",
+ ]
+ }
if (enable_feed_v2) {
sources += [
"feed/feed_service_factory.cc",
diff --git a/chrome/browser/feed/android/web_feed_bridge.cc b/chrome/browser/feed/android/web_feed_bridge.cc
--- a/chrome/browser/feed/android/web_feed_bridge.cc
+++ b/chrome/browser/feed/android/web_feed_bridge.cc
@@ -109,34 +89,7 @@ diff --git a/chrome/browser/feed/android/web_feed_bridge.cc b/chrome/browser/fee
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -251,11 +251,11 @@
#endif
#include "components/feed/buildflags.h"
-#if BUILDFLAG(ENABLE_FEED_V2)
+//#if BUILDFLAG(ENABLE_FEED_V2)
#include "components/feed/core/common/pref_names.h" // nogncheck
#include "components/feed/core/shared_prefs/pref_names.h" // nogncheck
#include "components/feed/core/v2/ios_shared_prefs.h" // nogncheck
-#endif
+//#endif
#if BUILDFLAG(IS_ANDROID)
#include "chrome/browser/accessibility/accessibility_prefs/android/accessibility_prefs_controller.h"
@@ -1898,10 +1898,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
ChromeRLZTrackerDelegate::RegisterProfilePrefs(registry);
#endif
-#if BUILDFLAG(ENABLE_FEED_V2)
+//#if BUILDFLAG(ENABLE_FEED_V2)
feed::prefs::RegisterFeedSharedProfilePrefs(registry);
feed::RegisterProfilePrefs(registry);
-#endif
+//#endif
#if BUILDFLAG(IS_ANDROID)
cdm::MediaDrmStorageImpl::RegisterProfilePrefs(registry);
@@ -2688,7 +2688,7 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs,
@@ -2695,7 +2695,7 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs,
syncer::SyncPrefs::MaybeMigrateAutofillToPerAccountPref(profile_prefs);
#endif // !BUILDFLAG(IS_ANDROID)
@@ -160,7 +113,7 @@ diff --git a/components/feed/core/shared_prefs/pref_names.cc b/components/feed/c
diff --git a/components/feed/feed_feature_list.cc b/components/feed/feed_feature_list.cc
--- a/components/feed/feed_feature_list.cc
+++ b/components/feed/feed_feature_list.cc
@@ -150,4 +150,7 @@ bool IsWebFeedEnabledForLocale(const std::string& country) {
@@ -149,4 +149,7 @@ bool IsWebFeedEnabledForLocale(const std::string& country) {
!base::FeatureList::IsEnabled(kWebFeedKillSwitch);
}
+13 -18
View File
@@ -36,7 +36,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -3483,6 +3483,9 @@ bool ChromeContentBrowserClient::IsAttributionReportingOperationAllowed(
@@ -3532,6 +3532,9 @@ bool ChromeContentBrowserClient::IsAttributionReportingOperationAllowed(
const url::Origin* destination_origin,
const url::Origin* reporting_origin,
bool* can_bypass) {
@@ -61,7 +61,7 @@ diff --git a/chrome/browser/first_party_sets/first_party_sets_navigation_throttl
diff --git a/chrome/browser/first_party_sets/first_party_sets_policy_service.cc b/chrome/browser/first_party_sets/first_party_sets_policy_service.cc
--- a/chrome/browser/first_party_sets/first_party_sets_policy_service.cc
+++ b/chrome/browser/first_party_sets/first_party_sets_policy_service.cc
@@ -59,6 +59,7 @@ const base::Value::Dict* GetOverridesPolicyForProfile(
@@ -60,6 +60,7 @@ const base::Value::Dict* GetOverridesPolicyForProfile(
}
ServiceState GetServiceState(Profile* profile, bool pref_enabled) {
@@ -69,7 +69,7 @@ diff --git a/chrome/browser/first_party_sets/first_party_sets_policy_service.cc
if (profile->IsSystemProfile() || profile->IsGuestSession() ||
profile->IsOffTheRecord()) {
return ServiceState::kPermanentlyDisabled;
@@ -112,7 +113,7 @@ void FirstPartySetsPolicyService::Init() {
@@ -114,7 +115,7 @@ void FirstPartySetsPolicyService::Init() {
profile, profile->GetPrefs() &&
profile->GetPrefs()->GetBoolean(
prefs::kPrivacySandboxRelatedWebsiteSetsEnabled));
@@ -81,7 +81,7 @@ diff --git a/chrome/browser/first_party_sets/first_party_sets_policy_service.cc
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -1288,7 +1288,7 @@ void RegisterProfilePrefsForMigration(
@@ -1298,7 +1298,7 @@ void RegisterProfilePrefsForMigration(
registry->RegisterTimePref(kPlusAddressLastFetchedTime, base::Time());
// Deprecated 03/2024.
@@ -93,7 +93,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse
diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_service_impl.cc b/chrome/browser/privacy_sandbox/privacy_sandbox_service_impl.cc
--- a/chrome/browser/privacy_sandbox/privacy_sandbox_service_impl.cc
+++ b/chrome/browser/privacy_sandbox/privacy_sandbox_service_impl.cc
@@ -477,7 +477,7 @@ bool PrivacySandboxServiceImpl::IsRestrictedNoticeEnabled() {
@@ -519,7 +519,7 @@ bool PrivacySandboxServiceImpl::IsRestrictedNoticeEnabled() {
void PrivacySandboxServiceImpl::SetFirstPartySetsDataAccessEnabled(
bool enabled) {
pref_service_->SetBoolean(prefs::kPrivacySandboxRelatedWebsiteSetsEnabled,
@@ -161,9 +161,9 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_attestations/privacy_san
diff --git a/components/privacy_sandbox/privacy_sandbox_features.cc b/components/privacy_sandbox/privacy_sandbox_features.cc
--- a/components/privacy_sandbox/privacy_sandbox_features.cc
+++ b/components/privacy_sandbox/privacy_sandbox_features.cc
@@ -288,4 +288,8 @@ BASE_FEATURE(kPrivacySandboxMigratePrefsToNoticeConsentDataModel,
"PrivacySandboxMigratePrefsToNoticeConsentDataModel",
base::FEATURE_ENABLED_BY_DEFAULT);
@@ -236,4 +236,8 @@ BASE_FEATURE(kPrivacySandboxPrivacyPolicy,
"PrivacySandboxPrivacyPolicy",
base::FEATURE_DISABLED_BY_DEFAULT);
+SET_CROMITE_FEATURE_DISABLED(kPrivacySandboxSettings4);
+SET_CROMITE_FEATURE_ENABLED(kDisablePrivacySandboxPrompts);
@@ -272,23 +272,18 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc b/compo
diff --git a/components/privacy_sandbox/tracking_protection_prefs.cc b/components/privacy_sandbox/tracking_protection_prefs.cc
--- a/components/privacy_sandbox/tracking_protection_prefs.cc
+++ b/components/privacy_sandbox/tracking_protection_prefs.cc
@@ -61,14 +61,14 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
@@ -53,9 +53,9 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
// Tracking Protection Settings Prefs
// TODO(https://b/333527273): Deprecate
registry->RegisterBooleanPref(
- prefs::kBlockAll3pcToggleEnabled, false,
+ prefs::kBlockAll3pcToggleEnabled, false, // with true enables FPS
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
- registry->RegisterBooleanPref(prefs::kTrackingProtection3pcdEnabled, false);
+ registry->RegisterBooleanPref(prefs::kTrackingProtection3pcdEnabled, false); // with true enables FPS
registry->RegisterBooleanPref(prefs::kAllowAll3pcToggleEnabled, false);
registry->RegisterIntegerPref(
prefs::kTrackingProtectionLevel,
static_cast<int>(TrackingProtectionLevel::kStandard),
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
- registry->RegisterBooleanPref(prefs::kTrackingProtection3pcdEnabled, false);
+ registry->RegisterBooleanPref(prefs::kTrackingProtection3pcdEnabled, false); // with true enables FPS
registry->RegisterBooleanPref(
prefs::kIpProtectionEnabled, false,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
diff --git a/components/signin/public/identity_manager/account_capabilities.cc b/components/signin/public/identity_manager/account_capabilities.cc
--- a/components/signin/public/identity_manager/account_capabilities.cc
+++ b/components/signin/public/identity_manager/account_capabilities.cc
@@ -325,7 +320,7 @@ new file mode 100644
diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc
--- a/third_party/blink/common/features.cc
+++ b/third_party/blink/common/features.cc
@@ -2618,6 +2618,7 @@ BASE_FEATURE(kWebviewAccelerateSmallCanvases,
@@ -2625,6 +2625,7 @@ BASE_FEATURE(kWebviewAccelerateSmallCanvases,
// constants for features in the section above.
bool IsAllowURNsInIframeEnabled() {
@@ -10,13 +10,13 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/components/privacy_sandbox/tracking_protection_prefs.cc b/components/privacy_sandbox/tracking_protection_prefs.cc
--- a/components/privacy_sandbox/tracking_protection_prefs.cc
+++ b/components/privacy_sandbox/tracking_protection_prefs.cc
@@ -78,7 +78,7 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
prefs::kFingerprintingProtectionEnabled, false,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
@@ -47,7 +47,7 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
base::Time());
registry->RegisterBooleanPref(
- prefs::kEnableDoNotTrack, false,
+ prefs::kEnableDoNotTrack, true,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
registry->RegisterBooleanPref(prefs::kUserBypass3pcExceptionsMigrated, false);
registry->RegisterBooleanPref(prefs::kEnableGPC, true);
registry->RegisterBooleanPref(prefs::kUserBypass3pcExceptionsMigrated, false);
--
@@ -464,7 +464,7 @@ diff --git a/chrome/browser/ui/prefs/pref_watcher.h b/chrome/browser/ui/prefs/pr
diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
--- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -1772,6 +1772,9 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source,
@@ -1763,6 +1763,9 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source,
{"doNotTrackDialogMessage", IDS_SETTINGS_ENABLE_DO_NOT_TRACK_DIALOG_TEXT},
{"doNotTrackDialogLearnMoreA11yLabel",
IDS_SETTINGS_ENABLE_DO_NOT_TRACK_DIALOG_LEARN_MORE_ACCESSIBILITY_LABEL},
@@ -61,7 +61,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.password_check.PasswordCheck;
@@ -59,6 +60,11 @@ import java.lang.annotation.Retention;
@@ -58,6 +59,11 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Locale;
@@ -73,7 +73,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
/**
* The "Passwords" screen in Settings, which allows the user to enable or disable password saving,
* to view saved passwords (just the username and URL), and to delete saved passwords.
@@ -66,7 +72,7 @@ import java.util.Locale;
@@ -65,7 +71,7 @@ import java.util.Locale;
public class PasswordSettings extends ChromeBaseSettingsFragment
implements PasswordListObserver,
Preference.OnPreferenceClickListener,
@@ -82,7 +82,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
@IntDef({
TrustedVaultBannerState.NOT_SHOWN,
TrustedVaultBannerState.OFFER_OPT_IN,
@@ -96,6 +102,12 @@ public class PasswordSettings extends ChromeBaseSettingsFragment
@@ -95,6 +101,12 @@ public class PasswordSettings extends ChromeBaseSettingsFragment
public static final String PREF_TRUSTED_VAULT_BANNER = "trusted_vault_banner";
public static final String PREF_KEY_MANAGE_ACCOUNT_LINK = "manage_account_link";
@@ -95,7 +95,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
private static final String PREF_KEY_CATEGORY_SAVED_PASSWORDS = "saved_passwords";
private static final String PREF_KEY_CATEGORY_EXCEPTIONS = "exceptions";
private static final String PREF_KEY_SAVED_PASSWORDS_NO_TEXT = "saved_passwords_no_text";
@@ -128,6 +140,8 @@ public class PasswordSettings extends ChromeBaseSettingsFragment
@@ -127,6 +139,8 @@ public class PasswordSettings extends ChromeBaseSettingsFragment
private Preference mLinkPref;
private Menu mMenu;
@@ -104,7 +104,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
private @ManagePasswordsReferrer int mManagePasswordsReferrer;
private BottomSheetController mBottomSheetController;
@@ -307,6 +321,7 @@ public class PasswordSettings extends ChromeBaseSettingsFragment
@@ -306,6 +320,7 @@ public class PasswordSettings extends ChromeBaseSettingsFragment
}
createSavePasswordsSwitch();
@@ -112,7 +112,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
if (shouldShowAutoSigninOption()) {
createAutoSignInCheckbox();
}
@@ -580,6 +595,71 @@ public class PasswordSettings extends ChromeBaseSettingsFragment
@@ -578,6 +593,71 @@ public class PasswordSettings extends ChromeBaseSettingsFragment
getPrefService().getBoolean(Pref.CREDENTIALS_ENABLE_SERVICE));
}
@@ -187,7 +187,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/settings/MainSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java
@@ -457,8 +457,7 @@ public class MainSettings extends ChromeBaseSettingsFragment
@@ -462,8 +462,7 @@ public class MainSettings extends ChromeBaseSettingsFragment
private void updateAutofillPreferences() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
@@ -214,7 +214,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.
@@ -995,6 +1002,11 @@ class TabImpl implements Tab {
@@ -1000,6 +1007,11 @@ class TabImpl implements Tab {
for (TabObserver observer : mObservers) observer.onDestroyed(this);
mObservers.clear();
@@ -226,7 +226,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
mUserDataHost.destroy();
mTabViewManager.destroy();
hideNativePage(false, null);
@@ -1267,8 +1279,7 @@ class TabImpl implements Tab {
@@ -1274,8 +1286,7 @@ class TabImpl implements Tab {
*/
boolean providesAutofillStructure() {
// TODO(b/326231439): Check pref and AutofillService!
@@ -236,7 +236,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
}
// Forwarded from TabWebContentsDelegateAndroid.
@@ -1999,15 +2010,20 @@ class TabImpl implements Tab {
@@ -2017,15 +2028,20 @@ class TabImpl implements Tab {
* @return true if the the provider is available for the given WebContents.
*/
private boolean prepareAutofillProvider(WebContents newWebContents) {
@@ -263,7 +263,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
mAutofillProvider =
new AutofillProvider(
getContext(),
@@ -2016,7 +2032,16 @@ class TabImpl implements Tab {
@@ -2034,7 +2050,16 @@ class TabImpl implements Tab {
getContext().getString(R.string.app_name));
TabImplJni.get().initializeAutofillIfNecessary(mNativeTabAndroid);
}
@@ -284,7 +284,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
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
@@ -3918,28 +3918,6 @@ const FeatureEntry::FeatureVariation kAutofillGranularFillingAvailableVariations
@@ -3858,28 +3858,6 @@ const FeatureEntry::FeatureVariation kAutofillGranularFillingAvailableVariations
kAutofillGranularFillingAvailableVariationWithExpandControlVisibleOnSelectionOnly),
nullptr}};
@@ -313,7 +313,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
const FeatureEntry::FeatureParam kDefaultBrowserPromptRefreshAggressive[] = {
{"max_prompt_count", "-1"},
{"reprompt_duration", "7d"},
@@ -6144,15 +6122,6 @@ const FeatureEntry kFeatureEntries[] = {
@@ -6184,15 +6162,6 @@ const FeatureEntry kFeatureEntries[] = {
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
#if BUILDFLAG(IS_ANDROID)
@@ -345,7 +345,7 @@ diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_
diff --git a/chrome/browser/autofill/android/BUILD.gn b/chrome/browser/autofill/android/BUILD.gn
--- a/chrome/browser/autofill/android/BUILD.gn
+++ b/chrome/browser/autofill/android/BUILD.gn
@@ -125,7 +125,7 @@ android_library("bottom_sheet_utils_java") {
@@ -129,7 +129,7 @@ android_library("bottom_sheet_utils_java") {
generate_jni("jni_headers") {
sources = [
"java/src/org/chromium/chrome/browser/autofill/AddressNormalizerFactory.java",
@@ -370,7 +370,7 @@ diff --git a/chrome/browser/autofill/android/java/src/org/chromium/chrome/browse
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -675,12 +675,6 @@ const char kAutofillVcnEnrollRequestTimeoutDescription[] =
@@ -728,12 +728,6 @@ const char kAutofillVcnEnrollRequestTimeoutDescription[] =
"VCN enrollment request. Upon timeout, the client will terminate the VCN "
"enrollment UI, but the request may still succeed server-side.";
@@ -386,7 +386,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -399,9 +399,6 @@ extern const char kAutofillUpstreamUpdatedUiDescription[];
@@ -428,9 +428,6 @@ extern const char kAutofillUpstreamUpdatedUiDescription[];
extern const char kAutofillVcnEnrollRequestTimeoutName[];
extern const char kAutofillVcnEnrollRequestTimeoutDescription[];
@@ -539,7 +539,7 @@ diff --git a/chrome/browser/ui/autofill/autofill_client_provider.h b/chrome/brow
diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc
--- a/chrome/browser/ui/tab_helpers.cc
+++ b/chrome/browser/ui/tab_helpers.cc
@@ -380,9 +380,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
@@ -377,9 +377,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
web_contents);
chrome::ChainedBackNavigationTracker::CreateForWebContents(web_contents);
chrome_browser_net::NetErrorTabHelper::CreateForWebContents(web_contents);
@@ -736,15 +736,15 @@ diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/co
},
source, Lift(source, std::forward<ActualArgs>(args))...);
}
@@ -592,6 +599,8 @@ void ContentAutofillDriver::JavaScriptChangedAutofilledValue(
void ContentAutofillDriver::Reset() {
owner_->router().UnregisterDriver(*this, /*driver_is_dying=*/false);
autofill_manager_->Reset();
@@ -262,6 +269,8 @@ ContentAutofillDriver::ContentAutofillDriver(
ContentAutofillDriver::~ContentAutofillDriver() {
owner_->router().UnregisterDriver(*this, /*driver_is_dying=*/true);
+ if (secondary_autofill_manager_)
+ secondary_autofill_manager_->Reset();
}
const mojo::AssociatedRemote<mojom::AutofillAgent>&
void ContentAutofillDriver::Reset(ContentAutofillDriverFactoryPassKey) {
@@ -604,6 +613,10 @@ ContentAutofillDriver::GetAutofillAgent() {
return autofill_agent_;
}
@@ -759,9 +759,9 @@ diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/co
diff --git a/components/autofill/content/browser/content_autofill_driver.h b/components/autofill/content/browser/content_autofill_driver.h
--- a/components/autofill/content/browser/content_autofill_driver.h
+++ b/components/autofill/content/browser/content_autofill_driver.h
@@ -123,6 +123,12 @@ class ContentAutofillDriver : public AutofillDriver,
ContentAutofillDriver& operator=(const ContentAutofillDriver&) = delete;
~ContentAutofillDriver() override;
@@ -135,6 +135,12 @@ class ContentAutofillDriver : public AutofillDriver,
// AutofillDriverFactory. Called on certain types of navigations.
void Reset(ContentAutofillDriverFactoryPassKey pass_key);
+ void set_secondary_autofill_manager(
+ std::unique_ptr<AutofillManager> secondary_autofill_manager) {
@@ -772,7 +772,7 @@ diff --git a/components/autofill/content/browser/content_autofill_driver.h b/com
content::RenderFrameHost* render_frame_host() { return &*render_frame_host_; }
const content::RenderFrameHost* render_frame_host() const {
return &*render_frame_host_;
@@ -282,6 +288,10 @@ class ContentAutofillDriver : public AutofillDriver,
@@ -292,6 +298,10 @@ class ContentAutofillDriver : public AutofillDriver,
// The factory that created this driver. Outlives `this`.
const raw_ref<ContentAutofillDriverFactory> owner_;
@@ -786,7 +786,7 @@ diff --git a/components/autofill/content/browser/content_autofill_driver.h b/com
diff --git a/components/autofill/content/browser/content_autofill_driver_factory.cc b/components/autofill/content/browser/content_autofill_driver_factory.cc
--- a/components/autofill/content/browser/content_autofill_driver_factory.cc
+++ b/components/autofill/content/browser/content_autofill_driver_factory.cc
@@ -22,6 +22,12 @@
@@ -23,6 +23,12 @@
#include "content/public/browser/web_contents.h"
#include "third_party/blink/public/common/features.h"
@@ -799,23 +799,23 @@ diff --git a/components/autofill/content/browser/content_autofill_driver_factory
namespace autofill {
class ScopedAutofillManagersObservation;
@@ -98,6 +104,12 @@ ContentAutofillDriver* ContentAutofillDriverFactory::DriverForFrame(
// 5. `render_frame_host->~RenderFrameHostImpl()` finishes.
if (render_frame_host->IsRenderFrameLive()) {
driver = std::make_unique<ContentAutofillDriver>(render_frame_host, this);
@@ -127,6 +133,12 @@ ContentAutofillDriver* ContentAutofillDriverFactory::DriverForFrame(
return nullptr;
}
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())));
+ }
+ if (!driver->GetAutofillManager().IsAndroidAutofill()) {
+ driver->set_secondary_autofill_manager(
+ base::WrapUnique(new AndroidAutofillManager(driver.get())));
+ }
+#endif
for (Observer& observer : observers_) {
observer.OnContentAutofillDriverCreated(*this, *driver);
}
DCHECK_EQ(driver->GetLifecycleState(), LifecycleState::kInactive);
for (auto& observer : observers()) {
observer.OnAutofillDriverCreated(*this, *driver);
diff --git a/components/autofill/content/renderer/autofill_agent.cc b/components/autofill/content/renderer/autofill_agent.cc
--- a/components/autofill/content/renderer/autofill_agent.cc
+++ b/components/autofill/content/renderer/autofill_agent.cc
@@ -1440,12 +1440,16 @@ void AutofillAgent::ShowSuggestions(
@@ -1352,12 +1352,16 @@ void AutofillAgent::ShowSuggestions(
password_generation_agent_->ShowPasswordGenerationSuggestions(
input_element)) {
is_popup_possibly_visible_ = true;
@@ -832,12 +832,14 @@ diff --git a/components/autofill/content/renderer/autofill_agent.cc b/components
}
}
@@ -1454,10 +1458,12 @@ void AutofillAgent::ShowSuggestions(
// IsPasswordFieldForAutofill() because we are interested in whether the field
// is *currently* a password field, not whether it has ever been a password
// field.
@@ -1366,12 +1370,14 @@ void AutofillAgent::ShowSuggestions(
// `FormControlTypeForAutofill()` because we are interested in whether the
// field is *currently* a password field, not whether it has ever been a
// password field.
+#if !BUILDFLAG(IS_ANDROID)
if (input_element && input_element.IsPasswordField() && // nocheck
if (input_element &&
input_element.FormControlType() // nocheck
== blink::mojom::FormControlType::kInputPassword &&
!config_.query_password_suggestions) {
return;
}
@@ -848,7 +850,7 @@ diff --git a/components/autofill/content/renderer/autofill_agent.cc b/components
diff --git a/components/autofill/content/renderer/password_autofill_agent.cc b/components/autofill/content/renderer/password_autofill_agent.cc
--- a/components/autofill/content/renderer/password_autofill_agent.cc
+++ b/components/autofill/content/renderer/password_autofill_agent.cc
@@ -857,7 +857,10 @@ void PasswordAutofillAgent::UpdatePasswordStateForTextChange(
@@ -854,7 +854,10 @@ void PasswordAutofillAgent::UpdatePasswordStateForTextChange(
void PasswordAutofillAgent::TrackAutofilledElement(
const WebFormControlElement& element) {
@@ -863,7 +865,7 @@ diff --git a/components/autofill/content/renderer/password_autofill_agent.cc b/c
diff --git a/components/autofill/core/browser/autofill_driver.h b/components/autofill/core/browser/autofill_driver.h
--- a/components/autofill/core/browser/autofill_driver.h
+++ b/components/autofill/core/browser/autofill_driver.h
@@ -77,6 +77,8 @@ class AutofillDriver {
@@ -148,6 +148,8 @@ class AutofillDriver {
// Returns the AutofillManager owned by the AutofillDriver.
virtual AutofillManager& GetAutofillManager() = 0;
@@ -875,9 +877,9 @@ diff --git a/components/autofill/core/browser/autofill_driver.h b/components/aut
diff --git a/components/autofill/core/browser/autofill_manager.h b/components/autofill/core/browser/autofill_manager.h
--- a/components/autofill/core/browser/autofill_manager.h
+++ b/components/autofill/core/browser/autofill_manager.h
@@ -201,6 +201,8 @@ class AutofillManager
~AutofillManager() override;
@@ -219,6 +219,8 @@ class AutofillManager
LifecycleState new_state,
base::PassKey<AutofillDriverFactory> pass_key);
+ virtual bool IsAndroidAutofill() const = 0;
+
@@ -887,8 +889,8 @@ diff --git a/components/autofill/core/browser/autofill_manager.h b/components/au
diff --git a/components/autofill/core/browser/browser_autofill_manager.cc b/components/autofill/core/browser/browser_autofill_manager.cc
--- a/components/autofill/core/browser/browser_autofill_manager.cc
+++ b/components/autofill/core/browser/browser_autofill_manager.cc
@@ -697,6 +697,8 @@ BrowserAutofillManager::~BrowserAutofillManager() {
// (due to a navigation).
@@ -703,6 +703,8 @@ BrowserAutofillManager::~BrowserAutofillManager() {
single_field_form_fill_router_->CancelPendingQueries();
}
+bool BrowserAutofillManager::IsAndroidAutofill() const { return false; }
@@ -899,7 +901,7 @@ diff --git a/components/autofill/core/browser/browser_autofill_manager.cc b/comp
diff --git a/components/autofill/core/browser/browser_autofill_manager.h b/components/autofill/core/browser/browser_autofill_manager.h
--- a/components/autofill/core/browser/browser_autofill_manager.h
+++ b/components/autofill/core/browser/browser_autofill_manager.h
@@ -106,6 +106,8 @@ class BrowserAutofillManager : public AutofillManager {
@@ -112,6 +112,8 @@ class BrowserAutofillManager : public AutofillManager {
~BrowserAutofillManager() override;
@@ -911,7 +913,7 @@ diff --git a/components/autofill/core/browser/browser_autofill_manager.h b/compo
diff --git a/components/autofill/core/common/autofill_features.cc b/components/autofill/core/common/autofill_features.cc
--- a/components/autofill/core/common/autofill_features.cc
+++ b/components/autofill/core/common/autofill_features.cc
@@ -834,7 +834,7 @@ BASE_FEATURE(kAutofillEnableSecurityTouchEventFilteringAndroid,
@@ -890,7 +890,7 @@ BASE_FEATURE(kAutofillEnableSecurityTouchEventFilteringAndroid,
BASE_FEATURE(kAutofillVirtualViewStructureAndroid,
"AutofillVirtualViewStructureAndroid",
base::FEATURE_DISABLED_BY_DEFAULT);
@@ -923,7 +925,7 @@ diff --git a/components/autofill/core/common/autofill_features.cc b/components/a
diff --git a/components/autofill/core/common/autofill_features.h b/components/autofill/core/common/autofill_features.h
--- a/components/autofill/core/common/autofill_features.h
+++ b/components/autofill/core/common/autofill_features.h
@@ -284,28 +284,6 @@ COMPONENT_EXPORT(AUTOFILL)
@@ -298,28 +298,6 @@ COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillEnableSecurityTouchEventFilteringAndroid);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillVirtualViewStructureAndroid);
@@ -28,7 +28,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
chrome/browser/search/background/BUILD.gn | 4 +-
.../browser/search_engines/android/BUILD.gn | 2 +
.../java/res/layout/search_engine_layout.xml | 25 ++
.../settings/SearchEngineSettings.java | 19 ++
.../settings/SearchEngineSettings.java | 20 ++
chrome/browser/ui/BUILD.gn | 12 +
.../edit_search_engine_controller.cc | 8 +-
.../edit_search_engine_controller.h | 6 +-
@@ -70,7 +70,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
ui/webui/resources/include_polymer.gni | 2 +-
ui/webui/resources/js/BUILD.gn | 2 +-
ui/webui/resources/js/load_time_data.ts | 17 +-
63 files changed, 1086 insertions(+), 61 deletions(-)
63 files changed, 1087 insertions(+), 61 deletions(-)
create mode 100644 chrome/app/settings_strings_android.grdp
create mode 100644 chrome/browser/search_engines/android/java/res/layout/search_engine_layout.xml
create mode 100644 chrome/browser/ui/webui/settings/settings_localized_strings_provider_android.cc
@@ -82,9 +82,9 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsLauncherImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsLauncherImpl.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsLauncherImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsLauncherImpl.java
@@ -14,6 +14,9 @@ import androidx.fragment.app.Fragment;
import org.jni_zero.CalledByNative;
@@ -12,6 +12,9 @@ import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
+import org.chromium.base.ContextUtils;
+import org.chromium.chrome.browser.customtabs.CustomTabActivity;
@@ -92,9 +92,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin
import org.chromium.base.IntentUtils;
import org.chromium.chrome.browser.accessibility.settings.AccessibilitySettings;
import org.chromium.chrome.browser.autofill.settings.AutofillPaymentMethodsFragment;
@@ -39,6 +42,13 @@ public class SettingsLauncherImpl implements SettingsLauncher {
public SettingsLauncherImpl() {}
@@ -33,6 +36,13 @@ public class SettingsLauncherImpl implements SettingsLauncher {
/** Instantiated through SettingsLauncherFactory. */
SettingsLauncherImpl() {}
+ @Override
+ public void launchUrlInCustomTab(Context context, String url) {
@@ -133,7 +133,7 @@ diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp
--- a/chrome/app/settings_strings.grdp
+++ b/chrome/app/settings_strings.grdp
@@ -2596,6 +2596,9 @@
@@ -2611,6 +2611,9 @@
<message name="IDS_SETTINGS_SEARCH_ENGINES_QUERY_URL_EXPLANATION" desc="Label for explaining the format of the URL that should be entered by the user in the add/edit search engine dialog.">
URL with <ph name="SPECIAL_SYMBOL">%s</ph> in place of query
</message>
@@ -411,7 +411,7 @@ new file mode 100644
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -3745,6 +3745,9 @@ static_library("browser") {
@@ -3473,6 +3473,9 @@ static_library("browser") {
"//components/user_scripts/android",
]
}
@@ -424,7 +424,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
diff --git a/chrome/browser/chrome_browser_interface_binders.cc b/chrome/browser/chrome_browser_interface_binders.cc
--- a/chrome/browser/chrome_browser_interface_binders.cc
+++ b/chrome/browser/chrome_browser_interface_binders.cc
@@ -144,6 +144,9 @@
@@ -138,6 +138,9 @@
#endif
#if BUILDFLAG(IS_ANDROID)
@@ -434,7 +434,7 @@ diff --git a/chrome/browser/chrome_browser_interface_binders.cc b/chrome/browser
#include "chrome/browser/android/dom_distiller/distiller_ui_handle_android.h"
#include "chrome/browser/facilitated_payments/payment_link_handler_factory.h"
#include "chrome/browser/offline_pages/android/offline_page_auto_fetcher.h"
@@ -1174,6 +1177,15 @@ void PopulateChromeWebUIFrameBinders(
@@ -1175,6 +1178,15 @@ void PopulateChromeWebUIFrameBinders(
app_management::mojom::PageHandlerFactory, WebAppSettingsUI>(map);
#endif
@@ -764,7 +764,7 @@ diff --git a/chrome/browser/search/background/BUILD.gn b/chrome/browser/search/b
diff --git a/chrome/browser/search_engines/android/BUILD.gn b/chrome/browser/search_engines/android/BUILD.gn
--- a/chrome/browser/search_engines/android/BUILD.gn
+++ b/chrome/browser/search_engines/android/BUILD.gn
@@ -78,6 +78,7 @@ android_resources("java_resources") {
@@ -77,6 +77,7 @@ android_resources("java_resources") {
"java/res/layout/default_search_engine_dialog_view.xml",
"java/res/layout/search_engine.xml",
"java/res/layout/search_engine_choice_header.xml",
@@ -772,7 +772,7 @@ diff --git a/chrome/browser/search_engines/android/BUILD.gn b/chrome/browser/sea
"java/res/layout/search_engine_choice_item.xml",
"java/res/layout/search_engine_choice_view.xml",
"java/res/layout/search_engine_recent_title.xml",
@@ -86,6 +87,7 @@ android_resources("java_resources") {
@@ -85,6 +86,7 @@ android_resources("java_resources") {
"java/res/values/ids.xml",
]
deps = [
@@ -813,7 +813,7 @@ new file mode 100644
diff --git a/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/settings/SearchEngineSettings.java b/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/settings/SearchEngineSettings.java
--- a/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/settings/SearchEngineSettings.java
+++ b/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/settings/SearchEngineSettings.java
@@ -8,6 +8,10 @@ import android.os.Bundle;
@@ -8,12 +8,18 @@ import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
@@ -824,15 +824,15 @@ diff --git a/chrome/browser/search_engines/android/java/src/org/chromium/chrome/
import androidx.fragment.app.ListFragment;
import org.chromium.chrome.browser.profiles.Profile;
@@ -27,6 +31,7 @@ import org.chromium.components.search_engines.TemplateUrlService;
public class SearchEngineSettings extends ListFragment implements ProfileDependentSetting {
private SearchEngineAdapter mSearchEngineAdapter;
private Profile mProfile;
+ private SettingsLauncher mSettingsLauncher;
import org.chromium.chrome.browser.search_engines.R;
import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory;
import org.chromium.chrome.browser.settings.ProfileDependentSetting;
+import org.chromium.chrome.browser.settings.SettingsLauncherFactory;
+import org.chromium.components.browser_ui.settings.SettingsLauncher;
import org.chromium.components.search_engines.TemplateUrlService;
String getValueForTesting() {
return mSearchEngineAdapter.getValueForTesting();
@@ -48,6 +53,19 @@ public class SearchEngineSettings extends ListFragment implements ProfileDepende
/**
@@ -47,6 +53,20 @@ public class SearchEngineSettings extends ListFragment implements ProfileDepende
setListAdapter(mSearchEngineAdapter);
}
@@ -843,7 +843,8 @@ diff --git a/chrome/browser/search_engines/android/java/src/org/chromium/chrome/
+
+ TextView selectButton = (TextView) v.findViewById(R.id.open_desktop_ui);
+ selectButton.setOnClickListener(view -> {
+ mSettingsLauncher.launchUrlInCustomTab(getContext(),
+ SettingsLauncher settingsLauncher = SettingsLauncherFactory.createSettingsLauncher();
+ settingsLauncher.launchUrlInCustomTab(getContext(),
+ "chrome://settings/searchEngines");
+ });
+ return v;
@@ -852,18 +853,10 @@ diff --git a/chrome/browser/search_engines/android/java/src/org/chromium/chrome/
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
@@ -92,6 +110,7 @@ public class SearchEngineSettings extends ListFragment implements ProfileDepende
* @param settingsLauncher The SettingsLauncher that is injected.
*/
public void setSettingsLauncher(SettingsLauncher settingsLauncher) {
+ mSettingsLauncher = settingsLauncher;
createAdapterIfNecessary();
mSearchEngineAdapter.setSettingsLauncher(settingsLauncher);
}
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -1030,6 +1030,18 @@ static_library("ui") {
@@ -1039,6 +1039,18 @@ static_library("ui") {
# TODO(b/335257259): Resolve circular deps.
# Any circular includes must depend on the target "//chrome/browser:browser_public_dependencies".
allow_circular_includes_from += [ "//chrome/browser/facilitated_payments" ]
@@ -1066,15 +1059,15 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrom
--- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
+++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
@@ -122,6 +122,8 @@
#include "chrome/browser/ui/webui/offline/offline_internals_ui.h"
#include "chrome/browser/ui/webui/webapks/webapks_ui.h"
#include "components/feed/buildflags.h"
#include "components/feed/feed_feature_list.h"
+#include "chrome/browser/ui/webui/settings/settings_ui_android.h"
+#include "chrome/browser/ui/webui/settings/settings_utils.h"
#else // BUILDFLAG(IS_ANDROID)
#include "chrome/browser/media/router/discovery/access_code/access_code_cast_feature.h"
#include "chrome/browser/media/router/media_router_feature.h"
@@ -569,6 +571,10 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
@@ -547,6 +549,10 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
return &NewWebUI<WebAppInternalsUI>;
}
#endif // !BUILDFLAG(IS_ANDROID)
@@ -1322,7 +1315,7 @@ diff --git a/chrome/browser/ui/webui/settings/search_engines_handler.h b/chrome/
diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
--- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -2432,6 +2432,8 @@ void AddSearchEnginesStrings(content::WebUIDataSource* html_source) {
@@ -2441,6 +2441,8 @@ void AddSearchEnginesStrings(content::WebUIDataSource* html_source) {
{"searchEnginesQueryURL", IDS_SETTINGS_SEARCH_ENGINES_QUERY_URL},
{"searchEnginesQueryURLExplanation",
IDS_SETTINGS_SEARCH_ENGINES_QUERY_URL_EXPLANATION},
@@ -1331,7 +1324,7 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide
{"searchEnginesMakeDefault", IDS_SETTINGS_SEARCH_ENGINES_MAKE_DEFAULT},
{"searchEnginesActivate", IDS_SETTINGS_SEARCH_ENGINES_ACTIVATE},
{"searchEnginesDeactivate", IDS_SETTINGS_SEARCH_ENGINES_DEACTIVATE},
@@ -3736,6 +3738,12 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source,
@@ -3753,6 +3755,12 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source,
AddSystemStrings(html_source);
#endif
@@ -1857,19 +1850,19 @@ new file mode 100644
diff --git a/components/search_engines/android/template_url_service_android.cc b/components/search_engines/android/template_url_service_android.cc
--- a/components/search_engines/android/template_url_service_android.cc
+++ b/components/search_engines/android/template_url_service_android.cc
@@ -419,7 +419,7 @@ jboolean TemplateUrlServiceAndroid::SetPlayAPISearchEngine(
@@ -422,7 +422,7 @@ jboolean TemplateUrlServiceAndroid::SetPlayAPISearchEngine(
if (existing_play_api_turl->safe_for_autoreplace()) {
template_url_service_->ResetTemplateURL(
existing_play_api_turl, existing_play_api_turl->short_name(),
- existing_play_api_turl->keyword(), existing_play_api_turl->url());
+ existing_play_api_turl->keyword(), existing_play_api_turl->url(), /*suggestion_url*/ "");
}
}
// Only one search engine can be marked as coming from Play at a time.
diff --git a/components/search_engines/search_engines_switches.cc b/components/search_engines/search_engines_switches.cc
--- a/components/search_engines/search_engines_switches.cc
+++ b/components/search_engines/search_engines_switches.cc
@@ -38,6 +38,7 @@ COMPONENT_EXPORT(SEARCH_ENGINES_SWITCHES)
@@ -44,6 +44,7 @@ COMPONENT_EXPORT(SEARCH_ENGINES_SWITCHES)
BASE_FEATURE(kSearchEngineChoiceTrigger,
"SearchEngineChoiceTrigger",
base::FEATURE_ENABLED_BY_DEFAULT);
@@ -1941,7 +1934,7 @@ diff --git a/components/search_engines/template_url_service.h b/components/searc
diff --git a/content/browser/webui/web_ui_impl.cc b/content/browser/webui/web_ui_impl.cc
--- a/content/browser/webui/web_ui_impl.cc
+++ b/content/browser/webui/web_ui_impl.cc
@@ -246,6 +246,10 @@ void WebUIImpl::RegisterMessageCallback(std::string_view message,
@@ -239,6 +239,10 @@ void WebUIImpl::RegisterMessageCallback(std::string_view message,
message_callbacks_.emplace(message, std::move(callback));
}
@@ -1952,7 +1945,7 @@ diff --git a/content/browser/webui/web_ui_impl.cc b/content/browser/webui/web_ui
void WebUIImpl::ProcessWebUIMessage(const GURL& source_url,
const std::string& message,
base::Value::List args) {
@@ -259,8 +263,14 @@ void WebUIImpl::ProcessWebUIMessage(const GURL& source_url,
@@ -252,8 +256,14 @@ void WebUIImpl::ProcessWebUIMessage(const GURL& source_url,
return;
}
@@ -1978,9 +1971,9 @@ diff --git a/content/browser/webui/web_ui_impl.h b/content/browser/webui/web_ui_
base::Value::List args) override;
+ void DoNotCrashOnUnhandledMessage() override;
bool CanCallJavascript() override;
void CallJavascriptFunctionUnsafe(std::string_view function_name) override;
void CallJavascriptFunctionUnsafe(
@@ -151,6 +152,8 @@ class CONTENT_EXPORT WebUIImpl : public WebUI, public mojom::WebUIHost {
std::string_view function_name,
@@ -150,6 +151,8 @@ class CONTENT_EXPORT WebUIImpl : public WebUI, public mojom::WebUIHost {
std::unique_ptr<WebUIController> controller_;
@@ -2003,7 +1996,7 @@ diff --git a/content/public/browser/web_ui.h b/content/public/browser/web_ui.h
diff --git a/third_party/polymer/v3_0/BUILD.gn b/third_party/polymer/v3_0/BUILD.gn
--- a/third_party/polymer/v3_0/BUILD.gn
+++ b/third_party/polymer/v3_0/BUILD.gn
@@ -36,6 +36,12 @@ js_files = [
@@ -34,6 +34,12 @@ js_files = [
"paper-spinner/paper-spinner-styles.js",
]
@@ -2019,7 +2012,7 @@ diff --git a/third_party/polymer/v3_0/BUILD.gn b/third_party/polymer/v3_0/BUILD.
diff --git a/ui/base/template_expressions.cc b/ui/base/template_expressions.cc
--- a/ui/base/template_expressions.cc
+++ b/ui/base/template_expressions.cc
@@ -14,6 +14,7 @@
@@ -19,6 +19,7 @@
#include "base/no_destructor.h"
#include "base/strings/escape.h"
#include "base/values.h"
@@ -2027,7 +2020,7 @@ diff --git a/ui/base/template_expressions.cc b/ui/base/template_expressions.cc
#include "build/chromeos_buildflags.h"
#if DCHECK_IS_ON()
@@ -166,11 +167,25 @@ bool ReplaceTemplateExpressionsInternal(
@@ -171,11 +172,25 @@ bool ReplaceTemplateExpressionsInternal(
std::string key(source.substr(current_pos, key_end - current_pos));
CHECK(!key.empty());
@@ -54,15 +54,15 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
@@ -44,6 +44,7 @@ import org.chromium.chrome.browser.sync.settings.ManageSyncSettings;
@@ -45,6 +45,7 @@ import org.chromium.chrome.browser.sync.settings.ManageSyncSettings;
import org.chromium.chrome.browser.usage_stats.UsageStatsConsentDialog;
import org.chromium.components.browser_ui.settings.ChromeSwitchPreference;
import org.chromium.components.browser_ui.settings.FragmentSettingsLauncher;
+import org.chromium.components.browser_ui.settings.SpinnerPreference;
import org.chromium.components.browser_ui.settings.SettingsLauncher;
import org.chromium.components.browser_ui.settings.SettingsUtils;
+import org.chromium.components.browser_ui.settings.SpinnerPreference;
import org.chromium.components.browser_ui.site_settings.ContentSettingsResources;
@@ -62,6 +63,9 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
import org.chromium.components.browser_ui.site_settings.SingleCategorySettings;
import org.chromium.components.browser_ui.util.TraceEventVectorDrawableCompat;
@@ -61,6 +62,9 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
import org.chromium.components.browser_ui.settings.ChromeSwitchPreference;
import org.chromium.components.browser_ui.settings.ManagedPreferenceDelegate;
@@ -71,8 +71,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
+
/** Fragment to keep track of the all the privacy related preferences. */
public class PrivacySettings extends ChromeBaseSettingsFragment
implements Preference.OnPreferenceChangeListener, FragmentSettingsLauncher {
@@ -104,6 +108,8 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
implements Preference.OnPreferenceChangeListener {
@@ -102,6 +106,8 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
private ChromeSwitchPreference allowCustomTabIntentsPref;
private ChromeSwitchPreference openExternalLinksPref;
@@ -81,7 +81,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
@Override
public void onCreatePreferencesCromite(Bundle savedInstanceState, String rootKey) {
getActivity().setTitle(R.string.prefs_privacy_security);
@@ -236,6 +242,40 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
@@ -232,6 +238,40 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
Preference syncAndServicesLink = findPreference(PREF_SYNC_AND_SERVICES_LINK);
syncAndServicesLink.setSummary(buildFooterString());
@@ -122,7 +122,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
Preference thirdPartyCookies = findPreference(PREF_THIRD_PARTY_COOKIES);
Preference doNotTrackPref = findPreference(PREF_DO_NOT_TRACK);
@@ -479,6 +519,29 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
@@ -470,6 +510,29 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
&& ChromeFeatureList.isEnabled(ChromeFeatureList.FINGERPRINTING_PROTECTION_SETTING);
}
@@ -163,7 +163,7 @@ diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chro
#include "components/embedder_support/pref_names.h"
#include "components/language/core/browser/pref_names.h"
#include "components/live_caption/pref_names.h"
@@ -213,6 +214,9 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() {
@@ -212,6 +213,9 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() {
(*s_allowlist)[::prefs::kShowForwardButton] =
settings_api::PrefType::kBoolean;
@@ -218,7 +218,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/
diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/chrome/browser/resources/settings/privacy_page/privacy_page.ts
--- a/chrome/browser/resources/settings/privacy_page/privacy_page.ts
+++ b/chrome/browser/resources/settings/privacy_page/privacy_page.ts
@@ -81,6 +81,23 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase {
@@ -82,6 +82,23 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase {
static get properties() {
return {
@@ -245,7 +245,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -1290,6 +1290,18 @@ Your Google account may have other forms of browsing history like searches and a
@@ -1329,6 +1329,18 @@ Your Google account may have other forms of browsing history like searches and a
<message name="IDS_CLEAR_HISTORY_TITLE" desc="Title for Clear History in Clear Browsing Data dialog">
Browsing history
</message>
@@ -267,18 +267,18 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
--- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -1831,6 +1831,11 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source,
@@ -1849,6 +1849,11 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source,
IDS_SETTINGS_SAFEBROWSING_ENHANCED_THINGS_TO_CONSIDER_BULLET_THREE},
{"safeBrowsingStandard", IDS_SETTINGS_SAFEBROWSING_STANDARD},
{"safeBrowsingStandardDesc", IDS_SETTINGS_SAFEBROWSING_STANDARD_DESC},
{"safeBrowsingStandardDescUpdated",
IDS_SETTINGS_SAFEBROWSING_STANDARD_DESC_UPDATED},
+ {"expireHistory", IDS_SETTINGS_EXPIRE_HISTORY},
+ {"noHistory", IDS_SETTINGS_NO_HISTORY},
+ {"dayHistory", IDS_SETTINGS_DAY_HISTORY_DESCRIPTION},
+ {"daysHistory", IDS_SETTINGS_DAYS_HISTORY_DESCRIPTION},
+ {"foreverHistory", IDS_SETTINGS_FOREVER_HISTORY_DESCRIPTION},
+ {"expireHistory", IDS_SETTINGS_EXPIRE_HISTORY},
+ {"noHistory", IDS_SETTINGS_NO_HISTORY},
+ {"dayHistory", IDS_SETTINGS_DAY_HISTORY_DESCRIPTION},
+ {"daysHistory", IDS_SETTINGS_DAYS_HISTORY_DESCRIPTION},
+ {"foreverHistory", IDS_SETTINGS_FOREVER_HISTORY_DESCRIPTION},
#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
{"safeBrowsingStandardDescUpdatedProxy",
IDS_SETTINGS_SAFEBROWSING_STANDARD_DESC_UPDATED_PROXY},
{"safeBrowsingStandardDescProxy",
IDS_SETTINGS_SAFEBROWSING_STANDARD_DESC_PROXY},
diff --git a/components/browser_ui/settings/android/java/res/layout-sw360dp/preference_spinner_single_line.xml b/components/browser_ui/settings/android/java/res/layout-sw360dp/preference_spinner_single_line.xml
--- a/components/browser_ui/settings/android/java/res/layout-sw360dp/preference_spinner_single_line.xml
+++ b/components/browser_ui/settings/android/java/res/layout-sw360dp/preference_spinner_single_line.xml
@@ -99,7 +99,7 @@ new file mode 100644
diff --git a/third_party/blink/renderer/core/fetch/fetch_manager.cc b/third_party/blink/renderer/core/fetch/fetch_manager.cc
--- a/third_party/blink/renderer/core/fetch/fetch_manager.cc
+++ b/third_party/blink/renderer/core/fetch/fetch_manager.cc
@@ -1168,7 +1168,11 @@ void FetchManager::Loader::Failed(
@@ -1170,7 +1170,11 @@ void FetchManager::Loader::Failed(
if (resolver_) {
ScriptState::Scope scope(GetScriptState());
if (dom_exception) {
@@ -112,7 +112,7 @@ diff --git a/third_party/blink/renderer/core/fetch/fetch_manager.cc b/third_part
} else {
v8::Local<v8::Value> value =
exception_.Get(GetScriptState()->GetIsolate());
@@ -1188,7 +1192,11 @@ void FetchManager::Loader::Failed(
@@ -1190,7 +1194,11 @@ void FetchManager::Loader::Failed(
V8String(GetScriptState()->GetIsolate(),
IdentifiersFactory::IdFromToken(*issue_id)));
}
@@ -159,7 +159,7 @@ diff --git a/third_party/blink/renderer/platform/loader/child_url_loader_factory
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc
--- a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc
@@ -2912,7 +2912,7 @@ void ResourceFetcher::PrepareForLeakDetection() {
@@ -2921,7 +2921,7 @@ void ResourceFetcher::PrepareForLeakDetection() {
void ResourceFetcher::StopFetchingInternal(StopFetchingTarget target) {
// TODO(toyoshim): May want to suspend scheduler while canceling loaders so
// that the cancellations below do not awake unnecessary scheduling.
@@ -171,7 +171,7 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.c
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -1768,10 +1768,9 @@
@@ -1866,10 +1866,9 @@
},
{
// The Blink runtime-enabled feature name for the API's IDL.
+141 -151
View File
@@ -17,7 +17,6 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
cc/base/features.h | 2 +
cc/input/browser_controls_offset_manager.cc | 6 +
cc/trees/layer_tree_host_impl.cc | 3 +
.../start_surface/StartSurfaceMediator.java | 4 +
.../tab_management/TabGroupUiCoordinator.java | 7 +-
.../tab_management/TabGroupUiMediator.java | 56 ++++++-
.../tab_management/TabGroupUiProperties.java | 7 +-
@@ -32,8 +31,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../layouts/LayoutManagerChrome.java | 19 ++-
.../layouts/LayoutManagerChromeTablet.java | 4 +-
.../layouts/ToolbarSwipeLayout.java | 14 +-
.../overlays/strip/StripLayoutHelper.java | 2 +-
.../strip/StripLayoutHelperManager.java | 38 ++++-
.../overlays/strip/ScrollDelegate.java | 2 +-
.../strip/StripLayoutHelperManager.java | 37 ++++-
.../scene_layer/StaticTabSceneLayer.java | 7 +-
.../scene_layer/TabListSceneLayer.java | 8 +
.../scene_layer/TabStripSceneLayer.java | 19 ++-
@@ -50,7 +49,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../StatusIndicatorSceneLayer.java | 6 +-
.../browser/toolbar/ToolbarManager.java | 37 ++++-
.../chrome/browser/ui/BottomContainer.java | 18 +++
.../ui/system/StatusBarColorController.java | 9 ++
.../ui/system/StatusBarColorController.java | 8 +
.../android/compositor/layer/toolbar_layer.cc | 10 +-
.../scene_layer/tab_strip_scene_layer.cc | 16 +-
.../BottomControlsStacker.java | 2 +-
@@ -61,7 +60,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../browser/flags/ChromeFeatureList.java | 10 ++
chrome/browser/hub/internal/BUILD.gn | 5 +
.../chrome/browser/hub/HubCoordinator.java | 8 +
.../chrome/browser/hub/HubManagerImpl.java | 17 +-
.../chrome/browser/hub/HubManagerImpl.java | 24 ++-
.../browser/hub/ReversedLinearLayout.java | 42 +++++
.../android/res/layout/hub_layout.xml | 4 +-
.../android/res/layout/hub_toolbar_layout.xml | 2 +-
@@ -79,7 +78,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 | 18 ++-
.../bottom/BottomControlsMediator.java | 20 ++-
.../bottom/BottomControlsProperties.java | 6 +-
.../bottom/BottomControlsViewBinder.java | 2 +
.../bottom/ScrollingBottomViewSceneLayer.java | 19 ++-
@@ -91,7 +90,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../AccessibilitySettingsDelegate.java | 7 +
.../render_widget_host_view_android.cc | 3 +
.../Move-navigation-bar-to-bottom.inc | 17 ++
78 files changed, 1006 insertions(+), 80 deletions(-)
77 files changed, 1006 insertions(+), 83 deletions(-)
create mode 100644 chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/ReversedLinearLayout.java
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Move-navigation-bar-to-bottom.inc
@@ -151,7 +150,7 @@ diff --git a/cc/input/browser_controls_offset_manager.cc b/cc/input/browser_cont
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
--- a/cc/trees/layer_tree_host_impl.cc
+++ b/cc/trees/layer_tree_host_impl.cc
@@ -4496,6 +4496,9 @@ bool LayerTreeHostImpl::AnimateBrowserControls(base::TimeTicks time) {
@@ -4588,6 +4588,9 @@ bool LayerTreeHostImpl::AnimateBrowserControls(base::TimeTicks time) {
if (scroll_delta.IsZero())
return false;
@@ -161,31 +160,10 @@ diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
// This counter-scrolls the page to keep the appearance of the page content
// being fixed while the browser controls animate.
viewport().ScrollBy(scroll_delta,
diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
--- a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
+++ b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
@@ -98,6 +98,8 @@ import org.chromium.url.GURL;
import java.util.List;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
+
/** The mediator implements the logic to interact with the surfaces and caller. */
class StartSurfaceMediator
implements StartSurface.OnTabSelectingListener,
@@ -860,6 +862,8 @@ class StartSurfaceMediator
}
private void setTopMargin(int topMargin) {
+ if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled())
+ topMargin = 0;
mPropertyModel.set(TOP_MARGIN, topMargin);
}
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java
@@ -38,6 +38,7 @@ import org.chromium.components.feature_engagement.FeatureConstants;
@@ -39,6 +39,7 @@ import org.chromium.components.feature_engagement.FeatureConstants;
import org.chromium.ui.modaldialog.ModalDialogManager;
import org.chromium.ui.modelutil.PropertyModel;
import org.chromium.ui.modelutil.PropertyModelChangeProcessor;
@@ -193,7 +171,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
import java.util.List;
@@ -156,7 +157,8 @@ public class TabGroupUiCoordinator
@@ -161,7 +162,8 @@ public class TabGroupUiCoordinator
public void initializeWithNative(
Activity activity,
BottomControlsCoordinator.BottomControlsVisibilityController visibilityController,
@@ -203,7 +181,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
var currentTabModelFilterSupplier =
mTabModelSelector.getTabModelFilterProvider().getCurrentTabModelFilterSupplier();
try (TraceEvent e = TraceEvent.scoped("TabGroupUiCoordinator.initializeWithNative")) {
@@ -214,7 +216,8 @@ public class TabGroupUiCoordinator
@@ -220,7 +222,8 @@ public class TabGroupUiCoordinator
mLayoutStateProviderSupplier,
mIncognitoStateProvider,
mTabGridDialogControllerSupplier,
@@ -229,7 +207,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
/** A mediator for the TabGroupUi. Responsible for managing the internal state of the component. */
public class TabGroupUiMediator implements BackPressHandler {
/** An interface to control the TabGroupUi component. */
@@ -118,6 +124,11 @@ public class TabGroupUiMediator implements BackPressHandler {
@@ -119,6 +125,11 @@ public class TabGroupUiMediator implements BackPressHandler {
private final @ColorInt int mPrimaryBackgroundColor;
private final @ColorInt int mIncognitoBackgroundColor;
@@ -241,7 +219,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
TabGroupUiMediator(
Context context,
BottomControlsVisibilityController visibilityController,
@@ -131,7 +142,8 @@ public class TabGroupUiMediator implements BackPressHandler {
@@ -133,7 +144,8 @@ public class TabGroupUiMediator implements BackPressHandler {
@Nullable
LazyOneshotSupplier<TabGridDialogMediator.DialogController>
dialogControllerSupplier,
@@ -251,7 +229,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
this(
context,
visibilityController,
@@ -145,7 +157,8 @@ public class TabGroupUiMediator implements BackPressHandler {
@@ -148,7 +160,8 @@ public class TabGroupUiMediator implements BackPressHandler {
dialogControllerSupplier,
omniboxFocusStateSupplier,
SemanticColorUtils.getDialogBgColor(context),
@@ -261,7 +239,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
}
@VisibleForTesting
@@ -164,7 +177,9 @@ public class TabGroupUiMediator implements BackPressHandler {
@@ -168,7 +181,9 @@ public class TabGroupUiMediator implements BackPressHandler {
dialogControllerSupplier,
ObservableSupplier<Boolean> omniboxFocusStateSupplier,
@ColorInt int primaryBackgroundColor,
@@ -272,7 +250,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
mContext = context;
mResetHandler = resetHandler;
mModel = model;
@@ -183,11 +198,30 @@ public class TabGroupUiMediator implements BackPressHandler {
@@ -188,11 +203,30 @@ public class TabGroupUiMediator implements BackPressHandler {
mIsShowingOverViewMode = true;
}
@@ -303,7 +281,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
if (getTabsToShowForId(lastId).contains(tab)) {
return;
}
@@ -247,6 +281,7 @@ public class TabGroupUiMediator implements BackPressHandler {
@@ -252,6 +286,7 @@ public class TabGroupUiMediator implements BackPressHandler {
return;
}
resetTabStripWithRelatedTabsForId(currentTab.getId());
@@ -311,7 +289,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
}
@Override
@@ -372,6 +407,8 @@ public class TabGroupUiMediator implements BackPressHandler {
@@ -374,6 +409,8 @@ public class TabGroupUiMediator implements BackPressHandler {
resetTabStripWithRelatedTabsForId(tab.getId());
}
@@ -320,7 +298,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
mHandleBackPressChangedSupplier = handleBackPressChangedSupplier;
if (mTabGridDialogControllerSupplier != null) {
mTabGridDialogControllerSupplier.onAvailable(
@@ -399,6 +436,18 @@ public class TabGroupUiMediator implements BackPressHandler {
@@ -401,6 +438,18 @@ public class TabGroupUiMediator implements BackPressHandler {
mModel.set(TabGroupUiProperties.LEFT_BUTTON_DRAWABLE_ID, drawableId);
}
@@ -339,7 +317,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
void setupLeftButtonOnClickListener(View.OnClickListener listener) {
mModel.set(TabGroupUiProperties.LEFT_BUTTON_ON_CLICK_LISTENER, listener);
}
@@ -528,6 +577,7 @@ public class TabGroupUiMediator implements BackPressHandler {
@@ -534,6 +583,7 @@ public class TabGroupUiMediator implements BackPressHandler {
}
public void destroy() {
@@ -447,7 +425,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
import android.graphics.Rect;
import android.util.Size;
import android.view.LayoutInflater;
@@ -55,6 +59,8 @@ import org.chromium.ui.modelutil.PropertyModelChangeProcessor;
@@ -57,6 +61,8 @@ import org.chromium.ui.modelutil.PropertyModelChangeProcessor;
import org.chromium.ui.modelutil.SimpleRecyclerViewAdapter;
import org.chromium.ui.widget.ViewLookupCachingFrameLayout;
@@ -456,7 +434,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.List;
@@ -112,6 +118,128 @@ public class TabListCoordinator
@@ -114,6 +120,128 @@ public class TabListCoordinator
private int mAwaitingTabId = Tab.INVALID_TAB_ID;
private @TabActionState int mTabActionState;
@@ -585,7 +563,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
/**
* Construct a coordinator for UI that shows a list of tabs.
*
@@ -354,6 +482,12 @@ public class TabListCoordinator
@@ -356,6 +484,12 @@ public class TabListCoordinator
checkAwaitingLayout();
}
};
@@ -598,7 +576,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
mRecyclerView.setLayoutManager(gridLayoutManager);
mMediator.registerOrientationListener(gridLayoutManager);
mMediator.updateSpanCount(
@@ -365,8 +499,7 @@ public class TabListCoordinator
@@ -367,8 +501,7 @@ public class TabListCoordinator
.getDecorView()
.getWindowVisibleDisplayFrame(frame);
updateGridCardLayout(frame.width());
@@ -608,7 +586,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
LinearLayoutManager layoutManager =
new LinearLayoutManager(
context,
@@ -381,6 +514,17 @@ public class TabListCoordinator
@@ -383,6 +516,17 @@ public class TabListCoordinator
}
};
mRecyclerView.setLayoutManager(layoutManager);
@@ -626,16 +604,16 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
}
mMediator.setRecyclerViewItemAnimationToggle(mRecyclerView::setDisableItemAnimations);
}
@@ -396,7 +540,7 @@ public class TabListCoordinator
mHasEmptyView = hasEmptyView;
@@ -400,7 +544,7 @@ public class TabListCoordinator
if (mHasEmptyView) {
- mTabListEmptyCoordinator = new TabListEmptyCoordinator(parentView, mModel);
+ mTabListEmptyCoordinator = new TabListEmptyCoordinator(parentView, mModel, mBrowserControlsStateProvider);
mTabListEmptyCoordinator =
new TabListEmptyCoordinator(
- parentView, mModel, this::runOnItemAnimatorFinished);
+ parentView, mModel, this::runOnItemAnimatorFinished, mBrowserControlsStateProvider);
mEmptyStateHeadingResId = emptyHeadingStringResId;
mEmptyStateSubheadingResId = emptySubheadingStringResId;
mEmptyStateImageResId = emptyImageResId;
@@ -685,6 +829,9 @@ public class TabListCoordinator
@@ -689,6 +833,9 @@ public class TabListCoordinator
void prepareTabSwitcherPaneView() {
registerLayoutChangeListener();
mRecyclerView.setupCustomItemAnimator();
@@ -648,13 +626,14 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListEmptyCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListEmptyCoordinator.java
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListEmptyCoordinator.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListEmptyCoordinator.java
@@ -9,10 +9,13 @@ import android.view.View;
@@ -9,11 +9,14 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
+import android.widget.FrameLayout;
+import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider;
import org.chromium.base.Callback;
import org.chromium.chrome.tab_ui.R;
import org.chromium.ui.modelutil.ListObservable;
import org.chromium.ui.modelutil.ListObservable.ListObserver;
@@ -662,17 +641,19 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
/**
* Empty coordinator that is responsible for showing an empty state view in tab switcher when we are
@@ -30,13 +33,16 @@ class TabListEmptyCoordinator {
private ListObserver<Void> mListObserver;
@@ -32,15 +35,18 @@ class TabListEmptyCoordinator {
private Callback<Runnable> mRunOnItemAnimatorFinished;
private boolean mIsTabSwitcherShowing;
private boolean mIsListObserverAttached;
+ private BrowserControlsStateProvider mBrowserControlsStateProvider;
- public TabListEmptyCoordinator(ViewGroup rootView, TabListModel model) {
+ public TabListEmptyCoordinator(ViewGroup rootView, TabListModel model,
+ BrowserControlsStateProvider browserControlsStateProvider) {
public TabListEmptyCoordinator(
- ViewGroup rootView, TabListModel model, Callback<Runnable> runOnItemAnimatorFinished) {
+ ViewGroup rootView, TabListModel model, Callback<Runnable> runOnItemAnimatorFinished,
+ BrowserControlsStateProvider browserControlsStateProvider) {
mRootView = rootView;
mContext = rootView.getContext();
mRunOnItemAnimatorFinished = runOnItemAnimatorFinished;
// Observe TabListModel to determine when to add / remove empty state view.
mModel = model;
@@ -680,7 +661,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
mListObserver =
new ListObserver<Void>() {
@Override
@@ -121,6 +127,15 @@ class TabListEmptyCoordinator {
@@ -136,6 +142,15 @@ class TabListEmptyCoordinator {
public void attachEmptyView() {
if (mEmptyView != null && mEmptyView.getParent() == null) {
mRootView.addView(mEmptyView);
@@ -741,7 +722,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s
Preference captions = findPreference(PREF_CAPTIONS);
captions.setOnPreferenceClickListener(
preference -> {
@@ -237,6 +258,11 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
@@ -238,6 +259,11 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
mDelegate.getBrowserContextHandle(), (Integer) newValue);
} else if (PREF_PAGE_ZOOM_ALWAYS_SHOW.equals(preference.getKey())) {
PageZoomUtils.setShouldAlwaysShowZoomMenuItem((Boolean) newValue);
@@ -849,7 +830,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/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
@@ -252,6 +252,9 @@ import org.chromium.webapk.lib.client.WebApkNavigationClient;
@@ -255,6 +255,9 @@ import org.chromium.webapk.lib.client.WebApkNavigationClient;
import java.util.ArrayList;
import java.util.List;
@@ -862,7 +843,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/compositor/CompositorViewHolder.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java
@@ -251,6 +251,10 @@ public class CompositorViewHolder extends FrameLayout
@@ -250,6 +250,10 @@ public class CompositorViewHolder extends FrameLayout
@Override
public void setCurrentTouchEventOffsets(float top) {
EventForwarder forwarder = getEventForwarder();
@@ -870,10 +851,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/Comp
+ // no need to adjust the touch offsets, since the content view is never moved
+ top = 0;
+ }
if (forwarder != null) forwarder.setCurrentTouchEventOffsets(0, top);
if (forwarder != null) forwarder.setCurrentTouchOffsetY(top);
}
@@ -881,6 +885,9 @@ public class CompositorViewHolder extends FrameLayout
@@ -884,6 +888,9 @@ public class CompositorViewHolder extends FrameLayout
mApplicationBottomInsetSupplier != null
? mApplicationBottomInsetSupplier.get().webContentsHeightInset
: 0;
@@ -973,7 +954,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/ToolbarSwipeLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/ToolbarSwipeLayout.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/ToolbarSwipeLayout.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/ToolbarSwipeLayout.java
@@ -36,6 +36,8 @@ import org.chromium.ui.base.LocalizationUtils;
@@ -37,6 +37,8 @@ import org.chromium.ui.base.LocalizationUtils;
import org.chromium.ui.interpolators.Interpolators;
import org.chromium.ui.resources.ResourceManager;
@@ -982,7 +963,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo
import java.util.ArrayList;
import java.util.List;
@@ -441,7 +443,11 @@ public class ToolbarSwipeLayout extends Layout {
@@ -446,7 +448,11 @@ public class ToolbarSwipeLayout extends Layout {
mLeftToolbarOverlay.setXOffset(leftX * dpToPx);
}
mLeftTab.setX(leftX);
@@ -995,7 +976,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo
needUpdate = updateSnap(dt, mLeftTab) || needUpdate;
} else if (mLeftToolbarOverlay != null) {
mLeftToolbarOverlay.setManualVisibility(false);
@@ -454,7 +460,11 @@ public class ToolbarSwipeLayout extends Layout {
@@ -459,7 +465,11 @@ public class ToolbarSwipeLayout extends Layout {
mRightToolbarOverlay.setXOffset(rightX * dpToPx);
}
mRightTab.setX(rightX);
@@ -1008,30 +989,21 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo
needUpdate = updateSnap(dt, mRightTab) || needUpdate;
} else if (mRightToolbarOverlay != null) {
mRightToolbarOverlay.setManualVisibility(false);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java
@@ -789,7 +789,7 @@ public class StripLayoutHelper implements StripLayoutTabDelegate, StripLayoutGro
boolean isRtl = LocalizationUtils.isLayoutRtl();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/ScrollDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/ScrollDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/ScrollDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/ScrollDelegate.java
@@ -193,6 +193,6 @@ public class ScrollDelegate {
boolean useUnadjustedScrollOffset = isRtl != isLeft;
float offset =
- -(useUnadjustedScrollOffset ? mScrollOffset : (mMinScrollOffset - mScrollOffset));
+ -Math.abs(useUnadjustedScrollOffset ? mScrollOffset : (mMinScrollOffset - mScrollOffset));
float scrollOffset = mScrollOffset;
if (offset <= 0.f) {
return 0.f;
- return -(useUnadjustedScrollOffset ? scrollOffset : (mMinScrollOffset - scrollOffset));
+ return -Math.abs(useUnadjustedScrollOffset ? scrollOffset : (mMinScrollOffset - scrollOffset));
}
}
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
@@ -34,6 +34,7 @@ import org.chromium.base.Callback;
import org.chromium.base.metrics.RecordUserAction;
import org.chromium.base.supplier.ObservableSupplier;
import org.chromium.base.supplier.ObservableSupplierImpl;
+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;
@@ -97,6 +98,8 @@ import org.chromium.ui.interpolators.Interpolators;
@@ -100,6 +100,8 @@ import org.chromium.ui.interpolators.Interpolators;
import org.chromium.ui.resources.ResourceManager;
import org.chromium.ui.util.ColorUtils;
import org.chromium.url.GURL;
@@ -1040,7 +1012,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -265,12 +268,16 @@ public class StripLayoutHelperManager
@@ -268,12 +270,16 @@ public class StripLayoutHelperManager
// Drag-Drop
@Nullable private TabDragSource mTabDragSource;
@@ -1054,26 +1026,26 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
return;
}
+ y -= mStripFilterArea.top;
if (mModelSelectorButton.onDown(x, y, fromMouse, buttons)) {
if (mModelSelectorButton != null
&& mModelSelectorButton.onDown(x, y, fromMouse, buttons)) {
return;
}
@@ -293,6 +300,7 @@ public class StripLayoutHelperManager
@@ -299,6 +305,7 @@ public class StripLayoutHelperManager
if (DragDropGlobalState.hasValue()) {
return;
}
+ y -= mStripFilterArea.top;
mModelSelectorButton.drag(x, y);
getActiveStripLayoutHelper().drag(time(), x, y, dx);
}
@@ -302,6 +310,7 @@ public class StripLayoutHelperManager
if (mModelSelectorButton != null) {
mModelSelectorButton.drag(x, y);
}
@@ -310,6 +317,7 @@ public class StripLayoutHelperManager
if (DragDropGlobalState.hasValue()) {
return;
}
+ y -= mStripFilterArea.top;
long time = time();
if (mModelSelectorButton.click(x, y, fromMouse, buttons)) {
mModelSelectorButton.handleClick(time);
@@ -315,6 +324,7 @@ public class StripLayoutHelperManager
if (mModelSelectorButton != null
&& mModelSelectorButton.click(x, y, fromMouse, buttons)) {
@@ -324,6 +332,7 @@ public class StripLayoutHelperManager
if (DragDropGlobalState.hasValue()) {
return;
}
@@ -1081,7 +1053,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
getActiveStripLayoutHelper().fling(time(), x, y, velocityX, velocityY);
}
@@ -323,6 +333,7 @@ public class StripLayoutHelperManager
@@ -332,6 +341,7 @@ public class StripLayoutHelperManager
if (DragDropGlobalState.hasValue()) {
return;
}
@@ -1089,7 +1061,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
getActiveStripLayoutHelper().onLongPress(time(), x, y);
}
@@ -429,7 +440,8 @@ public class StripLayoutHelperManager
@@ -438,7 +448,8 @@ public class StripLayoutHelperManager
// implement an interface to manage strip transition states.
@NonNull ToolbarManager toolbarManager,
@Nullable DesktopWindowStateProvider desktopWindowStateProvider,
@@ -1099,7 +1071,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
Resources res = context.getResources();
mUpdateHost = updateHost;
mLayerTitleCacheSupplier = layerTitleCacheSupplier;
@@ -591,6 +603,8 @@ public class StripLayoutHelperManager
@@ -550,6 +561,8 @@ public class StripLayoutHelperManager
!mTabStripObscured
&& getStripVisibilityState()
== StripVisibilityState.VISIBLE);
@@ -1108,7 +1080,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
tabHoverCardViewStub.setOnInflateListener(
(viewStub, view) -> {
@@ -753,6 +767,10 @@ public class StripLayoutHelperManager
@@ -783,6 +796,10 @@ public class StripLayoutHelperManager
// layer should be a negative value.
yOffset -= getHeight();
}
@@ -1119,7 +1091,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
mTabStripTreeProvider.pushAndUpdateStrip(
this,
mLayerTitleCacheSupplier.get(),
@@ -766,7 +784,9 @@ public class StripLayoutHelperManager
@@ -796,7 +813,9 @@ public class StripLayoutHelperManager
mStripTransitionScrimOpacity,
mLeftPadding,
mRightPadding,
@@ -1130,7 +1102,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
return mTabStripTreeProvider;
}
@@ -822,11 +842,21 @@ public class StripLayoutHelperManager
@@ -855,11 +874,21 @@ public class StripLayoutHelperManager
mLeftPadding,
mRightPadding);
@@ -1358,7 +1330,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/modaldialog/Chr
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java
@@ -110,6 +110,7 @@ import org.chromium.ui.base.DeviceFormFactor;
@@ -109,6 +109,7 @@ import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.modaldialog.ModalDialogManager;
import org.chromium.url.GURL;
@@ -1366,7 +1338,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.
import java.util.List;
@@ -669,11 +670,16 @@ public class NewTabPage
@@ -661,11 +662,16 @@ public class NewTabPage
final int topControlsDistanceToRest =
mBrowserControlsStateProvider.getContentOffset()
- mBrowserControlsStateProvider.getTopControlsHeight();
@@ -1385,7 +1357,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.
if (topMargin != layoutParams.topMargin || bottomMargin != layoutParams.bottomMargin) {
layoutParams.topMargin = topMargin;
@@ -689,9 +695,7 @@ public class NewTabPage
@@ -681,9 +687,7 @@ public class NewTabPage
* strip.
*/
private int getToolbarExtraYOffset() {
@@ -1409,7 +1381,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
@@ -178,10 +181,17 @@ public class NewTabPageLayout extends LinearLayout {
@@ -174,10 +177,17 @@ public class NewTabPageLayout extends LinearLayout {
mMiddleSpacer = findViewById(R.id.ntp_middle_spacer);
mFakeSearchBoxLayout = findViewById(R.id.search_box);
insertSiteSectionView();
@@ -1506,7 +1478,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsP
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java
@@ -85,6 +85,11 @@ import org.chromium.url.GURL;
@@ -84,6 +84,11 @@ import org.chromium.url.GURL;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -1518,7 +1490,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/Se
import java.lang.ref.WeakReference;
/** Queries the user's default search engine and shows autocomplete suggestions. */
@@ -288,6 +293,12 @@ public class SearchActivity extends AsyncInitializationActivity
@@ -287,6 +292,12 @@ public class SearchActivity extends AsyncInitializationActivity
// Build the search box.
mSearchBox = contentView.findViewById(R.id.search_location_bar);
View anchorView = contentView.findViewById(R.id.toolbar);
@@ -1534,7 +1506,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/Se
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
@@ -408,6 +408,11 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
@@ -403,6 +403,11 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
if (fragment instanceof INeedSnackbarManager) {
((INeedSnackbarManager)fragment).setSnackbarManager(mSnackbarManager);
}
@@ -1598,7 +1570,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/status_indicato
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
@@ -190,6 +190,9 @@ import org.chromium.url.GURL;
@@ -196,6 +196,9 @@ import org.chromium.url.GURL;
import java.util.List;
@@ -1608,7 +1580,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar
/**
* Contains logic for managing the toolbar visual component. This class manages the interactions
* with the rest of the application to ensure the toolbar is always visually up to date.
@@ -629,6 +632,17 @@ public class ToolbarManager
@@ -648,6 +651,17 @@ public class ToolbarManager
}, AlwaysIncognitoLinkInterceptor.isAlwaysIncognito());
mControlContainer = controlContainer;
mToolbarHairline = mControlContainer.findViewById(R.id.toolbar_hairline);
@@ -1626,7 +1598,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar
mBookmarkModelSupplier = bookmarkModelSupplier;
mBookmarkModelSupplier.addObserver(mBookmarkModelSupplierObserver);
@@ -1112,6 +1126,7 @@ public class ToolbarManager
@@ -1137,6 +1151,7 @@ public class ToolbarManager
// the height won't be measured by the background image.
if (mControlContainer.getBackground() == null) {
setControlContainerTopMargin(getToolbarExtraYOffset());
@@ -1634,7 +1606,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar
} else if (mLayoutChangeListener == null) {
mLayoutChangeListener =
(view,
@@ -1125,6 +1140,7 @@ public class ToolbarManager
@@ -1150,6 +1165,7 @@ public class ToolbarManager
oldBottom) -> {
if (mControlContainer.getBackground() == null) {
setControlContainerTopMargin(getToolbarExtraYOffset());
@@ -1642,7 +1614,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar
mControlContainer.removeOnLayoutChangeListener(
mLayoutChangeListener);
mLayoutChangeListener = null;
@@ -1513,16 +1529,28 @@ public class ToolbarManager
@@ -1539,16 +1555,28 @@ public class ToolbarManager
return ((LocationBarCoordinator) mLocationBar).getUrlBarTextWithoutAutocomplete();
}
@@ -1673,7 +1645,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar
mBrowserControlsVisibilityManager,
mIncognitoStateProvider,
mScrimCoordinator,
@@ -1547,7 +1575,7 @@ public class ToolbarManager
@@ -1574,7 +1602,7 @@ public class ToolbarManager
mBottomControlsStacker,
mFullscreenManager,
mEdgeToEdgeControllerSupplier,
@@ -1682,7 +1654,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar
bottomControlsContentDelegateSupplier,
mTabObscuringHandler,
mOverlayPanelVisibilitySupplier,
@@ -1555,7 +1583,8 @@ public class ToolbarManager
@@ -1582,7 +1610,8 @@ public class ToolbarManager
/* readAloudRestoringSupplier= */ () -> {
final var readAloud = mReadAloudControllerSupplier.get();
return readAloud != null && readAloud.isRestoringPlayer();
@@ -1734,7 +1706,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/BottomContai
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/system/StatusBarColorController.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/system/StatusBarColorController.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ui/system/StatusBarColorController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/system/StatusBarColorController.java
@@ -8,10 +8,13 @@ import android.content.Context;
@@ -8,6 +8,7 @@ import android.content.Context;
import android.graphics.Color;
import android.view.View;
import android.view.Window;
@@ -1742,13 +1714,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/system/Statu
import androidx.annotation.ColorInt;
import androidx.annotation.Nullable;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
+
import org.chromium.base.CallbackController;
@@ -17,6 +18,7 @@ import org.chromium.base.CallbackController;
import org.chromium.base.supplier.ObservableSupplier;
import org.chromium.chrome.R;
@@ -482,6 +485,12 @@ public class StatusBarColorController
import org.chromium.chrome.browser.ActivityTabProvider;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.layouts.LayoutManager;
import org.chromium.chrome.browser.layouts.LayoutStateProvider;
import org.chromium.chrome.browser.layouts.LayoutStateProvider.LayoutStateObserver;
@@ -479,6 +481,12 @@ public class StatusBarColorController
boolean needsDarkStatusBarIcons = !ColorUtils.shouldUseLightForegroundOnBackground(color);
UiUtils.setStatusBarIconColor(root, needsDarkStatusBarIcons);
UiUtils.setStatusBarColor(window, color);
@@ -1838,7 +1812,7 @@ diff --git a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer
diff --git a/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BottomControlsStacker.java b/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BottomControlsStacker.java
--- a/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BottomControlsStacker.java
+++ b/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BottomControlsStacker.java
@@ -122,7 +122,7 @@ public class BottomControlsStacker implements BrowserControlsStateProvider.Obser
@@ -178,7 +178,7 @@ public class BottomControlsStacker implements BrowserControlsStateProvider.Obser
/**
* @return {@link BrowserControlsStateProvider} instance in the current Activity.
*/
@@ -1919,7 +1893,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
#include "chrome/browser/android/webapk/webapk_features.h"
#include "chrome/browser/browser_features.h"
#include "chrome/browser/flags/android/chrome_session_state.h"
@@ -260,6 +261,8 @@ const base::Feature* const kFeaturesExposedToJava[] = {
@@ -267,6 +268,8 @@ const base::Feature* const kFeaturesExposedToJava[] = {
&kNavBarColorMatchesTabBackground,
&kNewTabSearchEngineUrlAndroid,
&kNewTabPageAndroidTriggerForPrerender2,
@@ -1931,7 +1905,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
--- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
@@ -374,6 +374,10 @@ public abstract class ChromeFeatureList {
@@ -373,6 +373,10 @@ public abstract class ChromeFeatureList {
public static final String NEW_TAB_PAGE_ANDROID_TRIGGER_FOR_PRERENDER2 =
"NewTabPageAndroidTriggerForPrerender2";
public static final String NOTIFICATION_ONE_TAP_UNSUBSCRIBE = "NotificationOneTapUnsubscribe";
@@ -1942,7 +1916,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
public static final String NOTIFICATION_PERMISSION_VARIANT = "NotificationPermissionVariant";
public static final String NOTIFICATION_PERMISSION_BOTTOM_SHEET =
"NotificationPermissionBottomSheet";
@@ -670,6 +674,10 @@ public abstract class ChromeFeatureList {
@@ -660,6 +664,10 @@ public abstract class ChromeFeatureList {
public static final CachedFlag sPriceInsights = newCachedFlag(PRICE_INSIGHTS, false);
public static final CachedFlag sPrivacyGuideAndroid3 =
newCachedFlag(PRIVACY_GUIDE_ANDROID_3, false);
@@ -1953,15 +1927,15 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
public static final CachedFlag sPrivacyGuidePreloadAndroid =
newCachedFlag(PRIVACY_GUIDE_PRELOAD_ANDROID, false);
public static final CachedFlag sOptimizationGuidePushNotifications =
@@ -800,6 +808,8 @@ public abstract class ChromeFeatureList {
@@ -788,6 +796,8 @@ public abstract class ChromeFeatureList {
sPrivacyGuideAndroid3,
sPrivacyGuidePreloadAndroid,
sOptimizationGuidePushNotifications,
+ sMoveTopToolbarToBottom,
+ sDisableToolbarSwipeUp,
sPaintPreviewDemo,
sPostGetMyMemoryStateToBackground,
sPrefetchBrowserInitiatedTriggers,
sQueryTiles,
diff --git a/chrome/browser/hub/internal/BUILD.gn b/chrome/browser/hub/internal/BUILD.gn
--- a/chrome/browser/hub/internal/BUILD.gn
+++ b/chrome/browser/hub/internal/BUILD.gn
@@ -1987,15 +1961,15 @@ diff --git a/chrome/browser/hub/internal/BUILD.gn b/chrome/browser/hub/internal/
diff --git a/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/HubCoordinator.java b/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/HubCoordinator.java
--- a/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/HubCoordinator.java
+++ b/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/HubCoordinator.java
@@ -8,6 +8,7 @@ import android.content.Context;
import android.view.LayoutInflater;
@@ -9,6 +9,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
+import android.widget.LinearLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -18,6 +19,7 @@ import org.chromium.base.supplier.ObservableSupplierImpl;
@@ -19,6 +20,7 @@ import org.chromium.base.supplier.ObservableSupplierImpl;
import org.chromium.base.supplier.OneshotSupplier;
import org.chromium.base.supplier.TransitiveObservableSupplier;
import org.chromium.chrome.browser.feature_engagement.TrackerFactory;
@@ -2003,7 +1977,7 @@ diff --git a/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/br
import org.chromium.chrome.browser.profiles.ProfileProvider;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.toolbar.menu_button.MenuButtonCoordinator;
@@ -93,6 +95,12 @@ public class HubCoordinator implements PaneHubController, BackPressHandler {
@@ -94,6 +96,12 @@ public class HubCoordinator implements PaneHubController, BackPressHandler {
HubPaneHostView hubPaneHostView = mContainerView.findViewById(R.id.hub_pane_host);
mHubPaneHostCoordinator =
new HubPaneHostCoordinator(hubPaneHostView, paneManager.getFocusedPaneSupplier());
@@ -2035,7 +2009,7 @@ diff --git a/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/br
import org.chromium.chrome.browser.back_press.BackPressManager;
import org.chromium.chrome.browser.profiles.ProfileProvider;
import org.chromium.chrome.browser.tab.Tab;
@@ -111,7 +113,10 @@ public class HubManagerImpl implements HubManager, HubController {
@@ -120,7 +122,10 @@ public class HubManagerImpl implements HubManager, HubController {
LayoutParams params = (LayoutParams) mHubContainerView.getLayoutParams();
assert params != null : "HubContainerView should always have layout params.";
mStatusIndicatorHeight = height;
@@ -2047,7 +2021,7 @@ diff --git a/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/br
mHubContainerView.setLayoutParams(params);
}
@@ -121,7 +126,10 @@ public class HubManagerImpl implements HubManager, HubController {
@@ -130,7 +135,10 @@ public class HubManagerImpl implements HubManager, HubController {
LayoutParams params = (LayoutParams) mHubContainerView.getLayoutParams();
assert params != null : "HubContainerView should always have layout params.";
mAppHeaderHeight = height;
@@ -2059,15 +2033,29 @@ diff --git a/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/br
mHubContainerView.setLayoutParams(params);
}
@@ -242,6 +250,9 @@ public class HubManagerImpl implements HubManager, HubController {
@@ -242,6 +250,8 @@ public class HubManagerImpl implements HubManager, HubController {
mSnackbarManager.popParentViewFromOverrideStack(mSnackbarOverrideToken);
mSnackbarOverrideToken = TokenHolder.INVALID_TOKEN;
}
+ if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled())
+ mSnackbarManager.setParentView(null);
}
private void attachPaneDependencies(@Nullable Pane pane) {
@@ -254,8 +264,12 @@ public class HubManagerImpl implements HubManager, HubController {
mMenuOrKeyboardActionController.registerMenuOrKeyboardActionHandler(
menuOrKeyboardActionHandler);
}
- mSnackbarManager.setParentView(mHubContainerView);
- mSnackbarOverrideToken =
- mSnackbarManager.pushParentViewToOverrideStack(
- mHubCoordinator.getSnackbarContainer());
+ if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled())
+ mSnackbarManager.setParentView((ViewGroup)getPaneHostView());
+ else
+ mSnackbarManager.setParentView(mHubContainerView);
+ else {
+ mSnackbarOverrideToken =
+ mSnackbarManager.pushParentViewToOverrideStack(
+ mHubCoordinator.getSnackbarContainer());
+ }
}
}
diff --git a/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/ReversedLinearLayout.java b/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/ReversedLinearLayout.java
@@ -2151,7 +2139,7 @@ diff --git a/chrome/browser/hub/internal/android/res/layout/hub_toolbar_layout.x
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -2168,7 +2168,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
@@ -2206,7 +2206,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
#if BUILDFLAG(IS_ANDROID)
registry->RegisterBooleanPref(prefs::kVirtualKeyboardResizesLayoutByDefault,
@@ -2159,7 +2147,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse
+ true);
#endif
#if BUILDFLAG(ENABLE_SCREEN_AI_SERVICE)
registry->RegisterBooleanPref(
diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/AppMenu.java b/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/AppMenu.java
--- a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/AppMenu.java
+++ b/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/AppMenu.java
@@ -2512,7 +2500,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
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
@@ -1699,6 +1699,12 @@ Your Google account may have other forms of browsing history like searches and a
@@ -1696,6 +1696,12 @@ Your Google account may have other forms of browsing history like searches and a
<message name="IDS_FORCE_TABLET_UI_TITLE" desc="Title of the preference that allows the user to update force tablet UI settings.">
Force Tablet Mode
</message>
@@ -2528,7 +2516,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
diff --git a/chrome/browser/ui/android/toolbar/BUILD.gn b/chrome/browser/ui/android/toolbar/BUILD.gn
--- a/chrome/browser/ui/android/toolbar/BUILD.gn
+++ b/chrome/browser/ui/android/toolbar/BUILD.gn
@@ -167,6 +167,7 @@ android_library("java") {
@@ -168,6 +168,7 @@ android_library("java") {
"//content/public/android:content_java",
"//third_party/android_deps:material_design_java",
"//third_party/androidx:androidx_annotation_annotation_experimental_java",
@@ -2633,7 +2621,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsMediator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsMediator.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsMediator.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsMediator.java
@@ -25,6 +25,7 @@ import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeSupplier.ChangeObse
@@ -27,6 +27,7 @@ import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeUtils;
import org.chromium.ui.KeyboardVisibilityDelegate;
import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.modelutil.PropertyModel;
@@ -2641,7 +2629,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
/**
* This class is responsible for reacting to events from the outside world, interacting with other
@@ -148,6 +149,12 @@ class BottomControlsMediator
@@ -147,6 +148,12 @@ class BottomControlsMediator
}
void setBottomControlsVisible(boolean visible) {
@@ -2654,7 +2642,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
mIsBottomControlsVisible = visible;
updateCompositedViewVisibility();
updateAndroidViewVisibility();
@@ -182,6 +189,7 @@ class BottomControlsMediator
@@ -181,6 +188,7 @@ class BottomControlsMediator
int bottomControlsMinHeightOffset,
boolean needsAnimate,
boolean isVisibilityForced) {
@@ -2662,19 +2650,21 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
// Method call routed to onBrowserControlsOffsetUpdate.
if (BottomControlsStacker.isDispatchingYOffset()) return;
@@ -303,10 +311,12 @@ class BottomControlsMediator
@@ -306,11 +314,13 @@ class BottomControlsMediator
&& !mIsInSwipeLayout
&& getBrowserControls().getBottomControlOffset() == 0;
if (visible) {
- // Translate view so that its bottom is aligned with browser controls min height.
- // Translate view so that its bottom is aligned with the "base" y_offset, or the
- // y_offset when the bottom controls aren't offset.
- mModel.set(
- BottomControlsProperties.ANDROID_VIEW_TRANSLATE_Y,
- -getBrowserControls().getBottomControlsMinHeight());
- mModel.get(BottomControlsProperties.Y_OFFSET));
+ if (!ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) {
+ // Translate view so that its bottom is aligned with browser controls min height.
+ // Translate view so that its bottom is aligned with the "base" y_offset, or the
+ // y_offset when the bottom controls aren't offset.
+ mModel.set(
+ BottomControlsProperties.ANDROID_VIEW_TRANSLATE_Y,
+ -getBrowserControls().getBottomControlsMinHeight());
+ mModel.get(BottomControlsProperties.Y_OFFSET));
+ }
}
mModel.set(BottomControlsProperties.ANDROID_VIEW_VISIBLE, visible);
@@ -538,17 +538,17 @@ diff --git a/chrome/browser/ui/prefs/prefs_tab_helper.cc b/chrome/browser/ui/pre
diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
--- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -574,6 +574,10 @@ void AddDownloadsStrings(content::WebUIDataSource* html_source) {
{"dayHistory", IDS_SETTINGS_DAY_HISTORY_DESCRIPTION},
{"daysHistory", IDS_SETTINGS_DAYS_HISTORY_DESCRIPTION},
{"foreverHistory", IDS_SETTINGS_FOREVER_HISTORY_DESCRIPTION},
+ {"referersPolicyTitle", IDS_REFERERS_POLICY_TITLE},
+ {"standardRefererPolicy", IDS_STANDARD_REFERER_POLICY_TITLE},
+ {"noCrossOriginTopFramePolicy", IDS_NO_CROSS_ORIGIN_TOP_FRAME_POLICY_TITLE},
+ {"disableRefererPolicy", IDS_DISABLE_REFERER_POLICY_TITLE},
@@ -1854,6 +1854,10 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source,
{"dayHistory", IDS_SETTINGS_DAY_HISTORY_DESCRIPTION},
{"daysHistory", IDS_SETTINGS_DAYS_HISTORY_DESCRIPTION},
{"foreverHistory", IDS_SETTINGS_FOREVER_HISTORY_DESCRIPTION},
+ {"referersPolicyTitle", IDS_REFERERS_POLICY_TITLE},
+ {"standardRefererPolicy", IDS_STANDARD_REFERER_POLICY_TITLE},
+ {"noCrossOriginTopFramePolicy", IDS_NO_CROSS_ORIGIN_TOP_FRAME_POLICY_TITLE},
+ {"disableRefererPolicy", IDS_DISABLE_REFERER_POLICY_TITLE},
#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
void AddGetTheMostOutOfChromeStrings(content::WebUIDataSource* html_source) {
static constexpr webui::LocalizedString kLocalizedStrings[] = {
{"safeBrowsingStandardDescProxy",
IDS_SETTINGS_SAFEBROWSING_STANDARD_DESC_PROXY},
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
--- a/chrome/common/pref_names.h
+++ b/chrome/common/pref_names.h
@@ -8,8 +8,6 @@ Voice button and legacy share/voice functionality is not restored.
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../chrome/browser/settings/MainSettings.java | 3 +-
.../browser/share/ShareButtonController.java | 37 +++++++++++
chrome/browser/about_flags.cc | 6 --
chrome/browser/flag-metadata.json | 3 +-
.../flags/android/chrome_feature_list.cc | 5 ++
.../browser/flags/ChromeFeatureList.java | 1 +
@@ -20,21 +18,21 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../AdaptiveToolbarStatePredictorTest.java | 15 +++++
...oButtonGroupAdaptiveToolbarPreference.java | 1 +
...ve-button-in-top-toolbar-customization.inc | 3 +
13 files changed, 147 insertions(+), 12 deletions(-)
11 files changed, 110 insertions(+), 6 deletions(-)
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Restore-adaptive-button-in-top-toolbar-customization.inc
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java
@@ -52,6 +52,7 @@ import org.chromium.chrome.browser.sync.settings.ManageSyncSettings;
import org.chromium.chrome.browser.sync.settings.SignInPreference;
import org.chromium.chrome.browser.sync.settings.SyncPromoPreference;
@@ -55,6 +55,7 @@ import org.chromium.chrome.browser.sync.settings.SyncPromoPreference;
import org.chromium.chrome.browser.sync.settings.SyncSettingsUtils;
import org.chromium.chrome.browser.tab_group_sync.TabGroupSyncFeatures;
import org.chromium.chrome.browser.tasks.tab_management.TabUiFeatureUtilities;
+import org.chromium.chrome.browser.toolbar.adaptive.AdaptiveToolbarFeatures;
import org.chromium.chrome.browser.toolbar.adaptive.AdaptiveToolbarStatePredictor;
import org.chromium.chrome.browser.tracing.settings.DeveloperSettings;
import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
@@ -268,7 +269,7 @@ public class MainSettings extends ChromeBaseSettingsFragment
@@ -271,7 +272,7 @@ public class MainSettings extends ChromeBaseSettingsFragment
uiState -> {
// We don't show the toolbar shortcut settings page if disabled from
// finch.
@@ -43,79 +41,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
getPreferenceScreen()
.removePreference(findPreference(PREF_TOOLBAR_SHORTCUT));
});
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/ShareButtonController.java b/chrome/android/java/src/org/chromium/chrome/browser/share/ShareButtonController.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/share/ShareButtonController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/share/ShareButtonController.java
@@ -111,6 +111,43 @@ public class ShareButtonController extends BaseButtonDataProvider {
return mShareUtils.shouldEnableShare(tab);
}
+/* @Override
+ public ButtonData get(Tab tab) {
+ updateButtonVisibility(tab);
+ maybeSetIphCommandBuilder(tab);
+ return mButtonData;
+ }
+
+ private void updateButtonVisibility(Tab tab) {
+ if (tab == null || tab.getWebContents() == null || mTabProvider == null
+ || mTabProvider.get() == null || !isFeatureEnabled()) {
+ mButtonData.setCanShow(false);
+ return;
+ }
+
+ final boolean isDeviceWideEnough =
+ mScreenWidthDp >= AdaptiveToolbarFeatures.getDeviceMinimumWidthForShowingButton();
+ if (mShareDelegateSupplier.get() == null || !isDeviceWideEnough) {
+ mButtonData.setCanShow(false);
+ return;
+ }
+
+ mButtonData.setCanShow(mShareUtils.shouldEnableShare(tab));
+ }
+
+ private static boolean isFeatureEnabled() {
+ return (AdaptiveToolbarFeatures.isSingleVariantModeEnabled()
+ && AdaptiveToolbarFeatures.getSingleVariantMode()
+ == AdaptiveToolbarButtonVariant.SHARE)
+ || AdaptiveToolbarFeatures.isCustomizationEnabled();
+ }
+
+ private void notifyObservers(boolean hint) {
+ for (ButtonDataObserver observer : mObservers) {
+ observer.buttonDataChanged(hint);
+ }
+ } */
+
/**
* Returns an IPH for this button. Only called once native is initialized and when {@code
* AdaptiveToolbarFeatures.isCustomizationEnabled()} is true.
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
@@ -701,18 +701,12 @@ const FeatureEntry::FeatureParam kAdaptiveButtonCustomization_Share[] = {
{"default_segment", "share"},
{"show_ui_only_after_ready", "false"},
{"ignore_segmentation_results", "true"}};
-const FeatureEntry::FeatureParam kAdaptiveButtonCustomization_Voice[] = {
- {"default_segment", "voice"},
- {"show_ui_only_after_ready", "false"},
- {"ignore_segmentation_results", "true"}};
const FeatureEntry::FeatureVariation
kAdaptiveButtonInTopToolbarCustomizationVariations[] = {
{"New Tab", kAdaptiveButtonCustomization_NewTab,
std::size(kAdaptiveButtonCustomization_NewTab), nullptr},
{"Share", kAdaptiveButtonCustomization_Share,
std::size(kAdaptiveButtonCustomization_Share), nullptr},
- {"Voice", kAdaptiveButtonCustomization_Voice,
- std::size(kAdaptiveButtonCustomization_Voice), nullptr},
};
const FeatureEntry::FeatureParam kContextualPageActionsUiParams_Quiet[] = {
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -47,9 +47,10 @@
@@ -52,9 +52,10 @@
"expiry_milestone": 130
},
{
@@ -130,7 +59,7 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js
diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
--- a/chrome/browser/flags/android/chrome_feature_list.cc
+++ b/chrome/browser/flags/android/chrome_feature_list.cc
@@ -159,6 +159,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
@@ -168,6 +168,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
&history::kOrganicRepeatableQueries,
&history_clusters::internal::kJourneys,
&history_clusters::internal::kOmniboxAction,
@@ -138,7 +67,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
&kAdaptiveButtonInTopToolbarTranslate,
&kAdaptiveButtonInTopToolbarAddToBookmarks,
&kAdaptiveButtonInTopToolbarCustomizationV2,
@@ -419,6 +420,10 @@ static jlong JNI_ChromeFeatureMap_GetNativeMap(JNIEnv* env) {
@@ -420,6 +421,10 @@ static jlong JNI_ChromeFeatureMap_GetNativeMap(JNIEnv* env) {
// Alphabetical:
@@ -152,7 +81,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
--- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
@@ -158,6 +158,7 @@ public abstract class ChromeFeatureList {
@@ -160,6 +160,7 @@ public abstract class ChromeFeatureList {
public static final String ACCOUNT_REAUTHENTICATION_RECENT_TIME_WINDOW =
"AccountReauthenticationRecentTimeWindow";
public static final String ALLOW_USER_CERTIFICATES = "AllowUserCertificates";
@@ -163,8 +92,8 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController.java
@@ -278,6 +278,15 @@ public class AdaptiveToolbarButtonController
new AdaptiveToolbarStatePredictor(profile, mAndroidPermissionDelegate);
@@ -281,6 +281,15 @@ public class AdaptiveToolbarButtonController
new AdaptiveToolbarStatePredictor(mContext, profile, mAndroidPermissionDelegate);
ContextUtils.getAppSharedPreferences().registerOnSharedPreferenceChangeListener(this);
+ if (AdaptiveToolbarFeatures.isSingleVariantModeEnabled()) {
@@ -182,9 +111,9 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarFeatures.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarFeatures.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarFeatures.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarFeatures.java
@@ -16,8 +16,18 @@ import org.chromium.chrome.browser.readaloud.ReadAloudFeatures;
@@ -18,8 +18,18 @@ import org.chromium.ui.base.DeviceFormFactor;
import java.util.HashMap;
import java.util.List;
-/** A utility class for handling feature flags used by {@link AdaptiveToolbarButtonController}. */
+/** A utility class for handling feature flags used by {@link AdaptiveToolbarButtonController}. *
@@ -202,16 +131,16 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
/** Finch default group for new tab variation. */
static final String NEW_TAB = "new-tab";
@@ -33,6 +43,7 @@ public class AdaptiveToolbarFeatures {
private static final String VARIATION_PARAM_DISABLE_UI = "disable_ui";
private static final String VARIATION_PARAM_IGNORE_SEGMENTATION_RESULTS =
"ignore_segmentation_results";
@@ -48,6 +58,7 @@ public class AdaptiveToolbarFeatures {
@AdaptiveToolbarButtonVariant private static Integer sButtonVariant;
/** For testing only. */
+ private static final String VARIATION_PARAM_SINGLE_VARIANT_MODE = "mode";
private static final String VARIATION_PARAM_SHOW_UI_ONLY_AFTER_READY =
"show_ui_only_after_ready";
@VisibleForTesting static final String VARIATION_PARAM_MIN_VERSION = "min_version_adaptive";
@@ -113,6 +124,21 @@ public class AdaptiveToolbarFeatures {
}
private static String sDefaultSegmentForTesting;
private static HashMap<Integer, Boolean> sActionChipOverridesForTesting;
@@ -79,6 +90,21 @@ public class AdaptiveToolbarFeatures {
return false;
}
+ /**
@@ -232,8 +161,8 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
/**
* Returns whether the adaptive toolbar is enabled with segmentation and customization.
*
@@ -252,11 +278,48 @@ public class AdaptiveToolbarFeatures {
ChromeFeatureList.CONTEXTUAL_PAGE_ACTIONS, "enable_ui", true);
@@ -204,6 +230,42 @@ public class AdaptiveToolbarFeatures {
return segmentationResults.get(0);
}
+ /**
@@ -275,12 +204,14 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
/**
* Returns the default variant to be shown in segmentation experiment when the backend results
* are unavailable or not configured.
@@ -211,6 +273,7 @@ public class AdaptiveToolbarFeatures {
* @param context @{@link Context} to determine form-factor.
*/
static @AdaptiveToolbarButtonVariant int getSegmentationDefault() {
static @AdaptiveToolbarButtonVariant int getSegmentationDefault(Context context) {
+ assert !isSingleVariantModeEnabled();
assert isCustomizationEnabled();
if (sButtonVariant != null) return sButtonVariant;
String defaultSegment = getDefaultSegment();
String defaultSegment = getDefaultSegment(context);
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarPrefs.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarPrefs.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarPrefs.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarPrefs.java
@@ -296,7 +227,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor.java
@@ -91,10 +91,15 @@ public class AdaptiveToolbarStatePredictor {
@@ -99,10 +99,15 @@ public class AdaptiveToolbarStatePredictor {
// Early return if the feature isn't enabled.
if (!AdaptiveToolbarFeatures.isCustomizationEnabled()) {
@@ -317,7 +248,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictorTest.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictorTest.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictorTest.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictorTest.java
@@ -70,6 +70,21 @@ public class AdaptiveToolbarStatePredictorTest {
@@ -73,6 +73,21 @@ public class AdaptiveToolbarStatePredictorTest {
statePredictor.recomputeUiState(verifyResultCallback(expected));
}
@@ -11,9 +11,9 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../java/res/xml/privacy_preferences.xml | 6 ++++
.../flags/cromite/sTabSwitcherListMode.java | 33 +++++++++++++++++++
.../Use-list-mode-for-tab-switcher.grdp | 9 +++++
.../browser/toolbar/top/ToolbarPhone.java | 16 +++++----
.../browser/toolbar/top/ToolbarPhone.java | 6 ++--
.../tab-switcher-list-mode.inc | 3 ++
6 files changed, 63 insertions(+), 8 deletions(-)
6 files changed, 57 insertions(+), 4 deletions(-)
create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sTabSwitcherListMode.java
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Use-list-mode-for-tab-switcher.grdp
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/tab-switcher-list-mode.inc
@@ -21,15 +21,15 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities.java
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities.java
@@ -11,6 +11,7 @@ import org.chromium.base.ResettersForTesting;
import org.chromium.base.SysUtils;
@@ -12,6 +12,7 @@ import org.chromium.base.SysUtils;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.tasks.tab_groups.TabGroupModelFilter;
import org.chromium.ui.base.DeviceFormFactor;
+import org.chromium.chrome.browser.flags.cromite.sTabSwitcherListMode;
import java.util.Locale;
import java.util.Set;
@@ -46,8 +47,7 @@ public class TabUiFeatureUtilities {
@@ -47,8 +48,7 @@ public class TabUiFeatureUtilities {
/** Returns whether the Grid Tab Switcher UI should use list mode. */
public static boolean shouldUseListMode() {
@@ -110,25 +110,15 @@ new file mode 100644
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java
@@ -51,6 +51,7 @@ import org.chromium.base.MathUtils;
import org.chromium.base.TraceEvent;
@@ -51,6 +51,7 @@ import org.chromium.base.TraceEvent;
import org.chromium.base.supplier.ObservableSupplier;
import org.chromium.base.supplier.Supplier;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.chrome.browser.flags.cromite.sTabSwitcherListMode;
import org.chromium.chrome.browser.omnibox.LocationBar;
import org.chromium.chrome.browser.omnibox.LocationBarCoordinator;
import org.chromium.chrome.browser.omnibox.NewTabPageDelegate;
@@ -503,7 +504,8 @@ public class ToolbarPhone extends ToolbarLayout
private void inflateTabSwitchingResources() {
mToggleTabStackButton = findViewById(R.id.tab_switcher_button);
- mToggleTabStackButton.setClickable(false);
+ if (!sTabSwitcherListMode.getInstance().isEnabled())
+ mToggleTabStackButton.setClickable(false);
}
private void enableTabSwitchingResources() {
@@ -1935,7 +1937,7 @@ public class ToolbarPhone extends ToolbarLayout
@@ -1849,7 +1850,7 @@ public class ToolbarPhone extends ToolbarLayout
// On entering the tab switcher, set the focusability of the url bar to be false. This will
// occur at the start of the enter event, and will later be reset to true upon finishing the
// exit event.
@@ -137,30 +127,16 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
mLocationBar.setUrlBarFocusable(false);
}
@@ -1952,9 +1954,10 @@ public class ToolbarPhone extends ToolbarLayout
&& (mTabSwitcherState == STATIC_TAB || mTabSwitcherState == EXITING_TAB_SWITCHER)) {
return;
}
- // Prevent pressing the tab switcher button until after transition finishes.
- mToggleTabStackButton.setClickable(false);
-
+ if (!sTabSwitcherListMode.getInstance().isEnabled()) {
+ // Prevent pressing the tab switcher button until after transition finishes.
+ mToggleTabStackButton.setClickable(false);
+ }
mTabSwitcherState = inTabSwitcherMode ? ENTERING_TAB_SWITCHER : EXITING_TAB_SWITCHER;
@@ -2047,7 +2048,8 @@ public class ToolbarPhone extends ToolbarLayout
updateLocationBarForNtp(mVisualState, urlHasFocus());
- getTabSwitcherButtonCoordinator().getContainerView().setClickable(!hasFocus);
+ if (!sTabSwitcherListMode.getInstance().isEnabled())
+ getTabSwitcherButtonCoordinator().getContainerView().setClickable(!hasFocus);
triggerUrlFocusAnimation(hasFocus);
}
// The width of location bar depends on mTabSwitcherState so layout request is needed. See
@@ -2014,7 +2017,8 @@ public class ToolbarPhone extends ToolbarLayout
}
if (mTabSwitcherState == ENTERING_TAB_SWITCHER) {
mTabSwitcherState = TAB_SWITCHER;
- mToggleTabStackButton.setClickable(false);
+ if (!sTabSwitcherListMode.getInstance().isEnabled())
+ mToggleTabStackButton.setClickable(false);
}
// Ensure clickable if in STATIC_TAB mode.
if (mTabSwitcherState == STATIC_TAB) {
diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/tab-switcher-list-mode.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/tab-switcher-list-mode.inc
new file mode 100644
--- /dev/null