Patches for v147 (final)

This commit is contained in:
Carmelo Messina
2026-04-08 10:42:08 +02:00
parent 130b90c921
commit 6465669461
56 changed files with 1871 additions and 512 deletions
@@ -48,7 +48,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../tabmodel/TabModelSelectorImpl.java | 3 +
.../tabmodel/TabPersistentStoreImpl.java | 7 +
.../browser/toolbar/ToolbarManager.java | 1 +
.../webapps/WebappIntentDataProvider.java | 15 ++
.../webapps/WebappIntentDataProvider.java | 16 ++
.../browser/android/historical_tab_saver.cc | 24 ++-
.../chrome_autocomplete_provider_client.cc | 9 +
.../chrome_autocomplete_provider_client.h | 1 +
@@ -68,7 +68,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
chrome/browser/prefs/browser_prefs.cc | 5 +
chrome/browser/profiles/profile_selections.cc | 10 +
chrome/browser/profiles/profile_selections.h | 7 +-
.../signin/services/ProfileDataCache.java | 16 +-
.../signin/services/ProfileDataCache.java | 18 +-
.../browser/ui/android/native_page/BUILD.gn | 2 +
.../browser/ui/native_page/NativePage.java | 17 +-
.../browser/omnibox/LocationBarMediator.java | 8 +
@@ -89,7 +89,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../add-an-always-incognito-mode.inc | 1 +
.../add-an-always-incognito-mode.inc | 3 +
.../add-an-always-incognito-mode.inc | 1 +
70 files changed, 811 insertions(+), 118 deletions(-)
70 files changed, 812 insertions(+), 120 deletions(-)
create mode 100644 chrome/android/java/res/xml/incognito_preferences.xml
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/IncognitoSettings.java
@@ -1127,16 +1127,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java
@@ -33,6 +33,8 @@ import org.chromium.components.browser_ui.widget.TintedDrawable;
@@ -33,6 +33,9 @@ import org.chromium.components.browser_ui.widget.TintedDrawable;
import org.chromium.device.mojom.ScreenOrientationLockType;
import org.chromium.ui.util.ColorUtils;
+import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor;
+import org.chromium.chrome.browser.flags.CustomTabProfileType;
+
/** Stores info about a web app. */
@NullMarked
public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider {
@@ -47,6 +49,8 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider
@@ -47,6 +50,8 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider
private final ColorProviderImpl mDarkColorProvider;
private @DisplayMode.EnumType int mResolvedDisplayMode = DisplayMode.UNDEFINED;
@@ -1145,7 +1146,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappI
/** Returns the toolbar color to use if a custom color is not specified by the webapp. */
public static int getDefaultToolbarColor() {
return Color.WHITE;
@@ -82,6 +86,10 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider
@@ -82,6 +87,10 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider
mWebappExtras = webappExtras;
mWebApkExtras = webApkExtras;
mActivityType = (webApkExtras != null) ? ActivityType.WEB_APK : ActivityType.WEBAPP;
@@ -1156,7 +1157,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappI
}
@Override
@@ -177,6 +185,13 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider
@@ -177,6 +186,13 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider
return mWebApkExtras;
}
@@ -1914,7 +1915,16 @@ diff --git a/chrome/browser/signin/services/android/java/src/org/chromium/chrome
mImageSize = imageSize;
mDefaultBadgeConfig = badgeConfig;
mPlaceholderImage = getScaledPlaceholderImage(context, imageSize);
@@ -266,7 +263,6 @@ public class ProfileDataCache implements IdentityManager.Observer, AccountsChang
@@ -255,8 +252,6 @@ public class ProfileDataCache implements IdentityManager.Observer, AccountsChang
return;
}
mPerAccountBadgeConfig.put(accountId, badgeConfig);
- var accountInfo = mIdentityManager.findExtendedAccountInfoByAccountId(accountId);
- onExtendedAccountInfoUpdated(accountInfo);
}
/**
@@ -266,7 +261,6 @@ public class ProfileDataCache implements IdentityManager.Observer, AccountsChang
ThreadUtils.assertOnUiThread();
if (mObservers.isEmpty()) {
mAccountManagerFacade.addObserver(this);
@@ -1922,7 +1932,7 @@ diff --git a/chrome/browser/signin/services/android/java/src/org/chromium/chrome
}
mObservers.addObserver(observer);
}
@@ -279,7 +275,6 @@ public class ProfileDataCache implements IdentityManager.Observer, AccountsChang
@@ -279,7 +273,6 @@ public class ProfileDataCache implements IdentityManager.Observer, AccountsChang
mObservers.removeObserver(observer);
if (mObservers.isEmpty()) {
mAccountManagerFacade.removeObserver(this);
@@ -1930,7 +1940,7 @@ diff --git a/chrome/browser/signin/services/android/java/src/org/chromium/chrome
}
}
@@ -311,6 +306,7 @@ public class ProfileDataCache implements IdentityManager.Observer, AccountsChang
@@ -311,6 +304,7 @@ public class ProfileDataCache implements IdentityManager.Observer, AccountsChang
}
private void updateCache() {
@@ -1938,7 +1948,7 @@ diff --git a/chrome/browser/signin/services/android/java/src/org/chromium/chrome
var accounts = mAccountManagerFacade.getAccounts();
if (!accounts.isFulfilled()) {
// When the list of accounts is ready - onCoreAccountInfosChanged will call
@@ -320,14 +316,6 @@ public class ProfileDataCache implements IdentityManager.Observer, AccountsChang
@@ -320,14 +314,6 @@ public class ProfileDataCache implements IdentityManager.Observer, AccountsChang
List<AccountsCache.AccountEntry> displayableAccounts = new ArrayList<>();
for (CoreAccountInfo account : accounts.getResult()) {
@@ -16,7 +16,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../browser/TabbedModeTabDelegateFactory.java | 5 +-
.../app/bookmarks/BookmarkActivity.java | 20 ++
.../native_page/NativePageFactory.java | 7 +-
chrome/browser/BUILD.gn | 9 +
chrome/browser/BUILD.gn | 7 +
.../bookmarks/android/bookmark_bridge.cc | 193 ++++++++++++
.../bookmarks/android/bookmark_bridge.h | 30 +-
.../browser/bookmarks/BookmarkBridge.java | 39 +++
@@ -51,7 +51,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
ui/shell_dialogs/select_file_dialog_linux.cc | 4 +
ui/shell_dialogs/select_file_dialog_linux.h | 2 +
ui/shell_dialogs/select_file_dialog_win.cc | 5 +
40 files changed, 792 insertions(+), 21 deletions(-)
40 files changed, 790 insertions(+), 21 deletions(-)
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/add-bookmark-import-export-actions.inc
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-bookmark-import-export-actions.inc
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/add-bookmark-import-export-actions.inc
@@ -205,16 +205,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -210,6 +210,8 @@ static_library("browser") {
"bad_message.h",
"browser_about_handler.cc",
"browser_about_handler.h",
+ "bookmarks/bookmark_html_writer.cc",
+ "bookmarks/bookmark_html_writer.h",
"browser_features.cc",
"browser_features.h",
"browser_process_impl.cc",
@@ -1327,6 +1329,13 @@ static_library("browser") {
@@ -1327,6 +1327,13 @@ static_library("browser") {
"webauthn/webauthn_switches.cc",
]
@@ -1580,7 +1580,7 @@ diff --git a/components/webui/flags/resources/experiment.css b/components/webui/
}
+.experiment-on select {
+ background: #dddddd;
+ background: #ddd;
+ color: var(--link-color);
+}
+
@@ -1722,11 +1722,13 @@ diff --git a/content/public/common/content_features.cc b/content/public/common/c
diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h
--- a/content/public/common/content_features.h
+++ b/content/public/common/content_features.h
@@ -440,4 +440,5 @@ CONTENT_EXPORT bool IsFluidResizeEnabled();
} // namespace features
@@ -438,6 +438,7 @@ CONTENT_EXPORT bool IsPushSubscriptionChangeEventEnabled();
CONTENT_EXPORT bool IsFluidResizeEnabled();
#endif
+#include "cromite_flags/content_public_common_content_features_h.inc"
} // namespace features
#endif // CONTENT_PUBLIC_COMMON_CONTENT_FEATURES_H_
diff --git a/cromite_flags/BUILD.gn b/cromite_flags/BUILD.gn
new file mode 100755
@@ -14,7 +14,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -661,7 +661,7 @@ config("compiler") {
@@ -669,7 +669,7 @@ config("compiler") {
# TODO(crbug.com/376278218): This causes segfault on Linux ARM builds.
# It also causes segfault on Linux s390x:
# https://github.com/llvm/llvm-project/issues/149511
@@ -14,7 +14,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../bookmarks/bookmark_parent_folder.cc | 1 +
.../permanent_folder_ordering_tracker.cc | 2 +
.../dialogs/DownloadLocationCustomView.java | 4 +-
.../strings/android_chrome_strings.grd | 3 ++
.../strings/android_chrome_strings.grd | 6 +--
.../bookmark_ui_operations_helper.cc | 2 +
.../bookmark_bar_page_handler.cc | 2 +
components/bookmark_bar_strings.grdp | 6 +++
@@ -31,7 +31,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
components/bookmarks/browser/bookmark_uuids.h | 1 +
components/bookmarks/browser/model_loader.cc | 9 +++-
.../bookmark_specifics_conversions.cc | 1 +
27 files changed, 251 insertions(+), 11 deletions(-)
27 files changed, 251 insertions(+), 14 deletions(-)
diff --git a/chrome/android/java/res/values/ids.xml b/chrome/android/java/res/values/ids.xml
--- a/chrome/android/java/res/values/ids.xml
@@ -470,6 +470,16 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
<message name="IDS_MENU_GET_IMAGE_DESCRIPTIONS" desc="Menu item to start getting alt text accessibility image labels/descriptions [CHAR_LIMIT=27]">
Get image descriptions
</message>
@@ -4733,9 +4736,6 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
<message name="IDS_MENU_REOPEN_CLOSED_GROUP" desc="Menu item for reopening the last closed tab group.">
Reopen closed group
</message>
- <message name="IDS_MENU_BOOKMARK_ALL_TABS" desc="Menu item for bookmarking all tabs.">
- Bookmark all tabs
- </message>
<message name="IDS_MENU_UNPIN_GLIC_BUTTON" desc="Menu item for unpinning the tab strip Glic button.">
Unpin
</message>
diff --git a/chrome/browser/ui/bookmarks/bookmark_ui_operations_helper.cc b/chrome/browser/ui/bookmarks/bookmark_ui_operations_helper.cc
--- a/chrome/browser/ui/bookmarks/bookmark_ui_operations_helper.cc
+++ b/chrome/browser/ui/bookmarks/bookmark_ui_operations_helper.cc
@@ -200,7 +200,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
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
@@ -6709,6 +6709,14 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
@@ -6706,6 +6706,14 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
Your <ph name="FQDN">%1$s<ex>www.amazon.com</ex></ph> timer ran out. It'll start again tomorrow.
</message>
@@ -7,7 +7,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../layout/custom_tabs_control_container.xml | 2 +-
.../java/res/layout/recent_tabs_page.xml | 2 +-
.../java/res/values-sw600dp/dimens.xml | 3 ++-
chrome/android/java/res/values/dimens.xml | 6 +++++-
chrome/android/java/res/values/dimens.xml | 3 ++-
.../browser/ChromeBaseAppCompatActivity.java | 3 +++
.../chrome/browser/WarmupManager.java | 7 +++++--
.../ChromeAccessibilitySettingsDelegate.java | 19 +++++++++++++++++++
@@ -29,7 +29,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../java/res/layout/toolbar_tablet.xml | 2 +-
.../java/res/values-sw600dp/dimens.xml | 5 +++--
.../toolbar/java/res/values/dimens.xml | 6 ++++--
.../toolbar/top/ToolbarControlContainer.java | 19 +++++++++++++++++++
.../toolbar/top/ToolbarControlContainer.java | 6 ++++++
.../browser/toolbar/top/ToolbarLayout.java | 5 ++++-
.../tab_strip/HeightTransitionHandler.java | 2 ++
.../TabStripTransitionCoordinator.java | 6 +++++-
@@ -37,7 +37,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../accessibility/AccessibilitySettings.java | 13 +++++++++++++
.../AccessibilitySettingsDelegate.java | 2 ++
.../chromium/ui/base/DeviceFormFactor.java | 14 ++++++++++++++
33 files changed, 165 insertions(+), 22 deletions(-)
33 files changed, 149 insertions(+), 22 deletions(-)
diff --git a/chrome/android/java/res/layout/custom_tabs_control_container.xml b/chrome/android/java/res/layout/custom_tabs_control_container.xml
--- a/chrome/android/java/res/layout/custom_tabs_control_container.xml
@@ -72,28 +72,23 @@ diff --git a/chrome/android/java/res/values-sw600dp/dimens.xml b/chrome/android/
<!-- Full Screen Dimensions -->
- <dimen name="control_container_height">96dp</dimen>
+ <dimen name="control_container_height_cromite">96dp</dimen>
+ <dimen name="control_container_height_tabletui">96dp</dimen>
+ <dimen name="control_container_height_tabletui">56dp</dimen>
<!-- NTP dimensions -->
<dimen name="ntp_search_box_transition_start_offset">60dp</dimen>
diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml
--- a/chrome/android/java/res/values/dimens.xml
+++ b/chrome/android/java/res/values/dimens.xml
@@ -116,9 +116,13 @@ found in the LICENSE file.
@@ -116,7 +116,8 @@ found in the LICENSE file.
<dimen name="signin_screen_top_padding">50dp</dimen>
<!-- Should match toolbar_height_no_shadow -->
- <dimen name="control_container_height">@dimen/default_action_bar_height</dimen>
+ <dimen name="control_container_height_cromite">@dimen/default_action_bar_height</dimen>
+ <dimen name="control_container_height_tabletui">96dp</dimen>
+ <dimen name="control_container_height_tabletui">56dp</dimen>
<dimen name="custom_tabs_control_container_height">@dimen/default_action_bar_height</dimen>
+ <!-- The combined height of the tab strip and toolbar. -->
+ <dimen name="tab_strip_and_toolbar_height_cromite">56dp</dimen>
+
<!-- Find in Page dimensions -->
<dimen name="find_in_page_popup_width">375dp</dimen>
<dimen name="find_in_page_popup_height">64dp</dimen>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java
@@ -489,27 +484,14 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.PorterDuff;
@@ -174,6 +175,24 @@ public class ToolbarControlContainer extends OptimizedFrameLayout
@@ -174,6 +175,11 @@ public class ToolbarControlContainer extends OptimizedFrameLayout
@Initializer
public void initWithToolbar(int toolbarLayoutId, int toolbarLayoutHeightResId) {
try (TraceEvent te = TraceEvent.scoped("ToolbarControlContainer.initWithToolbar")) {
+ if (DeviceFormFactor.isForceTabletUI() && toolbarLayoutHeightResId != 0) {
+ toolbarLayoutHeightResId = R.dimen.tab_strip_height_tabletui;
+ toolbarLayoutHeightResId = R.dimen.control_container_height_tabletui;
+ Resources res = getContext().getResources();
+ setMinimumHeight((int) res.getDimension(toolbarLayoutHeightResId));
+ int tab_strip_height =
+ (int) res.getDimension(R.dimen.tab_strip_height_tabletui);
+
+ View view = findViewById(R.id.toolbar_stub);
+ if (view != null)
+ ((MarginLayoutParams)view.getLayoutParams()).topMargin = tab_strip_height;
+
+ view = findViewById(R.id.toolbar_hairline);
+ if (view != null) view.setVisibility(View.GONE);
+
+ view = findViewById(R.id.find_toolbar_stub);
+ if (view != null)
+ ((MarginLayoutParams)view.getLayoutParams()).topMargin = tab_strip_height;
+ }
mToolbarContainer = findViewById(R.id.toolbar_container);
mToolbarLayoutHeight = getResources().getDimensionPixelSize(toolbarLayoutHeightResId);
@@ -10,7 +10,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../browsing_data/BrowsingDataBridge.java | 12 +--
.../ClearBrowsingDataFragment.java | 37 +++++++--
.../ClearBrowsingDataFragmentAtStart.java | 79 +++++++++++++++++++
chrome/app/settings_strings.grdp | 10 +++
chrome/app/settings_strings.grdp | 8 ++
chrome/browser/about_flags.cc | 1 +
.../browsing_data/browsing_data_bridge.cc | 17 +++-
.../chrome_browsing_data_lifetime_manager.cc | 22 +++++-
@@ -20,16 +20,24 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../profiles/android/profile_manager_utils.cc | 5 ++
chrome/browser/profiles/profile_manager.cc | 17 +++-
chrome/browser/profiles/profile_manager.h | 2 +
.../clear_browsing_data_browser_proxy.ts | 1 +
.../clear_browsing_data_dialog_v2.html | 20 ++++-
.../clear_browsing_data_dialog_v2.ts | 62 ++++++++++++++-
.../clear_browsing_data_time_picker.ts | 6 +-
.../settings/privacy_page/privacy_page.html | 12 +++
.../settings/privacy_page/privacy_page.ts | 10 +++
.../privacy_page/privacy_page_index.ts | 2 +-
chrome/browser/resources/settings/route.ts | 2 +
chrome/browser/resources/settings/router.ts | 1 +
.../strings/android_chrome_strings.grd | 3 +
.../Add-setting-to-clear-data-on-exit.grdp | 9 +++
.../settings_localized_strings_provider.cc | 1 +
.../settings_localized_strings_provider.cc | 4 +
.../content/browsing_data_helper.cc | 9 ++-
components/browsing_data/core/BUILD.gn | 5 ++
.../core/browsing_data_policies_utils.cc | 20 ++---
.../core/browsing_data_policies_utils.h | 11 +++
.../browsing_data/core/browsing_data_utils.cc | 31 ++++++++
.../core/clear_browsing_data_tab.h | 3 +-
components/browsing_data/core/features.h | 1 +
components/browsing_data/core/pref_names.cc | 17 ++++
components/browsing_data/core/pref_names.h | 10 +++
components/favicon/core/favicon_database.cc | 9 +++
@@ -39,7 +47,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
content/browser/storage_partition_impl.cc | 2 +
.../public/browser/browsing_data_remover.h | 7 +-
.../Add-setting-to-clear-data-on-exit.inc | 8 ++
35 files changed, 369 insertions(+), 35 deletions(-)
43 files changed, 473 insertions(+), 47 deletions(-)
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragmentAtStart.java
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-setting-to-clear-data-on-exit.grdp
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Add-setting-to-clear-data-on-exit.inc
@@ -346,18 +354,16 @@ new file mode 100644
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
@@ -2222,6 +2222,16 @@
@@ -2222,6 +2222,14 @@
<message name="IDS_SETTINGS_CLEAR_BROWSING_DATA" desc="Text for delete browsing data button in Privacy options">
Delete browsing data
</message>
+ <if expr="is_win or is_linux">
+ <message name="IDS_CLEAR_BROWSING_DATA_ATSTART_TAB_TITLE" desc="The title of the tab showing the at start clear browsing data options.">
+ At Close
+ <message name="IDS_SETTINGS_CLEAR_BROWSING_DATA_AT_CLOSE" desc="The title of the tab showing the at close clear browsing data options.">
+ Clear browsing data when closing Cromite
+ </message>
+ </if>
+ <if expr="is_android">
+ <message name="IDS_CLEAR_BROWSING_DATA_ATSTART_TAB_TITLE" desc="The title of the tab showing the at start clear browsing data options.">
+ At Startup
+ <message name="IDS_SETTINGS_CLEAR_DATA_AT_CLOSE_DESCRIPTION" desc="Description for delete browsing data button at close in Privacy options. 'History' refers to browsing history. 'Cookies' refers to the technical meaning of a cookie, i.e. data saved by a website on the user's computer, as in when a website saves your preferences.">
+ Choose what to automatically delete when you close Cromite
+ </message>
+ </if>
<message name="IDS_SETTINGS_CLEAR_DATA_DESCRIPTION" desc="Description for delete browsing data button in Privacy options. 'History' refers to browsing history. 'Cookies' refers to the technical meaning of a cookie, i.e. data saved by a website on the user's computer, as in when a website saves your preferences.">
@@ -631,6 +637,352 @@ diff --git a/chrome/browser/profiles/profile_manager.h b/chrome/browser/profiles
// If a profile with the given path is currently managed by this object and
// fully initialized, return a pointer to the corresponding Profile object;
// otherwise return null.
diff --git a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_browser_proxy.ts b/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_browser_proxy.ts
--- a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_browser_proxy.ts
+++ b/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_browser_proxy.ts
@@ -42,6 +42,7 @@ export enum BrowsingDataType {
SITE_SETTINGS = 5,
DOWNLOADS = 6,
HOSTED_APPS_DATA = 7,
+ PASSWORDS = 8,
// TABS = 8, Not used on Desktop.
}
// LINT.ThenChange(/components/browsing_data/core/browsing_data_utils.h:BrowsingDataType)
diff --git a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog_v2.html b/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog_v2.html
--- a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog_v2.html
+++ b/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog_v2.html
@@ -40,6 +40,8 @@
#deleteBrowsingDataDialog::part(dialog) {
max-height: var(--dbd-dialog-max-height);
+ top: 300px;
+ width: 590px;
}
#deletingDataAlert {
@@ -99,18 +101,25 @@
<cr-dialog id="deleteBrowsingDataDialog" close-text="$i18n{close}"
show-on-attach ignore-popstate ignore-enter-key
hidden="[[showOtherGoogleDataDialog_]]">
+<template is="dom-if" if="[[!clearBrowsingDialogAtClose]]">
<div slot="title" class="dialog-title">$i18n{clearBrowsingData}</div>
+</template>
+<template is="dom-if" if="[[clearBrowsingDialogAtClose]]">
+ <div slot="title" class="dialog-title">$i18n{clearBrowsingDataAtClose}</div>
+</template>
<div slot="header">
+<template is="dom-if" if="[[!clearBrowsingDialogAtClose]]">
<settings-clear-browsing-data-time-picker id="timePicker" prefs="{{prefs}}"
on-selected-time-period-change="onTimePeriodChanged_">
</settings-clear-browsing-data-time-picker>
+</template>
</div>
<div slot="body">
<div id="checkboxContainer">
<template is="dom-repeat"
items="[[expandedBrowsingDataTypeOptionsList_]]">
- <settings-checkbox pref="{{item.pref}}" no-set-pref
- sub-label-html="[[item.subLabel]]"
+ <settings-checkbox pref="{{item.pref}}" no-set-pref="[[!clearBrowsingDialogAtClose]]"
+ sub-label-html="[[shouldShowSubLabel_(item.subLabel)]]"
disabled="[[isDeletionInProgress_]]"
on-sub-label-link-clicked="onCheckboxSubLabelLinkClick_">
<div class="checkbox-title">[[item.label]]</div>
@@ -137,12 +146,14 @@
<cr-icon icon="cr:expand-more" aria-hidden="true" role="presentation">
</cr-icon>
</cr-button>
+<template is="dom-if" if="[[!clearBrowsingDialogAtClose]]">
<cr-link-row id="manageOtherGoogleDataRow"
label="[[otherGoogleDataRowLabel_]]"
sub-label="[[otherGoogleDataRowSubLabel_]]"
on-click="onManageOtherGoogleDataRowClick_"
role-description="$i18n{subpageArrowRoleDescription}">
</cr-link-row>
+</template>
</div>
<div slot="button-container" class="row-aligned">
<if expr="not is_chromeos">
@@ -152,9 +163,10 @@
<div id="spinner" class="spinner" hidden="[[!isDeletionInProgress_]]"></div>
<cr-button id="cancelButton" class="cancel-button" on-click="onCancelClick_"
disabled="[[isDeletionInProgress_]]" autofocus>
- $i18n{cancel}
+ $i18n{close}
</cr-button>
<cr-button id="deleteButton" class="action-button"
+ hidden="[[clearBrowsingDialogAtClose]]"
on-click="onDeleteBrowsingDataClick_"
disabled="[[shouldDisableDeleteButton_(
isDeletionInProgress_, isNoDatatypeSelected_)]]">
@@ -177,4 +189,4 @@
<template is="dom-if" if="[[showOtherGoogleDataDialog_]]" restamp>
<settings-other-google-data-dialog on-cancel="onOtherGoogleDataDialogClose_">
</settings-other-google-data-dialog>
-</template>
\ No newline at end of file
+</template>
diff --git a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog_v2.ts b/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog_v2.ts
--- a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog_v2.ts
+++ b/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog_v2.ts
@@ -91,6 +91,17 @@ const ALL_BROWSING_DATATYPES_LIST: BrowsingDataType[] = [
BrowsingDataType.HOSTED_APPS_DATA,
];
+const ALL_BROWSING_DATATYPES_LIST_AT_CLOSE: BrowsingDataType[] = [
+ BrowsingDataType.HISTORY,
+ BrowsingDataType.SITE_DATA,
+ BrowsingDataType.CACHE,
+ BrowsingDataType.DOWNLOADS,
+ BrowsingDataType.FORM_DATA,
+ BrowsingDataType.SITE_SETTINGS,
+ BrowsingDataType.PASSWORDS,
+ BrowsingDataType.HOSTED_APPS_DATA,
+];
+
/** The list of Browsing Data types that should be expanded by default. */
const DEFAULT_BROWSING_DATATYPES_LIST: BrowsingDataType[] = [
BrowsingDataType.HISTORY,
@@ -120,12 +131,36 @@ function getDataTypeLabel(datatypes: BrowsingDataType) {
return loadTimeData.getString('clearDownloadHistory');
case BrowsingDataType.HOSTED_APPS_DATA:
return loadTimeData.getString('clearHostedAppData');
+ case BrowsingDataType.PASSWORDS:
+ return loadTimeData.getString('clearPasswords');
default:
assertNotReachedCase(datatypes);
}
}
-export function getDataTypePrefName(datatypes: BrowsingDataType) {
+export function getDataTypePrefName(datatypes: BrowsingDataType, atclose: boolean) {
+ if (atclose) {
+ switch (datatypes) {
+ case BrowsingDataType.HISTORY:
+ return 'browser.clear_data.browsing_history_at_start';
+ case BrowsingDataType.CACHE:
+ return 'browser.clear_data.cache_at_start';
+ case BrowsingDataType.SITE_DATA:
+ return 'browser.clear_data.cookies_at_start';
+ case BrowsingDataType.FORM_DATA:
+ return 'browser.clear_data.form_data_at_start';
+ case BrowsingDataType.SITE_SETTINGS:
+ return 'browser.clear_data.site_settings_at_start';
+ case BrowsingDataType.DOWNLOADS:
+ return 'browser.clear_data.download_history_at_start';
+ case BrowsingDataType.HOSTED_APPS_DATA:
+ return 'browser.clear_data.hosted_apps_data_at_start';
+ case BrowsingDataType.PASSWORDS:
+ return 'browser.clear_data.passwords_at_start';
+ default:
+ assertNotReachedCase(datatypes);
+ }
+ }
switch (datatypes) {
case BrowsingDataType.HISTORY:
return 'browser.clear_data.browsing_history';
@@ -141,6 +176,8 @@ export function getDataTypePrefName(datatypes: BrowsingDataType) {
return 'browser.clear_data.download_history';
case BrowsingDataType.HOSTED_APPS_DATA:
return 'browser.clear_data.hosted_apps_data';
+ case BrowsingDataType.PASSWORDS:
+ return 'browser.clear_data.passwords';
default:
assertNotReachedCase(datatypes);
}
@@ -161,6 +198,12 @@ export class SettingsClearBrowsingDataDialogV2Element extends
static get properties() {
return {
+ clearBrowsingDialogAtClose: {
+ type: Boolean,
+ value: '',
+ reflectToAttribute: true,
+ },
+
dataTypesExpanded_: {
type: Boolean,
value: false,
@@ -224,6 +267,8 @@ export class SettingsClearBrowsingDataDialogV2Element extends
};
}
+ declare private clearBrowsingDialogAtClose: boolean;
+
declare private dataTypesExpanded_: boolean;
declare private deleteButtonLabel_: string;
declare private deletingDataAlertString_: string;
@@ -310,10 +355,14 @@ export class SettingsClearBrowsingDataDialogV2Element extends
const expandedOptionsList: BrowsingDataTypeOption[] = [];
const moreOptionsList: BrowsingDataTypeOption[] = [];
- ALL_BROWSING_DATATYPES_LIST.forEach((datatype) => {
+ var list = ALL_BROWSING_DATATYPES_LIST;
+ if (this.clearBrowsingDialogAtClose)
+ list = ALL_BROWSING_DATATYPES_LIST_AT_CLOSE;
+
+ list.forEach((datatype) => {
const datatypeOption = {
label: getDataTypeLabel(datatype),
- pref: this.getPref(getDataTypePrefName(datatype)),
+ pref: this.getPref(getDataTypePrefName(datatype, this.clearBrowsingDialogAtClose)),
};
if (this.shouldDataTypeBeExpanded_(datatype)) {
@@ -362,7 +411,12 @@ export class SettingsClearBrowsingDataDialogV2Element extends
private shouldDataTypeBeExpanded_(datatype: BrowsingDataType) {
return DEFAULT_BROWSING_DATATYPES_LIST.includes(datatype) ||
- this.getPref(getDataTypePrefName(datatype)).value;
+ this.getPref(getDataTypePrefName(datatype, this.clearBrowsingDialogAtClose)).value ||
+ this.clearBrowsingDialogAtClose;
+ }
+
+ private shouldShowSubLabel_(value: string) {
+ return this.clearBrowsingDialogAtClose ? '' : value;
}
private computeDeleteButtonLabel_() {
diff --git a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_time_picker.ts b/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_time_picker.ts
--- a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_time_picker.ts
+++ b/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_time_picker.ts
@@ -80,7 +80,7 @@ export class SettingsClearBrowsingDataTimePicker extends
selectedTimePeriod_: {
type: Number,
observer: 'onTimePeriodSelectionChanged_',
- value: TimePeriod.LAST_HOUR,
+ value: TimePeriod.ALL_TIME,
},
/**
@@ -91,12 +91,12 @@ export class SettingsClearBrowsingDataTimePicker extends
readOnly: true,
type: Array,
value: [
+ TimePeriod.ALL_TIME,
TimePeriod.LAST_15_MINUTES,
TimePeriod.LAST_HOUR,
TimePeriod.LAST_DAY,
TimePeriod.LAST_WEEK,
TimePeriod.FOUR_WEEKS,
- TimePeriod.ALL_TIME,
],
},
@@ -125,7 +125,7 @@ export class SettingsClearBrowsingDataTimePicker extends
*/
maxChipsShown_: {
type: Number,
- value: 4,
+ value: 6,
},
};
}
diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/chrome/browser/resources/settings/privacy_page/privacy_page.html
--- a/chrome/browser/resources/settings/privacy_page/privacy_page.html
+++ b/chrome/browser/resources/settings/privacy_page/privacy_page.html
@@ -6,6 +6,13 @@
on-browsing-data-deleted="onBrowsingDataDeleted_">
</settings-clear-browsing-data-dialog-v2>
</template>
+ <template is="dom-if" if="[[showClearBrowsingAtCloseDataDialog_]]" restamp>
+ <settings-clear-browsing-data-dialog-v2 prefs="{{prefs}}"
+ clear-browsing-dialog-at-close="true"
+ on-close="onCbdDialogClosed_"
+ on-browsing-data-deleted="onBrowsingDataDeleted_">
+ </settings-clear-browsing-data-dialog-v2>
+ </template>
<template is="dom-if" if="[[showPrivacyGuideDialog_]]" restamp>
<settings-privacy-guide-dialog id="privacyGuideDialog" prefs="{{prefs}}"
on-close="onPrivacyGuideDialogClosed_">
@@ -16,6 +23,11 @@
label="$i18n{clearBrowsingData}"
sub-label="$i18n{clearBrowsingDataDescription}"
on-click="onClearBrowsingDataClick_"></cr-link-row>
+ <cr-link-row id="clearBrowsingDataAtClose"
+ start-icon="cr:delete"
+ label="$i18n{clearBrowsingDataAtClose}"
+ sub-label="$i18n{clearBrowsingDataAtCloseDescription}"
+ on-click="onClearBrowsingDataAtCloseClick_"></cr-link-row>
<template is="dom-if" if="[[isPrivacyGuideAvailable]]">
<cr-link-row id="privacyGuideLinkRow" class="hr"
start-icon="privacy20:signpost"
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,7 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase {
},
showClearBrowsingDataDialog_: Boolean,
+ showClearBrowsingAtCloseDataDialog_: Boolean,
showPrivacyGuideDialog_: Boolean,
isPrivacySandboxRestricted_: {
@@ -121,6 +122,7 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase {
declare private historyExpireDaysThresholdOptions_: object[];
declare private showClearBrowsingDataDialog_: boolean;
+ declare private showClearBrowsingAtCloseDataDialog_: boolean;
declare private showPrivacyGuideDialog_: boolean;
declare private referersPolicyOptions_: object[];
declare private isPrivacySandboxRestricted_: boolean;
@@ -136,6 +138,8 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase {
this.showClearBrowsingDataDialog_ =
Router.getInstance().getCurrentRoute() === routes.CLEAR_BROWSER_DATA;
+ this.showClearBrowsingAtCloseDataDialog_ =
+ Router.getInstance().getCurrentRoute() === routes.CLEAR_BROWSER_DATA_AT_CLOSE;
this.showPrivacyGuideDialog_ =
Router.getInstance().getCurrentRoute() === routes.PRIVACY_GUIDE &&
this.isPrivacyGuideAvailable;
@@ -147,6 +151,12 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase {
Router.getInstance().navigateTo(routes.CLEAR_BROWSER_DATA);
}
+ private onClearBrowsingDataAtCloseClick_() {
+ this.interactedWithPage_();
+
+ Router.getInstance().navigateTo(routes.CLEAR_BROWSER_DATA_AT_CLOSE);
+ }
+
private onCookiesClick_() {
this.interactedWithPage_();
diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page_index.ts b/chrome/browser/resources/settings/privacy_page/privacy_page_index.ts
--- a/chrome/browser/resources/settings/privacy_page/privacy_page_index.ts
+++ b/chrome/browser/resources/settings/privacy_page/privacy_page_index.ts
@@ -253,7 +253,7 @@ export class SettingsPrivacyPageIndexElement extends
}
private isRouteHostedWithinPrivacyView_(route: Route): boolean {
- const nestedRoutes = [routes.CLEAR_BROWSER_DATA];
+ const nestedRoutes = [routes.CLEAR_BROWSER_DATA, routes.CLEAR_BROWSER_DATA_AT_CLOSE];
if (loadTimeData.getBoolean('showPrivacyGuide')) {
nestedRoutes.push(routes.PRIVACY_GUIDE);
}
diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resources/settings/route.ts
--- a/chrome/browser/resources/settings/route.ts
+++ b/chrome/browser/resources/settings/route.ts
@@ -17,6 +17,8 @@ function addPrivacyChildRoutes(r: Partial<SettingsRoutes>) {
assert(r.PRIVACY);
r.CLEAR_BROWSER_DATA = r.PRIVACY.createChild('/clearBrowserData');
r.CLEAR_BROWSER_DATA.isNavigableDialog = true;
+ r.CLEAR_BROWSER_DATA_AT_CLOSE = r.PRIVACY.createChild('/clearBrowserDataAtClose');
+ r.CLEAR_BROWSER_DATA_AT_CLOSE.isNavigableDialog = true;
const visibility = pageVisibility || {};
diff --git a/chrome/browser/resources/settings/router.ts b/chrome/browser/resources/settings/router.ts
--- a/chrome/browser/resources/settings/router.ts
+++ b/chrome/browser/resources/settings/router.ts
@@ -24,6 +24,7 @@ export interface SettingsRoutes {
BASIC: Route;
CAPTIONS: Route;
CLEAR_BROWSER_DATA: Route;
+ CLEAR_BROWSER_DATA_AT_CLOSE: Route;
COMPARE: Route;
COOKIES: Route;
DEFAULT_BROWSER: Route;
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
@@ -661,11 +1013,14 @@ new file mode 100644
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
@@ -2303,6 +2303,7 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source,
@@ -2303,6 +2303,10 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source,
{"clearedData", IDS_SETTINGS_CLEARED_DATA},
{"clearBrowsingData", IDS_SETTINGS_CLEAR_BROWSING_DATA},
{"clearBrowsingDataDescription", IDS_SETTINGS_CLEAR_DATA_DESCRIPTION},
+ {"atStartPageTitle", IDS_CLEAR_BROWSING_DATA_ATSTART_TAB_TITLE},
+#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
+ {"clearBrowsingDataAtClose", IDS_SETTINGS_CLEAR_BROWSING_DATA_AT_CLOSE},
+ {"clearBrowsingDataAtCloseDescription", IDS_SETTINGS_CLEAR_DATA_AT_CLOSE_DESCRIPTION},
+#endif
{"titleAndCount", IDS_SETTINGS_TITLE_AND_COUNT},
{"safeBrowsingEnableExtendedReportingDesc",
IDS_SETTINGS_SAFEBROWSING_ENABLE_REPORTING_DESC},
@@ -820,17 +1175,6 @@ diff --git a/components/browsing_data/core/clear_browsing_data_tab.h b/component
} // namespace browsing_data
diff --git a/components/browsing_data/core/features.h b/components/browsing_data/core/features.h
--- a/components/browsing_data/core/features.h
+++ b/components/browsing_data/core/features.h
@@ -19,6 +19,7 @@ BASE_DECLARE_FEATURE(kBrowsingDataModel);
// updates to history counter logic and removal of the bulk password deletion
// option from the dialog.
BASE_DECLARE_FEATURE(kDbdRevampDesktop);
+SET_CROMITE_FEATURE_DISABLED(kDbdRevampDesktop);
// When enabled, calls to browsingData.removePasswords extension API would
// result in an error response instead of a console warning.
diff --git a/components/browsing_data/core/pref_names.cc b/components/browsing_data/core/pref_names.cc
--- a/components/browsing_data/core/pref_names.cc
+++ b/components/browsing_data/core/pref_names.cc
@@ -21,6 +21,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../accessibility/AccessibilitySettings.java | 12 +++++++
.../AccessibilitySettingsDelegate.java | 2 ++
.../contextmenu/ContextMenuItemDelegate.java | 3 ++
.../ThinWebViewContextMenuItemDelegate.java | 6 ++++
...Add-setting-to-invert-tap-and-long-tap.inc | 8 +++++
...Add-setting-to-invert-tap-and-long-tap.inc | 3 ++
...Add-setting-to-invert-tap-and-long-tap.inc | 1 +
@@ -30,7 +31,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../renderer/core/html/html_image_element.h | 2 ++
.../core/page/context_menu_controller.cc | 23 +++++++++---
.../core/page/context_menu_controller.h | 5 +--
22 files changed, 164 insertions(+), 16 deletions(-)
23 files changed, 170 insertions(+), 16 deletions(-)
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Add-setting-to-invert-tap-and-long-tap.inc
create mode 100644 cromite_flags/third_party/blink/common/features_cc/Add-setting-to-invert-tap-and-long-tap.inc
create mode 100644 cromite_flags/third_party/blink/common/features_h/Add-setting-to-invert-tap-and-long-tap.inc
@@ -314,6 +315,29 @@ diff --git a/components/embedder_support/android/java/src/org/chromium/component
/**
* Called when the current embedder app is not the default to handle a View Intent.
*
diff --git a/components/thin_webview/internal/java/src/org/chromium/components/thinwebview/internal/ThinWebViewContextMenuItemDelegate.java b/components/thin_webview/internal/java/src/org/chromium/components/thinwebview/internal/ThinWebViewContextMenuItemDelegate.java
--- a/components/thin_webview/internal/java/src/org/chromium/components/thinwebview/internal/ThinWebViewContextMenuItemDelegate.java
+++ b/components/thin_webview/internal/java/src/org/chromium/components/thinwebview/internal/ThinWebViewContextMenuItemDelegate.java
@@ -6,6 +6,7 @@ package org.chromium.components.thinwebview.internal;
import org.chromium.build.annotations.NullMarked;
import org.chromium.components.embedder_support.contextmenu.ContextMenuItemDelegate;
+import org.chromium.content_public.common.Referrer;
import org.chromium.content_public.browser.WebContents;
import org.chromium.ui.base.Clipboard;
import org.chromium.url.GURL;
@@ -43,6 +44,11 @@ public class ThinWebViewContextMenuItemDelegate implements ContextMenuItemDelega
// Intentionally empty.
}
+ @Override
+ public void onOpenUrl(GURL url, Referrer referrer) {
+ // Intentionally empty. (Add setting to invert tap and long tap)
+ }
+
@Override
public GURL getPageUrl() {
return mWebContents.getVisibleUrl();
diff --git a/cromite_flags/chrome/browser/about_flags_cc/Add-setting-to-invert-tap-and-long-tap.inc b/cromite_flags/chrome/browser/about_flags_cc/Add-setting-to-invert-tap-and-long-tap.inc
new file mode 100644
--- /dev/null
@@ -544,7 +544,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/Comp
if (isAttachedToWindow(view)) {
- webContents.setSize(width - horizontalViewportInsets, height - verticalViewportInsets);
+ webContents.setSize(width - horizontalViewportInsets, height - viewportInsets, verticalViewportInsets);
+ webContents.setSize(width - horizontalViewportInsets, height - verticalViewportInsets, verticalViewportInsets);
// Dispatch the geometrychange JavaScript event to the page.
// TODO(bokan): This doesn't belong in updateWebContentsSize. Ideally the content/ layer
@@ -553,7 +553,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/Comp
webContents.setSize(
view.getWidth() - horizontalViewportInsets,
- view.getHeight() - verticalViewportInsets);
+ view.getHeight() - viewportInsets, verticalViewportInsets);
+ view.getHeight() - verticalViewportInsets, verticalViewportInsets);
requestRender();
}
}
@@ -43,12 +43,12 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../skia/src/ports/SkFontConfigInterface.cpp | 5 +
.../ports/SkFontConfigInterface_direct.cpp | 5 +
.../src/ports/SkFontConfigInterface_direct.h | 1 +
.../skia/src/ports/SkFontMgr_android.cpp | 284 ++-
.../skia/src/ports/SkFontMgr_android.cpp | 286 ++-
.../skia/src/ports/SkFontMgr_android_data.cpp | 1641 +++++++++++++++++
.../skia/src/ports/SkFontMgr_android_ndk.cpp | 2 +-
.../src/ports/SkFontMgr_android_parser.cpp | 66 +-
.../skia/src/ports/SkFontMgr_android_parser.h | 5 +-
42 files changed, 2448 insertions(+), 87 deletions(-)
42 files changed, 2449 insertions(+), 88 deletions(-)
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Android-fonts-fingerprinting-mitigation.grdp
create mode 100644 components/component_updater/installer_policies/fonts_pack_component_installer.cc
create mode 100644 components/component_updater/installer_policies/fonts_pack_component_installer.h
@@ -122,7 +122,7 @@ diff --git a/chrome/android/java/res/xml/developer_preferences.xml b/chrome/andr
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -7871,6 +7871,13 @@ static_library("browser") {
@@ -7869,6 +7869,13 @@ static_library("browser") {
]
}
@@ -1421,7 +1421,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
+ return face;
+ }
+ } else {
+ sk_sp<SkTypeface_AndroidSystem> face(family->matchAndroidStyle(style));
+ sk_sp<SkTypeface_AndroidSystem> face(nameToFamily.styleSet->matchAndroidStyle(style));
+
+ if (!langTag.isEmpty() &&
+ std::none_of(face->fLang.begin(), face->fLang.end(), [&](const SkLanguage& lang){
@@ -1455,6 +1455,15 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
if (!familyName.isEmpty()) {
matchingTypeface = find_family_style_character(
familyName, fNameToFamilyMap, style, elegant, lang, character,
@@ -410,7 +573,7 @@ protected:
};
- sk_sp<SkTypeface_AndroidSystem> matchingTypeface;
+ sk_sp<SkTypeface> matchingTypeface;
// If familyName is empty, don't look through everything twice.
SkString familyNames[2] = { SkString(familyName), SkString() };
size_t familyNamesCount = familyNames[0].isEmpty() ? 1 : 2;
@@ -475,6 +638,7 @@ protected:
private:
@@ -423,8 +423,8 @@ diff --git a/chrome/browser/tabwindow/internal/android/java/src/org/chromium/chr
+ @Override
+ public void setPagesFrozen(boolean frozen) {
+ for (Map.Entry<@WindowId Integer, WindowDeps> entry : mWindowIdToDeps.entrySet()) {
+ TabModelSelector selector = entry.getValue().selector;
+ for (Map.Entry<@WindowId Integer, TabModelSelector> entry : mWindowIdToSelectors.entrySet()) {
+ TabModelSelector selector = entry.getValue();
+ if (selector != null) {
+ selector.setPagesFrozen(frozen);
+ }
+1 -1
View File
@@ -688,7 +688,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
@@ -2505,6 +2505,12 @@ static_library("browser") {
@@ -2503,6 +2503,12 @@ static_library("browser") {
}
if (is_android) {
@@ -24,9 +24,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../browser/settings/AdBlockPreferences.java | 76 +++++
.../browser/settings/SettingsActivity.java | 3 +
chrome/app/generated_resources.grd | 10 +
chrome/browser/after_startup_task_utils.cc | 4 +
chrome/browser/browser_process.h | 6 +
chrome/browser/browser_process_impl.cc | 28 ++
chrome/browser/after_startup_task_utils.cc | 5 +
chrome/browser/browser_process.h | 5 +
chrome/browser/browser_process_impl.cc | 30 ++
chrome/browser/browser_process_impl.h | 2 +
chrome/browser/chrome_browser_main.cc | 3 +
chrome/browser/flags/BUILD.gn | 3 +
@@ -50,7 +50,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../browser/subresource_filter_features.cc | 118 +-------
.../core/browser/verified_ruleset_dealer.cc | 4 +
.../core/common/indexed_ruleset.cc | 5 +-
38 files changed, 1286 insertions(+), 127 deletions(-)
38 files changed, 1288 insertions(+), 127 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
@@ -483,16 +483,17 @@ diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources
diff --git a/chrome/browser/after_startup_task_utils.cc b/chrome/browser/after_startup_task_utils.cc
--- a/chrome/browser/after_startup_task_utils.cc
+++ b/chrome/browser/after_startup_task_utils.cc
@@ -24,6 +24,8 @@
@@ -24,6 +24,9 @@
#include "chrome/browser/ui/ash/login/login_display_host.h"
#endif
+#include "chrome/browser/browser_process.h"
+#include "components/component_updater/adblock_updater_service.h"
+
using content::BrowserThread;
namespace {
@@ -129,6 +131,8 @@ void SetBrowserStartupIsComplete() {
@@ -129,6 +132,8 @@ void SetBrowserStartupIsComplete() {
}
GetAfterStartupTasks().clear();
GetAfterStartupTasks().shrink_to_fit();
@@ -504,15 +505,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
@@ -31,6 +31,7 @@
#include "chrome/common/buildflags.h"
#include "components/safe_browsing/buildflags.h"
#include "media/media_buildflags.h"
+#include "components/component_updater/adblock_updater_service.h"
class BackgroundModeManager;
class BrowserProcessPlatformPart;
@@ -96,6 +97,10 @@ namespace component_updater {
@@ -96,6 +96,10 @@ namespace component_updater {
class ComponentUpdateService;
}
@@ -523,7 +516,7 @@ diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h
namespace gcm {
class GCMDriver;
}
@@ -294,6 +299,7 @@ class BrowserProcess {
@@ -294,6 +298,7 @@ class BrowserProcess {
virtual activity_reporter::ActivityReporter* activity_reporter() = 0;
virtual component_updater::ComponentUpdateService* component_updater() = 0;
@@ -534,7 +527,16 @@ diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
--- a/chrome/browser/browser_process_impl.cc
+++ b/chrome/browser/browser_process_impl.cc
@@ -1375,6 +1375,34 @@ BrowserProcessImpl::component_updater() {
@@ -184,6 +184,8 @@
#include "ui/message_center/message_center.h"
#endif
+#include "components/component_updater/adblock_updater_service.h"
+
#if BUILDFLAG(IS_ANDROID)
#include "chrome/browser/accessibility/accessibility_prefs/android/accessibility_prefs_controller.h"
#include "chrome/browser/flags/android/chrome_feature_list.h"
@@ -1375,6 +1377,34 @@ BrowserProcessImpl::component_updater() {
return component_updater_.get();
}
+14 -5
View File
@@ -8,15 +8,15 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../settings/site_settings/popups_page.html | 2 +
.../tab_under_navigation_throttle.cc | 11 +-
.../android/popup_blocked_message_delegate.cc | 20 +++-
.../android/popup_blocked_message_delegate.cc | 20 ++-
.../android/popup_blocked_message_delegate.h | 1 +
components/blocked_content/popup_blocker.cc | 3 +
components/blocked_content_strings.grdp | 3 +
.../impl/BromitePopupContentSetting.java | 106 ++++++++++++++++++
.../impl/BromitePopupContentSetting.java | 115 ++++++++++++++++++
.../bromite_content_settings/popups.grdp | 18 +++
.../bromite_content_settings/popups.inc | 13 +++
.../bromite_content_settings/popups.inc | 13 ++
.../core/browser/content_settings_registry.cc | 2 +-
10 files changed, 173 insertions(+), 6 deletions(-)
10 files changed, 182 insertions(+), 6 deletions(-)
create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromitePopupContentSetting.java
create mode 100644 components/browser_ui/strings/bromite_content_settings/popups.grdp
create mode 100644 components/content_settings/core/browser/bromite_content_settings/popups.inc
@@ -146,7 +146,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
new file mode 100644
--- /dev/null
+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromitePopupContentSetting.java
@@ -0,0 +1,106 @@
@@ -0,0 +1,115 @@
+/*
+ This file is part of Bromite.
+
@@ -239,6 +239,15 @@ new file mode 100644
+ }
+
+ @Override
+ public int[] getTriStateSettingIconIDs() {
+ return new int[] {
+ R.drawable.permission_popups,
+ R.drawable.permission_popups,
+ R.drawable.sensors_off_24px
+ };
+ }
+
+ @Override
+ public boolean showOnlyDescriptions() {
+ return true;
+ }
@@ -569,7 +569,7 @@ diff --git a/chrome/browser/resources/extensions/toolbar.css b/chrome/browser/re
+#need-update {
+ color: red;
+ margin-inline: 0px;
+ margin-inline: 0;
+}
+
cr-toolbar {
@@ -586,7 +586,7 @@ diff --git a/chrome/browser/resources/extensions/toolbar.html.ts b/chrome/browse
+ <span>$i18n{toolbarExtensionUpdateEnabled}
+ <span id="need-update" ?hidden="${!this.shouldShowRelaunchDialog}">$i18n{toolbarExtensionUpdateEnabledNeedRestart}</span>
+ </span>
+ <cr-toggle @change="${this.onExtUpdateEnabledChanged_}" ?checked="${this.isExtUpdateEnabled}">
+ <cr-toggle @change="${this.onExtUpdateEnabledChange_}" ?checked="${this.isExtUpdateEnabled}">
+ </cr-toggle>
+ </div>
</cr-toolbar>
@@ -645,7 +645,7 @@ diff --git a/chrome/browser/resources/extensions/toolbar.ts b/chrome/browser/res
'Options_ToggleDeveloperMode_' + (e.detail ? 'Enabled' : 'Disabled'));
}
+ protected onExtUpdateEnabledChanged_(e: CustomEvent<boolean>) {
+ protected onExtUpdateEnabledChange_(e: CustomEvent<boolean>) {
+ this.delegate.setExtUpdateEnabled(e.detail);
+ this.shouldShowRelaunchDialog = true;
+ this.isExtUpdateEnabled = e.detail;
@@ -40,10 +40,10 @@ Require: bromite-build-utils.patch
.../browser_ui/site_settings/android/BUILD.gn | 18 +
.../res/xml/site_settings_preferences.xml | 7 +
.../site_settings/AllSiteSettings.java | 5 +-
.../BromiteCustomContentSetting.java | 155 +++++++
.../BromiteCustomContentSettingImpl.java | 416 ++++++++++++++++++
.../BromiteCustomContentSetting.java | 159 +++++++
.../BromiteCustomContentSettingImpl.java | 422 ++++++++++++++++++
...tomTriStateSiteSettingsPreferenceImpl.java | 24 +
.../ContentSettingsResources.java | 32 +-
.../ContentSettingsResources.java | 34 +-
.../site_settings/SingleCategorySettings.java | 57 ++-
.../site_settings/SingleWebsiteSettings.java | 48 +-
.../site_settings/SiteSettings.java | 35 +-
@@ -73,7 +73,7 @@ Require: bromite-build-utils.patch
.../common/content_settings_mojom_traits.cc | 12 +-
.../common/content_settings_mojom_traits.h | 24 +
.../core/common/content_settings_types.mojom | 2 +
.../renderer/content_settings_agent_impl.cc | 74 ++++
.../renderer/content_settings_agent_impl.cc | 74 +++
.../renderer/content_settings_agent_impl.h | 9 +
.../PageInfoPermissionsController.java | 9 +
.../android/page_info_controller_android.cc | 18 +
@@ -83,7 +83,7 @@ Require: bromite-build-utils.patch
.../platform/web_content_settings_client.h | 13 +
.../execution_context/execution_context.cc | 16 +
.../execution_context/execution_context.h | 5 +
72 files changed, 1942 insertions(+), 105 deletions(-)
72 files changed, 1954 insertions(+), 105 deletions(-)
create mode 100644 components/browser_ui/settings/android/java/res/layout/preference_spinner_single_widget.xml
create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSetting.java
create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java
@@ -275,7 +275,7 @@ diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resourc
/**
* Add all of the child routes that originate from the privacy route,
@@ -155,6 +156,7 @@ function addPrivacyChildRoutes(r: Partial<SettingsRoutes>) {
@@ -157,6 +158,7 @@ function addPrivacyChildRoutes(r: Partial<SettingsRoutes>) {
r.SITE_SETTINGS_LOOPBACK_NETWORK =
r.SITE_SETTINGS.createChild('loopbackNetwork');
}
@@ -1148,7 +1148,7 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide
#include "components/password_manager/core/browser/leak_detection_dialog_utils.h"
#include "components/password_manager/core/browser/manage_passwords_referrer.h"
#include "components/password_manager/core/common/password_manager_features.h"
@@ -4268,6 +4272,56 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source,
@@ -4271,6 +4275,56 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source,
policy_indicator::AddLocalizedStrings(html_source);
AddSecurityKeysStrings(html_source);
@@ -1540,7 +1540,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
new file mode 100644
--- /dev/null
+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSetting.java
@@ -0,0 +1,155 @@
@@ -0,0 +1,159 @@
+/*
+ This file is part of Bromite.
+
@@ -1688,6 +1688,10 @@ new file mode 100644
+ return null;
+ }
+
+ public int[] getTriStateSettingIconIDs() {
+ return null;
+ }
+
+ public boolean showOnlyDescriptions() {
+ return false;
+ }
@@ -1700,7 +1704,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
new file mode 100644
--- /dev/null
+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java
@@ -0,0 +1,416 @@
@@ -0,0 +1,422 @@
+/*
+ This file is part of Bromite.
+
@@ -1928,6 +1932,12 @@ new file mode 100644
+ return null;
+ }
+
+ public static int[] getTriStateSettingIconIDs(@ContentSettingsType.EnumType int type) {
+ BromiteCustomContentSetting cs = getContentSetting(type);
+ if (cs != null) return cs.getTriStateSettingIconIDs();
+ return null;
+ }
+
+ public static int getCategoryDescription(SiteSettingsCategory category) {
+ for (BromiteCustomContentSetting cs : mItemList) {
+ if (category.getType() == cs.getSiteSettingsCategory()) {
@@ -2216,6 +2226,15 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
if (contentType == ContentSettingsType.PROTECTED_MEDIA_IDENTIFIER) {
return new int[] {
R.string.website_settings_protected_content_allow,
@@ -1101,6 +1129,8 @@ public class ContentSettingsResources {
* order.
*/
public static int @Nullable [] getTriStateSettingIconIDs(int contentType) {
+ int[] value = BromiteCustomContentSettingImpl.getTriStateSettingIconIDs(contentType);
+ if (value != null) return value;
if (contentType == ContentSettingsType.PROTECTED_MEDIA_IDENTIFIER) {
return new int[] {
R.drawable.live_tv_24px, R.drawable.tv_24px, R.drawable.tv_off_24px,
diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java
--- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java
+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java
+6 -7
View File
@@ -67,9 +67,9 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../webui/version/resources/about_version.ts | 4 +-
.../resources/about_version_mobile.css | 10 ++
content/child/runtime_features.cc | 44 ++++-----
.../Cromite-Branding.inc | 2 +
.../Cromite-Branding.inc | 1 +
tools/grit/grit/grd_reader.py | 35 +++++++
65 files changed, 268 insertions(+), 175 deletions(-)
65 files changed, 267 insertions(+), 175 deletions(-)
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Cromite-Branding.inc
diff --git a/build/BUILD.gn b/build/BUILD.gn
@@ -13208,7 +13208,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
@@ -1625,6 +1625,7 @@ static_library("browser") {
@@ -1623,6 +1623,7 @@ static_library("browser") {
"//build/config/chromebox_for_meetings:buildflags",
"//build/config/compiler:compiler_buildflags",
"//build/config/linux/dbus:buildflags",
@@ -13472,7 +13472,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
</message>
<message name="IDS_APPLICATION_VERSION_TITLE" desc="Title for application version">
Application version
@@ -6042,7 +6042,7 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
@@ -6039,7 +6039,7 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
<!-- Storage Preference UI strings for clearing storage. -->
<message name="IDS_STORAGE_MANAGEMENT_ACTIVITY_LABEL" desc="Title for Chrome's Manage Space Activity.">
@@ -19312,9 +19312,8 @@ diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/C
new file mode 100644
--- /dev/null
+++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Cromite-Branding.inc
@@ -0,0 +1,2 @@
+SET_CROMITE_FEATURE_ENABLED(kGridTabSwitcherUpdate);
+SET_CROMITE_FEATURE_DISABLED(kShowNewTabAnimations);
@@ -0,0 +1 @@
+SET_CROMITE_FEATURE_DISABLED(kShowTabListAnimations);
diff --git a/tools/grit/grit/grd_reader.py b/tools/grit/grit/grd_reader.py
--- a/tools/grit/grit/grd_reader.py
+++ b/tools/grit/grit/grd_reader.py
@@ -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 | 10 ++++++++
.../chrome/browser/omnibox/UrlBar.java | 24 +++++++++++++++++++
.../browser/omnibox/UrlBarViewBinder.java | 2 ++
4 files changed, 37 insertions(+)
.../browser/omnibox/LocationBarMediator.java | 25 ++++++++++++++-----
.../chrome/browser/omnibox/UrlBar.java | 25 +++++++++++++++++++
.../browser/omnibox/UrlBarViewBinder.java | 1 +
4 files changed, 46 insertions(+), 6 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,23 +29,80 @@ 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
@@ -413,6 +413,16 @@ class LocationBarMediator
@@ -589,7 +589,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(),
@@ -838,7 +838,7 @@ class LocationBarMediator
if (mCurrentInput == null) return; // session not started yet.
if (hasFocus) {
if (mNativeInitialized) RecordUserAction.record("FocusLocation");
+ UrlBarData data = mLocationBarDataProvider.getUrlBarData();
mCurrentInput.setUserText(null);
- beginOrResumeInput(/* activateNewSession= */ false);
+ beginOrResumeInput(/* activateNewSession= */ false, /* wasFocus */ false);
updateButtonVisibility();
mUrlCoordinator.requestAccessibilityFocus();
}
@@ -919,7 +919,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()) {
- beginOrResumeInput(/* activateNewSession= */ false);
+ beginOrResumeInput(/* activateNewSession= */ false, /* wasFocus */ false);
}
}
@@ -964,7 +964,7 @@ class LocationBarMediator
*/
@EnsuresNonNullIf("mCurrentInput")
@VisibleForTesting
- void beginOrResumeInput(boolean activateNewSession) {
+ void beginOrResumeInput(boolean activateNewSession, boolean wasFocus) {
// Do not instantiate a new ephemeral session unless we're activating it as well.
var session = FuseboxSessionState.from(mLocationBarDataProvider);
@@ -996,6 +996,19 @@ class LocationBarMediator
.addSyncObserverAndCallIfNonNull(mAutocompleteRequestTypeObserver);
UrlBarData data = UrlBarData.forNonUrlText(mCurrentInput.getUserText());
+ if (wasFocus) {
+ data = mLocationBarDataProvider.getUrlBarData();
+ GURL url = mLocationBarDataProvider.getUrlBarData().url;
+ if (url != null && mTemplateUrlServiceSupplier.get() != null) {
+ String searchParams =
+ mTemplateUrlServiceSupplier.get().getSearchQueryForUrl(url);
+ if (searchParams != null && !searchParams.isEmpty()) {
+ mCurrentInput.setUserText(searchParams);
+ data = UrlBarData.forUrlAndText(data.url, data.displayText, searchParams);
+ }
+ }
+ setUrlBarText(data, UrlBar.ScrollType.NO_SCROLL, UrlBarData.SELECT_ALL);
+ mCurrentInput.setSelection(0, Integer.MAX_VALUE);
+ }
mUrlCoordinator.setUrlBarData(
data, UrlBar.ScrollType.NO_SCROLL, mCurrentInput.getSelection());
@@ -1047,7 +1060,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) {
- beginOrResumeInput(/* activateNewSession= */ true);
+ beginOrResumeInput(/* activateNewSession= */ true, /* wasFocus */ true);
} else {
mUrlFocusedWithoutAnimations = false;
endInputInternal();
}
@@ -1923,7 +1936,7 @@ class LocationBarMediator
}
// Wait for the Url focus change before refreshing autocomplete.
- beginOrResumeInput(/* activateNewSession= */ true);
+ beginOrResumeInput(/* activateNewSession= */ true, /* wasFocus */ false);
}
/**
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java
@@ -65,7 +122,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
private boolean mPendingScroll;
private boolean mIsInCct;
@@ -340,6 +342,28 @@ public class UrlBar extends AutocompleteEditText {
@@ -340,6 +342,29 @@ public class UrlBar extends AutocompleteEditText {
mPendingScroll = false;
}
fixupTextDirection();
@@ -84,7 +141,8 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
+
+ @Override
+ public void selectAll() {
+ mPendingSelectAll = true;
+ if (!DeviceFormFactor.isNonMultiDisplayContextOnTablet(getContext()))
+ mPendingSelectAll = true;
+ super.selectAll();
+ }
+
@@ -97,12 +155,11 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBarViewBinder.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBarViewBinder.java
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBarViewBinder.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBarViewBinder.java
@@ -100,6 +100,8 @@ class UrlBarViewBinder {
@@ -100,6 +100,7 @@ class UrlBarViewBinder {
selectionRange = Range.create(textLength, textLength);
}
view.setSelection(selectionRange.getLower(), selectionRange.getUpper());
+ if (state.selection == UrlBarData.SELECT_ALL)
+ view.selectAll();
+ view.selectAll();
view.requestAccessibilityFocus();
}
} else if (UrlBarProperties.TEXT_COLOR.equals(propertyKey)) {
+14 -1
View File
@@ -5,8 +5,9 @@ Subject: Disable PrivacyGuide
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
chrome/android/java/res/xml/privacy_preferences.xml | 1 +
chrome/browser/prefs/browser_prefs.cc | 2 +-
chrome/browser/ui/webui/settings/settings_ui.cc | 3 +--
2 files changed, 2 insertions(+), 2 deletions(-)
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
--- a/chrome/android/java/res/xml/privacy_preferences.xml
@@ -19,6 +20,18 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
android:title="@string/privacy_guide_pref_title"
android:summary="@string/privacy_guide_pref_summary"
android:fragment="org.chromium.chrome.browser.privacy_guide.PrivacyGuideFragment" />
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
@@ -2158,7 +2158,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
registry->RegisterBooleanPref(webauthn::pref_names::kAllowWithBrokenCerts,
false);
- registry->RegisterBooleanPref(prefs::kPrivacyGuideViewed, false);
+ registry->RegisterBooleanPref(prefs::kPrivacyGuideViewed, true);
RegisterProfilePrefsForMigration(registry);
diff --git a/chrome/browser/ui/webui/settings/settings_ui.cc b/chrome/browser/ui/webui/settings/settings_ui.cc
--- a/chrome/browser/ui/webui/settings/settings_ui.cc
+++ b/chrome/browser/ui/webui/settings/settings_ui.cc
@@ -3,15 +3,27 @@ Date: Wed, 24 Jan 2024 12:19:44 +0000
Subject: Disable Read Aloud by default
---
.../flags/android/chrome_feature_list_cc/Disable-Read-Aloud.inc | 2 ++
1 file changed, 2 insertions(+)
chrome/browser/prefs/browser_prefs.cc | 2 +-
.../flags/android/chrome_feature_list_cc/Disable-Read-Aloud.inc | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-Read-Aloud.inc
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
@@ -1505,7 +1505,7 @@ void RegisterLocalState(PrefRegistrySimple* registry) {
#if BUILDFLAG(IS_ANDROID)
registry->RegisterBooleanPref(policy::policy_prefs::kBackForwardCacheEnabled,
true);
- registry->RegisterBooleanPref(policy::policy_prefs::kReadAloudEnabled, true);
+ registry->RegisterBooleanPref(policy::policy_prefs::kReadAloudEnabled, false);
#endif // BUILDFLAG(IS_ANDROID)
// Below this point is for platform-specific and compile-time conditional
diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-Read-Aloud.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-Read-Aloud.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-Read-Aloud.inc
@@ -0,0 +1,2 @@
+SET_CROMITE_FEATURE_DISABLED(kReadAloud);
@@ -0,0 +1 @@
+SET_CROMITE_FEATURE_DISABLED(kReadAloudPlayback);
--
+7 -6
View File
@@ -4,11 +4,11 @@ Subject: Disable Real Box
Real-box is search box in ntp
---
chrome/browser/prefs/browser_prefs.cc | 2 +-
chrome/browser/resources/new_tab_page/app.html | 18 ------------------
.../searchbox/searchbox_handler.cc | 1 +
components/search/ntp_features.cc | 4 ++--
4 files changed, 4 insertions(+), 21 deletions(-)
chrome/browser/prefs/browser_prefs.cc | 2 +-
.../browser/resources/new_tab_page/app.html | 19 +------------------
.../searchbox/searchbox_handler.cc | 1 +
components/search/ntp_features.cc | 4 ++--
4 files changed, 5 insertions(+), 21 deletions(-)
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
--- a/chrome/browser/prefs/browser_prefs.cc
@@ -25,7 +25,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse
diff --git a/chrome/browser/resources/new_tab_page/app.html b/chrome/browser/resources/new_tab_page/app.html
--- a/chrome/browser/resources/new_tab_page/app.html
+++ b/chrome/browser/resources/new_tab_page/app.html
@@ -43,24 +43,6 @@ import {nothing} from '//resources/lit/v3_0/lit.rollup.js';
@@ -43,24 +43,7 @@ import {nothing} from '//resources/lit/v3_0/lit.rollup.js';
<div id="searchboxContainer"
@focusin="${this.onSearchboxContainerFocusin_}"
@focusout="${this.onSearchboxContainerFocusout_}">
@@ -47,6 +47,7 @@ diff --git a/chrome/browser/resources/new_tab_page/app.html b/chrome/browser/res
- context-menu-glif-animation-state="${this.contextMenuGlifAnimationState_}"
- ?multi-line-enabled="${this.multiLineEnabled_}">
- </cr-searchbox>
+ <div id="searchbox"></div>
${this.showComposebox_ ? html`
<div id="dialogAnchor"></div>
<dialog id="composeboxDialog">
+6 -5
View File
@@ -29,10 +29,10 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../features_cc/Disable-TLS-resumption.inc | 7 +++
.../features_h/Disable-TLS-resumption.inc | 5 ++
net/http/http_network_session.cc | 1 +
net/quic/quic_session_pool.cc | 34 ++++++++++-
net/quic/quic_session_pool.cc | 35 ++++++++++-
net/socket/ssl_client_socket_impl.cc | 59 +++++++++++++++++++
net/socket/ssl_client_socket_impl.h | 2 +
7 files changed, 119 insertions(+), 1 deletion(-)
7 files changed, 119 insertions(+), 2 deletions(-)
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Disable-TLS-resumption.inc
create mode 100644 cromite_flags/net/base/features_cc/Disable-TLS-resumption.inc
create mode 100644 cromite_flags/net/base/features_h/Disable-TLS-resumption.inc
@@ -129,15 +129,16 @@ diff --git a/net/quic/quic_session_pool.cc b/net/quic/quic_session_pool.cc
QuicSessionRequest::QuicSessionRequest(QuicSessionPool* pool) : pool_(pool) {}
QuicSessionRequest::~QuicSessionRequest() {
@@ -2429,7 +2461,7 @@ QuicSessionPool::CreateCryptoConfigHandle(QuicCryptoClientConfigKey key) {
@@ -2429,8 +2461,7 @@ QuicSessionPool::CreateCryptoConfigHandle(QuicCryptoClientConfigKey key) {
cert_verifier_, transport_security_state_, sct_auditing_delegate_,
std::move(hostnames_to_allow_unknown_roots),
key.network_anonymization_key),
- std::make_unique<quic::QuicClientSessionCache>(
+ std::make_unique<BromiteSessionCache>(
kDefaultQuicSessionCacheSize),
- kDefaultQuicSessionCacheSize),
+ std::make_unique<BromiteSessionCache>(),
kDefaultQuicSessionCacheSize, this);
quic::QuicCryptoClientConfig* crypto_config = crypto_config_owner->config();
diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket_impl.cc
--- a/net/socket/ssl_client_socket_impl.cc
+++ b/net/socket/ssl_client_socket_impl.cc
+103 -29
View File
@@ -18,7 +18,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../passage_embedder_delegate.cc | 2 ++
.../permissions_ai_ui_selector.cc | 5 ++++
.../permissions_ai_ui_selector.h | 5 +++-
.../prediction_model_handler_provider.cc | 13 ++++++--
.../prediction_model_handler_provider.cc | 12 ++++++--
.../prediction_model_handler_provider.h | 2 ++
.../quiet_notification_permission_ui_state.cc | 4 +--
.../autocomplete_action_predictor.cc | 2 ++
@@ -57,8 +57,11 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../core/hints/hints_manager.cc | 2 ++
.../core/optimization_guide_features.cc | 11 ++++---
components/optimization_guide/features.gni | 3 +-
.../core/page_content_annotations_features.cc | 7 +++++
.../page_category_classifier_bridge_impl.cc | 4 +++
.../page_category_classifier_bridge_impl.h | 3 ++
.../core/page_content_annotations_features.cc | 8 +++++
.../page_content_annotations_model_manager.cc | 1 +
.../core/page_content_annotations_service.h | 7 +++--
.../browser/client_side_phishing_model.cc | 4 +--
.../notification_content_detection/BUILD.gn | 4 ---
components/viz/service/BUILD.gn | 4 +--
@@ -74,9 +77,10 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../Disable-all-predictors-code.inc | 1 +
.../Disable-all-predictors-code.inc | 1 +
.../Disable-all-predictors-code.inc | 2 ++
media/webrtc/BUILD.gn | 5 ++++
media/webrtc/BUILD.gn | 1 +
media/webrtc/helpers.cc | 1 +
services/on_device_model/ml/ts_model.cc | 4 +--
services/on_device_model/on_device_model.gni | 2 +-
services/on_device_model/safety/BUILD.gn | 2 +-
services/webnn/BUILD.gn | 2 +-
services/webnn/features.gni | 2 +-
@@ -84,7 +88,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../core/html/parser/html_document_parser.cc | 1 +
.../document_speculation_rules.cc | 1 +
.../platform/runtime_enabled_features.json5 | 2 +-
79 files changed, 199 insertions(+), 139 deletions(-)
83 files changed, 209 insertions(+), 141 deletions(-)
create mode 100644 cromite_flags/chrome/browser/browser_features_cc/Disable-all-predictors-code.inc
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-all-predictors-code.inc
create mode 100644 cromite_flags/chrome/common/chrome_features_cc/Disable-all-predictors-code.inc
@@ -97,7 +101,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -2231,7 +2231,6 @@ static_library("browser") {
@@ -2229,7 +2229,6 @@ static_library("browser") {
"//components/resources",
"//components/safe_browsing/content/browser",
"//components/safe_browsing/content/browser:safe_browsing_service",
@@ -367,7 +371,7 @@ diff --git a/chrome/browser/permissions/prediction_service/permissions_ai_ui_sel
diff --git a/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.cc b/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.cc
--- a/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.cc
+++ b/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.cc
@@ -13,14 +13,16 @@
@@ -13,8 +13,11 @@
#include "chrome/browser/optimization_guide/optimization_guide_keyed_service.h"
#include "components/optimization_guide/core/delivery/optimization_guide_model_provider.h"
#include "components/permissions/features.h"
@@ -380,13 +384,7 @@ diff --git a/chrome/browser/permissions/prediction_service/prediction_model_hand
#if BUILDFLAG(IS_ANDROID)
#include "components/download/public/background_service/download_params.h"
#endif
-#if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
#include "components/permissions/prediction_service/prediction_model_handler.h"
#endif // BUILDFLAG(BUILD_WITH_TFLITE_LIB)
@@ -30,6 +32,7 @@ using optimization_guide::proto::OptimizationTarget;
@@ -30,6 +33,7 @@ using optimization_guide::proto::OptimizationTarget;
namespace {
@@ -394,7 +392,7 @@ diff --git a/chrome/browser/permissions/prediction_service/prediction_model_hand
inline OptimizationTarget getGeolocationAiv4OptTarget() {
#if BUILDFLAG(IS_ANDROID)
return OptimizationTarget::
@@ -48,6 +51,7 @@ inline OptimizationTarget getNotificationsAiv4OptTarget() {
@@ -48,6 +52,7 @@ inline OptimizationTarget getNotificationsAiv4OptTarget() {
OPTIMIZATION_TARGET_PERMISSIONS_AIV4_NOTIFICATIONS_DESKTOP;
#endif
}
@@ -402,7 +400,7 @@ diff --git a/chrome/browser/permissions/prediction_service/prediction_model_hand
} // namespace
@@ -55,7 +59,10 @@ PredictionModelHandlerProvider::PredictionModelHandlerProvider(
@@ -55,7 +60,10 @@ PredictionModelHandlerProvider::PredictionModelHandlerProvider(
OptimizationGuideKeyedService* optimization_guide,
passage_embeddings::EmbedderMetadataProvider* embedder_metadata_provider,
passage_embeddings::Embedder* passage_embedder)
@@ -1335,6 +1333,58 @@ diff --git a/components/optimization_guide/features.gni b/components/optimizatio
}
if (is_ios) {
diff --git a/components/page_content_annotations/content/page_category_classifier_bridge_impl.cc b/components/page_content_annotations/content/page_category_classifier_bridge_impl.cc
--- a/components/page_content_annotations/content/page_category_classifier_bridge_impl.cc
+++ b/components/page_content_annotations/content/page_category_classifier_bridge_impl.cc
@@ -22,7 +22,9 @@ PageCategoryClassifierBridgeImpl::PageCategoryClassifierBridgeImpl(
: page_embeddings_service_(page_embeddings_service),
category_classifier_(category_classifier) {
scoped_observation_.Observe(&*page_embeddings_service_);
+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
category_classifier_observation_.Observe(&*category_classifier_);
+#endif
}
PageCategoryClassifierBridgeImpl::~PageCategoryClassifierBridgeImpl() = default;
@@ -34,6 +36,7 @@ PageCategoryClassifierBridgeImpl::GetUsageMode() const {
void PageCategoryClassifierBridgeImpl::OnPageEmbeddingsAvailable(
content::Page& page) {
+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
std::vector<PassageEmbedding> embeddings =
page_embeddings_service_->GetEmbeddings(page);
@@ -45,6 +48,7 @@ void PageCategoryClassifierBridgeImpl::OnPageEmbeddingsAvailable(
return;
}
}
+#endif
}
// TODO - crbug.com/434047312: Move the metrics recording to the actual user of
diff --git a/components/page_content_annotations/content/page_category_classifier_bridge_impl.h b/components/page_content_annotations/content/page_category_classifier_bridge_impl.h
--- a/components/page_content_annotations/content/page_category_classifier_bridge_impl.h
+++ b/components/page_content_annotations/content/page_category_classifier_bridge_impl.h
@@ -9,6 +9,7 @@
#include "base/memory/raw_ref.h"
#include "base/scoped_observation.h"
+#include "components/optimization_guide/machine_learning_tflite_buildflags.h"
#include "components/page_content_annotations/content/page_embeddings_service.h"
#include "components/page_content_annotations/core/on_device_category_classifier.h"
#include "components/page_content_annotations/core/page_category_classifier_bridge.h"
@@ -50,9 +51,11 @@ class PageCategoryClassifierBridgeImpl
PageEmbeddingsService::Observer>
scoped_observation_{this};
+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
base::ScopedObservation<OnDeviceCategoryClassifier,
OnDeviceCategoryClassifier::Observer>
category_classifier_observation_{this};
+#endif
};
} // namespace page_content_annotations
diff --git a/components/page_content_annotations/core/page_content_annotations_features.cc b/components/page_content_annotations/core/page_content_annotations_features.cc
--- a/components/page_content_annotations/core/page_content_annotations_features.cc
+++ b/components/page_content_annotations/core/page_content_annotations_features.cc
@@ -1354,7 +1404,15 @@ diff --git a/components/page_content_annotations/core/page_content_annotations_f
if (supported_countries == "*") {
return true;
}
@@ -281,6 +283,7 @@ bool IsSupportedLocaleForFeature(
@@ -149,6 +151,7 @@ base::TimeDelta PCAServiceWaitForTitleDelayDuration() {
}
bool ShouldEnablePageContentAnnotations() {
+ if ((true)) return false;
// Allow for the validation experiment or remote page metadata to enable the
// PCAService without need to enable both features.
return base::FeatureList::IsEnabled(kPageContentAnnotations) ||
@@ -281,6 +284,7 @@ bool IsSupportedLocaleForFeature(
const std::string& locale,
const base::Feature& feature,
const std::string& default_value = "de,en,es,fr,it,nl,pt,tr") {
@@ -1362,7 +1420,7 @@ diff --git a/components/page_content_annotations/core/page_content_annotations_f
if (!base::FeatureList::IsEnabled(feature)) {
return false;
}
@@ -298,6 +301,7 @@ bool IsSupportedLocaleForFeature(
@@ -298,6 +302,7 @@ bool IsSupportedLocaleForFeature(
bool IsSupportedCountryForFeature(const std::string& country_code,
const base::Feature& feature,
const std::string& default_value) {
@@ -1370,7 +1428,7 @@ diff --git a/components/page_content_annotations/core/page_content_annotations_f
if (!base::FeatureList::IsEnabled(feature)) {
return false;
}
@@ -312,4 +316,7 @@ bool IsSupportedCountryForFeature(const std::string& country_code,
@@ -312,4 +317,7 @@ bool IsSupportedCountryForFeature(const std::string& country_code,
return IsSupportedCountry(country_code, value);
}
@@ -1389,6 +1447,23 @@ diff --git a/components/page_content_annotations/core/page_content_annotations_m
if (page_visibility_model_handler_)
return;
diff --git a/components/page_content_annotations/core/page_content_annotations_service.h b/components/page_content_annotations/core/page_content_annotations_service.h
--- a/components/page_content_annotations/core/page_content_annotations_service.h
+++ b/components/page_content_annotations/core/page_content_annotations_service.h
@@ -127,8 +127,11 @@ enum class PageContentAnnotationsType {
class PageContentAnnotationsService
: public KeyedService,
public history::HistoryServiceObserver,
- public ZeroSuggestCacheServiceInterface::Observer,
- public OnDeviceCategoryClassifier::Observer {
+ public ZeroSuggestCacheServiceInterface::Observer
+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
+ , public OnDeviceCategoryClassifier::Observer
+#endif
+ {
public:
// Observer interface to listen for PageContentAnnotations for page loads.
// Annotations will be sent for each page load for the registered annotation
diff --git a/components/safe_browsing/content/browser/client_side_phishing_model.cc b/components/safe_browsing/content/browser/client_side_phishing_model.cc
--- a/components/safe_browsing/content/browser/client_side_phishing_model.cc
+++ b/components/safe_browsing/content/browser/client_side_phishing_model.cc
@@ -1577,17 +1652,6 @@ diff --git a/media/webrtc/BUILD.gn b/media/webrtc/BUILD.gn
component("webrtc") {
output_name = "media_webrtc"
@@ -36,6 +37,10 @@ component("webrtc") {
deps += [ "//components/optimization_guide/core/inference:op_resolver" ]
}
+ if (!build_with_tflite_lib) {
+ deps -= [ "//components/optimization_guide/core/inference:op_resolver" ]
+ }
+
public_deps = [ "//third_party/tflite" ]
}
diff --git a/media/webrtc/helpers.cc b/media/webrtc/helpers.cc
--- a/media/webrtc/helpers.cc
+++ b/media/webrtc/helpers.cc
@@ -1620,6 +1684,16 @@ diff --git a/services/on_device_model/ml/ts_model.cc b/services/on_device_model/
if (!params->safety_assets || params->safety_assets->which() ==
mojom::SafetyModelAssets::Tag::kTsAssets) {
auto impl = TsModel::Create(*chrome_ml_, std::move(params));
diff --git a/services/on_device_model/on_device_model.gni b/services/on_device_model/on_device_model.gni
--- a/services/on_device_model/on_device_model.gni
+++ b/services/on_device_model/on_device_model.gni
@@ -29,5 +29,5 @@ declare_args() {
# MLKit is the developer-facing APIs and AICore is the system-level AI runtime
# to host on-device model services. Chrome-branded builds use internal/private
# APIs to access AICore directly.
- use_mlkit_for_aicore = !is_chrome_branded
+ use_mlkit_for_aicore = false
}
diff --git a/services/on_device_model/safety/BUILD.gn b/services/on_device_model/safety/BUILD.gn
--- a/services/on_device_model/safety/BUILD.gn
+++ b/services/on_device_model/safety/BUILD.gn
@@ -7,9 +7,11 @@ see https://w3c.github.io/webappsec-dbsc/#privacy-considerations
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../metrics/chrome_browser_main_extra_parts_metrics.cc | 6 ++++++
net/features.gni | 2 +-
2 files changed, 7 insertions(+), 1 deletion(-)
.../metrics/chrome_browser_main_extra_parts_metrics.cc | 6 ++++++
net/BUILD.gn | 7 +++++++
net/base/features.cc | 7 ++++---
net/features.gni | 2 +-
4 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc b/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
--- a/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
@@ -35,6 +37,43 @@ diff --git a/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc b
#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
// Record whether Chrome is the default browser or not.
diff --git a/net/BUILD.gn b/net/BUILD.gn
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -1287,6 +1287,13 @@ component("net") {
]
}
+ if (!enable_device_bound_sessions) {
+ sources += [
+ "device_bound_sessions/session_error.cc",
+ "device_bound_sessions/session_error.h",
+ ]
+ }
+
if (enable_device_bound_sessions) {
sources += [
"device_bound_sessions/cookie_craving.cc",
diff --git a/net/base/features.cc b/net/base/features.cc
--- a/net/base/features.cc
+++ b/net/base/features.cc
@@ -356,12 +356,13 @@ BASE_FEATURE(kUseNetworkPathMonitorForNetworkChangeNotifier,
);
#endif // BUILDFLAG(IS_APPLE)
-#if BUILDFLAG(IS_WIN)
-BASE_FEATURE(kDeviceBoundSessions, base::FEATURE_ENABLED_BY_DEFAULT);
+#if BUILDFLAG(IS_WIN) && BUILDFLAG(ENABLE_DEVICE_BOUND_SESSIONS)
+BASE_FEATURE(kDeviceBoundSessions, base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kPersistDeviceBoundSessions, base::FEATURE_ENABLED_BY_DEFAULT);
#else
BASE_FEATURE(kDeviceBoundSessions, base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kPersistDeviceBoundSessions, base::FEATURE_DISABLED_BY_DEFAULT);
#endif
-BASE_FEATURE(kPersistDeviceBoundSessions, base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE_PARAM(bool,
kDeviceBoundSessionsRequireOriginTrialTokens,
&kDeviceBoundSessions,
diff --git a/net/features.gni b/net/features.gni
--- a/net/features.gni
+++ b/net/features.gni
@@ -11,7 +11,9 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../android/java/res/xml/main_preferences.xml | 5 ----
.../AppMenuPropertiesDelegateImpl.java | 11 --------
.../search/SearchIndexProviderRegistry.java | 1 -
.../TabbedAppMenuPropertiesDelegate.java | 13 ++--------
.../TabbedAdaptiveToolbarBehavior.java | 8 ------
.../TabbedAppMenuPropertiesDelegate.java | 13 ++-------
.../tabbed_mode/TabbedRootUiCoordinator.java | 3 +--
chrome/browser/BUILD.gn | 2 --
chrome/browser/actor/BUILD.gn | 3 ---
chrome/browser/android/tab_features.cc | 4 +++
@@ -19,7 +21,8 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../contextual_cueing_helper.cc | 2 ++
.../contextual_cueing_page_data.cc | 3 +++
.../api/pdf_viewer_private/BUILD.gn | 3 ---
.../pdf_viewer_private_api.cc | 25 +------------------
.../pdf_viewer_private_api.cc | 27 +------------------
chrome/browser/glic/BUILD.gn | 2 +-
chrome/browser/glic/android/BUILD.gn | 2 +-
chrome/browser/pdf/BUILD.gn | 1 -
chrome/browser/sync/BUILD.gn | 4 +--
@@ -31,11 +34,10 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
chrome/browser/ui/toasts/BUILD.gn | 2 +-
chrome/common/BUILD.gn | 1 +
chrome/common/chrome_features.cc | 1 +
chrome/common/chrome_features.h | 1 +
chrome/common/features.gni | 3 +--
chrome/common/features.gni | 2 ++
chrome/test/BUILD.gn | 2 +-
components/browser_sync/BUILD.gn | 2 +-
28 files changed, 32 insertions(+), 74 deletions(-)
30 files changed, 34 insertions(+), 85 deletions(-)
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
--- a/chrome/android/BUILD.gn
@@ -96,6 +98,31 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/search
org.chromium.chrome.browser.privacy.settings.DoNotTrackSettings
.SEARCH_INDEX_DATA_PROVIDER,
org.chromium.chrome.browser.homepage.settings.HomepageSettings
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAdaptiveToolbarBehavior.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAdaptiveToolbarBehavior.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAdaptiveToolbarBehavior.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAdaptiveToolbarBehavior.java
@@ -19,7 +19,6 @@ import org.chromium.chrome.browser.ai.PageSummaryButtonController;
import org.chromium.chrome.browser.bookmarks.AddToBookmarksToolbarButtonController;
import org.chromium.chrome.browser.bookmarks.BookmarkModel;
import org.chromium.chrome.browser.bookmarks.TabBookmarker;
-import org.chromium.chrome.browser.glic.GlicToolbarButtonController;
import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
import org.chromium.chrome.browser.tab_group_suggestion.toolbar.GroupSuggestionsButtonController;
import org.chromium.chrome.browser.tab_group_suggestion.toolbar.GroupSuggestionsButtonDataProvider;
@@ -125,13 +124,6 @@ public class TabbedAdaptiveToolbarBehavior implements AdaptiveToolbarBehavior {
controller.addButtonVariant(AdaptiveToolbarButtonVariant.TAB_GROUPING, tabGrouping);
}
- if (AdaptiveToolbarFeatures.isGlicActionEnabled()) {
- controller.addButtonVariant(
- AdaptiveToolbarButtonVariant.GLIC,
- new GlicToolbarButtonController(
- mContext, mActivityTabProvider, mToggleGlicCallback));
- }
-
mRegisterVoiceSearchRunnable.run();
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java
@@ -126,10 +153,30 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab
}
/**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
@@ -107,7 +107,6 @@ import org.chromium.chrome.browser.gesturenav.BackActionDelegate;
import org.chromium.chrome.browser.gesturenav.HistoryNavigationCoordinator;
import org.chromium.chrome.browser.gesturenav.NavigationSheet;
import org.chromium.chrome.browser.gesturenav.TabbedSheetDelegate;
-import org.chromium.chrome.browser.glic.GlicKeyedServiceHandler;
import org.chromium.chrome.browser.history.HistoryManagerUtils;
import org.chromium.chrome.browser.hub.HubManager;
import org.chromium.chrome.browser.incognito.reauth.IncognitoReauthCoordinatorFactory;
@@ -2256,7 +2255,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
Profile profile = mTabModelSelectorSupplier.get().getCurrentModel().getProfile();
assert profile != null;
- return GlicKeyedServiceHandler.toggleGlic(profile, mChromeAndroidTaskSupplier.get());
+ return false;
}
/* package */ KeyboardFocusRowManager getKeyboardFocusRowManagerForTesting() {
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -3275,8 +3275,6 @@ static_library("browser") {
@@ -3273,8 +3273,6 @@ static_library("browser") {
"//chrome/browser/flags:flags_android_impl",
"//chrome/browser/gesturenav/android:gesturenav",
"//chrome/browser/gesturenav/android:impl",
@@ -285,7 +332,16 @@ diff --git a/chrome/browser/extensions/api/pdf_viewer_private/pdf_viewer_private
#include "chrome/browser/pdf/pdf_pref_names.h"
#include "chrome/browser/pdf/pdf_viewer_stream_manager.h"
#include "chrome/browser/profiles/profile.h"
@@ -307,27 +304,7 @@ ExtensionFunction::ResponseAction PdfViewerPrivateGlicSummarizeFunction::Run() {
@@ -51,8 +48,6 @@ namespace SetPdfPluginAttributes =
namespace SetPdfDocumentTitle = api::pdf_viewer_private::SetPdfDocumentTitle;
-constexpr char kSummarizePrompt[] = "Summarize this document";
-
// Check if the current URL is allowed based on a list of allowlisted domains.
bool IsUrlAllowedToEmbedLocalFiles(const GURL& current_url,
const base::ListValue& allowlisted_domains) {
@@ -307,27 +302,7 @@ ExtensionFunction::ResponseAction PdfViewerPrivateGlicSummarizeFunction::Run() {
return RespondNow(Error("No tab."));
}
@@ -314,6 +370,18 @@ diff --git a/chrome/browser/extensions/api/pdf_viewer_private/pdf_viewer_private
}
} // namespace extensions
diff --git a/chrome/browser/glic/BUILD.gn b/chrome/browser/glic/BUILD.gn
--- a/chrome/browser/glic/BUILD.gn
+++ b/chrome/browser/glic/BUILD.gn
@@ -438,7 +438,7 @@ source_set("impl") {
deps += [
":actor_types_for_migration",
"//chrome/browser/context_sharing/tab_bottom_sheet/android:jni_headers",
- "//chrome/browser/glic/android",
+ #"//chrome/browser/glic/android",
"//ui/android",
]
}
diff --git a/chrome/browser/glic/android/BUILD.gn b/chrome/browser/glic/android/BUILD.gn
--- a/chrome/browser/glic/android/BUILD.gn
+++ b/chrome/browser/glic/android/BUILD.gn
@@ -464,30 +532,18 @@ diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
// Controls whether the Glic feature is always detached.
BASE_FEATURE(kGlicDetached, base::FEATURE_ENABLED_BY_DEFAULT);
diff --git a/chrome/common/chrome_features.h b/chrome/common/chrome_features.h
--- a/chrome/common/chrome_features.h
+++ b/chrome/common/chrome_features.h
@@ -377,6 +377,7 @@ extern const base::FeatureParam<int> kGlicTrustFirstOnboardingArmParam;
// Chrome versions.
COMPONENT_EXPORT(CHROME_FEATURES) BASE_DECLARE_FEATURE(kGlic);
+#if BUILDFLAG(ENABLE_GLIC)
COMPONENT_EXPORT(CHROME_FEATURES)
BASE_DECLARE_FEATURE(kGlicDevelopmentSyncGoogleCookies);
COMPONENT_EXPORT(CHROME_FEATURES)
diff --git a/chrome/common/features.gni b/chrome/common/features.gni
--- a/chrome/common/features.gni
+++ b/chrome/common/features.gni
@@ -42,8 +42,7 @@ declare_args() {
enable_background_contents = !is_android
enable_background_mode = !is_android && !is_chromeos
@@ -45,6 +45,8 @@ declare_args() {
# Enables usage of notifications via Chrome's MessageCenter.
enable_chrome_notifications = is_mac || is_win || is_linux
- # Enables usage of notifications via Chrome's MessageCenter.
- enable_chrome_notifications = is_mac || is_win || is_linux
+ enable_glic = is_mac || is_win || is_linux || is_chromeos
+
# Skips unmigrated actor files in the build on Android. This is temporary, and
# will eventually be removed once migration is done. Adding this flag likely
# means the code needs to be adapted for Android. Once adapted, the final code
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
+15 -2
View File
@@ -13,11 +13,12 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../settings/SettingsNavigationImpl.java | 3 +-
.../search/SearchIndexProviderRegistry.java | 2 --
chrome/browser/BUILD.gn | 1 -
.../privacy_page/privacy_page_index.ts | 2 +-
chrome/browser/safety_check/android/BUILD.gn | 2 --
.../safety_check/SafetyCheckBridge.java | 4 +--
.../suggestions/action/OmniboxPedal.java | 3 --
.../Disable-safety-check.inc | 1 +
13 files changed, 6 insertions(+), 80 deletions(-)
14 files changed, 7 insertions(+), 81 deletions(-)
create mode 100644 cromite_flags/chrome/common/chrome_features_cc/Disable-safety-check.inc
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
@@ -233,7 +234,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/search
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -3292,7 +3292,6 @@ static_library("browser") {
@@ -3290,7 +3290,6 @@ static_library("browser") {
"//chrome/browser/recent_tabs:jni_headers",
"//chrome/browser/regional_capabilities",
"//chrome/browser/safe_browsing/android:safe_browsing_enums",
@@ -241,6 +242,18 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
"//chrome/browser/safety_hub/android",
"//chrome/browser/search_resumption:jni_headers",
"//chrome/browser/serial/android:jni_headers",
diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page_index.ts b/chrome/browser/resources/settings/privacy_page/privacy_page_index.ts
--- a/chrome/browser/resources/settings/privacy_page/privacy_page_index.ts
+++ b/chrome/browser/resources/settings/privacy_page/privacy_page_index.ts
@@ -246,7 +246,7 @@ export class SettingsPrivacyPageIndexElement extends
}
if (this.showPage_(this.pageVisibility_.safetyHub)) {
- defaultViews.push('safetyHubEntryPoint');
+ // defaultViews.push('safetyHubEntryPoint');
}
return defaultViews;
diff --git a/chrome/browser/safety_check/android/BUILD.gn b/chrome/browser/safety_check/android/BUILD.gn
--- a/chrome/browser/safety_check/android/BUILD.gn
+++ b/chrome/browser/safety_check/android/BUILD.gn
@@ -39,7 +39,7 @@ diff --git a/components/visitedlink/browser/visitedlink_writer.cc b/components/v
}
VisitedLinkWriter::Hash VisitedLinkWriter::TryToAddURL(const GURL& url) {
+ if ((true)) return null_hash_;
+ if ((true)) return kNullHash;
// Extra check that we are not incognito. This should not happen.
// TODO(boliu): Move this check to HistoryService when IsOffTheRecord is
// removed from BrowserContext.
+242 -95
View File
@@ -7,37 +7,37 @@ Full activation of incognito mode in experimental extension
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../chrome/browser/ChromeTabbedActivity.java | 9 ++
.../chrome/browser/app/ChromeActivity.java | 45 ++++++--
.../chrome/browser/app/ChromeActivity.java | 45 ++++++-
.../BaseCustomTabRootUiCoordinator.java | 2 +
.../CustomTabIntentDataProvider.java | 3 +
.../tabbed_mode/TabbedRootUiCoordinator.java | 1 +
.../browser/tabmodel/TabModelJniBridge.java | 2 +-
.../tabmodel/TabModelSelectorBase.java | 14 +++
.../browser/tabmodel/TabModelJniBridge.java | 3 +-
.../tabmodel/TabModelSelectorBase.java | 14 ++
.../browser/toolbar/ToolbarManager.java | 2 +
.../chrome/browser/ui/RootUiCoordinator.java | 2 +
.../developer_private_functions.cc | 3 +-
.../browser/extensions/extension_tab_util.cc | 2 +-
.../tabmodel/IncognitoTabModelImpl.java | 14 ++-
.../tabmodel/IncognitoTabModelImpl.java | 10 +-
.../tabmodel/IncognitoTabModelObserver.java | 3 +
.../extensions/extension_actions_bridge.cc | 23 ++--
.../extensions/extension_actions_bridge.cc | 23 +++-
.../extensions/extension_actions_bridge.h | 4 +-
.../ExtensionActionContextMenuBridge.java | 2 +-
.../ui/extensions/ExtensionActionsBridge.java | 64 +++++++++--
.../ui/extensions/ExtensionsMenuBridge.java | 70 ++++++++++--
.../extensions/ExtensionsToolbarBridge.java | 105 +++++++++++++-----
.../ui/extensions/ExtensionActionsBridge.java | 65 +++++++++-
.../ui/extensions/ExtensionsMenuBridge.java | 101 ++++++++++++---
.../extensions/ExtensionsToolbarBridge.java | 121 +++++++++++++-----
.../android/tab_model/tab_model_jni_bridge.cc | 4 +
.../ExtensionActionListCoordinator.java | 12 ++
.../ExtensionActionListMediator.java | 14 +--
.../ExtensionActionListCoordinator.java | 15 ++-
.../ExtensionActionListMediator.java | 30 ++---
.../ExtensionToolbarCoordinator.java | 3 +
.../ExtensionToolbarCoordinatorImpl.java | 15 +--
...MenuAndAccessControlButtonCoordinator.java | 5 +-
.../extensions/ExtensionsMenuCoordinator.java | 2 +
.../extensions/ExtensionsMenuMediator.java | 13 ++-
.../browser_window/ChromeAndroidTaskImpl.java | 41 ++++++-
.../extensions/ExtensionsMenuMediator.java | 14 +-
.../browser_window/ChromeAndroidTaskImpl.java | 18 ++-
.../ChromeAndroidTaskFeature.java | 2 +-
components/tabs/impl/tab_collection.cc | 16 +++
components/tabs/impl/tab_strip_collection.cc | 4 +-
31 files changed, 406 insertions(+), 95 deletions(-)
31 files changed, 419 insertions(+), 124 deletions(-)
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
@@ -133,19 +133,19 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
+ private void addFeatures(ChromeAndroidTask task, Profile profile) {
+ task.addFeature(
+ new ChromeAndroidTaskFeatureKey(
+ ExtensionWindowControllerBridge.class, profile, activityWindowAndroid),
+ ExtensionWindowControllerBridge.class, profile, getWindowAndroid()),
+ () -> ExtensionWindowControllerBridgeFactory.create(task, profile));
+
+ task.addFeature(
+ new ChromeAndroidTaskFeatureKey(ExtensionsToolbarBridge.class, profile),
+ new ChromeAndroidTaskFeatureKey(ExtensionsToolbarBridge.class, profile, getWindowAndroid()),
+ () -> ExtensionsToolbarBridge.create(task, profile));
+
+ task.addFeature(
+ new ChromeAndroidTaskFeatureKey(ExtensionActionsBridge.class, profile),
+ new ChromeAndroidTaskFeatureKey(ExtensionActionsBridge.class, profile, getWindowAndroid()),
+ () -> ExtensionActionsBridge.create(task, profile));
+
+ task.addFeature(
+ new ChromeAndroidTaskFeatureKey(ExtensionsMenuBridge.class, profile),
+ new ChromeAndroidTaskFeatureKey(ExtensionsMenuBridge.class, profile, getWindowAndroid()),
+ () -> ExtensionsMenuBridge.create(task, profile));
+ }
+
@@ -201,7 +201,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
@@ -202,6 +202,7 @@ import org.chromium.chrome.browser.toolbar.adaptive.AdaptiveToolbarBehavior;
@@ -201,6 +201,7 @@ import org.chromium.chrome.browser.toolbar.adaptive.AdaptiveToolbarBehavior;
import org.chromium.chrome.browser.ui.RootUiCoordinator;
import org.chromium.chrome.browser.ui.appmenu.AppMenuBlocker;
import org.chromium.chrome.browser.ui.appmenu.AppMenuDelegate;
@@ -212,15 +212,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelJniBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelJniBridge.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelJniBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelJniBridge.java
@@ -134,7 +134,7 @@ public abstract class TabModelJniBridge implements TabModelInternal {
@Override
public void associateWithBrowserWindow(long nativeAndroidBrowserWindow) {
// Ensure this isn't set multiple times.
- assert mNativeAndroidBrowserWindow == 0;
+ if (nativeAndroidBrowserWindow != 0) assert mNativeAndroidBrowserWindow == 0;
assert nativeAndroidBrowserWindow != 0;
@@ -144,8 +144,7 @@ public abstract class TabModelJniBridge implements TabModelInternal {
mNativeAndroidBrowserWindow = nativeAndroidBrowserWindow;
@Override
public void dissociateWithBrowserWindow() {
- assert mNativeAndroidBrowserWindow != 0;
-
+ if (mNativeTabModelJniBridge == 0 || mNativeAndroidBrowserWindow == 0) return;
TabModelJniBridgeJni.get().dissociateWithBrowserWindow(mNativeTabModelJniBridge);
mNativeAndroidBrowserWindow = 0;
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java
@@ -311,21 +312,16 @@ diff --git a/chrome/browser/extensions/extension_tab_util.cc b/chrome/browser/ex
diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl.java b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl.java
--- a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl.java
+++ b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl.java
@@ -147,8 +147,12 @@ class IncognitoTabModelImpl implements IncognitoTabModelInternal {
return;
@@ -148,7 +148,7 @@ class IncognitoTabModelImpl implements IncognitoTabModelInternal {
}
+ // Disassociate
+ mDelegateModel.associateWithBrowserWindow(/*nativeAndroidBrowserWindow=*/ 0);
+ mNativeAndroidBrowserWindow = 0;
+
for (IncognitoTabModelObserver observer : mIncognitoObservers) {
- observer.didBecomeEmpty();
+ observer.didDestroyed();
}
mDelegateModel
@@ -159,6 +163,10 @@ class IncognitoTabModelImpl implements IncognitoTabModelInternal {
@@ -159,6 +159,10 @@ class IncognitoTabModelImpl implements IncognitoTabModelInternal {
mCurrentTabSupplier.set(null);
mTabCountSupplier.set(0);
@@ -336,7 +332,7 @@ diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browse
mDelegateModel = EmptyTabModel.getInstance(true);
for (Callback<TabModelInternal> delegateModelObserver : mDelegateModelObservers) {
delegateModelObserver.onResult(mDelegateModel);
@@ -196,6 +204,10 @@ class IncognitoTabModelImpl implements IncognitoTabModelInternal {
@@ -196,6 +200,10 @@ class IncognitoTabModelImpl implements IncognitoTabModelInternal {
assert mNativeAndroidBrowserWindow == 0;
mNativeAndroidBrowserWindow = nativeAndroidBrowserWindow;
mDelegateModel.associateWithBrowserWindow(nativeAndroidBrowserWindow);
@@ -539,7 +535,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b
assert mNativeExtensionActionsBridge != 0;
ExtensionActionsBridgeJni.get().destroy(mNativeExtensionActionsBridge);
mNativeExtensionActionsBridge = 0;
@@ -88,19 +132,25 @@ public class ExtensionActionsBridge implements Destroyable {
@@ -88,19 +132,26 @@ public class ExtensionActionsBridge implements Destroyable {
}
public void clearExtensionData() {
@@ -548,7 +544,8 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b
+ }
+
+ private void closeBackgroundHosts() {
+ ExtensionActionsBridgeJni.get().closeBackgroundHosts(mNativeExtensionActionsBridge);
+ if (mProfile.isIncognitoBranded())
+ ExtensionActionsBridgeJni.get().closeBackgroundHosts(mNativeExtensionActionsBridge);
}
@NativeMethods
@@ -626,16 +623,16 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b
ExtensionsMenuBridgeJni.get()
- .init(this, task.getOrCreateNativeBrowserWindowPtr(profile));
+ .init(this, mTask.getOrCreateNativeBrowserWindowPtr(mProfile));
+ }
+
+ @Override
+ public void onFeatureRemoved() {
+ Instance().mObservers.remove(mTask);
+ destroy();
}
@Override
- public void destroy() {
+ public void onFeatureRemoved() {
+ Instance().mObservers.remove(mTask);
+ destroy();
+ }
+
+ @Override
+ public void onTaskBoundsChanged(Rect newBoundsInDp) {}
+
+ @Override
@@ -653,6 +650,36 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b
assert mNativeExtensionsMenuDelegateAndroid != 0;
ExtensionsMenuBridgeJni.get().destroy(mNativeExtensionsMenuDelegateAndroid);
mNativeExtensionsMenuDelegateAndroid = 0;
@@ -47,12 +99,12 @@ public class ExtensionsMenuBridge implements Destroyable {
/** Returns the icon for the given extension index from native. */
public @Nullable Bitmap getActionIcon(int actionIndex) {
return ExtensionsMenuBridgeJni.get()
- .getActionIcon(mNativeExtensionsMenuDelegateAndroid, actionIndex);
+ .getActionIcon(Instance().mNativeExtensionsMenuDelegateAndroid, actionIndex);
}
/** Returns the list of menu entries with their states from native. */
public List<ExtensionsMenuTypes.MenuEntryState> getMenuEntries() {
- return ExtensionsMenuBridgeJni.get().getMenuEntries(mNativeExtensionsMenuDelegateAndroid);
+ return ExtensionsMenuBridgeJni.get().getMenuEntries(Instance().mNativeExtensionsMenuDelegateAndroid);
}
/**
@@ -62,12 +114,12 @@ public class ExtensionsMenuBridge implements Destroyable {
*/
public ExtensionsMenuTypes.MenuEntryState getMenuEntry(int actionIndex) {
return ExtensionsMenuBridgeJni.get()
- .getMenuEntry(mNativeExtensionsMenuDelegateAndroid, actionIndex);
+ .getMenuEntry(Instance().mNativeExtensionsMenuDelegateAndroid, actionIndex);
}
/** Returns the site settings state from native. */
public ExtensionsMenuTypes.SiteSettingsState getSiteSettingsState() {
- return ExtensionsMenuBridgeJni.get().getSiteSettings(mNativeExtensionsMenuDelegateAndroid);
+ return ExtensionsMenuBridgeJni.get().getSiteSettings(Instance().mNativeExtensionsMenuDelegateAndroid);
}
/**
@@ -77,12 +129,12 @@ public class ExtensionsMenuBridge implements Destroyable {
*/
public void onSiteSettingsToggleChanged(boolean isChecked) {
@@ -668,7 +695,53 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b
}
/**
@@ -134,7 +186,7 @@ public class ExtensionsMenuBridge implements Destroyable {
@@ -92,7 +144,8 @@ public class ExtensionsMenuBridge implements Destroyable {
*/
@CalledByNative
public void onActionAdded(int actionIndex) {
- mObserver.onActionAdded(actionIndex);
+ if (Instance().mNativeExtensionsMenuDelegateAndroid != mNativeExtensionsMenuDelegateAndroid) return;
+ Instance().mObserver.onActionAdded(actionIndex);
}
/**
@@ -103,7 +156,10 @@ public class ExtensionsMenuBridge implements Destroyable {
*/
@CalledByNative
public void onActionIconUpdated(int actionIndex) {
- mObserver.onActionIconUpdated(actionIndex);
+ if (Instance().mNativeExtensionsMenuDelegateAndroid != mNativeExtensionsMenuDelegateAndroid) return;
+ if (Instance().mObserver != null) {
+ Instance().mObserver.onActionIconUpdated(actionIndex);
+ }
}
/**
@@ -114,7 +170,10 @@ public class ExtensionsMenuBridge implements Destroyable {
*/
@CalledByNative
public void onActionRemoved(int actionIndex) {
- mObserver.onActionRemoved(actionIndex);
+ if (Instance().mNativeExtensionsMenuDelegateAndroid != mNativeExtensionsMenuDelegateAndroid) return;
+ if (Instance().mObserver != null) {
+ Instance().mObserver.onActionRemoved(actionIndex);
+ }
}
/**
@@ -125,7 +184,10 @@ public class ExtensionsMenuBridge implements Destroyable {
*/
@CalledByNative
public void onActionUpdated(int actionIndex) {
- mObserver.onActionUpdated(actionIndex);
+ if (Instance().mNativeExtensionsMenuDelegateAndroid != mNativeExtensionsMenuDelegateAndroid) return;
+ if (Instance().mObserver != null) {
+ Instance().mObserver.onActionUpdated(actionIndex);
+ }
}
/**
@@ -134,13 +196,14 @@ public class ExtensionsMenuBridge implements Destroyable {
*/
@CalledByNative
public void onReady() {
@@ -677,6 +750,15 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b
}
@CalledByNative
private void onModelChanged() {
- if (mObserver != null) {
- mObserver.onModelChanged();
+ if (Instance().mNativeExtensionsMenuDelegateAndroid != mNativeExtensionsMenuDelegateAndroid) return;
+ if (Instance().mObserver != null) {
+ Instance().mObserver.onModelChanged();
}
}
diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionsToolbarBridge.java b/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionsToolbarBridge.java
--- a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionsToolbarBridge.java
+++ b/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionsToolbarBridge.java
@@ -699,20 +781,26 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b
// TODO(crbug.com/423483658): Consider moving ExtensionsMenuButtonState and related types
// (e.g., RequestAccessButtonParams) into a new ExtensionControls.java file.
@IntDef({
@@ -53,15 +60,56 @@ public class ExtensionsToolbarBridge implements Destroyable {
@@ -47,21 +54,61 @@ public class ExtensionsToolbarBridge implements Destroyable {
private final @Nullable LifetimeAssert mLifetimeAssert = LifetimeAssert.create(this);
private long mNativeExtensionsToolbarAndroid;
private final ObserverList<Observer> mObservers = new ObserverList<>();
- private final Profile mProfile;
+ private Profile mProfile;
// The delegate is set via a setter because of a bidirectional dependency
// with {@code ExtensionActionListMediator}.
private @Nullable Delegate mDelegate;
- public ExtensionsToolbarBridge(ChromeAndroidTask task, Profile profile) {
- mProfile = profile;
+ private final ChromeAndroidTask mTask;
+ private final Profile mProfile;
+
+ private static ExtensionsToolbarBridge toolbarBridgeInstance;
+ private final Map<ChromeAndroidTask, Delegate> mDelegates = new ArrayMap<>();
+
+ @Override
+ public void onAddedToTask() {
mProfile = profile;
mNativeExtensionsToolbarAndroid =
ExtensionsToolbarBridgeJni.get()
- .init(this, task.getOrCreateNativeBrowserWindowPtr(profile));
@@ -721,7 +809,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b
+
+ @Override
+ public void onFeatureRemoved() {
+ Instance().mDelegates.remove(mTask);
+ //Instance().mDelegates.remove(mTask);
+ destroy();
}
@@ -737,6 +825,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b
+ if (mTask == task && tabModel.getProfile() == mProfile) {
+ Instance().mNativeExtensionsToolbarAndroid = mNativeExtensionsToolbarAndroid;
+ Instance().mDelegate = Instance().mDelegates.get(mTask);
+ Instance().mProfile = mProfile;
+ }
+ }
+
@@ -759,7 +848,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b
assert mNativeExtensionsToolbarAndroid != 0;
ExtensionsToolbarBridgeJni.get().destroy(mNativeExtensionsToolbarAndroid);
mNativeExtensionsToolbarAndroid = 0;
@@ -69,19 +117,21 @@ public class ExtensionsToolbarBridge implements Destroyable {
@@ -69,27 +116,30 @@ public class ExtensionsToolbarBridge implements Destroyable {
}
public void addObserver(Observer observer) {
@@ -775,17 +864,19 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b
- public void setDelegate(@Nullable Delegate delegate) {
- mDelegate = delegate;
+ public void setDelegate(ChromeAndroidTask task, @Nullable Delegate delegate) {
+ if (delegate == null) return;
+ Instance().mDelegates.put(task, delegate);
+ Instance().mDelegate = delegate;
}
@Nullable
public ExtensionAction getAction(String actionId, @Nullable WebContents webContents) {
- if (mProfile.shutdownStarted()) {
+ assert Instance().mNativeExtensionsToolbarAndroid != 0;
if (mProfile.shutdownStarted()) {
+ if (Instance().mProfile.shutdownStarted()) {
// TODO(crbug.com/459079170): This is to prevent tests from breaking. {@code
// ExtensionToolbarCoordinatorImpl} should ideally be destroyed following {@code
@@ -89,7 +139,7 @@ public class ExtensionsToolbarBridge implements Destroyable {
// ChromeAndroidTask}'s destruction, and it is currently being worked on.
return null;
}
return ExtensionsToolbarBridgeJni.get()
@@ -806,7 +897,14 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b
actionId,
webContents,
canvasWidthDp,
@@ -122,7 +173,7 @@ public class ExtensionsToolbarBridge implements Destroyable {
@@ -116,58 +167,58 @@ public class ExtensionsToolbarBridge implements Destroyable {
}
public String[] getAllActionIds() {
- if (mProfile.shutdownStarted()) {
+ if (Instance().mProfile.shutdownStarted()) {
// TODO(crbug.com/459079170): This is to prevent tests from breaking. {@code
// ExtensionToolbarCoordinatorImpl} should ideally be destroyed following {@code
// ChromeAndroidTask}'s destruction, and it is currently being worked on.
return new String[0];
}
@@ -815,7 +913,10 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b
}
public String[] getPinnedActionIds() {
@@ -132,7 +183,7 @@ public class ExtensionsToolbarBridge implements Destroyable {
- if (mProfile.shutdownStarted()) {
+ if (Instance().mProfile.shutdownStarted()) {
// TODO(crbug.com/459079170): This is to prevent tests from breaking. {@code
// ExtensionToolbarCoordinatorImpl} should ideally be destroyed following {@code
// ChromeAndroidTask}'s destruction, and it is currently being worked on.
return new String[0];
}
@@ -824,7 +925,11 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b
}
public void executeUserAction(String actionId, @InvocationSource int source) {
@@ -143,7 +194,7 @@ public class ExtensionsToolbarBridge implements Destroyable {
- if (mProfile.shutdownStarted()) {
+ if (Instance().mProfile.shutdownStarted()) {
// TODO(crbug.com/459079170): This is to prevent tests from breaking. {@code
// ExtensionToolbarCoordinatorImpl} should ideally be destroyed following {@code
// ChromeAndroidTask}'s destruction, and it is currently being worked on.
return;
}
ExtensionsToolbarBridgeJni.get()
@@ -833,7 +938,11 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b
}
public void movePinnedAction(String actionId, int targetIndex) {
@@ -154,20 +205,20 @@ public class ExtensionsToolbarBridge implements Destroyable {
- if (mProfile.shutdownStarted()) {
+ if (Instance().mProfile.shutdownStarted()) {
// TODO(crbug.com/459079170): This is to prevent tests from breaking. {@code
// ExtensionToolbarCoordinatorImpl} should ideally be destroyed following {@code
// ChromeAndroidTask}'s destruction, and it is currently being worked on.
return;
}
ExtensionsToolbarBridgeJni.get()
@@ -859,7 +968,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b
assert params != null;
return params;
}
@@ -175,14 +226,14 @@ public class ExtensionsToolbarBridge implements Destroyable {
@@ -175,63 +226,63 @@ public class ExtensionsToolbarBridge implements Destroyable {
@CalledByNative
public void triggerPopup(@JniType("std::string") String actionId, long nativeHostPtr) {
// {@link mDelegate} should be set in {@code ExtensionActionListMediator}'s constructor.
@@ -877,7 +986,14 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b
observer.onRequestAccessButtonParamsChanged();
}
}
@@ -196,42 +247,42 @@ public class ExtensionsToolbarBridge implements Destroyable {
@CalledByNative
public void onToolbarControlStateUpdated() {
- for (Observer observer : mObservers) {
+ for (Observer observer : Instance().mObservers) {
observer.onToolbarControlStateUpdated();
}
}
@CalledByNative
public void onActionsInitialized() {
@@ -981,7 +1097,17 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
mModels = new ModelList();
mMediator =
@@ -135,8 +142,13 @@ public class ExtensionActionListCoordinator implements Destroyable {
@@ -79,7 +86,8 @@ public class ExtensionActionListCoordinator implements Destroyable {
this::getButtonViewForId,
extensionsToolbarBridge,
contextMenuPopulatorFactory,
- selectionDropdownMenuDelegate);
+ selectionDropdownMenuDelegate,
+ extensionsMenuButton);
ExtensionsToolbarDragTouchHandler dragTouchHandler =
new ExtensionsToolbarDragTouchHandler(context, mModels);
@@ -135,8 +143,13 @@ public class ExtensionActionListCoordinator implements Destroyable {
LifetimeAssert.setSafeToGc(mLifetimeAssert, true);
}
@@ -1006,7 +1132,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
@NullMarked
class ExtensionActionListMediator implements Destroyable {
@@ -88,7 +89,6 @@ class ExtensionActionListMediator implements Destroyable {
@@ -88,11 +89,11 @@ class ExtensionActionListMediator implements Destroyable {
private final WindowAndroid mWindowAndroid;
private final ModelList mModels;
private final ChromeAndroidTask mTask;
@@ -1014,7 +1140,19 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
private final NullableObservableSupplier<Tab> mCurrentTabSupplier;
private final ExtensionActionListCoordinator.ActionAnchorViewProvider mActionAnchorViewProvider;
private final @Nullable ContextMenuPopulatorFactory mContextMenuPopulatorFactory;
@@ -121,14 +121,13 @@ class ExtensionActionListMediator implements Destroyable {
private final @Nullable SelectionDropdownMenuDelegate mSelectionDropdownMenuDelegate;
+ private final ListMenuButton mExtensionsMenuButton;
private final ExtensionsToolbarBridge mExtensionsToolbarBridge;
private final ToolbarDelegate mToolbarDelegate = new ToolbarDelegate();
@@ -116,19 +117,20 @@ class ExtensionActionListMediator implements Destroyable {
ExtensionActionListCoordinator.ActionAnchorViewProvider actionAnchorViewProvider,
ExtensionsToolbarBridge extensionsToolbarBridge,
@Nullable ContextMenuPopulatorFactory contextMenuPopulatorFactory,
- @Nullable SelectionDropdownMenuDelegate selectionDropdownMenuDelegate) {
+ @Nullable SelectionDropdownMenuDelegate selectionDropdownMenuDelegate,
+ ListMenuButton extensionsMenuButton) {
mContext = context;
mWindowAndroid = windowAndroid;
mModels = models;
mTask = task;
@@ -1024,13 +1162,14 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
mExtensionsToolbarBridge = extensionsToolbarBridge;
mContextMenuPopulatorFactory = contextMenuPopulatorFactory;
mSelectionDropdownMenuDelegate = selectionDropdownMenuDelegate;
+ mExtensionsMenuButton = extensionsMenuButton;
- mExtensionsToolbarBridge.setDelegate(mToolbarDelegate);
+ mExtensionsToolbarBridge.setDelegate(mTask, mToolbarDelegate);
mExtensionsToolbarBridge.addObserver(mToolbarObserver);
reconcileActionItems();
}
@@ -141,7 +140,7 @@ class ExtensionActionListMediator implements Destroyable {
@@ -141,7 +143,7 @@ class ExtensionActionListMediator implements Destroyable {
assert mActionState instanceof ActionState.Idle;
mExtensionsToolbarBridge.removeObserver(mToolbarObserver);
@@ -1039,26 +1178,40 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
LifetimeAssert.setSafeToGc(mLifetimeAssert, true);
}
@@ -316,7 +315,7 @@ class ExtensionActionListMediator implements Destroyable {
@@ -316,7 +318,8 @@ class ExtensionActionListMediator implements Destroyable {
return mModels.get(index).model.get(ExtensionActionButtonProperties.ID);
}
- private void onPrimaryClick(String actionId) {
+ public void onPrimaryClick(String actionId) {
+ if (!mTask.isActive()) return;
if (mActionState instanceof ActionState.PopupActive activeState) {
boolean closeOnly = activeState.getActionId().equals(actionId);
closePopup();
@@ -349,8 +348,7 @@ class ExtensionActionListMediator implements Destroyable {
@@ -337,20 +340,13 @@ class ExtensionActionListMediator implements Destroyable {
ExtensionActionPopupContents contents = ExtensionActionPopupContents.create(nativeHostPtr);
- if (findIndexForId(actionId) == -1) {
- // TODO(crbug.com/483194547): Implement popping out actions.
- contents.destroy();
- return;
- } else {
- showPopupOnReadyAnchor(actionId, contents);
- }
+ showPopupOnReadyAnchor(actionId, contents);
}
private void showPopupOnReadyAnchor(String actionId, ExtensionActionPopupContents contents) {
View buttonView = mActionAnchorViewProvider.getButtonViewForId(actionId);
if (buttonView == null) {
- contents.destroy();
- return;
+ buttonView = mContainer;
+ buttonView = mExtensionsMenuButton;
}
Activity activity = mWindowAndroid.getActivity().get();
@@ -420,7 +418,7 @@ class ExtensionActionListMediator implements Destroyable {
@@ -420,7 +416,7 @@ class ExtensionActionListMediator implements Destroyable {
assert mActionState instanceof ActionState.Idle;
ExtensionActionContextMenuBridge bridge =
new ExtensionActionContextMenuBridge(
@@ -1067,6 +1220,15 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
ExtensionActionContextMenuUtils.showContextMenu(
mContext,
buttonView,
@@ -452,7 +448,7 @@ class ExtensionActionListMediator implements Destroyable {
/** Updates the list of displayed actions to fit within the provided width constraint. */
public void fitActionsWithinWidth(int availableWidth) {
- mAvailableWidth = availableWidth;
+ // mAvailableWidth = availableWidth;
// If this is called during an animation (e.g. the user resizes window during pinning /
// unpinning animation), we abandon the animation and update to the new state instantly.
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarCoordinator.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarCoordinator.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarCoordinator.java
@@ -1113,7 +1275,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
new ExtensionActionListCoordinator(
context,
mContainer.findViewById(R.id.extension_action_list),
+ container.findViewById(R.id.extensions_menu_button),
+ mContainer.findViewById(R.id.extensions_menu_button),
windowAndroid,
task,
profile,
@@ -1227,6 +1389,14 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
}
/**
@@ -174,6 +177,7 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ
break;
}
}
+ if (oldIndex < 0) return;
assert oldIndex != -1
: "Action model with ID " + entry.id + " should exist in mActionModels.";
diff --git a/chrome/browser/ui/browser_window/internal/android/java/src/org/chromium/chrome/browser/ui/browser_window/ChromeAndroidTaskImpl.java b/chrome/browser/ui/browser_window/internal/android/java/src/org/chromium/chrome/browser/ui/browser_window/ChromeAndroidTaskImpl.java
--- a/chrome/browser/ui/browser_window/internal/android/java/src/org/chromium/chrome/browser/ui/browser_window/ChromeAndroidTaskImpl.java
+++ b/chrome/browser/ui/browser_window/internal/android/java/src/org/chromium/chrome/browser/ui/browser_window/ChromeAndroidTaskImpl.java
@@ -1235,46 +1405,22 @@ diff --git a/chrome/browser/ui/browser_window/internal/android/java/src/org/chro
// destruction until the activity is destroyed since there should never be more
// than one profile/window on desktop Android.
- if (!BuildConfig.IS_DESKTOP_ANDROID) {
+ if (!BuildConfig.IS_DESKTOP_ANDROID_CROMITE) {
+ if ((true)) {
if (mPendingBrowserWindow != null
&& mPendingBrowserWindow.getProfile() == profile) {
assert mActivityScopedObjectsDeque.isEmpty();
@@ -402,6 +402,34 @@ final class ChromeAndroidTaskImpl
@@ -402,6 +402,10 @@ final class ChromeAndroidTaskImpl
observer.onBrowserWindowAdded(ptr);
}
}
+
+ @Override
+ public void didDestroyed() {
+ var activityScopedObjects = mActivityScopedObjectsDeque.peekFirst();
+ assert activityScopedObjects != null
+ : "ActivityScopedObjects should not be null if the"
+ + " mIncognitoTabModelObserver is registered.";
+ var tabModelSelector = activityScopedObjects.mTabModelSelector;
+ var incognitoModel = tabModelSelector.getModel(/* incognito= */ true);
+ var incognitoProfile = incognitoModel.getProfile();
+ var iterator = mFeatures.entrySet().iterator();
+ while (iterator.hasNext()) {
+ var entry = iterator.next();
+ var key = entry.getKey();
+ if (incognitoProfile.equals(key.mProfile)) {
+ entry.getValue().onFeatureRemoved();
+ iterator.remove();
+ }
+ }
+ var browserWindow = mAndroidBrowserWindows.remove(incognitoProfile);
+ if (browserWindow != null) {
+ var ptr = browserWindow.getOrCreateNativePtr();
+ for (var observer : mAndroidBrowserWindowObservers) {
+ observer.onBrowserWindowRemoved(ptr);
+ }
+ browserWindow.destroy();
+ }
+ }
}
private @Nullable Integer mId;
@@ -685,7 +713,7 @@ final class ChromeAndroidTaskImpl
@@ -685,7 +689,7 @@ final class ChromeAndroidTaskImpl
mFeatures.put(featureKey, feature);
feature.onAddedToTask();
if (tabModelSelector != null) {
@@ -1283,12 +1429,13 @@ diff --git a/chrome/browser/ui/browser_window/internal/android/java/src/org/chro
}
}
}
@@ -1166,6 +1194,13 @@ final class ChromeAndroidTaskImpl
@@ -1166,6 +1170,14 @@ final class ChromeAndroidTaskImpl
for (var feature : mFeatures.values()) {
feature.onTaskFocusChanged(isTopResumedActivity);
}
+ if (isTopResumedActivity) {
+ var topActivityScopedObjects = mActivityScopedObjectsDeque.peekFirst();
+ var internalActivityScopedObjects = mActivityScopedObjectsDeque.peekFirst();
+ var topActivityScopedObjects = internalActivityScopedObjects.mActivityScopedObjects;
+ TabModelSelector tabModelSelector = topActivityScopedObjects.mTabModelSelector;
+ for (var feature : mFeatures.values()) {
+ feature.onTabModelSelected(this, tabModelSelector.getCurrentModel());
@@ -1297,7 +1444,7 @@ diff --git a/chrome/browser/ui/browser_window/internal/android/java/src/org/chro
}
@Override
@@ -1805,7 +1840,7 @@ final class ChromeAndroidTaskImpl
@@ -1805,7 +1817,7 @@ final class ChromeAndroidTaskImpl
private void onTabModelSelected(TabModel tabModel) {
for (var feature : mFeatures.values()) {
@@ -45,15 +45,15 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -1054,6 +1054,10 @@ config("linker") {
}
}
@@ -432,6 +432,10 @@ config("compiler") {
# In general, Windows is totally different, but all the other builds share
# some common compiler and linker configuration.
if (!is_win) {
+ if (is_clang && !is_ubsan && !is_ubsan_security) {
+ cflags += [ "-fwrapv" ]
+ }
+
# Linker warnings.
if (fatal_linker_warnings && !is_apple && current_os != "aix" &&
current_os != "zos") {
# Common POSIX compiler flags setup.
# --------------------------------
cflags += [ "-fno-strict-aliasing" ] # See http://crbug.com/32204
--
@@ -19,6 +19,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../chrome/browser/settings/MainSettings.java | 18 +---
.../chromium/chrome/browser/tab/TabImpl.java | 41 ++++++--
chrome/browser/android/tab_android.cc | 4 +-
.../actor/actor_form_filling_service_impl.cc | 8 --
chrome/browser/autofill/android/BUILD.gn | 2 +-
.../autofill/AutofillClientProviderUtils.java | 2 +-
...AutofillThirdPartyModeContentProvider.java | 1 +
@@ -44,7 +45,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../foundations/browser_autofill_manager.h | 2 +
.../autofill/core/common/autofill_prefs.cc | 4 +-
.../autofill/core/common/autofill_prefs.h | 5 +
29 files changed, 239 insertions(+), 136 deletions(-)
30 files changed, 239 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
@@ -315,6 +316,24 @@ diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_
// We need to initialize the keyboard suppressor before creating any
// AutofillManagers and after the autofill client is available.
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) {
if (!profile) {
return base::unexpected(kAutofillNotAvailable);
}
- if (AutofillClientProviderFactory::GetForProfile(profile)
- .uses_platform_autofill()) {
- // This is currently only possible on Android platforms, but this check
- // guards against this becoming applicable for Desktop platforms as well.
- // It is a requirement for the cast to `BrowserAutofillManager` to be
- // safe.
- return base::unexpected(kAutofillNotAvailable);
- }
ContentAutofillClient* const client =
ContentAutofillClient::FromWebContents(tab.GetContents());
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
@@ -35,7 +35,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../java/res/layout/search_engine_layout.xml | 25 ++
.../settings/SearchEngineSettings.java | 20 ++
chrome/browser/ui/BUILD.gn | 25 +-
.../edit_search_engine_controller.cc | 8 +-
.../edit_search_engine_controller.cc | 7 +-
.../edit_search_engine_controller.h | 6 +-
.../keyword_editor_controller.cc | 13 +-
.../keyword_editor_controller.h | 6 +-
@@ -54,7 +54,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
chrome/chrome_paks.gni | 11 +
.../settings/SettingsNavigation.java | 2 +
.../search_engine_desktop_ui.grdp | 6 +
.../android/template_url_service_android.cc | 2 +-
.../android/template_url_service_android.cc | 4 +-
.../search_engines/search_engines_switches.cc | 1 +
components/search_engines/template_url.cc | 4 +
components/search_engines/template_url.h | 1 +
@@ -82,7 +82,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
ui/webui/resources/images/BUILD.gn | 2 +-
ui/webui/resources/js/BUILD.gn | 2 +-
ui/webui/resources/js/load_time_data.ts | 17 +-
75 files changed, 1160 insertions(+), 75 deletions(-)
75 files changed, 1160 insertions(+), 76 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
@@ -156,7 +156,7 @@ diff --git a/chrome/app/generated_resources.grd.gritdeps b/chrome/app/generated_
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
@@ -2473,6 +2473,9 @@
@@ -2471,6 +2471,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>
@@ -434,7 +434,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
@@ -3600,6 +3600,9 @@ static_library("browser") {
@@ -3598,6 +3598,9 @@ static_library("browser") {
"//components/user_scripts/android",
]
}
@@ -972,23 +972,17 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
diff --git a/chrome/browser/ui/search_engines/edit_search_engine_controller.cc b/chrome/browser/ui/search_engines/edit_search_engine_controller.cc
--- a/chrome/browser/ui/search_engines/edit_search_engine_controller.cc
+++ b/chrome/browser/ui/search_engines/edit_search_engine_controller.cc
@@ -50,12 +50,14 @@ bool EditSearchEngineController::IsKeywordValid(
@@ -50,7 +50,8 @@ bool EditSearchEngineController::IsKeywordValid(
void EditSearchEngineController::AcceptAddOrEdit(
const std::u16string& title_input,
const std::u16string& keyword_input,
- const std::string& url_input) {
+ const std::string& url_input,
+ const std::string& url_suggestion_input) {
+ const std::string& url_suggestion) {
DCHECK(!keyword_input.empty());
TemplateURLService* template_url_service =
TemplateURLServiceFactory::GetForProfile(profile_);
std::string url_string = GetFixedUpSearchEngineUrl(
url_input, template_url_service->search_terms_data());
+ std::string url_suggestion = GetFixedUpURL(url_suggestion_input);
DCHECK(!url_string.empty());
const TemplateURL* existing =
@@ -77,12 +79,12 @@ void EditSearchEngineController::AcceptAddOrEdit(
@@ -77,12 +78,12 @@ void EditSearchEngineController::AcceptAddOrEdit(
DCHECK(template_url_);
template_url_service->AddWithOverrides(
base::WrapUnique(template_url_.get()), title_input, keyword_input,
@@ -1387,7 +1381,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
@@ -2931,6 +2931,8 @@ void AddSearchEnginesStrings(content::WebUIDataSource* html_source) {
@@ -2934,6 +2934,8 @@ void AddSearchEnginesStrings(content::WebUIDataSource* html_source) {
{"searchEnginesQueryURL", IDS_SETTINGS_SEARCH_ENGINES_QUERY_URL},
{"searchEnginesQueryURLExplanation",
IDS_SETTINGS_SEARCH_ENGINES_QUERY_URL_EXPLANATION},
@@ -1396,7 +1390,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},
@@ -4262,7 +4264,11 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source,
@@ -4265,7 +4267,11 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source,
AddSiteSettingsStrings(html_source, profile);
AddSiteDataPageStrings(html_source, profile);
AddStorageAccessStrings(html_source);
@@ -1942,6 +1936,15 @@ diff --git a/components/search_engines/android/template_url_service_android.cc b
}
}
@@ -485,7 +485,7 @@ bool TemplateUrlServiceAndroid::EditSearchEngine(
}
template_url_service_->ResetTemplateURL(template_url, short_name, new_keyword,
- search_url);
+ search_url, /*suggestion_url*/ "");
return true;
}
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
+1 -1
View File
@@ -495,7 +495,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
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
@@ -6613,6 +6613,19 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
@@ -6610,6 +6610,19 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
Make sure a phone app is enabled on this device
</message>
@@ -26,6 +26,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
cc/resources/ui_resource_bitmap.cc | 2 +-
chrome/android/BUILD.gn | 4 +-
chrome/android/chrome_public_apk_tmpl.gni | 2 +-
chrome/android/java/AndroidManifest.xml | 3 -
.../java/res/layout/manage_space_activity.xml | 14 +++-
.../java/res/xml/developer_preferences.xml | 6 ++
.../browser/ChromeBaseAppCompatActivity.java | 2 +-
@@ -41,6 +42,8 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../browser/tab/RequestDesktopUtils.java | 2 +-
.../TabbedAppMenuPropertiesDelegate.java | 2 +-
.../tabbed_mode/TabbedRootUiCoordinator.java | 4 +-
.../browser/tasks/ReturnToChromeUtil.java | 2 +-
.../browser/toolbar/ToolbarManager.java | 2 +-
chrome/app/extensions_strings.grdp | 7 ++
chrome/app/theme/theme_resources.grd | 4 +-
chrome/browser/BUILD.gn | 6 +-
@@ -60,12 +63,18 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../chrome_extensions_api_client_android.cc | 2 +-
.../extensions/api/identity/web_auth_flow.cc | 6 +-
.../extensions/api/identity/web_auth_flow.h | 4 +-
.../extensions/api/tabs/tabs_event_router.cc | 3 +
.../browser/extensions/api/tabs/tabs_api.cc | 3 +
.../extensions/api/tabs/tabs_event_router.cc | 22 ++++++-
.../browser_extension_window_controller.cc | 10 ++-
.../browser_extension_window_controller.h | 6 +-
.../extensions/extension_management.cc | 8 ++-
.../browser/extensions/extension_management.h | 2 +-
chrome/browser/extensions/extension_util.cc | 11 ++++
.../chrome/browser/feed/FeedFeatures.java | 2 +-
.../feedback/DeviceInfoFeedbackSource.java | 2 +-
.../browser/flags/ChromeFeatureList.java | 6 +-
.../browser/incognito/IncognitoUtils.java | 2 +-
.../magic_stack/HomeModulesConfigManager.java | 2 +-
chrome/browser/media/router/BUILD.gn | 4 +-
.../browser/media/router/discovery/BUILD.gn | 2 +-
.../media/router/media_router_feature.cc | 10 +--
@@ -105,13 +114,15 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../extension_window_controller_bridge.h | 2 +-
.../Enable-extensions-Android.grdp | 15 +++++
.../Extensions-Android.grdp | 9 +++
.../browser/ui/android/tab_model/tab_model.cc | 2 +-
.../android/tab_model/tab_model_test_helper.h | 2 +-
.../toolbar/java/res/layout/toolbar_phone.xml | 6 ++
.../ExtensionToolbarCoordinatorImpl.java | 10 ++-
.../ExtensionToolbarCoordinatorImpl.java | 12 +++-
.../extensions/ExtensionsMenuCoordinator.java | 8 ++-
.../ExtensionsMenuItemProperties.java | 5 +-
.../ExtensionsMenuItemViewBinder.java | 2 +
.../extensions/ExtensionsMenuMediator.java | 9 ++-
chrome/browser/ui/browser_window/BUILD.gn | 2 +-
.../ChromeAndroidTaskTrackerFactory.java | 2 +-
chrome/browser/ui/prefs/BUILD.gn | 4 +-
chrome/browser/ui/prefs/prefs_tab_helper.cc | 8 +--
@@ -151,7 +162,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../render_widget_host_view_android.cc | 2 +-
.../browser/ContentUiEventHandler.java | 7 +-
.../SelectionPopupControllerImpl.java | 5 ++
content/public/common/content_features.cc | 2 +-
content/public/common/content_features.cc | 4 +-
.../render_frame_media_playback_options.cc | 2 +-
.../about_flags_cc/Extensions-Android.inc | 12 ++++
.../about_flags_cc/Webstore-protection.inc | 8 +--
@@ -172,12 +183,14 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../default_locale_handler.cc | 3 +
.../renderer/bindings/api_binding_util.cc | 2 +-
gpu/config/gpu_finch_features.cc | 4 +-
.../chromium/media/AudioManagerAndroid.java | 2 +-
net/features.gni | 4 +-
skia/features.gni | 2 +-
third_party/blink/common/features.cc | 2 +-
.../renderer/modules/modules_initializer.cc | 4 +-
tools/grit/grit_args.gni | 3 +-
.../cpp_bundle_generator.py | 2 +-
.../chromium/ui/base/SelectFileDialog.java | 2 +-
.../ui/widget/PopupSpecCalculator.java | 9 ++-
.../ui/test/util/UiDisableIfSkipCheck.java | 8 +--
.../chromium/ui/test/util/UiRestriction.java | 4 +-
@@ -189,7 +202,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
ui/webui/resources/cr_elements/BUILD.gn | 2 +-
.../cr_elements/cr_toolbar/cr_toolbar.css | 3 +
ui/webui/resources/css/BUILD.gn | 2 +-
177 files changed, 587 insertions(+), 289 deletions(-)
190 files changed, 631 insertions(+), 308 deletions(-)
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Enable-extensions-Android.grdp
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Extensions-Android.grdp
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Extensions-Android.inc
@@ -429,6 +442,19 @@ diff --git a/chrome/android/chrome_public_apk_tmpl.gni b/chrome/android/chrome_p
"enable_screen_capture=$enable_screen_capture",
"zygote_preload_class=org.chromium.content_public.app.ZygotePreload",
]
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
@@ -558,9 +558,6 @@ by a child template that "extends" this file.
android:theme="@style/Theme.Chromium.TabbedMode"
android:exported="true"
android:launchMode="singleTask"
- {% if is_desktop_android == "true" %}
- android:persistableMode="persistAcrossReboots"
- {% endif %}
{# We can only use blocks once in Jinja, for future substitutions we use
self.supports_video_persistence(). #}
{% block supports_video_persistence %}
diff --git a/chrome/android/java/res/layout/manage_space_activity.xml b/chrome/android/java/res/layout/manage_space_activity.xml
--- a/chrome/android/java/res/layout/manage_space_activity.xml
+++ b/chrome/android/java/res/layout/manage_space_activity.xml
@@ -652,7 +678,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
@@ -651,7 +651,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
@@ -650,7 +650,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
});
mCrossDeviceSettingImporter =
@@ -661,7 +687,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab
? null
: new CrossDeviceSettingImporter(
activityLifecycleDispatcher,
@@ -2226,7 +2226,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
@@ -2225,7 +2225,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
} else if (id == R.id.toggle_bookmark_bar) {
// isActivityStateBookmarkBarCompatible already checks the flag sAndroidBookmarkBar.
if (BookmarkBarUtils.isActivityStateBookmarkBarCompatible(mActivity)) {
@@ -670,6 +696,30 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab
// Desktop uses the synced UserPref.
BookmarkBarUtils.toggleUserPrefsShowBookmarksBar(
mProfileSupplier.get(), /* fromKeyboardShortcut= */ true);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java b/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java
@@ -133,7 +133,7 @@ public final class ReturnToChromeUtil {
PersistableBundle persistableBundle,
ChromeInactivityTracker inactivityTracker) {
// If the device is android desktop, don't show a NTP homepage.
- if (ChromeFeatureList.sNtpSimplification.isEnabled() && DeviceInfo.isDesktop()) {
+ if (ChromeFeatureList.sNtpSimplification.isEnabled() && DeviceInfo.isDesktopFalse()) {
return false;
}
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
@@ -2391,7 +2391,7 @@ public class ToolbarManager
mActivityTabProvider.asObservable(),
mTabCreatorManager.getTabCreator(false),
getBrowsingModeThemeColorProvider(),
- (ToolbarTablet) mToolbarLayout,
+ mToolbarLayout,
contextMenuPopulatorFactory,
selectionDropdownMenuDelegate);
if (mExtensionToolbarCoordinator != null) {
diff --git a/chrome/app/extensions_strings.grdp b/chrome/app/extensions_strings.grdp
--- a/chrome/app/extensions_strings.grdp
+++ b/chrome/app/extensions_strings.grdp
@@ -714,7 +764,7 @@ diff --git a/chrome/app/theme/theme_resources.grd b/chrome/app/theme/theme_resou
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -7471,7 +7471,7 @@ static_library("browser") {
@@ -7469,7 +7469,7 @@ static_library("browser") {
deps += [ "//media/mojo/mojom:remoting" ]
}
@@ -723,7 +773,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
sources += [ "download/download_crx_util_android.cc" ]
}
@@ -7815,7 +7815,7 @@ static_library("browser") {
@@ -7813,7 +7813,7 @@ static_library("browser") {
# TODO(https://crbug.com/356905053): Add more dependencies here and merge this
# block with the `enable_extensions` block above.
@@ -732,7 +782,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
sources += [
# TODO(https://crbug.com/356905053): These files are temporary workarounds
# allow for a lightweight extensions runtime in desktop-android builds.
@@ -8595,7 +8595,7 @@ static_library("browser_generated_files") {
@@ -8593,7 +8593,7 @@ static_library("browser_generated_files") {
[ "//chrome/browser/ui/webui/new_tab_page/foo:mojo_bindings" ]
}
}
@@ -831,7 +881,7 @@ diff --git a/chrome/browser/browser_controls/android/java/src/org/chromium/chrom
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
--- a/chrome/browser/browser_process_impl.cc
+++ b/chrome/browser/browser_process_impl.cc
@@ -394,7 +394,7 @@ void BrowserProcessImpl::Init() {
@@ -396,7 +396,7 @@ void BrowserProcessImpl::Init() {
// TODO(devlin): Move this block out of BrowserProcessImpl to somewhere like
// //chrome/browser/initialize_extensions_browser_client, analogous to
// `EnsureExtensionsClientInitialized()` above?
@@ -1173,10 +1223,47 @@ diff --git a/chrome/browser/extensions/api/identity/web_auth_flow.h b/chrome/bro
base::WeakPtrFactory<WebAuthFlow> weak_factory_{this};
#endif
};
diff --git a/chrome/browser/extensions/api/tabs/tabs_api.cc b/chrome/browser/extensions/api/tabs/tabs_api.cc
--- a/chrome/browser/extensions/api/tabs/tabs_api.cc
+++ b/chrome/browser/extensions/api/tabs/tabs_api.cc
@@ -1693,6 +1693,9 @@ base::ListValue TabsQueryFunction::BuildTabList(
}
TabListInterface* tab_list = TabListInterface::From(browser);
+#if BUILDFLAG(IS_ANDROID)
+ if (!tab_list) return result;
+#endif
for (int i = 0; i < tab_list->GetTabCount(); ++i) {
if (tab_index > -1 && i != tab_index) {
continue;
diff --git a/chrome/browser/extensions/api/tabs/tabs_event_router.cc b/chrome/browser/extensions/api/tabs/tabs_event_router.cc
--- a/chrome/browser/extensions/api/tabs/tabs_event_router.cc
+++ b/chrome/browser/extensions/api/tabs/tabs_event_router.cc
@@ -408,6 +408,9 @@ void TabsEventRouter::OnTabAdded(TabListInterface& tab_list,
@@ -344,7 +344,12 @@ void TabsEventRouter::DispatchTabRemovedEvent(
api::tabs::OnRemoved::kEventName, std::move(args),
EventRouter::UserGestureState::kUnknown);
- UnregisterForTabNotifications(web_contents, /*expect_registered=*/true);
+#if BUILDFLAG(IS_ANDROID)
+ bool expect_registered = false;
+#else
+ bool expect_registered = true;
+#endif
+ UnregisterForTabNotifications(web_contents, expect_registered);
}
void TabsEventRouter::DispatchTabDetachedEvent(
@@ -392,6 +397,9 @@ void TabsEventRouter::UpdateTabIndices(TabListInterface& tab_list) {
std::vector<tabs::TabInterface*> tabs = tab_list.GetAllTabs();
for (size_t i = 0; i < tabs.size(); ++i) {
content::WebContents* web_contents = tabs[i]->GetContents();
+#if BUILDFLAG(IS_ANDROID)
+ if (!web_contents) continue;
+#endif
CHECK(web_contents);
TabEntry* tab_entry = GetTabEntry(*web_contents);
if (!tab_entry) {
@@ -408,6 +416,9 @@ void TabsEventRouter::OnTabAdded(TabListInterface& tab_list,
tabs::TabInterface* tab,
int index) {
content::WebContents* contents = tab->GetContents();
@@ -1186,6 +1273,111 @@ diff --git a/chrome/browser/extensions/api/tabs/tabs_event_router.cc b/chrome/br
CHECK(contents);
// Adding a new tab can affect the indices of all existing tabs in the tab
@@ -490,6 +501,9 @@ void TabsEventRouter::OnTabRemoved(TabListInterface& tab_list,
tabs::TabInterface* tab,
TabRemovedReason removed_reason) {
content::WebContents* web_contents = tab->GetContents();
+#if BUILDFLAG(IS_ANDROID)
+ if (!web_contents) return;
+#endif
CHECK(web_contents);
// Removing a tab can affect the indices of all existing tabs in the tab
@@ -513,6 +527,9 @@ void TabsEventRouter::OnTabMoved(TabListInterface& tab_list,
int to_index) {
CHECK(tab);
content::WebContents* web_contents = tab->GetContents();
+#if BUILDFLAG(IS_ANDROID)
+ if (!web_contents) return;
+#endif
CHECK(web_contents);
// Moving tab can affect the indices of all existing tabs in the tab list
@@ -551,6 +568,9 @@ void TabsEventRouter::OnHighlightedTabsChanged(
for (tabs::TabInterface* tab : highlighted_tabs) {
content::WebContents* web_contents = tab->GetContents();
+#if BUILDFLAG(IS_ANDROID)
+ if (!web_contents) continue;
+#endif
CHECK(web_contents);
// All the tabs should be in the same window, so just grab the window ID and
diff --git a/chrome/browser/extensions/browser_extension_window_controller.cc b/chrome/browser/extensions/browser_extension_window_controller.cc
--- a/chrome/browser/extensions/browser_extension_window_controller.cc
+++ b/chrome/browser/extensions/browser_extension_window_controller.cc
@@ -105,11 +105,12 @@ BrowserExtensionWindowController::BrowserExtensionWindowController(
#if !BUILDFLAG(IS_ANDROID)
window_(CHECK_DEREF(browser->GetBrowserForMigrationOnly()->window())),
#endif // !BUILDFLAG(IS_ANDROID)
- tab_list_(CHECK_DEREF(TabListInterface::From(browser))),
+ tab_list_(TabListInterface::From(browser)),
session_id_(browser->GetSessionID()),
window_type_(GetTabsWindowType(browser)),
scoped_data_holder_(browser->GetUnownedUserDataHost(), *this) {
WindowControllerList::GetInstance()->AddExtensionWindow(this);
+ tab_list_->AddTabListInterfaceObserver(this);
}
BrowserExtensionWindowController::~BrowserExtensionWindowController() {
@@ -122,6 +123,11 @@ BrowserExtensionWindowController* BrowserExtensionWindowController::From(
browser_window_interface->GetUnownedUserDataHost());
}
+void BrowserExtensionWindowController::OnTabListDestroyed(TabListInterface& tab_list) {
+ tab_list_->RemoveTabListInterfaceObserver(this);
+ tab_list_ = nullptr;
+}
+
int BrowserExtensionWindowController::GetWindowId() const {
return static_cast<int>(session_id_.id());
}
@@ -268,7 +274,7 @@ base::ListValue BrowserExtensionWindowController::CreateTabList(
ExtensionTabUtil::GetScrubTabBehavior(extension, context, web_contents);
tab_list.Append(
ExtensionTabUtil::CreateTabObject(web_contents, scrub_tab_behavior,
- extension, &tab_list_.get(), i)
+ extension, tab_list_, i)
.ToValue());
}
diff --git a/chrome/browser/extensions/browser_extension_window_controller.h b/chrome/browser/extensions/browser_extension_window_controller.h
--- a/chrome/browser/extensions/browser_extension_window_controller.h
+++ b/chrome/browser/extensions/browser_extension_window_controller.h
@@ -7,6 +7,7 @@
#include "base/memory/raw_ref.h"
#include "chrome/browser/extensions/window_controller.h"
+#include "chrome/browser/tab_list/tab_list_interface_observer.h"
#include "components/sessions/core/session_id.h"
#include "extensions/buildflags/buildflags.h"
#include "ui/base/unowned_user_data/scoped_unowned_user_data.h"
@@ -27,7 +28,7 @@ namespace api::tabs {
enum class WindowType;
} // namespace api::tabs
-class BrowserExtensionWindowController : public WindowController {
+class BrowserExtensionWindowController : public WindowController, TabListInterfaceObserver {
public:
DECLARE_USER_DATA(BrowserExtensionWindowController);
@@ -70,6 +71,7 @@ class BrowserExtensionWindowController : public WindowController {
bool OpenOptionsPage(const Extension* extension,
const GURL& url,
bool open_in_tab) override;
+ void OnTabListDestroyed(TabListInterface& tab_list) override;
private:
const raw_ref<BrowserWindowInterface> browser_;
@@ -78,7 +80,7 @@ class BrowserExtensionWindowController : public WindowController {
#if !BUILDFLAG(IS_ANDROID)
const raw_ref<BrowserWindow> window_;
#endif
- const raw_ref<TabListInterface> tab_list_;
+ raw_ptr<TabListInterface> tab_list_;
const SessionID session_id_;
const api::tabs::WindowType window_type_;
diff --git a/chrome/browser/extensions/extension_management.cc b/chrome/browser/extensions/extension_management.cc
--- a/chrome/browser/extensions/extension_management.cc
+++ b/chrome/browser/extensions/extension_management.cc
@@ -1252,6 +1444,18 @@ diff --git a/chrome/browser/extensions/extension_util.cc b/chrome/browser/extens
Profile* profile = Profile::FromBrowserContext(context);
return ExtensionsDisabledViaCommandLine(command_line) ||
profile->GetPrefs()->GetBoolean(prefs::kDisableExtensions);
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedFeatures.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedFeatures.java
--- a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedFeatures.java
+++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedFeatures.java
@@ -37,7 +37,7 @@ public final class FeedFeatures {
* enterprise policy, or by flag. The value returned should not be cached as it may change.
*/
public static boolean isFeedEnabled(Profile profile) {
- return (!ChromeFeatureList.sNtpSimplification.isEnabled() || !DeviceInfo.isDesktop())
+ return (!ChromeFeatureList.sNtpSimplification.isEnabled() || !DeviceInfo.isDesktopCromite())
&& FeedServiceBridge.isEnabled()
&& isFeedEnabledByDSE(profile);
}
diff --git a/chrome/browser/feedback/android/java/src/org/chromium/chrome/browser/feedback/DeviceInfoFeedbackSource.java b/chrome/browser/feedback/android/java/src/org/chromium/chrome/browser/feedback/DeviceInfoFeedbackSource.java
--- a/chrome/browser/feedback/android/java/src/org/chromium/chrome/browser/feedback/DeviceInfoFeedbackSource.java
+++ b/chrome/browser/feedback/android/java/src/org/chromium/chrome/browser/feedback/DeviceInfoFeedbackSource.java
@@ -1294,6 +1498,30 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
public static final CachedFlag sReportNotificationContentDetectionData =
newCachedFlag(
REPORT_NOTIFICATION_CONTENT_DETECTION_DATA,
diff --git a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/IncognitoUtils.java b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/IncognitoUtils.java
--- a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/IncognitoUtils.java
+++ b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/IncognitoUtils.java
@@ -97,7 +97,7 @@ public class IncognitoUtils {
// The feature should be ON for Android Desktop.
// The screen size check is not reliable on Android Desktop emulator.
sShouldOpenIncognitoAsWindowForTesting =
- DeviceInfo.isDesktop()
+ DeviceInfo.isDesktopFalse()
|| ThreadUtils.runOnUiThreadBlocking(
() ->
DisplayUtil.isGlobalDefaultDisplayWithMinDiagonal(
diff --git a/chrome/browser/magic_stack/android/java/src/org/chromium/chrome/browser/magic_stack/HomeModulesConfigManager.java b/chrome/browser/magic_stack/android/java/src/org/chromium/chrome/browser/magic_stack/HomeModulesConfigManager.java
--- a/chrome/browser/magic_stack/android/java/src/org/chromium/chrome/browser/magic_stack/HomeModulesConfigManager.java
+++ b/chrome/browser/magic_stack/android/java/src/org/chromium/chrome/browser/magic_stack/HomeModulesConfigManager.java
@@ -89,7 +89,7 @@ public class HomeModulesConfigManager {
*/
public boolean getPrefModuleTypeEnabled(@ModuleType int moduleType) {
boolean defaultEnabled =
- !ChromeFeatureList.sNtpSimplification.isEnabled() || !DeviceInfo.isDesktop();
+ !ChromeFeatureList.sNtpSimplification.isEnabled() || !DeviceInfo.isDesktopFalse();
return mSharedPreferencesManager.readBoolean(
getSettingsPreferenceKey(moduleType), defaultEnabled);
}
diff --git a/chrome/browser/media/router/BUILD.gn b/chrome/browser/media/router/BUILD.gn
--- a/chrome/browser/media/router/BUILD.gn
+++ b/chrome/browser/media/router/BUILD.gn
@@ -1567,7 +1795,7 @@ diff --git a/chrome/browser/resources/extensions/item_list.css b/chrome/browser/
#content-wrapper {
min-width: var(--extensions-card-width);
+<if expr="is_android">
+ padding: 0px !important;
+ padding: 0 !important;
+</if>
+<if expr="not is_android">
padding: 24px 60px 64px;
@@ -2086,6 +2314,18 @@ new file mode 100644
+ Enable experimental support for extensions in Android
+ </message>
+</grit-part>
diff --git a/chrome/browser/ui/android/tab_model/tab_model.cc b/chrome/browser/ui/android/tab_model/tab_model.cc
--- a/chrome/browser/ui/android/tab_model/tab_model.cc
+++ b/chrome/browser/ui/android/tab_model/tab_model.cc
@@ -173,7 +173,7 @@ bool TabListInterface::CanEditTabList(Profile& profile) {
// static
bool TabModel::EnableBrowserWindowInterfaceMobile() {
-#if BUILDFLAG(IS_DESKTOP_ANDROID)
+#if BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)
return true;
#else // !BUILDFLAG(IS_DESKTOP_ANDROID)
return base::FeatureList::IsEnabled(
diff --git a/chrome/browser/ui/android/tab_model/tab_model_test_helper.h b/chrome/browser/ui/android/tab_model/tab_model_test_helper.h
--- a/chrome/browser/ui/android/tab_model/tab_model_test_helper.h
+++ b/chrome/browser/ui/android/tab_model/tab_model_test_helper.h
@@ -2108,7 +2348,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_phone.xml
+ <ViewStub
+ android:id="@+id/extension_toolbar_container_stub"
+ android:inflatedId="@+id/extension_toolbar_container"
+ android:layout_width="56dp"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent" />
+
<org.chromium.chrome.browser.toolbar.top.ToggleTabStackButton
@@ -2148,6 +2388,15 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
}
@Override
@@ -148,7 +156,7 @@ public class ExtensionToolbarCoordinatorImpl implements ExtensionToolbarCoordina
}
private void setHasSpaceToShow(boolean hasSpaceToShow) {
- int visibility = hasSpaceToShow ? View.VISIBLE : View.GONE;
+ int visibility = View.VISIBLE;
mContainer.findViewById(R.id.extensions_menu_button).setVisibility(visibility);
mContainer.findViewById(R.id.extensions_divider).setVisibility(visibility);
}
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuCoordinator.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuCoordinator.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuCoordinator.java
@@ -2254,10 +2503,22 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
onContextMenuButtonClicked((ListMenuButton) view, entry.id))
+ .with(
+ ExtensionsMenuItemProperties.ITEM_CLICK_LISTENER,
+ (view) -> mExtensionActionListCoordinator.click(actionId))
+ (view) -> mExtensionActionListCoordinator.openPopup(entry.id))
.with(
ExtensionsMenuItemProperties.CONTEXT_MENU_BUTTON_ICON,
contextMenuIcon)
diff --git a/chrome/browser/ui/browser_window/BUILD.gn b/chrome/browser/ui/browser_window/BUILD.gn
--- a/chrome/browser/ui/browser_window/BUILD.gn
+++ b/chrome/browser/ui/browser_window/BUILD.gn
@@ -75,7 +75,7 @@ if (!is_android) {
# These tests don't work on mobile Android due to the lack of multi-window
# support.
-if (!is_android || is_desktop_android) {
+if (!is_android || is_desktop_android_cromite) {
source_set("browser_tests") {
testonly = true
sources = [ "internal/profile_browser_collection_browsertest.cc" ]
diff --git a/chrome/browser/ui/browser_window/internal/android/java/src/org/chromium/chrome/browser/ui/browser_window/ChromeAndroidTaskTrackerFactory.java b/chrome/browser/ui/browser_window/internal/android/java/src/org/chromium/chrome/browser/ui/browser_window/ChromeAndroidTaskTrackerFactory.java
--- a/chrome/browser/ui/browser_window/internal/android/java/src/org/chromium/chrome/browser/ui/browser_window/ChromeAndroidTaskTrackerFactory.java
+++ b/chrome/browser/ui/browser_window/internal/android/java/src/org/chromium/chrome/browser/ui/browser_window/ChromeAndroidTaskTrackerFactory.java
@@ -3031,6 +3292,15 @@ diff --git a/content/public/common/content_features.cc b/content/public/common/c
base::FEATURE_DISABLED_BY_DEFAULT
#else
base::FEATURE_ENABLED_BY_DEFAULT
@@ -1488,7 +1488,7 @@ bool IsFluidResizeEnabled() {
// dragging seen on tablets and desktops.
return base::FeatureList::IsEnabled(features::kFluidResize) &&
(base::android::device_info::is_tablet() ||
- base::android::device_info::is_desktop());
+ base::android::device_info::is_desktop_false());
}
#endif
diff --git a/content/public/renderer/render_frame_media_playback_options.cc b/content/public/renderer/render_frame_media_playback_options.cc
--- a/content/public/renderer/render_frame_media_playback_options.cc
+++ b/content/public/renderer/render_frame_media_playback_options.cc
@@ -3403,6 +3673,18 @@ diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc
return false;
}
#endif
diff --git a/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java b/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java
--- a/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java
+++ b/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java
@@ -186,7 +186,7 @@ class AudioManagerAndroid {
// Set the audio capture policy based on the device class.
// For non-desktop devices, allow capture only by the system.
// For desktop devices, use the default behavior to allow capture by all apps.
- if (!DeviceInfo.isDesktop()) {
+ if (!DeviceInfo.isDesktopFalse()) {
mAudioManager.setAllowedCapturePolicy(AudioAttributes.ALLOW_CAPTURE_BY_SYSTEM);
}
diff --git a/net/features.gni b/net/features.gni
--- a/net/features.gni
+++ b/net/features.gni
@@ -3487,6 +3769,18 @@ diff --git a/tools/json_schema_compiler/cpp_bundle_generator.py b/tools/json_sch
elif platform == Platforms.LINUX:
ifdefs.append('BUILDFLAG(IS_LINUX)')
elif platform == Platforms.MAC:
diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
--- a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
+++ b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
@@ -650,7 +650,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
// (e.g., MIME type */*), the Camera is often included in the app list by default, creating
// a confusing experience for desktop users who expect a standard file picker.
ArrayList<Intent> extraIntents = new ArrayList<>();
- if (!DeviceInfo.isDesktop()) {
+ if (!DeviceInfo.isDesktopFalse()) {
if (shouldShowImageTypes() && camera != null) extraIntents.add(camera);
if (shouldShowVideoTypes() && camcorder != null) extraIntents.add(camcorder);
if (shouldShowAudioTypes() && soundRecorder != null) extraIntents.add(soundRecorder);
diff --git a/ui/android/java/src/org/chromium/ui/widget/PopupSpecCalculator.java b/ui/android/java/src/org/chromium/ui/widget/PopupSpecCalculator.java
--- a/ui/android/java/src/org/chromium/ui/widget/PopupSpecCalculator.java
+++ b/ui/android/java/src/org/chromium/ui/widget/PopupSpecCalculator.java
@@ -83,7 +83,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../user_scripts/browser/user_script_loader.h | 168 ++++
.../browser/user_script_pref_info.cc | 34 +
.../browser/user_script_pref_info.h | 72 ++
.../user_scripts/browser/user_script_prefs.cc | 275 ++++++
.../user_scripts/browser/user_script_prefs.cc | 277 ++++++
.../user_scripts/browser/user_script_prefs.h | 62 ++
.../browser/userscripts_browser_client.cc | 78 ++
.../browser/userscripts_browser_client.h | 62 ++
@@ -123,7 +123,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../user_scripts/renderer/scripts_run_info.h | 70 ++
.../renderer/user_script_injector.cc | 227 +++++
.../renderer/user_script_injector.h | 86 ++
.../user_scripts/renderer/user_script_set.cc | 264 ++++++
.../user_scripts/renderer/user_script_set.cc | 260 ++++++
.../user_scripts/renderer/user_script_set.h | 101 +++
.../renderer/user_script_set_manager.cc | 65 ++
.../renderer/user_script_set_manager.h | 56 ++
@@ -136,7 +136,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../strings/userscripts_strings.grdp | 54 ++
.../Experimental-user-scripts-support.inc | 13 +
tools/gritsettings/resource_ids.spec | 6 +
109 files changed, 10494 insertions(+), 3 deletions(-)
109 files changed, 10492 insertions(+), 3 deletions(-)
create mode 100644 components/user_scripts/README.md
create mode 100755 components/user_scripts/android/BUILD.gn
create mode 100644 components/user_scripts/android/java/res/layout/accept_script_item.xml
@@ -338,7 +338,7 @@ diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -3583,6 +3583,13 @@ static_library("browser") {
@@ -3581,6 +3581,13 @@ static_library("browser") {
]
deps += [ "//chrome/android/modules/dev_ui/provider:native" ]
}
@@ -5123,7 +5123,7 @@ diff --git a/components/user_scripts/browser/user_script_prefs.cc b/components/u
new file mode 100644
--- /dev/null
+++ b/components/user_scripts/browser/user_script_prefs.cc
@@ -0,0 +1,275 @@
@@ -0,0 +1,277 @@
+/*
+ This file is part of Bromite.
+
@@ -5144,7 +5144,9 @@ new file mode 100644
+#include <map>
+
+#include "base/values.h"
+#include "base/logging.h"
+#include "base/strings/string_number_conversions.h"
+#include "base/strings/string_util.h"
+#include "base/json/json_writer.h"
+
+#include "chrome/browser/browser_process.h"
@@ -5214,14 +5216,14 @@ new file mode 100644
+ DCHECK(dict);
+ const std::string* value_str = dict->GetDict().FindString(key);
+ if (!value_str) {
+ VLOG(2) << "Can't find key in local pref dictionary. Invalid key: " << key
+ << ".";
+ LOG(INFO) << "Can't find key in local pref dictionary. Invalid key: " << key
+ << ".";
+ return false;
+ }
+
+ if (!base::StringToInt64(*value_str, value)) {
+ VLOG(2) << "Can't change string to int64_t. Invalid string value: "
+ << *value_str << ".";
+ LOG(INFO) << "Can't change string to int64_t. Invalid string value: "
+ << *value_str << ".";
+ return false;
+ }
+
@@ -10533,7 +10535,7 @@ diff --git a/components/user_scripts/renderer/user_script_set.cc b/components/us
new file mode 100755
--- /dev/null
+++ b/components/user_scripts/renderer/user_script_set.cc
@@ -0,0 +1,264 @@
@@ -0,0 +1,260 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
@@ -10664,19 +10666,15 @@ new file mode 100755
+ // Note that this is a pointer into shared memory. We don't own it. It gets
+ // cleared up when the last renderer or browser process drops their
+ // reference to the shared memory.
+ for (size_t j = 0; j < script->js_scripts().size(); ++j) {
+ const char* body = NULL;
+ size_t body_length = 0;
+ CHECK(iter.ReadData(&body, &body_length));
+ script->js_scripts()[j]->set_external_content(
+ std::string_view(body, body_length));
+ for (const auto& js_script : script->js_scripts()) {
+ std::string_view body;
+ CHECK(iter.ReadStringPiece(&body));
+ js_script->set_external_content(body);
+ }
+ for (size_t j = 0; j < script->css_scripts().size(); ++j) {
+ const char* body = NULL;
+ size_t body_length = 0;
+ CHECK(iter.ReadData(&body, &body_length));
+ script->css_scripts()[j]->set_external_content(
+ std::string_view(body, body_length));
+ for (const auto& css_script : script->css_scripts()) {
+ std::string_view body;
+ CHECK(iter.ReadStringPiece(&body));
+ css_script->set_external_content(body);
+ }
+
+ if (only_inject_incognito && !script->is_incognito_enabled())
+1 -1
View File
@@ -1796,7 +1796,7 @@ diff --git a/chrome/browser/resources/settings/page_visibility.ts b/chrome/brows
diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resources/settings/route.ts
--- a/chrome/browser/resources/settings/route.ts
+++ b/chrome/browser/resources/settings/route.ts
@@ -272,6 +272,10 @@ function createRoutes(): SettingsRoutes {
@@ -274,6 +274,10 @@ function createRoutes(): SettingsRoutes {
'/onStartup', 'onStartup', loadTimeData.getString('onStartup'));
}
@@ -33,8 +33,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../history/core/browser/history_service.h | 8 +++
components/history/core/common/pref_names.cc | 4 ++
components/history/core/common/pref_names.h | 1 +
.../history_embeddings/core/sql_database.cc | 2 +-
.../omnibox/browser/shortcuts_backend.cc | 4 +-
24 files changed, 263 insertions(+), 15 deletions(-)
25 files changed, 264 insertions(+), 16 deletions(-)
create mode 100644 components/cromite_components_strings_grd/History-number-of-days-privacy-setting.grdp
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -662,6 +663,18 @@ diff --git a/components/history/core/common/pref_names.h b/components/history/co
extern const char kAllowDeletingBrowserHistory[];
} // namespace prefs
diff --git a/components/history_embeddings/core/sql_database.cc b/components/history_embeddings/core/sql_database.cc
--- a/components/history_embeddings/core/sql_database.cc
+++ b/components/history_embeddings/core/sql_database.cc
@@ -183,7 +183,7 @@ sql::InitStatus SqlDatabase::InitInternal(const base::FilePath& storage_dir,
// Chrome is running, but it's possible to miss events or start Chrome after
// some down time, so this prevents long term accidental retention edge cases.
DeleteExpiredData(/*expiration_time=*/base::Time::Now() -
- base::Days(history::HistoryBackend::kExpireDaysThreshold));
+ base::Days(/*kExpireDaysThreshold*/ 90));
// It's possible to get here without `embedder_metadata_` if forcing for
// data deletion. In that case, don't check or change meta table.
diff --git a/components/omnibox/browser/shortcuts_backend.cc b/components/omnibox/browser/shortcuts_backend.cc
--- a/components/omnibox/browser/shortcuts_backend.cc
+++ b/components/omnibox/browser/shortcuts_backend.cc
+1 -1
View File
@@ -60,7 +60,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -2419,6 +2419,7 @@ static_library("browser") {
@@ -2417,6 +2417,7 @@ static_library("browser") {
"//third_party/ungoogled:switches",
"//services/device/public/mojom",
"//services/device/public/mojom:usb",
+1 -1
View File
@@ -116,7 +116,7 @@ diff --git a/third_party/blink/renderer/core/events/keyboard_event.cc b/third_pa
+ is_editable = IsEditable(*node) ||
+ (text_control && !text_control->IsDisabledOrReadOnly()) ||
+ (element &&
+ EqualIgnoringASCIICase(
+ EqualIgnoringAsciiCase(
+ element->FastGetAttribute(html_names::kRoleAttr), "textbox"));
+ }
+ }
@@ -10,20 +10,20 @@ under enable-log-dangling-attributes about flag
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
...gling-attributes-in-some-html-elements.inc | 8 +++++++
.../blink/renderer/core/dom/document.cc | 18 +++++++++++++++
.../blink/renderer/core/dom/element.cc | 20 ++++++++++++++++-
.../blink/renderer/core/dom/document.cc | 18 ++++++++++++++++
.../blink/renderer/core/dom/element.cc | 20 +++++++++++++++++-
third_party/blink/renderer/core/dom/element.h | 3 ++-
.../editing/serializers/markup_formatter.cc | 12 ++++++++++
.../editing/serializers/markup_formatter.cc | 12 +++++++++++
.../core/html/forms/html_form_element.cc | 2 +-
.../renderer/core/html/html_base_element.cc | 6 +++++
.../renderer/core/html/html_base_element.cc | 6 ++++++
.../renderer/core/html/html_base_element.h | 2 ++
.../core/html/html_frame_element_base.cc | 10 +++++++++
.../renderer/core/html/html_iframe_element.cc | 16 ++++++++++++++
.../renderer/core/html/html_iframe_element.h | 2 ++
.../core/loader/frame_load_request.cc | 9 ++++++++
.../blink/renderer/core/page/frame_tree.cc | 22 +++++++++++++++++++
.../platform/runtime_enabled_features.json5 | 6 +++++
14 files changed, 133 insertions(+), 3 deletions(-)
.../blink/renderer/core/page/frame_tree.cc | 21 +++++++++++++++++++
.../platform/runtime_enabled_features.json5 | 6 ++++++
14 files changed, 132 insertions(+), 3 deletions(-)
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Log-dangling-attributes-in-some-html-elements.inc
diff --git a/cromite_flags/chrome/browser/about_flags_cc/Log-dangling-attributes-in-some-html-elements.inc b/cromite_flags/chrome/browser/about_flags_cc/Log-dangling-attributes-in-some-html-elements.inc
@@ -76,7 +76,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
UseCounter::Count(*this, WebFeature::kBaseWithOpenBracketInTarget);
}
base_target_ = *target;
+ if (target->Contains('\n') || target->Contains('\r') || target->Contains('<'))
+ if (target->contains('\n') || target->contains('\r') || target->contains('<'))
+ base_target_ = g_null_atom;
} else {
base_target_ = g_null_atom;
@@ -92,7 +92,7 @@ diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/
+ Vector<Attribute, kAttributePrealloc>& attribute_vector) {
+ for (auto& attribute : attribute_vector) {
+ auto value = attribute.Value();
+ if (value.Contains('\n') || value.Contains('<')) {
+ if (value.contains('\n') || value.contains('<')) {
+ if (RuntimeEnabledFeatures::LogDanglingAttributesEnabled()) {
+ GetDocument().AddConsoleMessage(MakeGarbageCollected<ConsoleMessage>(
+ mojom::ConsoleMessageSource::kSecurity,
@@ -201,7 +201,7 @@ diff --git a/third_party/blink/renderer/core/html/html_frame_element_base.cc b/t
frame_name_ = value;
} else if (name == html_names::kNameAttr) {
frame_name_ = value;
+ if (value.Contains('\n') || value.Contains('<')) {
+ if (value.contains('\n') || value.contains('<')) {
+ if (RuntimeEnabledFeatures::LogDanglingAttributesEnabled()) {
+ GetDocument().AddConsoleMessage(MakeGarbageCollected<ConsoleMessage>(
+ mojom::ConsoleMessageSource::kSecurity,
@@ -234,7 +234,7 @@ diff --git a/third_party/blink/renderer/core/html/html_iframe_element.cc b/third
}
AtomicString old_name = name_;
name_ = value;
+ if (name_.Contains('\n') || name_.Contains('<')) {
+ if (name_.contains('\n') || name_.contains('<')) {
+ if (RuntimeEnabledFeatures::LogDanglingAttributesEnabled()) {
+ GetDocument().AddConsoleMessage(MakeGarbageCollected<ConsoleMessage>(
+ mojom::ConsoleMessageSource::kSecurity,
@@ -298,20 +298,19 @@ diff --git a/third_party/blink/renderer/core/page/frame_tree.cc b/third_party/bl
#include "third_party/blink/renderer/core/frame/frame_client.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/core/frame/local_frame.h"
@@ -42,6 +45,12 @@ namespace {
@@ -42,6 +45,11 @@ namespace {
const unsigned kInvalidChildCount = ~0U;
+bool ContainsNewLineAndLessThan(const AtomicString& target) {
+ return (target.Contains('\n') || target.Contains('\r') ||
+ target.Contains('\t')) &&
+ target.Contains('<');
+ return (target.contains('\n') || target.contains('\r') ||
+ target.contains('\t')) && target.contains('<');
+}
+
} // namespace
FrameTree::FrameTree(Frame* this_frame)
@@ -212,6 +221,19 @@ FrameTree::FindResult FrameTree::FindOrCreateFrameForNavigation(
@@ -212,6 +220,19 @@ FrameTree::FindResult FrameTree::FindOrCreateFrameForNavigation(
if (request.GetNavigationPolicy() != kNavigationPolicyCurrentTab)
return FindResult(current_frame, false);
+216 -61
View File
@@ -15,8 +15,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
cc/base/features.cc | 8 +
cc/base/features.h | 2 +
cc/input/browser_controls_offset_manager.cc | 6 +
cc/trees/layer_tree_host_impl.cc | 3 +
cc/input/browser_controls_offset_manager.cc | 8 +
cc/trees/layer_tree_host_impl.cc | 5 +-
.../tab_management/TabGroupUiCoordinator.java | 8 +-
.../tab_management/TabGroupUiMediator.java | 52 +++++-
.../tab_management/TabGroupUiProperties.java | 5 +
@@ -36,12 +36,13 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../layouts/LayoutManagerChrome.java | 12 +-
.../layouts/LayoutManagerChromeTablet.java | 7 +-
.../layouts/ToolbarSwipeLayout.java | 14 +-
.../layouts/phone/NewTabAnimationLayout.java | 7 +-
.../overlays/strip/ScrollDelegate.java | 2 +-
.../strip/StripLayoutHelperManager.java | 39 ++++-
.../strip/StripLayoutHelperManager.java | 43 ++++-
.../scene_layer/StaticTabSceneLayer.java | 7 +-
.../scene_layer/TabStripSceneLayer.java | 20 ++-
.../browser/findinpage/FindToolbarTablet.java | 10 +-
.../fullscreen/BrowserControlsManager.java | 12 ++
.../fullscreen/BrowserControlsManager.java | 17 +-
.../messages/MessageContainerCoordinator.java | 15 +-
.../modaldialog/ChromeTabModalPresenter.java | 2 +-
.../chrome/browser/ntp/NewTabPage.java | 14 +-
@@ -55,11 +56,13 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../browser/toolbar/ToolbarManager.java | 37 ++++-
.../chrome/browser/ui/BottomContainer.java | 18 +++
.../ui/system/StatusBarColorController.java | 8 +
.../android/compositor/layer/toolbar_layer.cc | 5 +
.../android/compositor/layer/toolbar_layer.cc | 6 +-
.../scene_layer/tab_strip_scene_layer.cc | 16 +-
.../BottomControlsStacker.java | 2 +-
.../BrowserControlsMarginAdapter.java | 5 +
.../BrowserControlsStateProvider.java | 6 +
.../BrowserControlsUtils.java | 2 +-
.../browser_controls/TopControlsStacker.java | 6 +-
.../browser/feed/FeedListContentManager.java | 6 +-
.../flags/android/chrome_feature_list.cc | 3 +
.../browser/flags/ChromeFeatureList.java | 10 ++
@@ -76,10 +79,10 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../ui/edge_to_edge/EdgeToEdgeUtils.java | 2 +
...rredIMEWindowInsetApplicationCallback.java | 7 +
.../omnibox/LocationBarCoordinator.java | 1 +
...mniboxSuggestionsDropdownEmbedderImpl.java | 31 ++++
...mniboxSuggestionsDropdownEmbedderImpl.java | 35 +++++
.../suggestions/AutocompleteCoordinator.java | 16 ++
.../suggestions/AutocompleteMediator.java | 6 +-
.../OmniboxSuggestionsDropdown.java | 5 +
.../OmniboxSuggestionsDropdown.java | 10 +-
.../OmniboxSuggestionsDropdownEmbedder.java | 6 +
.../base/BaseSuggestionViewBinder.java | 7 +
.../strings/android_chrome_strings.grd | 6 +
@@ -92,18 +95,20 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../bottom/BottomControlsProperties.java | 6 +-
.../bottom/BottomControlsViewBinder.java | 2 +
.../bottom/ScrollingBottomViewSceneLayer.java | 19 ++-
.../settings/AddressBarPreference.java | 1 +
.../toolbar/top/ToolbarControlContainer.java | 9 ++
.../top/TopToolbarOverlayCoordinator.java | 10 ++
.../toolbar/top/TopToolbarCoordinator.java | 2 +-
.../top/TopToolbarOverlayCoordinator.java | 12 +-
.../top/TopToolbarOverlayProperties.java | 8 +-
.../toolbar/top/TopToolbarSceneLayer.java | 10 +-
.../toolbar/top/TopToolbarSceneLayer.java | 14 +-
.../res/xml/accessibility_preferences.xml | 8 +
.../accessibility/AccessibilitySettings.java | 27 ++++
.../AccessibilitySettingsDelegate.java | 8 +
components/viz/common/features.cc | 3 +-
components/viz/common/features.cc | 1 +
.../render_widget_host_view_android.cc | 3 +
.../Move-navigation-bar-to-bottom.inc | 17 ++
.../renderer/core/frame/viewport_data.cc | 1 +
90 files changed, 1056 insertions(+), 89 deletions(-)
95 files changed, 1087 insertions(+), 103 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
@@ -148,7 +153,16 @@ diff --git a/cc/input/browser_controls_offset_manager.cc b/cc/input/browser_cont
namespace cc {
namespace {
@@ -676,6 +677,11 @@ gfx::Vector2dF BrowserControlsOffsetManager::ScrollByPrecise(
@@ -94,6 +95,8 @@ BrowserControlsOffsetManager::BrowserControlsOffsetManager(
BrowserControlsOffsetManager::~BrowserControlsOffsetManager() = default;
float BrowserControlsOffsetManager::ControlsTopOffset() const {
+ if (base::FeatureList::IsEnabled(::features::kMoveTopToolbarToBottom))
+ return 0;
return ContentTopOffset() - TopControlsHeight();
}
@@ -676,6 +679,11 @@ gfx::Vector2dF BrowserControlsOffsetManager::ScrollByPrecise(
// content. If the top controls have no height, the content should scroll
// immediately.
gfx::Vector2dF applied_delta(0.f, old_top_offset - ContentTopOffset());
@@ -163,12 +177,28 @@ 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
@@ -5408,6 +5408,9 @@ bool LayerTreeHostImpl::AnimateBrowserControls(base::TimeTicks time) {
@@ -2753,7 +2753,7 @@ viz::CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() {
browser_controls_offset_manager_->TopControlsShownRatio();
metadata.top_controls_visible_height.emplace(visible_height);
-#if BUILDFLAG(IS_ANDROID)
+#if BUILDFLAG(IS_ANDROID) && false
const viz::OffsetTag& top_controls_offset_tag =
browser_controls_offset_manager_->TopControlsOffsetTag();
const viz::OffsetTag& content_offset_tag =
@@ -2791,7 +2791,7 @@ viz::CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() {
#endif
}
-#if BUILDFLAG(IS_ANDROID)
+#if BUILDFLAG(IS_ANDROID) && false
if (browser_controls_offset_manager_->BottomControlsHeight() > 0) {
const viz::OffsetTag& bottom_controls_offset_tag =
browser_controls_offset_manager_->BottomControlsOffsetTag();
@@ -5408,6 +5408,7 @@ bool LayerTreeHostImpl::AnimateBrowserControls(base::TimeTicks time) {
return false;
}
+ if (base::FeatureList::IsEnabled(::features::kMoveTopToolbarToBottom))
+ return false;
+
// This counter-scrolls the page to keep the appearance of the page content
// being fixed while the browser controls animate.
@@ -1030,6 +1060,30 @@ 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/layouts/phone/NewTabAnimationLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/NewTabAnimationLayout.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/NewTabAnimationLayout.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/NewTabAnimationLayout.java
@@ -461,6 +461,10 @@ public class NewTabAnimationLayout extends Layout {
boolean oldTabHasTopToolbar = ToolbarPositionController.shouldShowToolbarOnTop(oldTab);
boolean newTabHasTopToolbar = ToolbarPositionController.shouldShowToolbarOnTop(newTab);
+ if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) {
+ oldTabHasTopToolbar = false;
+ newTabHasTopToolbar = false;
+ }
if (oldTabHasTopToolbar && newTabHasTopToolbar) {
return RectStart.TOP_TOOLBAR;
@@ -697,7 +701,8 @@ public class NewTabAnimationLayout extends Layout {
int[] toolbarPosition = new int[2];
mAnimationHostView.findViewById(R.id.toolbar).getLocationInWindow(toolbarPosition);
boolean isTopToolbar =
- isRegularNtp || ToolbarPositionController.shouldShowToolbarOnTop(animationTab);
+ isRegularNtp || ToolbarPositionController.shouldShowToolbarOnTop(animationTab)
+ || !ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled();
int toolbarHeight = toolbarPosition[1] + getTopInsetIfNeeded(animationTab);
Rect compositorViewRect = new Rect();
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
@@ -1045,16 +1099,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java
@@ -127,6 +127,8 @@ import org.chromium.ui.interpolators.Interpolators;
@@ -127,6 +127,9 @@ import org.chromium.ui.interpolators.Interpolators;
import org.chromium.ui.resources.ResourceManager;
import org.chromium.ui.util.ColorUtils;
import org.chromium.url.GURL;
+import org.chromium.chrome.browser.fullscreen.BrowserControlsManager;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import java.util.function.Supplier;
import java.util.ArrayList;
import java.util.List;
@@ -309,12 +311,17 @@ public class StripLayoutHelperManager
@@ -309,12 +312,17 @@ public class StripLayoutHelperManager
// Drag-Drop
private @Nullable TabStripDragHandler mTabStripDragHandler;
@@ -1072,7 +1127,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
if (mGlicButton != null && mGlicButton.onDown(x, y, buttons)) {
return;
}
@@ -346,6 +353,7 @@ public class StripLayoutHelperManager
@@ -346,6 +354,7 @@ public class StripLayoutHelperManager
if (DragDropGlobalState.hasValue()) {
return;
}
@@ -1080,7 +1135,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
if (mGlicButton != null) {
mGlicButton.drag(x, y);
}
@@ -360,6 +368,7 @@ public class StripLayoutHelperManager
@@ -360,6 +369,7 @@ public class StripLayoutHelperManager
if (DragDropGlobalState.hasValue()) {
return;
}
@@ -1088,7 +1143,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
long time = time();
if (mGlicButton != null && mGlicButton.click(x, y, buttons)) {
mGlicButton.handleClick(time, buttons, modifiers);
@@ -377,6 +386,7 @@ public class StripLayoutHelperManager
@@ -377,6 +387,7 @@ public class StripLayoutHelperManager
if (DragDropGlobalState.hasValue()) {
return;
}
@@ -1096,7 +1151,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
getActiveStripLayoutHelper().fling(time(), velocityX);
}
@@ -415,6 +425,7 @@ public class StripLayoutHelperManager
@@ -415,6 +426,7 @@ public class StripLayoutHelperManager
if (DragDropGlobalState.hasValue()) {
return;
}
@@ -1104,7 +1159,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
getActiveStripLayoutHelper().onHoverMove(x, y);
}
@@ -537,7 +548,8 @@ public class StripLayoutHelperManager
@@ -537,7 +549,8 @@ public class StripLayoutHelperManager
@Nullable NonNullObservableSupplier<Boolean> xrSpaceModeObservableSupplier,
BackPressManager backPressManager,
SnackbarManager snackbarManager,
@@ -1114,7 +1169,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
mContext = context;
Resources res = context.getResources();
mManagerHost = managerHost;
@@ -695,6 +707,8 @@ public class StripLayoutHelperManager
@@ -695,6 +708,8 @@ public class StripLayoutHelperManager
shareDelegateSupplier,
TabGroupListBottomSheetCoordinator::new,
snackbarManager);
@@ -1123,7 +1178,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
tabHoverCardViewStub.setOnInflateListener(
(viewStub, view) -> {
@@ -1042,6 +1056,7 @@ public class StripLayoutHelperManager
@@ -1042,6 +1057,7 @@ public class StripLayoutHelperManager
RectF viewport, RectF visibleViewport, ResourceManager resourceManager) {
assert mTabStripTreeProvider != null;
mResourceManager = resourceManager;
@@ -1131,7 +1186,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
// When refactor is enabled, the mSceneLayerYOffset / mSceneLayerVisibleHeight wil be
// calculated externally, so we can skip the adjustment here.
@@ -1085,6 +1100,10 @@ public class StripLayoutHelperManager
@@ -1085,6 +1101,10 @@ public class StripLayoutHelperManager
getStripTransitionScrimColor(), mStripTransitionScrimOpacity);
}
@@ -1142,7 +1197,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
mTabStripTreeProvider.pushAndUpdateStrip(
this,
assertNonNull(mLayerTitleCacheSupplier.get()),
@@ -1098,7 +1117,9 @@ public class StripLayoutHelperManager
@@ -1098,7 +1118,9 @@ public class StripLayoutHelperManager
mStripTransitionScrimOpacity,
getActiveStripLayoutHelper().getLeftPaddingToDraw(),
getActiveStripLayoutHelper().getRightPaddingToDraw(),
@@ -1153,7 +1208,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
}
private float getVisibleHeightDp(float topControlOffsetDp) {
@@ -1199,11 +1220,21 @@ public class StripLayoutHelperManager
@@ -1199,11 +1221,21 @@ public class StripLayoutHelperManager
mRightPadding,
mTopPadding);
@@ -1177,6 +1232,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
// Avoid handling motion events when invisible strip state persists after a size change.
if (mEventFilter != null
&& getStripVisibilityStateSupplier().get() == StripVisibilityState.VISIBLE) {
@@ -1240,7 +1272,8 @@ public class StripLayoutHelperManager
// TODO(crbug/331490430): Revisit how we position the scrollable strip.
mTopPadding = Math.max(0, mHeight - mScrollableStripHeight);
- onSizeChanged(mWidth, mHeight, mLastVisibleViewportOffsetY, mOrientation);
+ if (!ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled())
+ onSizeChanged(mWidth, mHeight, mLastVisibleViewportOffsetY, mOrientation);
}
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/StaticTabSceneLayer.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/StaticTabSceneLayer.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/StaticTabSceneLayer.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/StaticTabSceneLayer.java
@@ -1303,6 +1368,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/Brow
return getTopControlsHeight() + getTopControlOffset();
}
@@ -931,7 +943,10 @@ public class BrowserControlsManager implements ActivityStateListener, BrowserCon
TraceEvent.scoped("BrowserControlsManager.notifyControlOffsetChanged")) {
scheduleVisibilityUpdate();
if (shouldShowAndroidControls() && mControlsPosition == ControlsPosition.TOP) {
- mControlContainer.getView().setTranslationY(getTopControlOffset());
+ var topControlOffset = getTopControlOffset();
+ if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled())
+ topControlOffset = -topControlOffset;
+ mControlContainer.getView().setTranslationY(topControlOffset);
}
// Explicitly tell the compositor to draw again. Should be |true| only when the android
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/messages/MessageContainerCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/messages/MessageContainerCoordinator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/messages/MessageContainerCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/messages/MessageContainerCoordinator.java
@@ -1793,17 +1870,18 @@ diff --git a/chrome/browser/android/compositor/layer/toolbar_layer.cc b/chrome/b
#include "cc/resources/scoped_ui_resource.h"
#include "cc/slim/layer.h"
#include "cc/slim/nine_patch_layer.h"
@@ -159,6 +160,10 @@ void ToolbarLayer::PushResource(int toolbar_resource_id,
y_offset = legacy_content_offset - layer_->bounds().height();
}
@@ -153,7 +154,10 @@ void ToolbarLayer::PushResource(int toolbar_resource_id,
// always at the bottom of the browser controls. This is no longer the case
// as for 2025.
// TODO(https://crbug.com/454338286): Rename / remove in favor of y_Offset.
- if (!base::FeatureList::IsEnabled(chrome::android::kTopControlsRefactor) ||
+ if (base::FeatureList::IsEnabled(::features::kMoveTopToolbarToBottom)) {
+ y_offset = legacy_content_offset + layer_->bounds().height();
+ y_offset = y_offset + legacy_content_offset - layer_->bounds().height() - resource->shadow_height();
+ }
+
layer_->SetPosition(gfx::PointF(x_offset, y_offset));
layer_->SetOffsetTag(offset_tag);
}
+ else if (!base::FeatureList::IsEnabled(chrome::android::kTopControlsRefactor) ||
!base::FeatureList::IsEnabled(chrome::android::kTopControlsRefactorV2) ||
kInvalidContentOffset != legacy_content_offset) {
y_offset = legacy_content_offset - layer_->bounds().height();
diff --git a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer.cc b/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer.cc
--- a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer.cc
+++ b/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer.cc
@@ -1901,6 +1979,41 @@ diff --git a/chrome/browser/browser_controls/android/java/src/org/chromium/chrom
/**
* @return The minimum visible height top controls can have in pixels.
*/
diff --git a/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BrowserControlsUtils.java b/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BrowserControlsUtils.java
--- a/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BrowserControlsUtils.java
+++ b/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BrowserControlsUtils.java
@@ -83,7 +83,7 @@ public class BrowserControlsUtils {
* @return Whether the browser controls should be drawn as a texture.
*/
public static boolean drawControlsAsTexture(BrowserControlsStateProvider stateProvider) {
- return stateProvider.getBrowserControlHiddenRatio() > 0;
+ return false;
}
/**
diff --git a/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/TopControlsStacker.java b/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/TopControlsStacker.java
--- a/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/TopControlsStacker.java
+++ b/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/TopControlsStacker.java
@@ -549,7 +549,7 @@ public class TopControlsStacker implements BrowserControlsStateProvider.Observer
// mLayerYOffsets has the visually accurate offsets. This is needed so we can handle
// offset updates due to constraint changes.
if (!offsetsAppliedByBrowser) {
- yOffset = mLayerRestingOffsets.get(type);
+ //yOffset = mLayerRestingOffsets.get(type);
}
}
layer.onBrowserControlsOffsetUpdate(yOffset, controlsAtResting);
@@ -606,8 +606,8 @@ public class TopControlsStacker implements BrowserControlsStateProvider.Observer
// To avoid scrollable layers keeps getting update after it is scrolled off,
// limit the yOffset, so the scrollable layer's bottom is aligned with
// the bottom of the last non-scrollable layer (nonScrollableYOffset).
- int optimizedYOffset =
- Math.max(scrollableYOffset, nonScrollableYOffset - layerHeight);
+ int optimizedYOffset = scrollableYOffset;
+ //Math.max(scrollableYOffset, nonScrollableYOffset - layerHeight);
yOffsetOfLayers.put(type, optimizedYOffset);
scrollableYOffset += layerHeight;
}
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedListContentManager.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedListContentManager.java
--- a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedListContentManager.java
+++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedListContentManager.java
@@ -2465,21 +2578,25 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
}
if (isTablet()) {
@@ -368,6 +384,13 @@ class OmniboxSuggestionsDropdownEmbedderImpl
@@ -368,6 +384,17 @@ class OmniboxSuggestionsDropdownEmbedderImpl
height = Math.min(windowSpace, contentSpace) - top;
}
+ if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) {
+ ViewCompat.setPaddingRelative(
+ contentView, 0, 0, 0, keyboardHeight + mSystemBarInsetsBottomSupplier.get());
+ top = 0;
+ height -= mSystemBarInsetsBottomSupplier.get();
+ if (keyboardHeight > 0) {
+ ViewCompat.setPaddingRelative(
+ contentView, 0, 0, 0, keyboardHeight + mSystemBarInsetsBottomSupplier.get());
+ height -= mSystemBarInsetsBottomSupplier.get();
+ } else {
+ detachKeyboardAlignment();
+ }
+ }
+
// TODO(pnoland@, https://crbug.com/1416985): avoid pushing changes that are identical to
// the previous alignment value.
OmniboxAlignment omniboxAlignment =
@@ -410,6 +433,14 @@ class OmniboxSuggestionsDropdownEmbedderImpl
@@ -410,6 +437,14 @@ class OmniboxSuggestionsDropdownEmbedderImpl
return result;
}
@@ -2574,17 +2691,22 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdown.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdown.java
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdown.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdown.java
@@ -294,6 +294,9 @@ public class OmniboxSuggestionsDropdown extends RecyclerView {
@@ -292,8 +292,12 @@ public class OmniboxSuggestionsDropdown extends RecyclerView {
final Resources resources = context.getResources();
mBaseBottomPadding =
resources.getDimensionPixelOffset(R.dimen.omnibox_suggestion_list_padding_bottom);
mBaseTopPadding =
resources.getDimensionPixelOffset(R.dimen.omnibox_suggestion_list_padding_top);
- mBaseTopPadding =
- resources.getDimensionPixelOffset(R.dimen.omnibox_suggestion_list_padding_top);
+ if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) {
+ paddingTop = 0;
+ mBaseTopPadding = 0;
+ } else {
+ mBaseTopPadding =
+ resources.getDimensionPixelOffset(R.dimen.omnibox_suggestion_list_padding_top);
+ }
this.setPaddingRelative(0, mBaseTopPadding, 0, mBaseBottomPadding);
// Disable the scrollbar since it causes the hover events happening near the
@@ -504,6 +507,8 @@ public class OmniboxSuggestionsDropdown extends RecyclerView {
@@ -504,6 +508,8 @@ public class OmniboxSuggestionsDropdown extends RecyclerView {
mToolbarOnTop =
!(ChromeFeatureList.sAndroidBottomToolbarV2ReverseOrderSuggestionsList.getValue()
&& toolbarPosition == ControlsPosition.BOTTOM);
@@ -2941,6 +3063,17 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
true,
mOffsetTag);
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/settings/AddressBarPreference.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/settings/AddressBarPreference.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/settings/AddressBarPreference.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/settings/AddressBarPreference.java
@@ -82,6 +82,7 @@ public class AddressBarPreference extends ContainedRadioButtonGroupPreference
* configurable for experimental purposes but defaults to top.
*/
public static boolean isToolbarConfiguredToShowOnTop() {
+ if ((true)) return true;
// enumToBoolean is true if position is bottom, but this method wants whether it's on top.
var t = computeToolbarPositionAndSource();
return !isToolbarAtBottom(t);
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java
@@ -2955,9 +3088,9 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
/** Layout for the browser controls (omnibox, menu, tab strip, etc..). */
@NullMarked
public class ToolbarControlContainer extends OptimizedFrameLayout
@@ -193,6 +197,11 @@ public class ToolbarControlContainer extends OptimizedFrameLayout
if (view != null)
((MarginLayoutParams)view.getLayoutParams()).topMargin = tab_strip_height;
@@ -180,6 +184,11 @@ public class ToolbarControlContainer extends OptimizedFrameLayout
Resources res = getContext().getResources();
setMinimumHeight((int) res.getDimension(toolbarLayoutHeightResId));
}
+ if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) {
+ // the top toolbar is docked at the bottom
@@ -2967,6 +3100,17 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
mToolbarContainer = findViewById(R.id.toolbar_container);
mToolbarLayoutHeight = getResources().getDimensionPixelSize(toolbarLayoutHeightResId);
ViewStub toolbarStub = findViewById(R.id.toolbar_stub);
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator.java
@@ -1049,6 +1049,6 @@ public class TopToolbarCoordinator implements Toolbar, TopControlLayer {
hairlineAdjustment = -mControlContainer.getToolbarHairlineHeight();
}
- assertNonNull(mOverlayCoordinator).setYOffset(mLayerYOffset - diff + hairlineAdjustment);
+ assertNonNull(mOverlayCoordinator).setYOffsetLegacy(mLayerYOffset - diff + hairlineAdjustment);
}
}
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarOverlayCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarOverlayCoordinator.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarOverlayCoordinator.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarOverlayCoordinator.java
@@ -2998,6 +3142,15 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
.build();
mSceneLayer = new TopToolbarSceneLayer(resourceManagerSupplier);
mChangeProcessor =
@@ -117,7 +126,7 @@ public class TopToolbarOverlayCoordinator implements SceneOverlay {
}
/** Set the yOffset */
- public void setYOffset(float yOffset) {
+ public void setYOffsetLegacy(float yOffset) {
mMediator.setYOffset(yOffset);
}
@@ -151,6 +160,7 @@ public class TopToolbarOverlayCoordinator implements SceneOverlay {
@Override
public SceneOverlayLayer getUpdatedSceneOverlayTree(
@@ -3040,26 +3193,30 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
import java.util.function.Supplier;
@@ -45,6 +46,13 @@ class TopToolbarSceneLayer extends SceneOverlayLayer {
@@ -45,6 +46,15 @@ class TopToolbarSceneLayer extends SceneOverlayLayer {
/** Push all information about the texture to native at once. */
private void pushProperties(PropertyModel model) {
if (mResourceManagerSupplier.get() == null) return;
+ float offsetY = model.get(TopToolbarOverlayProperties.LEGACY_CONTENT_OFFSET);
+ float contentOffset = model.get(TopToolbarOverlayProperties.LEGACY_CONTENT_OFFSET);
+ if (contentOffset == -10001 /*INVALID_CONTENT_OFFSET*/) return;
+ float yOffset = model.get(TopToolbarOverlayProperties.Y_OFFSET);
+ if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) {
+ // fix the offset of the fake top controls, used only for animations
+ offsetY = model.get(TopToolbarOverlayProperties.VIEWPORT_HEIGHT) -
+ model.get(TopToolbarOverlayProperties.TOOLBAR_HEIGHT) -
+ offsetY;
+ yOffset = model.get(TopToolbarOverlayProperties.VIEWPORT_HEIGHT) -
+ model.get(TopToolbarOverlayProperties.TOOLBAR_HEIGHT);
+ }
+
TopToolbarSceneLayerJni.get()
.updateToolbarLayer(
mNativePtr,
@@ -55,7 +63,7 @@ class TopToolbarSceneLayer extends SceneOverlayLayer {
@@ -54,8 +64,8 @@ class TopToolbarSceneLayer extends SceneOverlayLayer {
model.get(TopToolbarOverlayProperties.URL_BAR_RESOURCE_ID),
model.get(TopToolbarOverlayProperties.URL_BAR_COLOR),
model.get(TopToolbarOverlayProperties.X_OFFSET),
model.get(TopToolbarOverlayProperties.Y_OFFSET),
- model.get(TopToolbarOverlayProperties.Y_OFFSET),
- model.get(TopToolbarOverlayProperties.LEGACY_CONTENT_OFFSET),
+ offsetY,
+ yOffset,
+ contentOffset,
model.get(TopToolbarOverlayProperties.SHOW_SHADOW),
model.get(TopToolbarOverlayProperties.VISIBLE),
model.get(TopToolbarOverlayProperties.ANONYMIZE),
@@ -3165,12 +3322,10 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c
diff --git a/components/viz/common/features.cc b/components/viz/common/features.cc
--- a/components/viz/common/features.cc
+++ b/components/viz/common/features.cc
@@ -33,7 +33,8 @@
@@ -34,6 +34,7 @@
namespace features {
-#if BUILDFLAG(IS_ANDROID)
+#if BUILDFLAG(IS_ANDROID)SET_CROMITE_FEATURE_DISABLED(kAndroidBrowserControlsInViz);
#if BUILDFLAG(IS_ANDROID)
+
// If this flag is enabled, a DumpWithoutCrashing() is captured when a bad
// state is detected when moving the composited UI. For example, this could
@@ -1118,7 +1118,7 @@ diff --git a/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/w
@VisibleForTesting
public static @Nullable DigitalCredential extractDigitalCredentialFromResponseBundle(
int code, Bundle bundle) throws JSONException {
+ if ((true)) throw new JSONException();
+ if ((true)) throw new JSONException("not reached");
Intent intent = IntentUtils.safeGetParcelable(bundle, BUNDLE_KEY_PROVIDER_DATA);
if (intent == null) {
return null;
@@ -27,7 +27,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -1329,6 +1329,16 @@ static_library("browser") {
@@ -1327,6 +1327,16 @@ static_library("browser") {
"webauthn/webauthn_switches.cc",
]
@@ -32,9 +32,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../ntp/search/SearchBoxViewBinder.java | 1 +
.../suggestions/SuggestionsConfig.java | 2 +-
.../SuggestionsNavigationDelegate.java | 27 +-
.../tile/MostVisitedTilesCoordinator.java | 6 +-
.../tile/MostVisitedTilesCoordinator.java | 8 +-
.../tile/MostVisitedTilesGridLayout.java | 287 ++++++++++++++++++
.../tile/MostVisitedTilesMediator.java | 8 +-
.../tile/MostVisitedTilesMediator.java | 12 +-
.../tile/TileDragDelegateImpl.java | 18 +-
.../suggestions/tile/TileRenderer.java | 12 +-
.../suggestions/tile/TilesLinearLayout.java | 2 +-
@@ -49,9 +49,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
components/omnibox/common/omnibox_features.cc | 2 +
components/search_engines/template_url.h | 4 +-
.../Restore-Simplified-NTP-launch.inc | 12 +
.../Restore-Simplified-NTP-launch.inc | 10 +
.../Restore-Simplified-NTP-launch.inc | 8 +
.../Restore-Simplified-NTP-launch.inc | 1 +
45 files changed, 648 insertions(+), 63 deletions(-)
45 files changed, 647 insertions(+), 68 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
@@ -1044,6 +1044,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/til
mRenderer =
new TileRenderer(
mActivity, SuggestionsConfig.getTileStyle(mUiConfig), TITLE_LINES, null);
@@ -88,7 +84,7 @@ public class MostVisitedTilesCoordinator implements ConfigurationChangedObserver
new MostVisitedTilesMediator(
activity,
mUiConfig,
- mvTilesContainerLayout,
+ tilesLayout,
mRenderer,
propertyModel,
isTablet,
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesGridLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesGridLayout.java
new file mode 100644
--- /dev/null
@@ -1370,7 +1379,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/til
}
public void onConfigurationChanged() {
@@ -383,7 +381,5 @@ public class MostVisitedTilesMediator implements TileGroup.Observer {
@@ -264,10 +262,6 @@ public class MostVisitedTilesMediator implements TileGroup.Observer {
* recalculate the value of |mMvtContentFits|.
*/
void updateMvtOnTablet(@Nullable Integer totalWidth) {
- if (totalWidth != null) {
- mMvtContentFits = mMvTilesLayout.contentFitsOnTablet(totalWidth);
- }
-
MarginLayoutParams marginLayoutParams =
(MarginLayoutParams) mMvTilesContainerLayout.getLayoutParams();
marginLayoutParams.width =
@@ -383,7 +377,5 @@ public class MostVisitedTilesMediator implements TileGroup.Observer {
double firstTileScore = mTileGroup.getSuggestionScore(firstTile.getUrl());
if (firstTileScore < MVT_CUSTOMIZATION_IPH_TILE_SCORE_THRESHOULD) return;
@@ -1673,16 +1693,14 @@ diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/R
new file mode 100644
--- /dev/null
+++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Restore-Simplified-NTP-launch.inc
@@ -0,0 +1,10 @@
@@ -0,0 +1,8 @@
+CROMITE_FEATURE(kSimplifiedNTP,
+ "SimplifiedNTP",
+ base::FEATURE_ENABLED_BY_DEFAULT);
+
+SET_CROMITE_FEATURE_DISABLED(kMagicStackAndroid);
+
+SET_CROMITE_FEATURE_DISABLED(kNewTabPageCustomization);
+SET_CROMITE_FEATURE_DISABLED(kNewTabPageCustomizationV2);
+SET_CROMITE_FEATURE_DISABLED(kNewTabPageCustomizationToolbarButton);
+SET_CROMITE_FEATURE_DISABLED(kNewTabPageCustomizationForMvt);
diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/Restore-Simplified-NTP-launch.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/Restore-Simplified-NTP-launch.inc
new file mode 100644
@@ -67,7 +67,7 @@ diff --git a/chrome/browser/segmentation_platform/segmentation_platform_config.c
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
@@ -5246,6 +5246,9 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
@@ -5243,6 +5243,9 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
<message name="IDS_READER_MODE_MESSAGE_BUTTON" desc="The label for the button to open the current page in reader mode.">
View
</message>
@@ -1353,8 +1353,8 @@ new file mode 100644
+}
+
+void CredentialEditBridge::SaveChanges(JNIEnv* env,
+ std::u16string& username,
+ std::u16string& password) {
+ const std::u16string& username,
+ const std::u16string& password) {
+ password_manager::CredentialUIEntry updated_credential = credential_;
+ updated_credential.username = username;
+ updated_credential.password = password;
@@ -1460,8 +1460,8 @@ new file mode 100644
+
+ // Called by Java to save the changes to the edited credential.
+ void SaveChanges(JNIEnv* env,
+ std::u16string& username,
+ std::u16string& password);
+ const std::u16string& username,
+ const std::u16string& password);
+
+ // Called by Java to remove the credential from the store.
+ void DeleteCredential(JNIEnv* env);
@@ -26,7 +26,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
...alled_service_worker_module_script_fetcher.cc | 1 +
.../modulescript/module_script_loader_test.cc | 1 +
.../modulescript/worker_module_script_fetcher.cc | 3 ++-
.../renderer/core/workers/dedicated_worker.cc | 9 +++++++++
.../renderer/core/workers/dedicated_worker.cc | 10 +++++++++-
.../renderer/core/workers/dedicated_worker.h | 3 +++
.../workers/dedicated_worker_global_scope.cc | 9 ++++++++-
.../core/workers/dedicated_worker_global_scope.h | 1 +
@@ -51,7 +51,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../webaudio/audio_worklet_global_scope_test.cc | 1 +
.../webaudio/audio_worklet_thread_test.cc | 1 +
.../worklet/worklet_thread_test_common.cc | 2 +-
34 files changed, 144 insertions(+), 8 deletions(-)
34 files changed, 144 insertions(+), 9 deletions(-)
diff --git a/third_party/blink/renderer/core/execution_context/execution_context.cc b/third_party/blink/renderer/core/execution_context/execution_context.cc
--- a/third_party/blink/renderer/core/execution_context/execution_context.cc
@@ -262,15 +262,16 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.cc b/third
mojo::PendingRemote<mojom::blink::BackForwardCacheControllerHost>
back_forward_cache_controller_host,
mojo::PendingReceiver<mojom::blink::ReportingObserver>
@@ -509,6 +515,7 @@ void DedicatedWorker::ContinueStartInternal(
@@ -509,7 +515,7 @@ void DedicatedWorker::ContinueStartInternal(
CreateGlobalScopeCreationParams(
script_url, referrer_policy,
std::move(response_content_security_policies),
+ response_address_space,
std::move(document_policy), std::move(coep_reporting_observer),
- std::move(document_policy), std::move(coep_reporting_observer),
+ std::move(document_policy), response_address_space, std::move(coep_reporting_observer),
std::move(dip_reporting_observer)),
std::move(worker_main_script_load_params), options_, script_url,
@@ -548,6 +555,7 @@ DedicatedWorker::CreateGlobalScopeCreationParams(
*outside_fetch_client_settings_object_, v8_stack_trace_id_, token_,
@@ -548,6 +554,7 @@ DedicatedWorker::CreateGlobalScopeCreationParams(
Vector<network::mojom::blink::ContentSecurityPolicyPtr>
response_content_security_policies,
DocumentPolicy::DocumentPolicyBundle document_policy,
@@ -278,7 +279,7 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.cc b/third
mojo::PendingReceiver<mojom::blink::ReportingObserver>
coep_reporting_observer,
mojo::PendingReceiver<mojom::blink::ReportingObserver>
@@ -600,6 +608,7 @@ DedicatedWorker::CreateGlobalScopeCreationParams(
@@ -600,6 +607,7 @@ DedicatedWorker::CreateGlobalScopeCreationParams(
std::move(document_policy), execution_context->GetSecurityOrigin(),
execution_context->IsSecureContext(), execution_context->GetHttpsState(),
MakeGarbageCollected<WorkerClients>(), CreateWebContentSettingsClient(),
+12 -3
View File
@@ -15,7 +15,7 @@ Require: Content-settings-infrastructure.patch
...ezoneoverride_site_settings_preference.xml | 68 ++++++
...imezoneOverrideSiteSettingsPreference.java | 196 ++++++++++++++++++
.../WebsitePreferenceBridge.java | 10 +
...BromiteTimezoneOverrideContentSetting.java | 148 +++++++++++++
...BromiteTimezoneOverrideContentSetting.java | 157 ++++++++++++++
.../android/website_preference_bridge.cc | 16 ++
.../bromite_content_settings/timezone.grdp | 39 ++++
.../timezone_override.inc | 24 +++
@@ -37,7 +37,7 @@ Require: Content-settings-infrastructure.patch
.../timezone/external_timezone_controller.h | 34 +++
.../core/timezone/timezone_controller.cc | 11 -
.../core/timezone/timezone_controller.h | 12 +-
27 files changed, 761 insertions(+), 17 deletions(-)
27 files changed, 770 insertions(+), 17 deletions(-)
create mode 100755 components/browser_ui/site_settings/android/java/res/layout/time_zone_select_dialog.xml
create mode 100755 components/browser_ui/site_settings/android/java/res/layout/timezoneoverride_site_settings_preference.xml
create mode 100755 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/TimezoneOverrideSiteSettingsPreference.java
@@ -414,7 +414,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
new file mode 100644
--- /dev/null
+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteTimezoneOverrideContentSetting.java
@@ -0,0 +1,148 @@
@@ -0,0 +1,157 @@
+/*
+ This file is part of Bromite.
+
@@ -501,6 +501,15 @@ new file mode 100644
+ }
+
+ @Override
+ public int[] getTriStateSettingIconIDs() {
+ return new int[] {
+ R.drawable.web_asset,
+ R.drawable.web_asset,
+ R.drawable.sensors_off_24px
+ };
+ }
+
+ @Override
+ public int getCategoryDescription() {
+ return R.string.website_settings_timeoverride_info;
+ }
@@ -17,7 +17,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../TabGridDialogProperties.java | 3 +
.../tab_management/TabGridDialogView.java | 13 +
.../TabGridDialogViewBinder.java | 8 +
.../TabListContainerViewBinder.java | 29 +-
.../TabListContainerViewBinder.java | 34 +-
.../tab_management/TabListCoordinator.java | 37 +-
.../TabListEditorCoordinator.java | 2 +-
.../tab_management/TabListItemAnimator.java | 2 +-
@@ -42,7 +42,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, 1183 insertions(+), 39 deletions(-)
35 files changed, 1184 insertions(+), 43 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
@@ -302,7 +302,19 @@ 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/TabListContainerViewBinder.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListContainerViewBinder.java
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListContainerViewBinder.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListContainerViewBinder.java
@@ -305,14 +305,27 @@ class TabListContainerViewBinder {
@@ -86,10 +86,7 @@ class TabListContainerViewBinder {
mTabListRecyclerView = tabListRecyclerView;
mPaneHairline = paneHairline;
mSupplementaryContainer = supplementaryContainer;
- mSearchBoxGapPx =
- tabListRecyclerView
- .getResources()
- .getDimensionPixelSize(R.dimen.hub_search_box_gap);
+ mSearchBoxGapPx = 0;
}
}
@@ -305,14 +302,27 @@ class TabListContainerViewBinder {
}
if (width <= 0 || height <= 0) return 0;
@@ -1213,9 +1225,9 @@ diff --git a/chrome/browser/android/favicon_helper.cc b/chrome/browser/android/f
+jboolean FaviconHelper::GetComposedFaviconImage(
+ JNIEnv* env,
+ Profile* profile,
+ std::vector<GURL>& gurls,
+ jint j_desired_size_in_pixel,
+ const base::android::JavaRef<jobject>&
+ const std::vector<GURL>& gurls,
+ int32_t j_desired_size_in_pixel,
+ const JavaRef<jobject>&
+ j_composed_favicon_image_callback) {
+ DCHECK(profile);
+ if (!profile) {
@@ -1350,8 +1362,8 @@ diff --git a/chrome/browser/android/favicon_helper.h b/chrome/browser/android/fa
+ jboolean GetComposedFaviconImage(
+ JNIEnv* env,
+ Profile* profile,
+ std::vector<GURL>& gurls,
+ jint j_desired_size_in_pixel,
+ const std::vector<GURL>& gurls,
+ int32_t j_desired_size_in_pixel,
+ const base::android::JavaRef<jobject>& j_favicon_image_callback);
bool GetLocalFaviconImageForURL(
JNIEnv* env,
+2 -2
View File
@@ -995,8 +995,8 @@ diff --git a/chrome/browser/tabwindow/internal/android/java/src/org/chromium/chr
+ @Override
+ public void SetOverrideUserAgentForAllTabs(boolean usingDesktopUserAgent) {
+ for (Map.Entry<@WindowId Integer, WindowDeps> entry : mWindowIdToDeps.entrySet()) {
+ TabModelSelector selector = entry.getValue().selector;
+ for (Map.Entry<@WindowId Integer, TabModelSelector> entry : mWindowIdToSelectors.entrySet()) {
+ TabModelSelector selector = entry.getValue();
+ if (selector != null) {
+ List<TabModel> models = selector.getModels();
+ for (int modelIndex = 0; modelIndex < models.size(); modelIndex++) {
@@ -4,7 +4,8 @@ Subject: WIN Add some prefs to secure preferences
---
chrome/browser/prefs/chrome_pref_service_factory.cc | 8 ++++++++
1 file changed, 8 insertions(+)
services/preferences/tracked/pref_hash_filter.cc | 2 +-
2 files changed, 9 insertions(+), 1 deletion(-)
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
@@ -24,4 +25,16 @@ diff --git a/chrome/browser/prefs/chrome_pref_service_factory.cc b/chrome/browse
{0, prefs::kShowHomeButton, EnforcementLevel::ENFORCE_ON_LOAD,
PrefTrackingStrategy::ATOMIC, ValueType::IMPERSONAL},
{1, prefs::kHomePageIsNewTabPage, EnforcementLevel::ENFORCE_ON_LOAD,
diff --git a/services/preferences/tracked/pref_hash_filter.cc b/services/preferences/tracked/pref_hash_filter.cc
--- a/services/preferences/tracked/pref_hash_filter.cc
+++ b/services/preferences/tracked/pref_hash_filter.cc
@@ -131,7 +131,7 @@ PrefHashFilter::PrefHashFilter(
base::FeatureList::IsEnabled(tracked::kEncryptedPrefHashing)) {
// For base::UmaHistogramExactLinear, number of tracked histograms must 100 or
// below.
- CHECK_LE(reporting_ids_count_, 100u);
+ //CHECK_LE(reporting_ids_count_, 100u);
DCHECK(pref_hash_store_);
DCHECK_GE(reporting_ids_count, tracked_preferences.size());
// Verify that, if |external_validation_hash_store_pair_| is present, both its
--
+14 -1
View File
@@ -19,8 +19,9 @@ Subject: bromite build utils
.../browser/flags/CromiteNativeUtils.java | 46 ++++++++
mojo/public/tools/mojom/mojom_parser.py | 22 +++-
tools/grit/grit/grd_reader.py | 27 ++++-
tools/grit/grit_rule.gni | 2 +-
tools/grit/preprocess_if_expr.py | 32 +++++-
17 files changed, 538 insertions(+), 19 deletions(-)
18 files changed, 539 insertions(+), 20 deletions(-)
create mode 100644 build/bromite/bromite_utils.gni
create mode 100644 build/bromite/gyp/cpp_bromite_include.py
create mode 100644 build/bromite/gyp/cpp_bromite_include.pydeps
@@ -755,6 +756,18 @@ diff --git a/tools/grit/grit/grd_reader.py b/tools/grit/grit/grd_reader.py
if self.debug:
print("End parsing of element %s" % name)
diff --git a/tools/grit/grit_rule.gni b/tools/grit/grit_rule.gni
--- a/tools/grit/grit_rule.gni
+++ b/tools/grit/grit_rule.gni
@@ -360,7 +360,7 @@ template("grit") {
_gritdeps_lines = read_file(invoker.gritdeps, "list lines")
_gritdeps_entries = filter_exclude(_gritdeps_lines, [ "#*" ])
inputs += rebase_path(_gritdeps_entries, ".", "//")
- deps += [ ":$_check_gritdeps_target" ]
+ #deps += [ ":$_check_gritdeps_target" ]
}
}
diff --git a/tools/grit/preprocess_if_expr.py b/tools/grit/preprocess_if_expr.py
--- a/tools/grit/preprocess_if_expr.py
+++ b/tools/grit/preprocess_if_expr.py
@@ -11,15 +11,15 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -1058,6 +1058,10 @@ config("linker") {
cflags += [ "-fwrapv" ]
}
@@ -440,6 +440,10 @@ config("compiler") {
# --------------------------------
cflags += [ "-fno-strict-aliasing" ] # See http://crbug.com/32204
+ if (is_clang) {
+ cflags += [ "-ftrivial-auto-var-init=zero", "-Wno-unused-command-line-argument" ]
+ }
+
# Linker warnings.
if (fatal_linker_warnings && !is_apple && current_os != "aix" &&
current_os != "zos") {
# Stack protection. ShadowCallStack and Stack protector address the same
# problems. Therefore, we only enable one or the other. Clang advertises SCS as
# a stronger alternative to StackProtector, so we give SCS precedence over SP.
--
@@ -155,7 +155,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
@@ -3235,6 +3235,10 @@ static_library("browser") {
@@ -3233,6 +3233,10 @@ static_library("browser") {
]
deps += [ "//chrome/browser/password_entry_edit/android" ]
@@ -80,7 +80,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
"after_startup_task_utils.cc",
"after_startup_task_utils.h",
"bad_message.cc",
@@ -1983,6 +1988,7 @@ static_library("browser") {
@@ -1981,6 +1986,7 @@ static_library("browser") {
"//chrome/common/notifications",
"//chrome/installer/util:with_no_strings",
"//chrome/services/speech/buildflags",
@@ -88,7 +88,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
"//components/application_locale_storage",
"//components/assist_ranker",
"//components/autofill/content/browser",
@@ -8365,6 +8371,7 @@ static_library("browser_public_dependencies") {
@@ -8363,6 +8369,7 @@ static_library("browser_public_dependencies") {
"//chrome/services/file_util/public/mojom",
"//components/accessibility_annotator/core",
"//components/account_id",
@@ -14,7 +14,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
chrome/browser/chrome_browser_main.cc | 10 -
.../browser/chrome_content_browser_client.cc | 29 +-
...ent_browser_client_navigation_throttles.cc | 1 -
.../domain_reliability/service_factory.cc | 30 +-
.../domain_reliability/service_factory.cc | 28 +-
.../key_management/browser/commands/BUILD.gn | 1 -
.../commands/win_key_rotation_command.cc | 9 +-
chrome/browser/extensions/BUILD.gn | 1 -
@@ -71,7 +71,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
...gled-chromium-no-special-hosts-domains.inc | 1 +
net/base/url_util.cc | 25 +-
services/network/network_context.cc | 2 +-
64 files changed, 56 insertions(+), 890 deletions(-)
64 files changed, 56 insertions(+), 888 deletions(-)
create mode 100644 cromite_flags/content/public/common/content_features_cc/ungoogled-chromium-no-special-hosts-domains.inc
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
@@ -288,12 +288,10 @@ diff --git a/chrome/browser/chrome_content_browser_client_navigation_throttles.c
diff --git a/chrome/browser/domain_reliability/service_factory.cc b/chrome/browser/domain_reliability/service_factory.cc
--- a/chrome/browser/domain_reliability/service_factory.cc
+++ b/chrome/browser/domain_reliability/service_factory.cc
@@ -8,38 +8,10 @@
#include "base/metrics/field_trial.h"
#include "chrome/common/chrome_switches.h"
@@ -10,36 +10,10 @@
namespace domain_reliability {
-namespace domain_reliability {
-
-namespace {
-
-// If Domain Reliability is enabled in the absence of a flag or field trial.