Patches for 148.0.7778.97 (need work)

This commit is contained in:
Carmelo Messina
2026-05-08 08:36:11 +02:00
parent ca9926de51
commit 5e2e7d3817
8 changed files with 1213 additions and 1074 deletions
@@ -10,10 +10,10 @@ Original License: BSD-3-Clause - https://spdx.org/licenses/BSD-3-Clause.html
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
chrome/android/java/res/layout/url_bar.xml | 1 +
.../browser/omnibox/LocationBarMediator.java | 25 +++++++++++++-----
.../browser/omnibox/LocationBarMediator.java | 21 ++++++++++++---
.../chrome/browser/omnibox/UrlBar.java | 26 +++++++++++++++++++
.../browser/omnibox/UrlBarViewBinder.java | 1 +
4 files changed, 47 insertions(+), 6 deletions(-)
4 files changed, 45 insertions(+), 4 deletions(-)
diff --git a/chrome/android/java/res/layout/url_bar.xml b/chrome/android/java/res/layout/url_bar.xml
--- a/chrome/android/java/res/layout/url_bar.xml
@@ -29,25 +29,7 @@ diff --git a/chrome/android/java/res/layout/url_bar.xml b/chrome/android/java/re
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java
@@ -591,7 +591,7 @@ class LocationBarMediator
if (NativePage.isChromePageUrl(currentUrl, mLocationBarDataProvider.isOffTheRecord())
&& mCurrentInput != null) {
mCurrentInput.setUserText(null);
- beginOrResumeInput(/* activateNewSession= */ false);
+ beginOrResumeInput(/* activateNewSession= */ false, /* wasFocus */ false);
} else {
setUrlBarText(
mLocationBarDataProvider.getUrlBarData(),
@@ -842,7 +842,7 @@ class LocationBarMediator
if (mCurrentInput == null) return; // session not started yet.
mCurrentInput.setUserText(null);
- beginOrResumeInput(/* activateNewSession= */ false);
+ beginOrResumeInput(/* activateNewSession= */ false, /* wasFocus */ false);
updateButtonVisibility();
mUrlCoordinator.requestAccessibilityFocus();
}
@@ -923,7 +923,7 @@ class LocationBarMediator
@@ -1006,7 +1006,7 @@ class LocationBarMediator
// Existing text (e.g. if the user pasted via the fakebox) from the fake box
// should be restored after toggling the focus.
if (mCurrentInput != null && !mCurrentInput.getUserText().isEmpty()) {
@@ -56,7 +38,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
}
}
@@ -968,7 +968,7 @@ class LocationBarMediator
@@ -1051,7 +1051,7 @@ class LocationBarMediator
*/
@EnsuresNonNullIf("mCurrentInput")
@VisibleForTesting
@@ -65,8 +47,8 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
// Do not instantiate a new ephemeral session unless we're activating it as well.
var session = FuseboxSessionState.from(mLocationBarDataProvider);
@@ -1002,6 +1002,19 @@ class LocationBarMediator
.addSyncObserverAndCallIfNonNull(mAutocompleteRequestTypeObserver);
@@ -1086,6 +1086,19 @@ class LocationBarMediator
mStatusCoordinator.setSiteSearchDataSupplier(mCurrentInput.getSiteSearchDataSupplier());
UrlBarData data = UrlBarData.forNonUrlText(mCurrentInput.getUserText());
+ if (wasFocus) {
@@ -85,7 +67,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
mUrlCoordinator.setUrlBarData(
data, UrlBar.ScrollType.NO_SCROLL, mCurrentInput.getSelection());
@@ -1076,7 +1089,7 @@ class LocationBarMediator
@@ -1161,7 +1174,7 @@ class LocationBarMediator
// This call is permitted to happen before anyone else is activated, and
// must be called before everyone else cleans up.
if (hasFocus) {
@@ -94,7 +76,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
} else {
endInputInternal();
}
@@ -1953,7 +1966,7 @@ class LocationBarMediator
@@ -2064,7 +2077,7 @@ class LocationBarMediator
}
// Wait for the Url focus change before refreshing autocomplete.
@@ -122,7 +104,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
import org.chromium.ui.display.DisplayAndroid;
import org.chromium.ui.display.DisplayUtil;
@@ -109,6 +111,7 @@ public class UrlBar extends AutocompleteEditText {
@@ -112,6 +114,7 @@ public class UrlBar extends AutocompleteEditText {
private boolean mFocusEventEmitted;
private boolean mAllowFocus = true;
private boolean mAllowMultilineInput;
@@ -130,7 +112,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
private boolean mCurrentInputCanBeWrapped;
private boolean mPendingScroll;
@@ -332,6 +335,29 @@ public class UrlBar extends AutocompleteEditText {
@@ -335,6 +338,29 @@ public class UrlBar extends AutocompleteEditText {
mPendingScroll = false;
}
fixupTextDirection();
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -38,7 +38,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../browser/content_autofill_driver.cc | 11 +++
.../content/browser/content_autofill_driver.h | 10 ++
.../content_autofill_driver_factory.cc | 12 +++
.../content/renderer/autofill_agent.cc | 10 +-
.../content/renderer/autofill_agent.cc | 4 -
.../renderer/password_autofill_agent.cc | 5 +-
.../browser/foundations/autofill_driver.h | 2 +
.../foundations/autofill_driver_factory.cc | 4 +
@@ -50,7 +50,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../core/browser/password_form_manager.cc | 4 +
.../core/browser/password_manager_client.cc | 2 +
.../core/browser/password_manager_client.h | 2 +
35 files changed, 255 insertions(+), 144 deletions(-)
35 files changed, 249 insertions(+), 144 deletions(-)
create mode 100644 components/android_autofill/browser/java/src/org/chromium/components/autofill/BrowserSelectionActionMenuDelegate.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
@@ -192,10 +192,10 @@ 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
@@ -627,22 +627,8 @@ public class MainSettings extends ChromeBaseSettingsFragment
}
@@ -720,22 +720,8 @@ public class MainSettings extends ChromeBaseSettingsFragment
private void updateAutofillPreferences() {
// TODO(crbug.com/482988366): Remove this method once the Autofill and passwords feature is launched.
private void updateAutofillPreferencesPreAutofillAndPasswords() {
- addPreferenceIfAbsent(PREF_AUTOFILL_SECTION);
- addPreferenceIfAbsent(PREF_AUTOFILL_OPTIONS);
- Preference autofillOptionsPreference = findPreference(PREF_AUTOFILL_OPTIONS);
@@ -220,7 +220,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java
@@ -122,6 +122,13 @@ import java.util.HashMap;
@@ -121,6 +121,13 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
@@ -234,7 +234,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.
@@ -1248,6 +1255,11 @@ class TabImpl implements Tab {
@@ -1252,6 +1259,11 @@ class TabImpl implements Tab {
}
mObservers.clear();
@@ -246,7 +246,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
if (!abortNavigationsFromTabClosures) mUserDataHost.destroy();
mTabViewManager.destroy();
hideNativePage(false, null);
@@ -1637,6 +1649,7 @@ class TabImpl implements Tab {
@@ -1641,6 +1653,7 @@ class TabImpl implements Tab {
* @return iff the AutofillProvider should provide a ViewStructure when prompted.
*/
boolean providesAutofillStructure() {
@@ -254,7 +254,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
if (!mProfile.isNativeInitialized()) {
return false;
}
@@ -2436,16 +2449,21 @@ class TabImpl implements Tab {
@@ -2440,16 +2453,21 @@ class TabImpl implements Tab {
* @return true if the the provider is available for the given WebContents.
*/
private boolean prepareAutofillProvider(WebContents newWebContents) {
@@ -282,7 +282,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
// TODO: crbug.com/432447902 — Provide only an activity context and push changes.
mAutofillProvider =
new AutofillProvider(
@@ -2455,7 +2473,16 @@ class TabImpl implements Tab {
@@ -2459,7 +2477,16 @@ class TabImpl implements Tab {
getContext().getString(R.string.app_name));
TabImplJni.get().initializeAutofillIfNecessary(mNativeTabAndroid);
}
@@ -311,7 +311,7 @@ diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_
#include "chrome/browser/ui/android/context_menu_helper.h"
#include "chrome/browser/ui/android/tab_model/tab_model.h"
#include "chrome/browser/ui/android/tab_model/tab_model_list.h"
@@ -417,8 +418,7 @@ void TabAndroid::InitializeAutofillIfNecessary() {
@@ -431,8 +432,7 @@ void TabAndroid::InitializeAutofillIfNecessary() {
->MaybeInitKeyboardSuppressor();
return;
}
@@ -324,7 +324,7 @@ diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_
diff --git a/chrome/browser/autofill/actor/actor_form_filling_service_impl.cc b/chrome/browser/autofill/actor/actor_form_filling_service_impl.cc
--- a/chrome/browser/autofill/actor/actor_form_filling_service_impl.cc
+++ b/chrome/browser/autofill/actor/actor_form_filling_service_impl.cc
@@ -426,14 +426,6 @@ GetAutofillManager(const tabs::TabInterface& tab) {
@@ -427,14 +427,6 @@ GetAutofillManager(const tabs::TabInterface& tab) {
if (!profile) {
return base::unexpected(kAutofillNotAvailable);
}
@@ -379,7 +379,7 @@ diff --git a/chrome/browser/autofill/android/java/src/org/chromium/chrome/browse
diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b/chrome/browser/password_manager/chrome_password_manager_client.cc
--- a/chrome/browser/password_manager/chrome_password_manager_client.cc
+++ b/chrome/browser/password_manager/chrome_password_manager_client.cc
@@ -518,6 +518,12 @@ bool ChromePasswordManagerClient::PromptUserToChooseCredentials(
@@ -521,6 +521,12 @@ bool ChromePasswordManagerClient::PromptUserToChooseCredentials(
}
#if BUILDFLAG(IS_ANDROID)
@@ -407,7 +407,7 @@ diff --git a/chrome/browser/password_manager/chrome_password_manager_client.h b/
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
@@ -336,6 +336,12 @@ CHAR_LIMIT guidelines:
@@ -345,6 +345,12 @@ CHAR_LIMIT guidelines:
<message name="IDS_PREFS_SECTION_ACCOUNT_AND_GOOGLE_SERVICES" desc="Title for the group of account-related entries and google services in Settings. [CHAR_LIMIT=32]">
You and Google
</message>
@@ -558,7 +558,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) {
@@ -389,9 +389,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
web_contents);
ChainedBackNavigationTracker::CreateForWebContents(web_contents);
chrome_browser_net::NetErrorTabHelper::CreateForWebContents(web_contents);
@@ -712,7 +712,7 @@ new file mode 100644
diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/components/autofill/content/browser/content_autofill_driver.cc
--- a/components/autofill/content/browser/content_autofill_driver.cc
+++ b/components/autofill/content/browser/content_autofill_driver.cc
@@ -280,6 +280,13 @@ void RouteToManager(ContentAutofillDriver& source,
@@ -281,6 +281,13 @@ void RouteToManager(ContentAutofillDriver& source,
AutofillManager& manager = target.GetAutofillManager();
(manager.*
manager_fun)(WithNewVersion(std::forward<ManagerArgs>(args))...);
@@ -726,7 +726,7 @@ diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/co
},
source, Lift(source, std::forward<ActualArgs>(args))...);
}
@@ -700,6 +707,10 @@ ContentAutofillDriver::GetAutofillAgent() {
@@ -701,6 +708,10 @@ ContentAutofillDriver::GetAutofillAgent() {
return autofill_agent_;
}
@@ -796,7 +796,7 @@ diff --git a/components/autofill/content/browser/content_autofill_driver_factory
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
@@ -1615,17 +1615,19 @@ void AutofillAgent::ShowSuggestions(
@@ -1551,10 +1551,6 @@ void AutofillAgent::ShowSuggestions(
password_generation_agent_->ShowPasswordGenerationSuggestions(
input_element, form_cache)) {
is_popup_possibly_visible_ = true;
@@ -804,22 +804,9 @@ diff --git a/components/autofill/content/renderer/autofill_agent.cc b/components
- features::kAutofillAndroidKeyboardAccessoryDynamicPositioning)) {
- return;
- }
+#if !BUILDFLAG(IS_ANDROID)
+ return;
+#endif
}
+ [[maybe_unused]]
bool password_agent_handled_request = TryShowPasswordSuggestions(
input_element, IsPasswordsAutofillManuallyTriggered(trigger_source),
password_request);
+#if !BUILDFLAG(IS_ANDROID)
if (password_agent_handled_request) {
return;
}
+#endif
}
if (config_.secure_context_required &&
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
@@ -864,7 +851,7 @@ diff --git a/components/autofill/core/browser/foundations/autofill_driver_factor
diff --git a/components/autofill/core/browser/foundations/autofill_manager.h b/components/autofill/core/browser/foundations/autofill_manager.h
--- a/components/autofill/core/browser/foundations/autofill_manager.h
+++ b/components/autofill/core/browser/foundations/autofill_manager.h
@@ -247,6 +247,8 @@ class AutofillManager
@@ -249,6 +249,8 @@ class AutofillManager
LifecycleState new_state,
base::PassKey<AutofillDriverFactory> pass_key);
@@ -888,7 +875,7 @@ diff --git a/components/autofill/core/browser/foundations/browser_autofill_manag
diff --git a/components/autofill/core/browser/foundations/browser_autofill_manager.h b/components/autofill/core/browser/foundations/browser_autofill_manager.h
--- a/components/autofill/core/browser/foundations/browser_autofill_manager.h
+++ b/components/autofill/core/browser/foundations/browser_autofill_manager.h
@@ -457,6 +457,8 @@ class BrowserAutofillManager : public AutofillManager {
@@ -452,6 +452,8 @@ class BrowserAutofillManager : public AutofillManager {
// latter check is needed because IPC messages can arrive out of order.
void UpdateInitialInteractionTimestamp(base::TimeTicks interaction_timestamp);
@@ -921,7 +908,7 @@ diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/auto
diff --git a/components/autofill/core/common/autofill_prefs.h b/components/autofill/core/common/autofill_prefs.h
--- a/components/autofill/core/common/autofill_prefs.h
+++ b/components/autofill/core/common/autofill_prefs.h
@@ -152,6 +152,11 @@ inline constexpr char kAutofillWasNameAndEmailProfileUsed[] =
@@ -153,6 +153,11 @@ inline constexpr char kAutofillWasNameAndEmailProfileUsed[] =
// retention policy was run.
inline constexpr char kAutocompleteLastVersionRetentionPolicy[] =
"autocomplete.retention_policy_last_version";
@@ -936,7 +923,7 @@ diff --git a/components/autofill/core/common/autofill_prefs.h b/components/autof
diff --git a/components/password_manager/core/browser/password_form_manager.cc b/components/password_manager/core/browser/password_form_manager.cc
--- a/components/password_manager/core/browser/password_form_manager.cc
+++ b/components/password_manager/core/browser/password_form_manager.cc
@@ -1196,6 +1196,10 @@ void PasswordFormManager::FillNow() {
@@ -1200,6 +1200,10 @@ void PasswordFormManager::FillNow() {
}
autofills_left_--;
@@ -962,7 +949,7 @@ diff --git a/components/password_manager/core/browser/password_manager_client.cc
diff --git a/components/password_manager/core/browser/password_manager_client.h b/components/password_manager/core/browser/password_manager_client.h
--- a/components/password_manager/core/browser/password_manager_client.h
+++ b/components/password_manager/core/browser/password_manager_client.h
@@ -224,6 +224,8 @@ class PasswordManagerClient {
@@ -228,6 +228,8 @@ class PasswordManagerClient {
virtual void ShowKeyboardReplacingSurface(
PasswordManagerDriver* driver,
const autofill::PasswordSuggestionRequest& request);
File diff suppressed because it is too large Load Diff
+96 -113
View File
@@ -28,7 +28,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../native_page/NativePageFactory.java | 20 +-
.../NativePageNavigationDelegateImpl.java | 2 +-
.../chrome/browser/ntp/NewTabPage.java | 8 +-
.../chrome/browser/ntp/NewTabPageLayout.java | 29 +-
.../browser/ntp/NewTabPageCoordinator.java | 28 +-
.../ntp/search/SearchBoxViewBinder.java | 1 +
.../suggestions/SuggestionsConfig.java | 2 +-
.../SuggestionsNavigationDelegate.java | 27 +-
@@ -40,8 +40,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../suggestions/tile/TilesLinearLayout.java | 2 +-
.../engagement/important_sites_util.cc | 2 +-
.../flags/android/chrome_feature_list.cc | 1 +
.../browser/flags/ChromeFeatureList.java | 3 +-
.../chrome_most_visited_sites_factory.cc | 3 -
.../browser/flags/ChromeFeatureList.java | 1 +
.../chrome_most_visited_sites_factory.cc | 4 -
.../client_util/HomeModulesRankingHelper.java | 1 +
.../strings/android_chrome_strings.grd | 6 +
.../core/browser/top_sites_constants.h | 2 +-
@@ -51,7 +51,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../Restore-Simplified-NTP-launch.inc | 12 +
.../Restore-Simplified-NTP-launch.inc | 8 +
.../Restore-Simplified-NTP-launch.inc | 1 +
45 files changed, 647 insertions(+), 68 deletions(-)
45 files changed, 646 insertions(+), 67 deletions(-)
create mode 100644 chrome/android/java/res/drawable-hdpi/ic_most_visited_placeholder.png
create mode 100644 chrome/android/java/res/drawable-mdpi/ic_most_visited_placeholder.png
create mode 100644 chrome/android/java/res/drawable-xhdpi/ic_most_visited_placeholder.png
@@ -81,7 +81,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja
"java/res/drawable-hdpi/ic_phone_googblue_36dp.png",
"java/res/drawable-hdpi/ic_photo_camera.png",
"java/res/drawable-hdpi/ic_place_googblue_36dp.png",
@@ -544,6 +549,7 @@ chrome_java_resources = [
@@ -553,6 +558,7 @@ chrome_java_resources = [
"java/res/layout/manage_space_activity.xml",
"java/res/layout/material_tooltip.xml",
"java/res/layout/multiline_spinner_item.xml",
@@ -89,7 +89,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja
"java/res/layout/mv_tiles_layout.xml",
"java/res/layout/navigation_bubble.xml",
"java/res/layout/navigation_sheet.xml",
@@ -552,8 +558,10 @@ chrome_java_resources = [
@@ -561,8 +567,10 @@ chrome_java_resources = [
"java/res/layout/new_background_tab_animation_tab_switcher_icon.xml",
"java/res/layout/new_custom_tab_toolbar.xml",
"java/res/layout/new_tab_page_incognito.xml",
@@ -103,7 +103,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
@@ -649,6 +649,7 @@ chrome_java_sources = [
@@ -660,6 +660,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/feedback/FeedFeedbackCollector.java",
"java/src/org/chromium/chrome/browser/feedback/HelpAndFeedbackLauncherImpl.java",
"java/src/org/chromium/chrome/browser/feedback/ScreenshotTask.java",
@@ -111,7 +111,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java
"java/src/org/chromium/chrome/browser/findinpage/FindToolbar.java",
"java/src/org/chromium/chrome/browser/findinpage/FindToolbarManager.java",
"java/src/org/chromium/chrome/browser/findinpage/FindToolbarObserver.java",
@@ -1096,6 +1097,7 @@ chrome_java_sources = [
@@ -1111,6 +1112,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/suggestions/mostvisited/MostVisitedSitesMetadataUtils.java",
"java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator.java",
"java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesLayout.java",
@@ -416,7 +416,7 @@ diff --git a/chrome/android/java/res/layout/mv_tiles_layout.xml b/chrome/android
diff --git a/chrome/android/java/res/layout/new_tab_page_layout.xml b/chrome/android/java/res/layout/new_tab_page_layout.xml
--- a/chrome/android/java/res/layout/new_tab_page_layout.xml
+++ b/chrome/android/java/res/layout/new_tab_page_layout.xml
@@ -50,6 +50,13 @@ found in the LICENSE file.
@@ -42,6 +42,13 @@ found in the LICENSE file.
/>
<!-- Most Visited Tiles -->
@@ -577,10 +577,10 @@ diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -3715,7 +3715,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
@@ -3738,7 +3738,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
getStartupMetricsTracker(),
mRootUiCoordinator.getExclusiveAccessManager(),
mBackPressManager,
mMultiInstanceManager,
- mRecentlyClosedEntriesManager);
+ mRecentlyClosedEntriesManager,
+ mBookmarkManagerOpenerSupplier);
@@ -598,7 +598,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe
import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider;
import org.chromium.chrome.browser.compositor.CompositorViewHolder;
import org.chromium.chrome.browser.contextmenu.ChromeContextMenuPopulator;
@@ -58,6 +59,8 @@ import org.chromium.ui.modaldialog.ModalDialogManager;
@@ -56,6 +57,8 @@ import org.chromium.ui.modaldialog.ModalDialogManager;
import java.util.List;
import java.util.function.Supplier;
@@ -607,7 +607,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe
/**
* {@link TabDelegateFactory} class to be used in all {@link Tab} instances owned by a {@link
* ChromeTabbedActivity}.
@@ -92,6 +95,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory {
@@ -89,6 +92,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory {
private final TopInsetProvider mTopInsetProvider;
private final StartupMetricsTracker mStartupMetricsTracker;
private final @Nullable ExclusiveAccessManager mExclusiveAccessManager;
@@ -615,29 +615,29 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe
+
private @Nullable NativePageFactory mNativePageFactory;
private final BackPressManager mBackPressManager;
private final MultiInstanceManager mMultiInstanceManager;
@@ -128,7 +133,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory {
private final RecentlyClosedEntriesManager mRecentlyClosedEntriesManager;
@@ -122,7 +127,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory {
StartupMetricsTracker startupMetricsTracker,
@Nullable ExclusiveAccessManager exclusiveAccessManager,
BackPressManager backPressManager,
MultiInstanceManager multiInstanceManager,
- RecentlyClosedEntriesManager recentlyClosedEntriesManager) {
+ RecentlyClosedEntriesManager recentlyClosedEntriesManager,
+ @NonNull MonotonicObservableSupplier<BookmarkManagerOpener> bookmarkManagerOpenerSupplier) {
mActivity = activity;
mAppBrowserControlsVisibilityDelegate = appBrowserControlsVisibilityDelegate;
mShareDelegateSupplier = shareDelegateSupplier;
@@ -160,6 +166,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory {
@@ -152,6 +158,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory {
mExclusiveAccessManager = exclusiveAccessManager;
mBackPressManager = backPressManager;
mMultiInstanceManager = multiInstanceManager;
mRecentlyClosedEntriesManager = recentlyClosedEntriesManager;
+ mBookmarkManagerOpenerSupplier = bookmarkManagerOpenerSupplier;
}
@Override
@@ -235,7 +242,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory {
@@ -224,7 +231,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory {
mTopInsetProvider,
mStartupMetricsTracker,
mBackPressManager,
mMultiInstanceManager,
- mRecentlyClosedEntriesManager);
+ mRecentlyClosedEntriesManager,
+ mBookmarkManagerOpenerSupplier);
@@ -701,10 +701,10 @@ new file mode 100644
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java b/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java
@@ -201,7 +201,10 @@ public class IdentityDiscController
@@ -204,7 +204,10 @@ public class IdentityDiscController
mButtonData.setButtonSpec(
buttonSpecWithDrawableAndDescription(mButtonData.getButtonSpec(), email));
buttonSpecWithDrawableAndDescription(mButtonData.getButtonSpec(), profileData));
- mButtonData.setCanShow(true);
+ if (email == null)
+ mButtonData.setCanShow(false);
@@ -731,8 +731,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat
+import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpener;
import org.chromium.chrome.browser.browser_controls.BrowserControlsMarginAdapter;
import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
@@ -104,6 +106,7 @@ public class NativePageFactory {
import org.chromium.chrome.browser.contextual_tasks.ContextualTasksNativePage;
@@ -102,6 +104,7 @@ public class NativePageFactory {
private final MonotonicObservableSupplier<EdgeToEdgeController> mEdgeToEdgeControllerSupplier;
private final TopInsetProvider mTopInsetProvider;
private final StartupMetricsTracker mStartupMetricsTracker;
@@ -740,37 +740,37 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat
private @Nullable NewTabPageCreationTracker mNewTabPageCreationTracker;
private @Nullable NativePageBuilder mNativePageBuilder;
@@ -134,7 +137,8 @@ public class NativePageFactory {
@@ -129,7 +132,8 @@ public class NativePageFactory {
TopInsetProvider topInsetProvider,
StartupMetricsTracker startupMetricsTracker,
BackPressManager backPressManager,
MultiInstanceManager multiInstanceManager,
- RecentlyClosedEntriesManager recentlyClosedEntriesManager) {
+ RecentlyClosedEntriesManager recentlyClosedEntriesManager,
+ MonotonicObservableSupplier<BookmarkManagerOpener> bookmarkManagerOpenerSupplier) {
mActivity = activity;
mBottomSheetController = sheetController;
mBrowserControlsManager = browserControlsManager;
@@ -157,6 +161,7 @@ public class NativePageFactory {
@@ -150,6 +154,7 @@ public class NativePageFactory {
mStartupMetricsTracker = startupMetricsTracker;
mBackPressManager = backPressManager;
mMultiInstanceManager = multiInstanceManager;
mRecentlyClosedEntriesManager = recentlyClosedEntriesManager;
+ mBookmarkManagerOpenerSupplier = bookmarkManagerOpenerSupplier;
}
private NativePageBuilder getBuilder() {
@@ -185,7 +190,8 @@ public class NativePageFactory {
@@ -176,7 +181,8 @@ public class NativePageFactory {
mTopInsetProvider,
mStartupMetricsTracker,
mBackPressManager,
mMultiInstanceManager,
- mRecentlyClosedEntriesManager);
+ mRecentlyClosedEntriesManager,
+ mBookmarkManagerOpenerSupplier);
}
return mNativePageBuilder;
}
@@ -224,9 +230,10 @@ public class NativePageFactory {
@@ -213,9 +219,10 @@ public class NativePageFactory {
private final StartupMetricsTracker mStartupMetricsTracker;
private final BackPressManager mBackPressManager;
private final MultiInstanceManager mMultiInstanceManager;
private final RecentlyClosedEntriesManager mRecentlyClosedEntriesManager;
+ private final MonotonicObservableSupplier<BookmarkManagerOpener> mBookmarkManagerOpenerSupplier;
@@ -780,30 +780,30 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat
Supplier<NewTabPageCreationTracker> newTabPageCreationTracker,
BottomSheetController sheetController,
BrowserControlsManager browserControlsManager,
@@ -248,7 +255,8 @@ public class NativePageFactory {
@@ -235,7 +242,8 @@ public class NativePageFactory {
TopInsetProvider topInsetProvider,
StartupMetricsTracker startupMetricsTracker,
BackPressManager backPressManager,
MultiInstanceManager multiInstanceManager,
- RecentlyClosedEntriesManager recentlyClosedEntriesManager) {
+ RecentlyClosedEntriesManager recentlyClosedEntriesManager,
+ MonotonicObservableSupplier<BookmarkManagerOpener> bookmarkManagerOpenerSupplier) {
mActivity = activity;
mNewTabPageCreationTracker = newTabPageCreationTracker;
mBottomSheetController = sheetController;
@@ -272,6 +280,7 @@ public class NativePageFactory {
@@ -257,6 +265,7 @@ public class NativePageFactory {
mStartupMetricsTracker = startupMetricsTracker;
mBackPressManager = backPressManager;
mMultiInstanceManager = multiInstanceManager;
mRecentlyClosedEntriesManager = recentlyClosedEntriesManager;
+ mBookmarkManagerOpenerSupplier = bookmarkManagerOpenerSupplier;
}
protected NativePage buildNewTabPage(Tab tab, String url) {
@@ -316,7 +325,8 @@ public class NativePageFactory {
@@ -299,7 +308,8 @@ public class NativePageFactory {
mModuleRegistrySupplier,
mEdgeToEdgeControllerSupplier,
mTopInsetProvider,
mStartupMetricsTracker,
- mMultiInstanceManager);
+ mMultiInstanceManager,
- mStartupMetricsTracker);
+ mStartupMetricsTracker,
+ mBookmarkManagerOpenerSupplier);
}
@@ -811,7 +811,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java
@@ -31,7 +31,7 @@ import org.chromium.ui.mojom.WindowOpenDisposition;
@@ -28,7 +28,7 @@ import org.chromium.ui.mojom.WindowOpenDisposition;
/** {@link NativePageNavigationDelegate} implementation. */
@NullMarked
public class NativePageNavigationDelegateImpl implements NativePageNavigationDelegate {
@@ -823,9 +823,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat
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
@@ -133,6 +133,9 @@ import org.chromium.ui.base.WindowAndroid;
@@ -110,6 +110,9 @@ import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.modaldialog.ModalDialogManager;
import org.chromium.url.GURL;
+import androidx.annotation.NonNull;
+import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpener;
@@ -833,62 +833,54 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.
import java.util.List;
import java.util.function.Supplier;
@@ -444,7 +447,8 @@ public class NewTabPage
@@ -402,7 +405,8 @@ public class NewTabPage
OneshotSupplier<ModuleRegistry> moduleRegistrySupplier,
MonotonicObservableSupplier<EdgeToEdgeController> edgeToEdgeControllerSupplier,
TopInsetProvider topInsetProvider,
StartupMetricsTracker startupMetricsTracker,
- MultiInstanceManager multiInstanceManager) {
+ MultiInstanceManager multiInstanceManager,
- StartupMetricsTracker startupMetricsTracker) {
+ StartupMetricsTracker startupMetricsTracker,
+ MonotonicObservableSupplier<BookmarkManagerOpener> bookmarkManagerOpenerSupplier) {
mConstructedTimeNs = System.nanoTime();
TraceEvent.begin(TAG);
@@ -474,7 +478,7 @@ public class NewTabPage
nativePageHost,
tabModelSelector,
mTab,
- multiInstanceManager);
+ multiInstanceManager, bookmarkManagerOpenerSupplier);
@@ -422,7 +426,7 @@ public class NewTabPage
SuggestionsNavigationDelegate navigationDelegate =
new SuggestionsNavigationDelegate(
- activity, profile, nativePageHost, tabModelSelector, mTab);
+ activity, profile, nativePageHost, tabModelSelector, mTab, bookmarkManagerOpenerSupplier);
mNewTabPageManager =
new NewTabPageManagerImpl(
navigationDelegate, profile, nativePageHost, snackbarManager);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java
@@ -14,6 +14,7 @@ import android.graphics.Rect;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageCoordinator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageCoordinator.java
@@ -13,6 +13,7 @@ import android.graphics.Point;
import android.graphics.Rect;
import android.text.Editable;
import android.util.AttributeSet;
import android.view.DragEvent;
+import android.view.ViewStub;
import android.view.View;
import android.view.View.OnLayoutChangeListener;
import android.view.ViewGroup;
import android.view.ViewStub;
@@ -39,6 +40,7 @@ import org.chromium.chrome.browser.feed.FeedSurfaceScrollDelegate;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.incognito.IncognitoUtils;
import org.chromium.chrome.browser.lens.LensEntryPoint;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.lens.LensMetrics;
import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
import org.chromium.chrome.browser.logo.LogoBridge.Logo;
@@ -59,6 +61,7 @@ import org.chromium.chrome.browser.signin.SigninAndHistorySyncActivityLauncherIm
@@ -64,6 +65,7 @@ import org.chromium.chrome.browser.setup_list.SetupListModuleUtils;
import org.chromium.chrome.browser.signin.SigninAndHistorySyncActivityLauncherImpl;
import org.chromium.chrome.browser.suggestions.tile.MostVisitedTilesCoordinator;
import org.chromium.chrome.browser.suggestions.tile.TileGroup;
import org.chromium.chrome.browser.suggestions.tile.TileGroup.Delegate;
+import org.chromium.chrome.browser.suggestions.tile.MostVisitedTilesGridLayout;
import org.chromium.chrome.browser.tab_ui.InvalidationAwareThumbnailProvider;
import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
import org.chromium.chrome.browser.ui.native_page.TouchEnabledDelegate;
@@ -116,6 +119,8 @@ public class NewTabPageLayout extends LinearLayout {
private SearchEngineUtils.@Nullable SearchEngineIconObserver mSearchEngineIconObserver;
private SearchEngineUtils.@Nullable SearchBoxHintTextObserver mSearchBoxHintTextObserver;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabLaunchType;
import org.chromium.chrome.browser.tab.TabSelectionType;
@@ -147,6 +149,8 @@ public class NewTabPageCoordinator implements ModuleDelegateHost {
private SetupListManager.@Nullable Observer mSetupListObserver;
private @Nullable Point mContextMenuStartPosition;
+ private ViewGroup mShortcutsView;
+
/**
* Whether the tiles shown in the layout have finished loading. With {@link #mHasShownView},
* it's one of the 2 flags used to track initialisation progress.
@@ -128,14 +133,14 @@ public class NewTabPageLayout extends LinearLayout {
@@ -159,14 +163,14 @@ public class NewTabPageCoordinator implements ModuleDelegateHost {
*/
private boolean mHasShownView;
@@ -902,10 +894,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL
private float mUrlFocusChangePercent;
- private boolean mDisableUrlFocusChangeAnimations;
+ private boolean mDisableUrlFocusChangeAnimations = true;
private boolean mIsViewMoving;
/** Flag used to request some layout changes after the next layout pass is completed. */
@@ -302,6 +307,7 @@ public class NewTabPageLayout extends LinearLayout {
private boolean mTileCountChanged;
@@ -345,6 +349,7 @@ public class NewTabPageCoordinator implements ModuleDelegateHost {
mSearchEngineUtils.addIconObserver(mSearchEngineIconObserver);
setSearchBoxTextAppearance();
@@ -913,16 +905,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL
initializeSearchBoxTextView();
initializeVoiceSearchButton();
initializeLensButton();
@@ -762,7 +768,7 @@ public class NewTabPageLayout extends LinearLayout {
return;
}
boolean isSearchProviderIsGoogleChanged = mSearchProviderIsGoogle != isGoogle;
- mSearchProviderHasLogo = hasLogo;
+ mSearchProviderHasLogo = false;
mSearchProviderIsGoogle = isGoogle;
if (!mSearchProviderIsGoogle) {
@@ -829,6 +835,7 @@ public class NewTabPageLayout extends LinearLayout {
@@ -742,6 +747,8 @@ public class NewTabPageCoordinator implements ModuleDelegateHost {
* @param isGoogle Whether the search provider is Google.
*/
void setSearchProviderInfo(boolean hasLogo, boolean isGoogle) {
+ hasLogo = false;
+ isGoogle = false;
if (hasLogo == mSearchProviderHasLogo
&& isGoogle == mSearchProviderIsGoogle
&& mInitialized) {
@@ -807,6 +814,7 @@ public class NewTabPageCoordinator implements ModuleDelegateHost {
* @param disable Whether to disable the animations.
*/
void setUrlFocusAnimationsDisabled(boolean disable) {
@@ -930,8 +922,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL
if (disable == mDisableUrlFocusChangeAnimations) return;
mDisableUrlFocusChangeAnimations = disable;
if (!disable) onUrlFocusAnimationChanged();
@@ -1141,6 +1148,22 @@ public class NewTabPageLayout extends LinearLayout {
mComposeplateUrlSupplier = null;
@@ -1335,6 +1343,22 @@ public class NewTabPageCoordinator implements ModuleDelegateHost {
}
}
+ private void initializeShortcuts() {
@@ -979,7 +971,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/Sug
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java
@@ -24,18 +24,43 @@ import org.chromium.ui.base.PageTransition;
@@ -23,17 +23,42 @@ import org.chromium.ui.base.PageTransition;
import org.chromium.ui.mojom.WindowOpenDisposition;
import org.chromium.url.GURL;
@@ -1002,11 +994,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/Sug
Profile profile,
NativePageHost host,
TabModelSelector tabModelSelector,
Tab tab,
- MultiInstanceManager multiInstanceManager) {
+ MultiInstanceManager multiInstanceManager,
- Tab tab) {
+ Tab tab,
+ MonotonicObservableSupplier<BookmarkManagerOpener> bookmarkManagerOpenerSupplier) {
super(activity, profile, host, tabModelSelector, tab, multiInstanceManager);
super(activity, profile, host, tabModelSelector, tab);
+ mBookmarkManagerOpenerSupplier = bookmarkManagerOpenerSupplier;
+ }
+
@@ -1390,7 +1381,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/til
MarginLayoutParams marginLayoutParams =
(MarginLayoutParams) mMvTilesContainerLayout.getLayoutParams();
marginLayoutParams.width =
@@ -383,7 +377,5 @@ public class MostVisitedTilesMediator implements TileGroup.Observer {
@@ -379,7 +373,5 @@ public class MostVisitedTilesMediator implements TileGroup.Observer {
double firstTileScore = mTileGroup.getSuggestionScore(firstTile.getUrl());
if (firstTileScore < MVT_CUSTOMIZATION_IPH_TILE_SCORE_THRESHOULD) return;
@@ -1546,7 +1537,7 @@ diff --git a/chrome/browser/engagement/important_sites_util.cc b/chrome/browser/
diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
--- a/chrome/browser/flags/android/chrome_feature_list.cc
+++ b/chrome/browser/flags/android/chrome_feature_list.cc
@@ -364,6 +364,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
@@ -382,6 +382,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
&kKeyboardEscBackNavigation,
&kLaunchCauseScreenOffFix,
&kLensOnQuickActionSearchWidget,
@@ -1557,7 +1548,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
@@ -512,6 +512,7 @@ public abstract class ChromeFeatureList {
@@ -530,6 +530,7 @@ public abstract class ChromeFeatureList {
"MayLaunchUrlUsesSeparateStoragePartition";
public static final String MEDIA_INDICATORS_ANDROID = "MediaIndicatorsAndroid";
public static final String MOST_VISITED_TILES_CUSTOMIZATION = "MostVisitedTilesCustomization";
@@ -1565,27 +1556,19 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
public static final String SEARCH_READY_OMNIBOX = "SearchReadyOmnibox";
public static final String MOST_VISITED_TILES_RESELECT = "MostVisitedTilesReselect";
public static final String MOVE_TO_FRONT_IN_LAUNCH_INTENT_DISPATCHER =
@@ -989,7 +990,7 @@ public abstract class ChromeFeatureList {
LOCK_TOP_CONTROLS_ON_LARGE_TABLETS_V2,
/* defaultValue= */ false,
/* defaultValueInTests= */ true);
- public static final CachedFlag sMagicStackAndroid = newCachedFlag(MAGIC_STACK_ANDROID, true);
+ public static final CachedFlag sMagicStackAndroid = newCachedFlag(MAGIC_STACK_ANDROID, false);
public static final CachedFlag sMaliciousApkDownloadCheck =
newCachedFlag(
MALICIOUS_APK_DOWNLOAD_CHECK,
diff --git a/chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.cc b/chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.cc
--- a/chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.cc
+++ b/chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.cc
@@ -74,9 +74,6 @@ ChromeMostVisitedSitesFactory::NewForProfile(Profile* profile) {
}
@@ -67,10 +67,6 @@ ChromeMostVisitedSitesFactory::NewForProfile(Profile* profile) {
std::unique_ptr<data_decoder::DataDecoder> data_decoder;
-#if BUILDFLAG(IS_ANDROID)
- data_decoder = std::make_unique<data_decoder::DataDecoder>();
-#endif
-
bool is_default_chrome_app_migrated;
#if BUILDFLAG(IS_ANDROID)
diff --git a/chrome/browser/segmentation_platform/android/java/src/org/chromium/chrome/browser/segmentation_platform/client_util/HomeModulesRankingHelper.java b/chrome/browser/segmentation_platform/android/java/src/org/chromium/chrome/browser/segmentation_platform/client_util/HomeModulesRankingHelper.java
--- a/chrome/browser/segmentation_platform/android/java/src/org/chromium/chrome/browser/segmentation_platform/client_util/HomeModulesRankingHelper.java
@@ -1601,7 +1584,7 @@ diff --git a/chrome/browser/segmentation_platform/android/java/src/org/chromium/
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
@@ -4127,6 +4127,12 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
@@ -4182,6 +4182,12 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
<message name="IDS_RECENT_TABS" desc="Text for button to show 'Recent tabs', i.e. recently closed tabs and tabs that are open on other devices [CHAR_LIMIT=20]">
Recent tabs
</message>
@@ -1641,7 +1624,7 @@ diff --git a/components/ntp_tiles/custom_links_store.cc b/components/ntp_tiles/c
diff --git a/components/omnibox/common/omnibox_features.cc b/components/omnibox/common/omnibox_features.cc
--- a/components/omnibox/common/omnibox_features.cc
+++ b/components/omnibox/common/omnibox_features.cc
@@ -194,6 +194,7 @@ BASE_FEATURE(kRemoveSearchReadyOmnibox, DISABLED);
@@ -194,6 +194,7 @@ BASE_FEATURE(kOmniboxAimDeferShowUntilVisualStateReady, ENABLED);
BASE_FEATURE(kDefaultTypedNavigationsToHttps,
"OmniboxDefaultTypedNavigationsToHttps",
enable_if(IS_IOS));
@@ -1649,7 +1632,7 @@ diff --git a/components/omnibox/common/omnibox_features.cc b/components/omnibox/
// Override the delay to create a spare renderer when the omnibox is focused
// on Android.
@@ -275,6 +276,7 @@ BASE_FEATURE(kOmniboxMobileParityUpdate, ENABLED);
@@ -278,6 +279,7 @@ BASE_FEATURE(kOmniboxMobileParityUpdate, ENABLED);
// Updates various NTP/Omnibox assets and descriptions for visual alignment on
// Android and iOS, V2.
BASE_FEATURE(kOmniboxMobileParityUpdateV2, ENABLED);
+177 -72
View File
@@ -42,8 +42,8 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../android/java/res/values/dimens.xml | 17 +
.../CredentialEditFragmentView.java | 228 ++++++
.../CredentialEntryFragmentViewBase.java | 135 ++++
.../browser/password_manager/android/BUILD.gn | 23 +
.../ConfirmationDialogHelper.java | 30 +
.../browser/password_manager/android/BUILD.gn | 24 +
.../ConfirmationDialogHelper.java | 146 ++++
.../PasswordManagerHelper.java | 22 +-
.../PasswordManagerUtilBridge.java | 3 +-
.../settings/CallbackDelayer.java | 18 +
@@ -68,8 +68,8 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../android/password_ui_view_android.cc | 450 +++++++++++
.../android/password_ui_view_android.h | 196 +++++
.../android/pwm_disabled/BUILD.gn | 2 -
.../password_store_backend_factory.cc | 14 +-
...ssword_manager_settings_service_factory.cc | 4 +-
.../password_store_backend_factory.cc | 14 +-
chrome/browser/prefs/browser_prefs.cc | 7 -
.../strings/android_chrome_strings.grd | 123 ++-
.../Import-Password-Android.grdp | 9 +
@@ -88,7 +88,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../core/common/password_manager_pref_names.h | 2 -
components/sync/service/sync_prefs.cc | 2 +-
.../Restore-chrome-password-store.inc | 1 +
80 files changed, 5590 insertions(+), 81 deletions(-)
80 files changed, 5707 insertions(+), 81 deletions(-)
create mode 100644 chrome/android/java/res/layout/password_no_result.xml
create mode 100644 chrome/android/java/res/menu/save_password_preferences_action_bar_menu.xml
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
@@ -109,6 +109,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
create mode 100644 chrome/browser/password_entry_edit/android/java/res/values/dimens.xml
create mode 100644 chrome/browser/password_entry_edit/android/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEditFragmentView.java
create mode 100644 chrome/browser/password_entry_edit/android/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEntryFragmentViewBase.java
create mode 100644 chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/ConfirmationDialogHelper.java
create mode 100644 chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/settings/CallbackDelayer.java
create mode 100644 chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/settings/DialogManager.java
create mode 100644 chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/settings/ExportErrorDialogFragment.java
@@ -134,7 +135,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -822,6 +822,10 @@ if (_is_default_toolchain) {
@@ -827,6 +827,10 @@ if (_is_default_toolchain) {
"//url/mojom:url_mojom_origin_java",
]
@@ -145,7 +146,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
deps += feed_deps
srcjar_deps = [
@@ -972,6 +976,10 @@ if (_is_default_toolchain) {
@@ -981,6 +985,10 @@ if (_is_default_toolchain) {
"//components/visited_url_ranking/internal:internal_java",
]
@@ -159,7 +160,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
@@ -654,3 +654,8 @@ chrome_java_resources = [
@@ -666,3 +666,8 @@ chrome_java_resources = [
"java/res/xml/tracing_preferences.xml",
"java/res/xml/unified_account_settings_preferences.xml",
]
@@ -171,7 +172,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
@@ -932,6 +932,7 @@ chrome_java_sources = [
@@ -947,6 +947,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/password_manager/PasswordManagerDialogViewBinder.java",
"java/src/org/chromium/chrome/browser/password_manager/PasswordManagerErrorMessageHelperBridge.java",
"java/src/org/chromium/chrome/browser/password_manager/PasswordManagerLauncher.java",
@@ -182,7 +183,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java
diff --git a/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator.java
--- a/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator.java
@@ -611,10 +611,7 @@ class ManualFillingMediator
@@ -620,10 +620,7 @@ class ManualFillingMediator
// suggestions for non credential fields. The check for feature flag needs to happen before
// `IS_CREDENTIAL_FIELD_OR_HAS_AUTOFILL_SUGGESTIONS` check to ensure we get the unbiased
// metrics.
@@ -197,7 +198,7 @@ diff --git a/chrome/android/features/keyboard_accessory/internal/java/src/org/ch
diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
--- a/chrome/android/java/AndroidManifest.xml
+++ b/chrome/android/java/AndroidManifest.xml
@@ -485,10 +485,9 @@ by a child template that "extends" this file.
@@ -477,10 +477,9 @@ by a child template that "extends" this file.
</intent-filter>
</activity>
@@ -310,20 +311,20 @@ diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res
diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml
--- a/chrome/android/java/res/xml/main_preferences.xml
+++ b/chrome/android/java/res/xml/main_preferences.xml
@@ -64,7 +64,8 @@ found in the LICENSE file.
@@ -69,7 +69,8 @@ found in the LICENSE file.
android:key="autofill_section"
android:order="11"
android:order="12"
android:title="@string/prefs_section_autofill"/>
- <org.chromium.chrome.browser.password_manager.settings.PasswordsPreference
+ <org.chromium.components.browser_ui.settings.ChromeBasePreference
+ android:fragment="org.chromium.chrome.browser.password_manager.settings.PasswordSettings"
android:key="passwords"
android:order="12"
android:order="13"
android:title="@string/password_manager_settings_title"/>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillPaymentMethodsFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillPaymentMethodsFragment.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillPaymentMethodsFragment.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillPaymentMethodsFragment.java
@@ -833,6 +833,7 @@ public class AutofillPaymentMethodsFragment extends ChromeBaseSettingsFragment
@@ -826,6 +826,7 @@ public class AutofillPaymentMethodsFragment extends ChromeBaseSettingsFragment
}
private static boolean disabledSettingsInThirdPartyMode(Profile profile) {
@@ -334,7 +335,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settin
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillProfilesFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillProfilesFragment.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillProfilesFragment.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillProfilesFragment.java
@@ -635,6 +635,7 @@ public class AutofillProfilesFragment extends ChromeBaseSettingsFragment
@@ -772,6 +772,7 @@ public class AutofillProfilesFragment extends ChromeBaseSettingsFragment
}
private static boolean disabledSettingsInThirdPartyMode(Profile profile) {
@@ -1061,7 +1062,7 @@ new file mode 100644
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java
@@ -30,6 +30,8 @@ import org.chromium.chrome.browser.language.settings.LanguageSettings;
@@ -29,6 +29,8 @@ import org.chromium.chrome.browser.language.settings.LanguageSettings;
import org.chromium.chrome.browser.lifetime.ApplicationLifetime;
import org.chromium.chrome.browser.locale.LocaleManager;
import org.chromium.chrome.browser.page_info.SiteSettingsHelper;
@@ -1070,7 +1071,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme
import org.chromium.chrome.browser.password_manager.PasswordManagerHelper;
import org.chromium.chrome.browser.password_manager.PasswordStoreBridge;
import org.chromium.chrome.browser.privacy_guide.PrivacyGuideFragment;
@@ -160,6 +162,9 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl
@@ -165,6 +167,9 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl
PasswordManagerHelper.getForProfile(mProfile),
new SettingsCustomTabLauncherImpl());
}
@@ -1083,7 +1084,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme
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
@@ -657,17 +657,6 @@ public class MainSettings extends ChromeBaseSettingsFragment
@@ -750,17 +750,6 @@ public class MainSettings extends ChromeBaseSettingsFragment
return SettingsNavigationHelper.showAutofillProfileSettings(
getActivity());
});
@@ -1098,10 +1099,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
- mModalDialogManagerSupplier.asNonNull().get());
- return true;
- });
}
// This is temporary code needed for migrating people to UPM. With UPM there is no
// longer passwords setting page in Chrome, so we need to ask users to export their
@@ -720,12 +709,6 @@ public class MainSettings extends ChromeBaseSettingsFragment
private void maybeStartPasswordsExportFlow() {
@@ -815,12 +804,6 @@ public class MainSettings extends ChromeBaseSettingsFragment
private static void showPasswordSettings(
Context context, Profile profile, ModalDialogManager modalDialogManager) {
@@ -1145,9 +1146,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -3207,6 +3207,13 @@ static_library("browser") {
"touch_to_fill/password_manager/touch_to_fill_controller_webauthn_delegate.h",
]
@@ -3020,6 +3020,13 @@ static_library("browser") {
public_deps += [ "//chrome/browser/accessibility/accessibility_prefs" ]
+ # static_library("browser")
+ sources += [
@@ -2985,12 +2986,13 @@ new file mode 100644
diff --git a/chrome/browser/password_manager/android/BUILD.gn b/chrome/browser/password_manager/android/BUILD.gn
--- a/chrome/browser/password_manager/android/BUILD.gn
+++ b/chrome/browser/password_manager/android/BUILD.gn
@@ -188,6 +188,27 @@ android_library("java") {
@@ -187,6 +187,28 @@ android_library("java") {
"java/src/org/chromium/chrome/browser/password_manager/settings/PasswordsPreference.java",
]
+ # android_library("java")
+ sources += [
+ "java/src/org/chromium/chrome/browser/password_manager/ConfirmationDialogHelper.java",
+ "java/src/org/chromium/chrome/browser/password_manager/settings/PasswordManagerHandler.java",
+ "java/src/org/chromium/chrome/browser/password_manager/settings/PasswordManagerHandlerProvider.java",
+ "java/src/org/chromium/chrome/browser/password_manager/settings/PasswordUiView.java",
@@ -3013,7 +3015,7 @@ diff --git a/chrome/browser/password_manager/android/BUILD.gn b/chrome/browser/p
resources_package = "org.chromium.chrome.browser.password_manager"
}
@@ -209,6 +230,8 @@ generate_jni("jni_headers") {
@@ -208,6 +230,8 @@ generate_jni("jni_headers") {
"java/src/org/chromium/chrome/browser/password_manager/PasswordStoreCredential.java",
"java/src/org/chromium/chrome/browser/password_manager/PasswordSyncControllerDelegateBridgeImpl.java",
]
@@ -3023,22 +3025,63 @@ diff --git a/chrome/browser/password_manager/android/BUILD.gn b/chrome/browser/p
android_library("utils_java") {
diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/ConfirmationDialogHelper.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/ConfirmationDialogHelper.java
--- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/ConfirmationDialogHelper.java
new file mode 100644
--- /dev/null
+++ b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/ConfirmationDialogHelper.java
@@ -7,7 +7,9 @@ package org.chromium.chrome.browser.password_manager;
import static org.chromium.build.NullUtil.assumeNonNull;
import android.content.Context;
@@ -0,0 +1,146 @@
+// Copyright 2021 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.password_manager;
+
+import static org.chromium.build.NullUtil.assumeNonNull;
+
+import android.content.Context;
+import android.content.res.Resources;
+
+import org.chromium.base.CallbackUtils;
import org.chromium.build.annotations.NullMarked;
import org.chromium.build.annotations.Nullable;
import org.chromium.components.browser_ui.modaldialog.AppModalPresenter;
@@ -49,6 +51,34 @@ public class ConfirmationDialogHelper {
mDialogModel = null;
}
+import org.chromium.build.annotations.NullMarked;
+import org.chromium.build.annotations.Nullable;
+import org.chromium.components.browser_ui.modaldialog.AppModalPresenter;
+import org.chromium.ui.modaldialog.DialogDismissalCause;
+import org.chromium.ui.modaldialog.ModalDialogManager;
+import org.chromium.ui.modaldialog.ModalDialogManager.ModalDialogType;
+import org.chromium.ui.modaldialog.ModalDialogProperties;
+import org.chromium.ui.modaldialog.SimpleModalDialogController;
+import org.chromium.ui.modelutil.PropertyModel;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Helps to show a confirmation.
+ *
+ * @deprecated use {@link ActionConfirmationDialog} instead - see crbug.com/440257087.
+ */
+@Deprecated
+@NullMarked
+public class ConfirmationDialogHelper {
+ private final Context mContext;
+ private ModalDialogManager mModalDialogManager;
+ private @Nullable PropertyModel mDialogModel;
+ private @Nullable Runnable mConfirmedCallback;
+ private @Nullable Runnable mDeclinedCallback;
+
+ public ConfirmationDialogHelper(Context context) {
+ mContext = context;
+ mModalDialogManager =
+ new ModalDialogManager(new AppModalPresenter(context), ModalDialogType.APP);
+ }
+
+ /** Hides the dialog. */
+ public void dismiss() {
+ if (mDialogModel != null) {
+ mModalDialogManager.dismissDialog(mDialogModel, DialogDismissalCause.UNKNOWN);
+ }
+ mDialogModel = null;
+ }
+
+ // used by CredentialEditMediator.java
+ /** Returns the resources associated with the context used to launch the dialog. */
+ public Resources getResources() {
@@ -3067,9 +3110,71 @@ diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrom
+ CallbackUtils.emptyRunnable());
+ }
+
/**
* Shows an dialog to confirm the deletion.
*
+ /**
+ * Shows an dialog to confirm the deletion.
+ *
+ * @param title A {@link String} used as title.
+ * @param message A {@link CharSequence} used message body.
+ * @param confirmButtonText A {@link String} for confirmation button label.
+ * @param confirmedCallback A callback to run when the dialog is accepted.
+ * @param declinedCallback A callback to run when the dialog is declined.
+ */
+ public void showConfirmation(
+ String title,
+ CharSequence message,
+ String confirmButtonText,
+ Runnable confirmedCallback,
+ Runnable declinedCallback) {
+ assert title != null;
+ assert message != null;
+ assert confirmedCallback != null;
+
+ mConfirmedCallback = confirmedCallback;
+ mDeclinedCallback = declinedCallback;
+
+ mDialogModel =
+ new PropertyModel.Builder(ModalDialogProperties.ALL_KEYS)
+ .with(
+ ModalDialogProperties.CONTROLLER,
+ new SimpleModalDialogController(
+ mModalDialogManager, this::onDismiss))
+ .with(
+ ModalDialogProperties.BUTTON_STYLES,
+ ModalDialogProperties.ButtonStyles.PRIMARY_FILLED_NEGATIVE_OUTLINE)
+ .with(ModalDialogProperties.TITLE, title)
+ .with(
+ ModalDialogProperties.MESSAGE_PARAGRAPHS,
+ new ArrayList<>(List.of(message)))
+ .with(ModalDialogProperties.POSITIVE_BUTTON_TEXT, confirmButtonText)
+ .with(
+ ModalDialogProperties.NEGATIVE_BUTTON_TEXT,
+ mContext.getString(R.string.cancel))
+ .build();
+
+ mModalDialogManager.showDialog(mDialogModel, ModalDialogType.APP);
+ }
+
+ private void onDismiss(@DialogDismissalCause int dismissalCause) {
+ switch (dismissalCause) {
+ case DialogDismissalCause.POSITIVE_BUTTON_CLICKED:
+ assumeNonNull(mConfirmedCallback);
+ mConfirmedCallback.run();
+ break;
+ case DialogDismissalCause.NEGATIVE_BUTTON_CLICKED:
+ assumeNonNull(mDeclinedCallback);
+ mDeclinedCallback.run();
+ break;
+ default:
+ // No explicit user decision.
+ break;
+ }
+ mDialogModel = null;
+ }
+
+ void setModalDialogManagerForTesting(ModalDialogManager modalDialogManager) {
+ mModalDialogManager = modalDialogManager;
+ }
+}
diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java
--- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java
+++ b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java
@@ -6073,6 +6178,20 @@ diff --git a/chrome/browser/password_manager/android/pwm_disabled/BUILD.gn b/chr
"java/src/org/chromium/chrome/browser/pwm_disabled/PwmDeprecationDialogsMetricsRecorder.java",
"java/src/org/chromium/chrome/browser/pwm_disabled/SingleThreadBarrierClosure.java",
"java/src/org/chromium/chrome/browser/pwm_disabled/TimedCallbackDelayer.java",
diff --git a/chrome/browser/password_manager/factories/password_manager_settings_service_factory.cc b/chrome/browser/password_manager/factories/password_manager_settings_service_factory.cc
--- a/chrome/browser/password_manager/factories/password_manager_settings_service_factory.cc
+++ b/chrome/browser/password_manager/factories/password_manager_settings_service_factory.cc
@@ -90,9 +90,7 @@ PasswordManagerSettingsServiceFactory::CreateService(Profile* profile) const {
return std::make_unique<PasswordManagerSettingsServiceAndroidImpl>(
profile->GetPrefs(), SyncServiceFactory::GetForProfile(profile));
}
- return nullptr;
-#else
+#endif
return std::make_unique<password_manager::PasswordManagerSettingsServiceImpl>(
profile->GetPrefs());
-#endif
}
diff --git a/chrome/browser/password_manager/factories/password_store_backend_factory.cc b/chrome/browser/password_manager/factories/password_store_backend_factory.cc
--- a/chrome/browser/password_manager/factories/password_store_backend_factory.cc
+++ b/chrome/browser/password_manager/factories/password_store_backend_factory.cc
@@ -6114,24 +6233,10 @@ diff --git a/chrome/browser/password_manager/factories/password_store_backend_fa
std::move(login_db), behavior, prefs, os_crypt_async);
-#endif // BUILDFLAG(IS_ANDROID)
}
diff --git a/chrome/browser/password_manager/password_manager_settings_service_factory.cc b/chrome/browser/password_manager/password_manager_settings_service_factory.cc
--- a/chrome/browser/password_manager/password_manager_settings_service_factory.cc
+++ b/chrome/browser/password_manager/password_manager_settings_service_factory.cc
@@ -90,9 +90,7 @@ PasswordManagerSettingsServiceFactory::CreateService(Profile* profile) const {
return std::make_unique<PasswordManagerSettingsServiceAndroidImpl>(
profile->GetPrefs(), SyncServiceFactory::GetForProfile(profile));
}
- return nullptr;
-#else
+#endif
return std::make_unique<password_manager::PasswordManagerSettingsServiceImpl>(
profile->GetPrefs());
-#endif
}
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
@@ -2642,13 +2642,6 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs,
@@ -2527,13 +2527,6 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs,
profile_prefs->ClearPref(kObsoletePasswordsUseUPMLocalAndSeparateStores);
profile_prefs->ClearPref(kObsoleteEmptyProfileStoreLoginDatabase);
profile_prefs->ClearPref(kObsoleteUpmAutoExportCsvNeedsDeletion);
@@ -6148,7 +6253,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse
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
@@ -797,7 +797,7 @@ For more settings that use data to improve your Chrome experience, go to <ph nam
@@ -835,7 +835,7 @@ For more settings that use data to improve your Chrome experience, go to <ph nam
Passwords
</message>
<message name="IDS_PASSWORD_MANAGER_SETTINGS_TITLE" desc="Title for the settings menu item leading to the Password Manager UI surface. This allows users to e.g. manage their saved passwords, toggle saving and auto-sign-in on/off, etc. [CHAR_LIMIT=32]">
@@ -6157,7 +6262,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
</message>
<message name="IDS_PASSWORD_SAVING_ON_BY_ADMINISTRATOR" desc="Subtitle for the settings menu item leading to the Password Manager UI surface, shown when the device administrator set saving passwords to enabled.">
Password saving is turned on by your administrator
@@ -897,6 +897,127 @@ For more settings that use data to improve your Chrome experience, go to <ph nam
@@ -935,6 +935,127 @@ For more settings that use data to improve your Chrome experience, go to <ph nam
Password suggestion is closed.
</message>
@@ -6302,7 +6407,7 @@ new file mode 100644
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
@@ -391,6 +391,7 @@ BASE_FEATURE(kAutofillCreditCardUserPerceptionSurvey,
@@ -409,6 +409,7 @@ BASE_FEATURE(kAutofillCreditCardUserPerceptionSurvey,
// If enabled, other apps can open the Autofill Options in Chrome.
BASE_FEATURE(kAutofillDeepLinkAutofillOptions,
base::FEATURE_ENABLED_BY_DEFAULT);
@@ -6333,7 +6438,7 @@ diff --git a/components/browser_ui/settings/android/java/src/org/chromium/compon
diff --git a/components/password_manager/core/browser/features/password_manager_features_util.cc b/components/password_manager/core/browser/features/password_manager_features_util.cc
--- a/components/password_manager/core/browser/features/password_manager_features_util.cc
+++ b/components/password_manager/core/browser/features/password_manager_features_util.cc
@@ -19,6 +19,7 @@ namespace password_manager::features_util {
@@ -18,6 +18,7 @@ namespace password_manager::features_util {
namespace {
bool IsUserEligibleForAccountStorage(const syncer::SyncService* sync_service) {
@@ -6344,7 +6449,7 @@ diff --git a/components/password_manager/core/browser/features/password_manager_
diff --git a/components/password_manager/core/browser/import/password_importer.cc b/components/password_manager/core/browser/import/password_importer.cc
--- a/components/password_manager/core/browser/import/password_importer.cc
+++ b/components/password_manager/core/browser/import/password_importer.cc
@@ -75,6 +75,17 @@ const int32_t kMaxFileSizeBytes = 1000 * 1024;
@@ -82,6 +82,17 @@ base::expected<void, ImportResults::Status> ValidateDataSize(int64_t size) {
// optional string. The string will be present if the status is SUCCESS.
base::expected<std::string, ImportResults::Status> ReadFileToString(
const base::FilePath& path) {
@@ -6359,9 +6464,9 @@ diff --git a/components/password_manager/core/browser/import/password_importer.c
+ return std::move(file_contents);
+ }
+#endif
std::optional<int64_t> file_size = base::GetFileSize(path);
if (file_size.has_value()) {
if (std::optional<int64_t> file_size = base::GetFileSize(path)) {
RETURN_IF_ERROR(ValidateDataSize(file_size.value()));
}
diff --git a/components/password_manager/core/browser/password_manager.cc b/components/password_manager/core/browser/password_manager.cc
--- a/components/password_manager/core/browser/password_manager.cc
+++ b/components/password_manager/core/browser/password_manager.cc
@@ -6413,7 +6518,7 @@ diff --git a/components/password_manager/core/browser/password_manager_constants
diff --git a/components/password_manager/core/browser/password_store/BUILD.gn b/components/password_manager/core/browser/password_store/BUILD.gn
--- a/components/password_manager/core/browser/password_store/BUILD.gn
+++ b/components/password_manager/core/browser/password_store/BUILD.gn
@@ -74,6 +74,19 @@ source_set("password_store_impl") {
@@ -75,6 +75,19 @@ source_set("password_store_impl") {
"android_backend_error.h",
"password_data_type_controller_delegate_android.cc",
"password_data_type_controller_delegate_android.h",
@@ -6457,15 +6562,15 @@ diff --git a/components/password_manager/core/browser/password_store/login_datab
diff --git a/components/password_manager/core/browser/password_store/password_store_built_in_backend.cc b/components/password_manager/core/browser/password_store/password_store_built_in_backend.cc
--- a/components/password_manager/core/browser/password_store/password_store_built_in_backend.cc
+++ b/components/password_manager/core/browser/password_store/password_store_built_in_backend.cc
@@ -153,6 +153,7 @@ void PasswordStoreBuiltInBackend::InitBackend(
DCHECK(helper_);
affiliated_match_helper_ = affiliated_match_helper;
@@ -247,6 +247,7 @@ void PasswordStoreBuiltInBackend::InitBackend(
remote_form_changes_received_callback_ = remote_form_changes_received;
sync_enabled_or_disabled_cb_ = sync_enabled_or_disabled_cb;
+#if !BUILDFLAG(IS_ANDROID)
// To ensure that groups of the kClearUndecryptablePasswords will stay
// balanced, after the cleanup is done an additional flag check is needed.
// Users won't reach the flag the normal way since the LoginDB is working
@@ -161,6 +162,7 @@ void PasswordStoreBuiltInBackend::InitBackend(
@@ -255,6 +256,7 @@ void PasswordStoreBuiltInBackend::InitBackend(
if (pref_service_->GetBoolean(prefs::kClearingUndecryptablePasswords)) {
base::FeatureList::IsEnabled(features::kClearUndecryptablePasswords);
}
@@ -6473,7 +6578,7 @@ diff --git a/components/password_manager/core/browser/password_store/password_st
background_task_runner_->PostTask(
FROM_HERE, base::BindOnce(&LoginDatabaseAsyncHelper::CreateSyncBackend,
@@ -437,11 +439,15 @@ void PasswordStoreBuiltInBackend::OnEncryptorReceived(
@@ -561,11 +563,15 @@ void PasswordStoreBuiltInBackend::OnEncryptorReceived(
weak_ptr_factory_.GetWeakPtr()))
.Then(std::move(remote_form_changes_received));
@@ -6576,7 +6681,7 @@ diff --git a/components/password_manager/core/common/password_manager_pref_names
diff --git a/components/sync/service/sync_prefs.cc b/components/sync/service/sync_prefs.cc
--- a/components/sync/service/sync_prefs.cc
+++ b/components/sync/service/sync_prefs.cc
@@ -740,7 +740,7 @@ bool SyncPrefs::IsTypeSupportedInTransportMode(UserSelectableType type) {
@@ -738,7 +738,7 @@ bool SyncPrefs::IsTypeSupportedInTransportMode(UserSelectableType type) {
kSeparateLocalAndAccountSearchEngines);
#endif
case UserSelectableType::kPasswords:
@@ -32,7 +32,6 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../chrome/browser/app/ChromeActivity.java | 5 +-
chrome/browser/android/favicon_helper.cc | 214 ++++++++++-
chrome/browser/android/favicon_helper.h | 25 ++
.../browser/flags/ChromeFeatureList.java | 6 +-
.../flags/cromite/sTabSwitcherListMode.java | 33 ++
.../tab_ui/TabListFaviconProvider.java | 111 ++++++
.../browser/ui/favicon/FaviconHelper.java | 57 ++-
@@ -42,7 +41,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../java/res/drawable/ic_warning_red_16dp.xml | 26 ++
.../layout/title_and_description_layout.xml | 31 +-
.../tab-switcher-list-mode.inc | 3 +
35 files changed, 1184 insertions(+), 43 deletions(-)
34 files changed, 1180 insertions(+), 41 deletions(-)
create mode 100644 chrome/android/features/tab_ui/java/res/drawable/selected_tab_background.xml
create mode 100644 chrome/android/features/tab_ui/java/res/drawable/selected_tab_background_incognito.xml
create mode 100644 chrome/android/features/tab_ui/java/res/layout/tab_list_card_item.xml
@@ -217,7 +216,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
import org.chromium.chrome.browser.tabmodel.TabClosingSource;
import org.chromium.chrome.browser.tabmodel.TabClosureParamsUtils;
import org.chromium.chrome.browser.tabmodel.TabCreatorUtil;
@@ -901,6 +902,13 @@ public class TabGridDialogMediator
@@ -900,6 +901,13 @@ public class TabGridDialogMediator
TabGridDialogProperties.DIALOG_UNGROUP_BAR_HOVERED_TEXT_COLOR,
ungroupBarHoveredTextColor);
mModel.set(TabGridDialogProperties.IS_INCOGNITO, isIncognito);
@@ -479,7 +478,7 @@ 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/TabListMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java
@@ -2630,8 +2630,26 @@ class TabListMediator implements TabListNotificationHandler {
@@ -2622,8 +2622,26 @@ class TabListMediator implements TabListNotificationHandler {
private void updateFaviconForTab(
PropertyModel model, Tab tab, @Nullable Bitmap icon, @Nullable GURL iconUrl) {
if (mActionsOnAllRelatedTabs && isTabInTabGroup(tab)) {
@@ -997,7 +996,7 @@ new file mode 100644
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherPaneBase.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherPaneBase.java
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherPaneBase.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherPaneBase.java
@@ -298,7 +298,7 @@ public abstract class TabSwitcherPaneBase extends PaneBase
@@ -305,7 +305,7 @@ public abstract class TabSwitcherPaneBase extends PaneBase
|| isFullSpaceModeOnAndroidXr;
@Nullable Tab tab = getCurrentTab();
@@ -1006,7 +1005,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
return FadeHubLayoutAnimationFactory.createFadeInAnimatorProvider(
hubContainerView, HUB_LAYOUT_FADE_DURATION_MS, mOnToolbarAlphaChange);
} else if (isFullSpaceModeOnAndroidXr && getTabListMode() == TabListMode.GRID) {
@@ -327,7 +327,7 @@ public abstract class TabSwitcherPaneBase extends PaneBase
@@ -334,7 +334,7 @@ public abstract class TabSwitcherPaneBase extends PaneBase
HubContainerView hubContainerView) {
assert !DeviceFormFactor.isNonMultiDisplayContextOnTablet(hubContainerView.getContext());
Tab tab = getCurrentTab();
@@ -1057,7 +1056,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
diff --git a/chrome/android/features/tab_ui/tab_management_java_sources.gni b/chrome/android/features/tab_ui/tab_management_java_sources.gni
--- a/chrome/android/features/tab_ui/tab_management_java_sources.gni
+++ b/chrome/android/features/tab_ui/tab_management_java_sources.gni
@@ -180,6 +180,8 @@ internal_tab_management_java_sources = [
@@ -179,6 +179,8 @@ internal_tab_management_java_sources = [
"//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListNotificationHandler.java",
"//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListOnScrollListener.java",
"//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView.java",
@@ -1085,15 +1084,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/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
@@ -197,6 +197,7 @@ import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabObserver;
@@ -199,6 +199,7 @@ import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabObserver;
import org.chromium.chrome.browser.tabmodel.TabModelUtils;
import org.chromium.chrome.browser.task_manager.TaskManager;
import org.chromium.chrome.browser.task_manager.TaskManagerFactory;
+import org.chromium.chrome.browser.tasks.tab_management.TabUiFeatureUtilities;
import org.chromium.chrome.browser.theme.ThemeModuleUtils;
import org.chromium.chrome.browser.tinker_tank.TinkerTankDelegate;
import org.chromium.chrome.browser.toolbar.ControlContainer;
@@ -695,8 +696,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
import org.chromium.chrome.browser.toolbar.ToolbarManager;
@@ -700,8 +701,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
new TabContentManager(
this,
mBrowserControlsManagerSupplier.get(),
@@ -1408,29 +1407,6 @@ diff --git a/chrome/browser/android/favicon_helper.h b/chrome/browser/android/fa
base::WeakPtrFactory<FaviconHelper> weak_ptr_factory_{this};
};
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
@@ -21,6 +21,7 @@ import org.chromium.components.cached_flags.IntCachedFeatureParam;
import org.chromium.components.cached_flags.StringCachedFeatureParam;
import org.chromium.chrome.browser.flags.cromite.CromiteCachedFlagImplBase;
+import org.chromium.chrome.browser.flags.cromite.sTabSwitcherListMode;
import java.util.Arrays;
import java.util.stream.Collectors;
@@ -1372,8 +1373,9 @@ public abstract class ChromeFeatureList {
newMutableFlagWithSafeDefault(ANDROID_BOOKMARK_BAR_FAST_FOLLOW, true);
public static final MutableFlagWithSafeDefault sAndroidContextMenuDuplicateTabs =
newMutableFlagWithSafeDefault(ANDROID_CONTEXT_MENU_DUPLICATE_TABS, false);
- public static final MutableFlagWithSafeDefault sAndroidPinnedTabs =
- newMutableFlagWithSafeDefault(ANDROID_PINNED_TABS, true);
+ public static final MutableFlagWithSafeDefault sAndroidPinnedTabs = sTabSwitcherListMode.getInstance().isEnabled()
+ ? ChromeFeatureMap.getInstance().immutableFlagWithDefault(ANDROID_PINNED_TABS, false)
+ : newMutableFlagWithSafeDefault(ANDROID_PINNED_TABS, true);
public static final MutableFlagWithSafeDefault sAndroidPinnedTabsTabletTabStrip =
newMutableFlagWithSafeDefault(ANDROID_PINNED_TABS_TABLET_TAB_STRIP, true);
public static final MutableFlagWithSafeDefault sAndroidTipsNotifications =
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sTabSwitcherListMode.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sTabSwitcherListMode.java
new file mode 100644
--- /dev/null
@@ -1658,7 +1634,7 @@ diff --git a/chrome/browser/ui/android/favicon/java/src/org/chromium/chrome/brow
/** Helper for generating default favicons and sharing the same icon between multiple views. */
public static class DefaultFaviconHelper {
private @Nullable Bitmap mChromeDarkBitmap;
@@ -220,6 +234,36 @@ public class FaviconHelper {
@@ -230,6 +244,36 @@ public class FaviconHelper {
faviconImageCallback);
}
@@ -1695,7 +1671,7 @@ diff --git a/chrome/browser/ui/android/favicon/java/src/org/chromium/chrome/brow
@VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
@NativeMethods
public interface Natives {
@@ -227,6 +271,13 @@ public class FaviconHelper {
@@ -237,6 +281,13 @@ public class FaviconHelper {
void destroy(long nativeFaviconHelper);
@@ -1734,7 +1710,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
import org.chromium.chrome.browser.omnibox.LocationBarBackgroundDrawable;
import org.chromium.chrome.browser.omnibox.LocationBarBackgroundDrawable.HairlineBehavior;
import org.chromium.chrome.browser.omnibox.LocationBarCoordinator;
@@ -2106,7 +2107,7 @@ public class ToolbarPhone extends ToolbarLayout
@@ -2140,7 +2141,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.
@@ -1743,7 +1719,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
mLocationBar.setUrlBarFocusable(false);
}
@@ -2334,7 +2335,8 @@ public class ToolbarPhone extends ToolbarLayout
@@ -2368,7 +2369,8 @@ public class ToolbarPhone extends ToolbarLayout
ToggleTabStackButtonCoordinator tabSwitcherButtonCoordinator =
getTabSwitcherButtonCoordinator();
assumeNonNull(tabSwitcherButtonCoordinator);