Files
cromite/build/patches/Experimental-support-for-extensions-on-Android.patch

4160 lines
210 KiB
Diff
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
From: uazo <uazo@users.noreply.github.com>
Date: Thu, 6 Nov 2025 13:21:24 +0000
Subject: Experimental support for extensions on Android
Enable experimental support for extensions in Android.
The feature is disabled by default: to enable it, go
to Settings/Developer Options.
A Clear all data used by the extension button is available in App
info/Storage and cache/Clear storage to completely remove the extensions
folder in case of a crash on startup.
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
android_webview/BUILD.gn | 2 +-
.../src/partition_alloc/BUILD.gn | 2 +
base/android/device_info.cc | 8 +-
base/android/device_info.h | 3 +-
.../src/org/chromium/base/DeviceInfo.java | 8 +-
build/BUILD.gn | 2 +-
.../java/templates/BuildConfig.template | 8 +-
build/config/android/rules.gni | 4 +-
build/config/chrome_build.gni | 7 +-
build/config/compiler/BUILD.gn | 2 +-
build/config/compiler/pgo/BUILD.gn | 2 +-
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 +-
.../chrome/browser/ChromeTabbedActivity.java | 2 +-
.../chrome/browser/app/ChromeActivity.java | 2 +-
.../AppMenuPropertiesDelegateImpl.java | 2 +-
.../settings/AppearanceSettingsFragment.java | 2 +-
.../layouts/LayoutManagerChrome.java | 2 +-
.../overlays/strip/StripLayoutUtils.java | 2 +-
.../IncognitoCustomTabIntentDataProvider.java | 4 +
.../DesktopSiteSettingsIphController.java | 2 +-
.../ExternalNavigationDelegateImpl.java | 3 +
.../browser/multiwindow/MultiWindowUtils.java | 2 +-
.../ChromeSiteSettingsDelegate.java | 2 +-
.../site_settings/ManageSpaceActivity.java | 20 +++++
...InterceptNavigationDelegateClientImpl.java | 2 +-
.../browser/tab/RequestDesktopUtils.java | 2 +-
.../TabbedAppMenuPropertiesDelegate.java | 2 +-
.../tabbed_mode/TabbedRootUiCoordinator.java | 4 +-
.../browser/toolbar/ToolbarManager.java | 2 +-
chrome/app/extensions_strings.grdp | 7 ++
chrome/app/theme/theme_resources.grd | 4 +-
chrome/browser/BUILD.gn | 4 +-
chrome/browser/about_flags.cc | 4 +
...chrome_selection_dropdown_menu_delegate.cc | 4 +-
.../bookmarks/bar/BookmarkBarUtils.java | 6 +-
.../bar/BookmarkBarVisibilityProvider.java | 2 +-
.../BrowserControlsUtils.java | 2 +-
chrome/browser/browser_process_impl.cc | 2 +-
chrome/browser/chrome_browser_field_trials.cc | 76 +++++++++----------
.../chrome_browser_interface_binders_webui.cc | 4 +-
.../browser/chrome_content_browser_client.cc | 4 +-
chrome/browser/devtools/BUILD.gn | 2 +-
chrome/browser/download/BUILD.gn | 2 +-
.../chrome_download_manager_delegate.cc | 2 +-
.../download_offline_content_provider.cc | 4 +-
chrome/browser/extensions/BUILD.gn | 3 +-
.../chrome_extensions_api_client_android.cc | 2 +-
.../extensions/api/identity/web_auth_flow.cc | 6 +-
.../extensions/api/identity/web_auth_flow.h | 4 +-
.../browser/extensions/api/tabs/tabs_api.cc | 3 +
.../extensions/api/tabs/tabs_event_router.cc | 22 +++++-
.../browser_extension_window_controller.cc | 19 ++++-
.../browser_extension_window_controller.h | 6 +-
.../extensions/extension_management.cc | 8 +-
.../browser/extensions/extension_management.h | 2 +-
.../browser/extensions/extension_tab_util.cc | 9 ++-
chrome/browser/extensions/extension_util.cc | 11 +++
.../chrome/browser/feed/FeedFeatures.java | 2 +-
.../feedback/DeviceInfoFeedbackSource.java | 2 +-
chrome/browser/finds/core/finds_tab_helper.cc | 2 +-
.../browser/flags/ChromeFeatureList.java | 6 +-
chrome/browser/glic/public/features.cc | 2 +-
.../glic/service/glic_instance_impl.cc | 2 +-
.../browser/incognito/IncognitoUtils.java | 2 +-
chrome/browser/media/router/BUILD.gn | 4 +-
.../browser/media/router/discovery/BUILD.gn | 2 +-
.../media/router/media_router_feature.cc | 10 +--
.../media/router/media_router_feature.h | 2 +-
.../media/webrtc/webrtc_event_log_manager.cc | 4 +-
.../NtpCustomizationUtils.java | 2 +-
.../browser/open_in_app/OpenInAppUtils.java | 2 +-
.../policy_value_and_status_aggregator.cc | 2 +-
...hrome_browser_main_extra_parts_profiles.cc | 2 +-
.../profiles/off_the_record_profile_impl.cc | 5 +-
chrome/browser/profiles/profile_destroyer.cc | 2 +-
chrome/browser/resources/BUILD.gn | 2 +-
chrome/browser/resources/discards/BUILD.gn | 2 +-
.../resources/extensions/detail_view.css | 6 ++
.../resources/extensions/extensions.html | 8 +-
.../resources/extensions/item_list.css | 10 +++
.../browser/resources/extensions/manager.css | 4 +
.../resources/extensions/toolbar.html.ts | 7 --
.../sessions/session_restore_android.cc | 4 +-
...omeProvidedSharingOptionsProviderBase.java | 4 +-
chrome/browser/startup_data.cc | 6 +-
chrome/browser/startup_data.h | 6 +-
.../common/task_manager_features.cc | 2 +-
chrome/browser/ui/BUILD.gn | 4 +-
.../browser/ui/android/context_menu_helper.cc | 12 ++-
.../browser/ui/android/context_menu_helper.h | 4 +-
.../desktop_site/DesktopSiteUtils.java | 4 +-
.../TopControlsLockCoordinator.java | 2 +-
chrome/browser/ui/android/extensions/BUILD.gn | 4 +-
.../extensions/extension_actions_bridge.cc | 23 ++++++
.../extensions/extension_actions_bridge.h | 1 +
.../extensions/extensions_toolbar_android.cc | 1 +
.../res/layout/extensions_menu_footer.xml | 3 +-
.../extensions/java/res/values/dimens.xml | 1 +
.../ui/extensions/ExtensionActionsBridge.java | 6 ++
.../extensions/windowing/internal/BUILD.gn | 2 +-
.../extension_window_controller_bridge.cc | 17 +++--
.../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 ++
.../extensions/ExtensionsMenuCoordinator.java | 8 +-
.../ExtensionsMenuItemProperties.java | 4 +
.../ExtensionsMenuItemViewBinder.java | 2 +
.../extensions/ExtensionsMenuMediator.java | 9 ++-
.../ExtensionsToolbarCoordinatorImpl.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 +-
.../browser/ui/webui/chrome_web_ui_configs.cc | 4 +-
.../browser/ui/webui/current_channel_logo.cc | 3 +-
.../browser/ui/webui/discards/discards_ui.cc | 8 +-
chrome/chrome_paks.gni | 2 +-
chrome/common/chrome_features.cc | 2 +-
chrome/common/chrome_switches.cc | 2 +-
chrome/common/chrome_switches.h | 2 +-
chrome/common/extensions/api/api_sources.gni | 7 ++
chrome/common/webui_url_constants.cc | 2 +-
chrome/common/webui_url_constants.h | 2 +-
.../sandbox_status_extension_android.cc | 3 +-
.../sandbox_status_extension_android.h | 1 +
chrome/test/BUILD.gn | 22 +++---
chrome/version.gni | 4 +-
.../core/browser/host_content_settings_map.cc | 6 ++
.../embedder_support/view/ContentView.java | 2 +-
.../embedder_support/user_agent_utils.cc | 14 ++--
components/local_state/local_state_utils.cc | 2 +-
.../browser/android/media_router_android.cc | 2 +-
.../browser/android/media_router_android.h | 2 +-
.../media_router/browser/media_router.h | 4 +-
.../policy/CombinedPolicyProvider.java | 8 +-
.../components/policy/PolicyCacheUpdater.java | 2 +-
.../android/policy_cache_updater_android.cc | 4 +-
.../cloud/user_policy_signin_service_base.cc | 2 +-
.../configuration_policy_handler_list.cc | 4 +-
.../common/cloud/cloud_policy_constants.cc | 2 +-
components/policy/core/common/features.cc | 2 +-
.../policy/core/common/policy_merger.cc | 4 +-
.../installable/installable_icon_fetcher.cc | 6 +-
.../installable/installable_icon_fetcher.h | 2 +-
.../version/resources/about_version.html | 2 +-
.../selection/selection_popup_controller.cc | 5 ++
.../selection/selection_popup_controller.h | 1 +
content/browser/browser_main_loop.cc | 2 +-
.../render_widget_host_view_android.cc | 2 +-
.../browser/ContentUiEventHandler.java | 7 +-
.../SelectionPopupControllerImpl.java | 5 ++
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 +-
...ntal-support-for-extensions-on-Android.inc | 1 +
extensions/browser/BUILD.gn | 4 +-
...browser_context_keyed_service_factories.cc | 2 +-
extensions/browser/api/system_cpu/BUILD.gn | 2 +-
.../api/web_request/permission_helper.cc | 2 +-
extensions/browser/extension_frame_host.cc | 8 ++
extensions/browser/extension_host.cc | 24 +++++-
extensions/buildflags/BUILD.gn | 3 +-
extensions/buildflags/buildflags.gni | 4 +-
extensions/common/api/schema.gni | 2 +-
extensions/common/command.cc | 2 +-
extensions/common/extension_features.cc | 10 ++-
extensions/common/extension_features.h | 6 +-
extensions/common/extension_l10n_util.cc | 6 ++
extensions/common/features/feature.cc | 2 +-
.../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 | 4 +-
.../renderer/modules/modules_initializer.cc | 4 +-
third_party/libvpx/BUILD.gn | 2 +-
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 +-
ui/base/accelerators/command.cc | 2 +-
ui/base/device_form_factor_android.cc | 2 +-
ui/gl/features.gni | 2 +-
ui/resources/ui_resources.grd | 2 +-
ui/webui/resources/BUILD.gn | 2 +-
.../cr_components/cr_shortcut_input/BUILD.gn | 2 +-
.../cr_components/managed_footnote/BUILD.gn | 2 +-
ui/webui/resources/cr_elements/BUILD.gn | 2 +-
.../cr_elements/cr_toolbar/cr_toolbar.css | 3 +
ui/webui/resources/css/BUILD.gn | 2 +-
204 files changed, 657 insertions(+), 325 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
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Experimental-support-for-extensions-on-Android.inc
diff --git a/android_webview/BUILD.gn b/android_webview/BUILD.gn
--- a/android_webview/BUILD.gn
+++ b/android_webview/BUILD.gn
@@ -1315,7 +1315,7 @@ declare_args() {
# logic more easily on an emulator, so the decision to use the arm64
# orderfile for x64 (instead of arm32) is somewhat arbitrary. We just
# needed to use some real orderfile.
- if (is_desktop_android && current_cpu == "x64") {
+ if (is_desktop_android_false && current_cpu == "x64") {
# For Android Desktop x64, orderfile is disabled, see
# https://crbug.com/422005929.
webview_orderfile_path = ""
diff --git a/base/allocator/partition_allocator/src/partition_alloc/BUILD.gn b/base/allocator/partition_allocator/src/partition_alloc/BUILD.gn
--- a/base/allocator/partition_allocator/src/partition_alloc/BUILD.gn
+++ b/base/allocator/partition_allocator/src/partition_alloc/BUILD.gn
@@ -171,6 +171,8 @@ pa_buildflag_header("buildflags") {
"HAS_64_BIT_POINTERS=$has_64_bit_pointers",
"HAS_MEMORY_TAGGING=$has_memory_tagging",
"IS_ANDROID=$is_android",
+ "IS_DESKTOP_ANDROID_FALSE=false",
+ "IS_DESKTOP_ANDROID_CROMITE=$is_desktop_android_cromite",
"IS_CASTOS=$is_castos",
"IS_CHROMEOS=$is_chromeos",
"IS_DEBUG=$partition_alloc_is_debug",
diff --git a/base/android/device_info.cc b/base/android/device_info.cc
--- a/base/android/device_info.cc
+++ b/base/android/device_info.cc
@@ -103,10 +103,14 @@ bool is_foldable() {
return get_device_info().isFoldable;
}
-bool is_desktop() {
+bool is_desktop_cromite() {
return get_device_info().isDesktop;
}
+bool is_desktop_false() {
+ return false;
+}
+
// Available only on Android T+.
int32_t vulkan_deqp_level() {
return get_device_info().vulkanDeqpLevel;
@@ -122,7 +126,7 @@ bool is_xr() {
// check) as a first choice, but fall back to this if not feasible.
bool is_tablet() {
return was_launched_on_large_display() && !is_tv() && !is_automotive() &&
- !is_desktop() && !is_xr();
+ !is_desktop_false() && !is_xr();
}
// This returns the cached value during initial startup. If you need this
diff --git a/base/android/device_info.h b/base/android/device_info.h
--- a/base/android/device_info.h
+++ b/base/android/device_info.h
@@ -29,7 +29,8 @@ BASE_EXPORT void Set(const IDeviceInfo& info);
BASE_EXPORT bool is_tv();
BASE_EXPORT bool is_automotive();
BASE_EXPORT bool is_foldable();
-BASE_EXPORT bool is_desktop();
+BASE_EXPORT bool is_desktop_cromite();
+BASE_EXPORT bool is_desktop_false();
// Available only on Android T+.
BASE_EXPORT int32_t vulkan_deqp_level();
BASE_EXPORT bool is_xr();
diff --git a/base/android/java/src/org/chromium/base/DeviceInfo.java b/base/android/java/src/org/chromium/base/DeviceInfo.java
--- a/base/android/java/src/org/chromium/base/DeviceInfo.java
+++ b/base/android/java/src/org/chromium/base/DeviceInfo.java
@@ -152,10 +152,14 @@ public final class DeviceInfo {
return getInstance().mIDeviceInfo.isFoldable;
}
- public static boolean isDesktop() {
+ public static boolean isDesktopCromite() {
return getInstance().mIDeviceInfo.isDesktop;
}
+ public static boolean isDesktopFalse() {
+ return false;
+ }
+
public static int getVulkanDeqpLevel() {
return getInstance().mIDeviceInfo.vulkanDeqpLevel;
}
@@ -320,7 +324,7 @@ public final class DeviceInfo {
mIDeviceInfo.isDesktop =
(sIsDesktopForTesting != null)
? sIsDesktopForTesting
- : (BuildConfig.IS_DESKTOP_ANDROID
+ : (BuildConfig.IS_DESKTOP_ANDROID_FALSE
&& pm.hasSystemFeature(PackageManager.FEATURE_PC))
|| CommandLine.getInstance()
.hasSwitch(BaseSwitches.FORCE_DESKTOP_ANDROID);
diff --git a/build/BUILD.gn b/build/BUILD.gn
--- a/build/BUILD.gn
+++ b/build/BUILD.gn
@@ -128,7 +128,7 @@ buildflag_header("ios_buildflags") {
#
buildflag_header("android_buildflags") {
header = "android_buildflags.h"
- flags = [ "IS_DESKTOP_ANDROID=$is_desktop_android" ]
+ flags = [ "IS_DESKTOP_ANDROID_CROMITE=$is_desktop_android_cromite", "IS_DESKTOP_ANDROID_FALSE=false" ]
}
if (build_with_chromium) {
diff --git a/build/android/java/templates/BuildConfig.template b/build/android/java/templates/BuildConfig.template
--- a/build/android/java/templates/BuildConfig.template
+++ b/build/android/java/templates/BuildConfig.template
@@ -110,10 +110,12 @@ public class BuildConfig {
// DeviceInfo.java since this is the source of truth for isDesktop check.
// (TODO: crbug.com/430983585) Clean up this flag once the desktop
// build is fully functional.
-#if defined(_IS_DESKTOP_ANDROID)
- public static boolean IS_DESKTOP_ANDROID = true;
+#if defined(_IS_DESKTOP_ANDROID_CROMITE)
+ public static boolean IS_DESKTOP_ANDROID_CROMITE = true;
+ public static boolean IS_DESKTOP_ANDROID_FALSE;
#else
- public static boolean IS_DESKTOP_ANDROID;
+ public static boolean IS_DESKTOP_ANDROID_CROMITE;
+ public static boolean IS_DESKTOP_ANDROID_FALSE;
#endif
// Use to check if proguard is enabled for the current build.
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni
--- a/build/config/android/rules.gni
+++ b/build/config/android/rules.gni
@@ -2048,8 +2048,8 @@ if (!is_robolectric && enable_java_templates) {
} else {
defines += [ "_LOGTAG_PREFIX=cr_" ]
}
- if (is_desktop_android) {
- defines += [ "_IS_DESKTOP_ANDROID" ]
+ if (is_desktop_android_cromite) {
+ defines += [ "_IS_DESKTOP_ANDROID_CROMITE" ]
}
if (enable_javaless_renderers) {
diff --git a/build/config/chrome_build.gni b/build/config/chrome_build.gni
--- a/build/config/chrome_build.gni
+++ b/build/config/chrome_build.gni
@@ -34,7 +34,8 @@ declare_args() {
# Set to true to set defaults that enable features on Android that are more
# typically available on desktop.
- is_desktop_android = false
+ is_desktop_android_cromite = is_android
+ is_desktop_android_false = false
if (is_android) {
# By default, Trichrome channels are compiled using separate package names.
@@ -56,12 +57,12 @@ is_internal_chrome_branded = enable_src_internal && is_chrome_branded
# Ensure !is_android implies !is_high_end_android.
is_high_end_android = is_high_end_android && is_android
-if (is_desktop_android) {
+if (is_desktop_android_cromite) {
assert(target_os == "android",
"Target must be Android to use is_desktop_android.")
# Disable for non-android secondary toolchains.
- is_desktop_android = is_android
+ is_desktop_android_cromite = is_android
}
declare_args() {
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
@@ -242,7 +242,7 @@ if (is_android) {
# logic more easily on an emulator, so the decision to use the arm64
# orderfile for x64 (instead of arm32) is somewhat arbitrary. We just
# needed to use some real orderfile.
- if (is_desktop_android && current_cpu == "x64") {
+ if (is_desktop_android_false && current_cpu == "x64") {
# For Android Desktop x64, orderfile is disabled, see
# https://crbug.com/422005929.
chrome_orderfile_path = ""
diff --git a/build/config/compiler/pgo/BUILD.gn b/build/config/compiler/pgo/BUILD.gn
--- a/build/config/compiler/pgo/BUILD.gn
+++ b/build/config/compiler/pgo/BUILD.gn
@@ -78,7 +78,7 @@ config("pgo_optimization_flags") {
_pgo_target = "linux"
} else if (is_android) {
# Use |current_cpu| and not |target_cpu|; for Android we may built both.
- if (is_desktop_android && current_cpu == "x64") {
+ if (is_desktop_android_false && current_cpu == "x64") {
_pgo_target = "android-desktop-x64"
} else if (current_cpu == "arm64") {
_pgo_target = "android-arm64"
diff --git a/cc/resources/ui_resource_bitmap.cc b/cc/resources/ui_resource_bitmap.cc
--- a/cc/resources/ui_resource_bitmap.cc
+++ b/cc/resources/ui_resource_bitmap.cc
@@ -101,7 +101,7 @@ UIResourceBitmap::UIResourceBitmap(const SkBitmap& skbitmap) {
#if BUILDFLAG(IS_ANDROID)
SkBitmap copy;
if (features::ShouldEnableDrDc() ||
- base::android::device_info::is_desktop()) {
+ base::android::device_info::is_desktop_false()) {
// On android desktop, where JavaBitmap ensures 4 byte alignment, uploading
// ALPHA_8 to angle_vulkan_image_backing may fail because it expects 1 byte
// alignment stride. Workaround via copying it to N32.
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -991,7 +991,7 @@ if (_is_default_toolchain) {
"//chrome/browser/password_entry_edit/android/internal:java",
]
- if (is_desktop_android) {
+ if (is_desktop_android_cromite) {
deps +=
[ "//chrome/browser/ui/android/extensions/windowing/internal:java" ]
} else {
@@ -2394,7 +2394,7 @@ if (_is_default_toolchain) {
"//components/embedder_support/android:virtual_structure_javatests",
]
- if (is_desktop_android) {
+ if (is_desktop_android_cromite) {
deps += [
"//chrome/browser/ui/android/extensions/windowing/internal:javatests",
diff --git a/chrome/android/chrome_public_apk_tmpl.gni b/chrome/android/chrome_public_apk_tmpl.gni
--- a/chrome/android/chrome_public_apk_tmpl.gni
+++ b/chrome/android/chrome_public_apk_tmpl.gni
@@ -39,7 +39,7 @@ default_chrome_public_jinja_variables = [
"enable_vr=$enable_vr",
"enable_openxr=$enable_openxr",
"enable_arcore=$enable_arcore",
- "is_desktop_android=$is_desktop_android",
+ "is_desktop_android_cromite=$is_desktop_android_cromite",
"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
@@ -550,9 +550,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
@@ -94,5 +94,17 @@ found in the LICENSE file.
android:id="@+id/clear_all_data"
android:text="@string/storage_management_clear_all_data_button"
style="@style/ManageSpaceActivityButton" />
+
+ <!-- ======== Extension storage info ======== -->
+ <TextView
+ android:id="@+id/all_extension_description"
+ android:text="@string/storage_management_extension_storage_description"
+ android:paddingTop="12dp"
+ style="@style/ManageSpaceActivityExplanationTextView" />
+
+ <Button
+ android:id="@+id/clear_extension_data"
+ android:text="@string/storage_management_clear_all_extension_button"
+ style="@style/ManageSpaceActivityButton" />
</LinearLayout>
-</ScrollView>
\ No newline at end of file
+</ScrollView>
diff --git a/chrome/android/java/res/xml/developer_preferences.xml b/chrome/android/java/res/xml/developer_preferences.xml
--- a/chrome/android/java/res/xml/developer_preferences.xml
+++ b/chrome/android/java/res/xml/developer_preferences.xml
@@ -49,4 +49,10 @@ found in the LICENSE file.
android:key="pixel_perfect_mode"
android:title="@string/android_pixel_perfect_mode_title"
android:summary="@string/android_pixel_perfect_mode_summary" />
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
+ android:key="enable_extensions_android"
+ android:title="@string/android_extensions_title"
+ android:summary="@string/android_extensions_summary"
+ app:featureName="enable-extensions-android"
+ app:needRestart="true" />
</PreferenceScreen>
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
@@ -620,7 +620,7 @@ public class ChromeBaseAppCompatActivity extends AppCompatActivity
applySingleThemeOverlay(R.style.ThemeOverlay_BrowserUI_OptOutEdgeToEdge);
}
- if (ChromeFeatureList.sAndroidDesktopDensity.isEnabled() && DeviceInfo.isDesktop()) {
+ if (ChromeFeatureList.sAndroidDesktopDensity.isEnabled() && DeviceInfo.isDesktopFalse()) {
applySingleThemeOverlay(R.style.ThemeOverlay_BrowserUI_DesktopDensity);
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -2167,7 +2167,7 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
@Override
public boolean shouldPersistAcrossReboots() {
- return DeviceInfo.isDesktop() && ChromeFeatureList.sPersistAcrossReboots.isEnabled();
+ return DeviceInfo.isDesktopFalse() && ChromeFeatureList.sPersistAcrossReboots.isEnabled();
}
private void handleDebugIntent(Intent intent) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
@@ -2164,7 +2164,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
HostZoomMap.setTransparentZoomAdjustment(
(float) ContentFeatureList.sAndroidMonitorZoomScalingFactor.getValue()
/ 100.0f);
- } else if (DeviceInfo.isDesktop()) {
+ } else if (DeviceInfo.isDesktopFalse()) {
HostZoomMap.setTransparentZoomAdjustment(
(float) ContentFeatureList.sAndroidDesktopZoomScalingFactor.getValue()
/ 100.0f);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
@@ -1225,7 +1225,7 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties
&& !shouldShowReaderModePrefs(currentTab)
&& currentTab != null
&& currentTab.getWebContents() != null
- && !DeviceInfo.isDesktop();
+ && !DeviceInfo.isDesktopFalse();
if (!itemVisible) return null;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appearance/settings/AppearanceSettingsFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/appearance/settings/AppearanceSettingsFragment.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/appearance/settings/AppearanceSettingsFragment.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appearance/settings/AppearanceSettingsFragment.java
@@ -64,7 +64,7 @@ public class AppearanceSettingsFragment extends ChromeBaseSettingsFragment
// This fragment may be used on Desktop or tablets. For Desktop we use the current Profile's
// UserPrefs. For tablets, we use the local device preference.
- mUseProfileUserPrefs = DeviceInfo.isDesktop();
+ mUseProfileUserPrefs = DeviceInfo.isDesktopFalse();
initBookmarkBarPref();
initToolbarShortcutPref();
initUiThemePref();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome.java
@@ -523,7 +523,7 @@ public class LayoutManagerChrome extends LayoutManagerImpl implements Accessibil
// proper solution that handles all formfactors.
if (ChromeFeatureList.isEnabled(
ChromeFeatureList.ENABLE_TOOLBAR_SWIPE_ON_NON_DESKTOP_LFF)
- ? DeviceInfo.isDesktop()
+ ? DeviceInfo.isDesktopCromite()
: DeviceFormFactor.isNonMultiDisplayContextOnTablet(mHost.getContext())) {
return false;
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutUtils.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutUtils.java
@@ -415,6 +415,6 @@ public class StripLayoutUtils {
public static boolean shouldApplyMoreDensity() {
return ChromeFeatureList.sTabStripDensityChangeAndroid.isEnabled()
- && DeviceInfo.isDesktop();
+ && DeviceInfo.isDesktopFalse();
}
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabIntentDataProvider.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabIntentDataProvider.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabIntentDataProvider.java
@@ -41,6 +41,7 @@ import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.flags.CustomTabProfileType;
import org.chromium.chrome.browser.util.WindowFeatures;
import org.chromium.components.browser_ui.widget.TintedDrawable;
+import org.chromium.components.embedder_support.util.UrlConstants;
import java.util.ArrayList;
import java.util.List;
@@ -237,6 +238,9 @@ public class IncognitoCustomTabIntentDataProvider extends BrowserServicesIntentD
}
public static boolean isValidIncognitoIntent(Intent intent, boolean recordMetrics) {
+ if (IntentHandler.getUrlFromIntent(intent).startsWith(UrlConstants.CHROME_EXTENSIONS_URL)) {
+ return false;
+ }
if (ContextUtils.getAppSharedPreferences()
.getBoolean(PrivacySettings.PREF_OPEN_EXTERNAL_LINKS_INCOGNITO, false)) {
return true;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/desktop_site/DesktopSiteSettingsIphController.java b/chrome/android/java/src/org/chromium/chrome/browser/desktop_site/DesktopSiteSettingsIphController.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/desktop_site/DesktopSiteSettingsIphController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/desktop_site/DesktopSiteSettingsIphController.java
@@ -80,7 +80,7 @@ public class DesktopSiteSettingsIphController {
View toolbarMenuButton,
AppMenuHandler appMenuHandler) {
// Desktop site settings are default enabled on desktop. Do not show IPH.
- if(DeviceInfo.isDesktop()) return null;
+ if(DeviceInfo.isDesktopFalse()) return null;
return new DesktopSiteSettingsIphController(
windowAndroid,
activityTabProvider,
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
@@ -294,6 +294,9 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
@Override
public @Nullable Intent createIntentToPreventIncognitoAccess(GURL url) {
+ if (url.getSpec().startsWith(UrlConstants.CHROME_EXTENSIONS_URL)) {
+ return null;
+ }
if (!url.getSpec().startsWith(UrlConstants.CHROME_EXTENSIONS_URL)) {
return null;
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java
@@ -216,7 +216,7 @@ public class MultiWindowUtils implements ActivityStateListener {
return TabWindowManager.MAX_SELECTORS_LEGACY;
}
- if (DeviceInfo.isDesktop()) {
+ if (DeviceInfo.isDesktopFalse()) {
return TabWindowManager.MAX_SELECTORS_1000;
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java
@@ -175,7 +175,7 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate {
return PermissionUtil.handTrackingNeedsAdditionalPermissions();
case SiteSettingsCategory.Type.REQUEST_DESKTOP_SITE:
// Desktop Android always requests desktop sites, so hide the category.
- return !DeviceInfo.isDesktop();
+ return !DeviceInfo.isDesktopFalse();
case SiteSettingsCategory.Type.LOCAL_NETWORK_ACCESS:
// Use LOCAL_NETWORK_ACCESS if LNA is enabled, but LNA Split permissions is not
// enabled.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ManageSpaceActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ManageSpaceActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ManageSpaceActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ManageSpaceActivity.java
@@ -41,6 +41,7 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.profiles.ProfileManager;
import org.chromium.chrome.browser.settings.SettingsNavigationFactory;
+import org.chromium.chrome.browser.ui.extensions.ExtensionActionsBridge;
import org.chromium.chrome.browser.ui.searchactivityutils.SearchActivityPreferencesManager;
import org.chromium.components.browser_ui.settings.SettingsNavigation;
import org.chromium.components.browser_ui.site_settings.AllSiteSettings;
@@ -68,6 +69,7 @@ public class ManageSpaceActivity extends ChromeBaseAppCompatActivity
private Button mClearUnimportantButton;
private Button mManageSiteDataButton;
private Button mClearAllDataButton;
+ private Button mClearExtensionDataButton;
// Stored for testing.
private @Nullable AlertDialog mUnimportantDialog;
@@ -106,6 +108,9 @@ public class ManageSpaceActivity extends ChromeBaseAppCompatActivity
mClearAllDataButton = findViewById(R.id.clear_all_data);
mClearAllDataButton.setOnClickListener(this);
+
+ mClearExtensionDataButton = findViewById(R.id.clear_extension_data);
+ mClearExtensionDataButton.setOnClickListener(this);
super.onCreate(savedInstanceState);
BrowserParts parts =
@@ -267,6 +272,21 @@ public class ManageSpaceActivity extends ChromeBaseAppCompatActivity
builder.setTitle(R.string.storage_management_reset_app_dialog_title);
builder.setMessage(R.string.storage_management_reset_app_dialog_text);
builder.create().show();
+ } else if (view == mClearExtensionDataButton) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setPositiveButton(
+ R.string.ok,
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int id) {
+ Profile profile = ProfileManager.getLastUsedRegularProfile();
+ // ExtensionActionsBridge.get(profile).clearExtensionData();
+ }
+ });
+ builder.setNegativeButton(R.string.cancel, null);
+ builder.setTitle(R.string.storage_management_extension_reset_app_dialog_title);
+ builder.setMessage(R.string.storage_management_extension_reset_app_dialog_text);
+ builder.create().show();
}
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/InterceptNavigationDelegateClientImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/InterceptNavigationDelegateClientImpl.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/InterceptNavigationDelegateClientImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/InterceptNavigationDelegateClientImpl.java
@@ -209,7 +209,7 @@ public class InterceptNavigationDelegateClientImpl implements InterceptNavigatio
// TODO(crbug.com/417047079): Replace the following desktop windowing checks with a better
// approach.
// return MultiWindowUtils.getInstance().isInMultiWindowMode(getActivity());
- return DeviceInfo.isDesktop();
+ return DeviceInfo.isDesktopFalse();
}
@Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/RequestDesktopUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/RequestDesktopUtils.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/RequestDesktopUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/RequestDesktopUtils.java
@@ -107,7 +107,7 @@ public class RequestDesktopUtils {
// Desktop devices always request desktop sites so there's no need to show a message to
// the user.
- if (DeviceInfo.isDesktop()) {
+ if (DeviceInfo.isDesktopFalse()) {
return false;
}
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
@@ -1023,7 +1023,7 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm
// 2. The current tab is a PDF page.
NativePage nativePage = currentTab.getNativePage();
boolean isPdf = nativePage != null && nativePage.isPdf();
- return DeviceInfo.isDesktop() || isPdf;
+ return DeviceInfo.isDesktopFalse() || isPdf;
}
private MVCListAdapter.ListItem buildPrintItem(Tab currentTab) {
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
@@ -671,7 +671,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
});
mCrossDeviceSettingImporter =
- DeviceInfo.isDesktop()
+ ((true))
? null
: new CrossDeviceSettingImporter(
activityLifecycleDispatcher,
@@ -2351,7 +2351,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
} else if (id == R.id.toggle_bookmark_bar) {
// isActivityStateBookmarkBarCompatible already checks the flag sAndroidBookmarkBar.
if (BookmarkBarUtils.isActivityStateBookmarkBarCompatible(mActivity)) {
- if (DeviceInfo.isDesktop()) {
+ if (DeviceInfo.isDesktopCromite()) {
// Desktop uses the synced UserPref.
BookmarkBarUtils.toggleUserPrefsShowBookmarksBar(
mProfileSupplier.get(), /* fromKeyboardShortcut= */ true);
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
@@ -2526,7 +2526,7 @@ public class ToolbarManager
mActivityTabProvider.asObservable(),
mTabCreatorManager.getTabCreator(false),
getBrowsingModeThemeColorProvider(),
- (ToolbarTablet) mToolbarLayout,
+ mToolbarLayout,
contextMenuPopulatorFactory,
selectionDropdownMenuDelegate);
if (mExtensionsToolbarCoordinator != 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
@@ -400,9 +400,16 @@
<message name="IDS_EXTENSIONS_NO_ACTIVITIES" desc="The message shown to the user when an extension has no recent activities.">
No recent activities
</message>
+<if expr="is_android">
+ <message name="IDS_EXTENSIONS_NO_INSTALLED_ITEMS" desc="The message shown to the user on the Extensions settings page when there are no extensions or apps installed.">
+ Find extensions and themes in the <ph name="BEGIN_LINK">&lt;a target="_blank" href="https://chromewebstore.google.com"&gt;</ph>Chromedontreplace Web Store<ph name="END_LINK">&lt;/a&gt;<ex>&lt;/a&gt;</ex></ph>
+ </message>
+</if>
+<if expr="not is_android">
<message name="IDS_EXTENSIONS_NO_INSTALLED_ITEMS" desc="The message shown to the user on the Extensions settings page when there are no extensions or apps installed.">
Find extensions and themes in the <ph name="BEGIN_LINK">&lt;a target="_blank" href="https://chrome.google.com/webstore/category/extensions"&gt;</ph>Chromedontreplace Web Store<ph name="END_LINK">&lt;/a&gt;<ex>&lt;/a&gt;</ex></ph>
</message>
+</if>
<message name="IDS_EXTENSIONS_NO_DESCRIPTION" desc="The message shown to the user when an extension does not have any description.">
No description provided
</message>
diff --git a/chrome/app/theme/theme_resources.grd b/chrome/app/theme/theme_resources.grd
--- a/chrome/app/theme/theme_resources.grd
+++ b/chrome/app/theme/theme_resources.grd
@@ -381,7 +381,7 @@
<structure type="chrome_scaled_image" name="IDR_UPLOAD_VIOLATION_DARK" file="common/upload_violation_dark.png" />
</if>
<if expr="not _google_chrome">
- <if expr="not is_android or is_desktop_android">
+ <if expr="not is_android or is_desktop_android_cromite">
<!-- Desktop Android supports extensions and the web store. -->
<structure type="chrome_scaled_image" name="IDR_WEBSTORE_ICON" file="chromium/webstore_icon.png" />
<structure type="chrome_scaled_image" name="IDR_WEBSTORE_ICON_16" file="chromium/webstore_icon_16.png" />
@@ -390,7 +390,7 @@
</if>
</if>
<if expr="_google_chrome">
- <if expr="not is_android or is_desktop_android">
+ <if expr="not is_android or is_desktop_android_cromite">
<!-- Desktop Android supports extensions and the web store. -->
<structure type="chrome_scaled_image" name="IDR_WEBSTORE_ICON" file="google_chrome/webstore_icon.png" />
<structure type="chrome_scaled_image" name="IDR_WEBSTORE_ICON_16" file="google_chrome/webstore_icon_16.png" />
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -7267,7 +7267,7 @@ static_library("browser") {
# TODO(https://crbug.com/356905053): Add more dependencies here and merge this
# block with the `enable_extensions` block above.
- if (enable_desktop_android_extensions) {
+ if (enable_desktop_android_extensions_cromite) {
sources += [
# TODO(https://crbug.com/356905053): These files are temporary workarounds
# allow for a lightweight extensions runtime in desktop-android builds.
@@ -7894,7 +7894,7 @@ group("browser_generated_files") {
[ "//chrome/browser/ui/webui/new_tab_page/foo:mojo_bindings" ]
}
}
- if (!is_android || is_desktop_android) {
+ if (!is_android || is_desktop_android_cromite) {
public_deps += [ "//chrome/browser/ui/webui/discards:mojo_bindings" ]
}
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -389,6 +389,10 @@
#include "extensions/common/switches.h"
#endif // BUILDFLAG(ENABLE_EXTENSIONS_CORE)
+#if BUILDFLAG(ENABLE_EXTENSIONS_CORE)
+#include "extensions/common/extension_features.h"
+#endif
+
#if BUILDFLAG(ENABLE_PDF)
#include "pdf/pdf_features.h"
#endif
diff --git a/chrome/browser/android/selection/chrome_selection_dropdown_menu_delegate.cc b/chrome/browser/android/selection/chrome_selection_dropdown_menu_delegate.cc
--- a/chrome/browser/android/selection/chrome_selection_dropdown_menu_delegate.cc
+++ b/chrome/browser/android/selection/chrome_selection_dropdown_menu_delegate.cc
@@ -8,7 +8,7 @@
#include "content/public/browser/render_frame_host.h"
#include "extensions/buildflags/buildflags.h"
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
#include "chrome/browser/extensions/extension_menu_model_android.h"
#endif // BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
@@ -25,7 +25,7 @@ std::unique_ptr<ui::MenuModel>
ChromeSelectionDropdownMenuDelegate::GetSelectionPopupExtraItems(
content::RenderFrameHost& render_frame_host,
const content::ContextMenuParams& params) {
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
std::unique_ptr<extensions::ExtensionMenuModel> extension_menu_model =
std::make_unique<extensions::ExtensionMenuModel>(render_frame_host,
params);
diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/bar/BookmarkBarUtils.java b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/bar/BookmarkBarUtils.java
--- a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/bar/BookmarkBarUtils.java
+++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/bar/BookmarkBarUtils.java
@@ -212,7 +212,7 @@ public class BookmarkBarUtils {
// On Desktop, we sync with the UserPrefs.
// On tablets we use the device preference logic (policy (pref service) > local pref
// (shared pref) > FeatureParam).
- return DeviceInfo.isDesktop()
+ return DeviceInfo.isDesktopFalse()
? isUserPrefsShowBookmarksBarEnabled(profile)
: isDevicePrefShowBookmarksBarEnabled(profile);
}
@@ -431,13 +431,13 @@ public class BookmarkBarUtils {
boolean isCurrentlyVisible = isBookmarkBarVisible(context, profile, isXrFullSpaceMode);
// Record if the Bookmark Bar is visible, but not in cases of a forced feature param.
- if (DeviceInfo.isDesktop() || hasUserSetDevicePrefShowBookmarksBar()) {
+ if (DeviceInfo.isDesktopFalse() || hasUserSetDevicePrefShowBookmarksBar()) {
RecordHistogram.recordBooleanHistogram(
BOOKMARK_BAR_SHOWN_ON_START_UP, isCurrentlyVisible);
}
// Record the reason why the Bookmark Bar is visible (hidden) in this instance.
- if (DeviceInfo.isDesktop()) {
+ if (DeviceInfo.isDesktopFalse()) {
RecordHistogram.recordEnumeratedHistogram(
BOOKMARK_BAR_SHOWN_ON_START_UP_REASON,
isCurrentlyVisible
diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/bar/BookmarkBarVisibilityProvider.java b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/bar/BookmarkBarVisibilityProvider.java
--- a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/bar/BookmarkBarVisibilityProvider.java
+++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/bar/BookmarkBarVisibilityProvider.java
@@ -100,7 +100,7 @@ public class BookmarkBarVisibilityProvider {
mXrSpaceModeObservableSupplier.addSyncObserverAndPostIfNonNull(mXrSpaceModeObserver);
// On tablets we use local device prefs.
- if (!DeviceInfo.isDesktop()) {
+ if (!DeviceInfo.isDesktopFalse()) {
mDevicePrefsListener =
(sharedPreferences, key) -> {
if (key != null
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
@@ -43,7 +43,7 @@ public class BrowserControlsUtils {
return false;
}
- return DeviceInfo.isDesktop()
+ return DeviceInfo.isDesktopFalse()
|| DeviceFormFactor.isNonMultiDisplayContextOnLargeTablet(context);
}
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
@@ -399,7 +399,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?
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
extensions_browser_client_ = startup_data()->TakeExtensionsBrowserClient();
#elif BUILDFLAG(ENABLE_EXTENSIONS)
extensions_browser_client_ =
diff --git a/chrome/browser/chrome_browser_field_trials.cc b/chrome/browser/chrome_browser_field_trials.cc
--- a/chrome/browser/chrome_browser_field_trials.cc
+++ b/chrome/browser/chrome_browser_field_trials.cc
@@ -142,7 +142,7 @@ void ChromeBrowserFieldTrials::RegisterFeatureOverrides(
feature_overrides.DisableFeature(features::kEyeDropper);
}
#elif BUILDFLAG(IS_ANDROID) // BUILDFLAG(IS_LINUX)
-#if BUILDFLAG(IS_DESKTOP_ANDROID)
+#if BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)
// Nota bene: Anything here is expected to be short-lived, unless deemed too
// risky to launch to non-desktop platforms. New features being added here
// should be the exception, and not the norm. Instead, you should place the
@@ -151,7 +151,7 @@ void ChromeBrowserFieldTrials::RegisterFeatureOverrides(
// Enable the link hover status bar.
// TODO(crbug.com/404678510): Remove when the feature is stable.
- feature_overrides.EnableFeature(chrome::android::kLinkHoverStatusBar);
+ // feature_overrides.EnableFeature(chrome::android::kLinkHoverStatusBar);
// If enabled, render processes associated only with tabs in unfocused windows
// will be downgraded to "vis" priority, rather than remaining at "fg". This
@@ -163,37 +163,37 @@ void ChromeBrowserFieldTrials::RegisterFeatureOverrides(
// TODO(crbug.com/426461170): Remove once we enable this feature for all form
// factors. Currently we have no conclusion whether to enable this on mobile
// phones yet.
- feature_overrides.EnableFeature(
- features::kAndroidEnableBackgroundMediaCapturing);
+ // feature_overrides.EnableFeature(
+ // features::kAndroidEnableBackgroundMediaCapturing);
// TODO(crbug.com/465596248): Remove when experiment is complete.
- feature_overrides.EnableFeature(chrome::android::kProtectRecentlyVisibleTab);
+ // feature_overrides.EnableFeature(chrome::android::kProtectRecentlyVisibleTab);
// TODO(crbug.com/422903297): Remove when tablet rollout is complete.
- feature_overrides.EnableFeature(features::kRendererProcessLimitOnAndroid);
+ // feature_overrides.EnableFeature(features::kRendererProcessLimitOnAndroid);
// Enable V8 optimizations for high-end Android Desktop devices.
// TODO(crbug.com/425860368): Remove when the feature is stable.
- feature_overrides.EnableFeature(features::kV8AndroidDesktopHighEndConfig);
+ // feature_overrides.EnableFeature(features::kV8AndroidDesktopHighEndConfig);
// TODO(crbug.com/430304112): Remove when rollout is complete to all form
// factors.
- feature_overrides.EnableFeature(
- autofill::features::kAutofillAndroidDesktopSuppressAccessoryOnEmpty);
+ // feature_overrides.EnableFeature(
+ // autofill::features::kAutofillAndroidDesktopSuppressAccessoryOnEmpty);
// TODO(crbug.com/436900619): Remove when the long term solution is
// implemented.
- feature_overrides.EnableFeature(
- chrome::android::kLockTopControlsOnLargeTablets);
+ // feature_overrides.EnableFeature(
+ // chrome::android::kLockTopControlsOnLargeTablets);
// TODO(crbug.com/445446479): Remove when rollout is complete to all form
// factors.
- feature_overrides.EnableFeature(
- sandbox::policy::features::kAndroidGpuSandbox);
+ // feature_overrides.EnableFeature(
+ // sandbox::policy::features::kAndroidGpuSandbox);
// Bypass the WebAudio output buffer, to reduce audio latency.
// TODO(crbug.com/436988695): Remove when the long term solution is
// implemented.
- feature_overrides.EnableFeature(
- blink::features::kWebAudioBypassOutputBuffering);
+ // feature_overrides.EnableFeature(
+ // blink::features::kWebAudioBypassOutputBuffering);
// TODO(crbug.com/437004266): Remove when the feature is stable.
- feature_overrides.EnableFeature(
- features::kAlwaysUseAudioManagerOutputFramesPerBuffer);
+ // feature_overrides.EnableFeature(
+ // features::kAlwaysUseAudioManagerOutputFramesPerBuffer);
// TODO(crbug.com/440210010): Remove when the feature experiment is done.
- feature_overrides.EnableFeature(features::kAudioStereoInputStreamParameters);
+ // feature_overrides.EnableFeature(features::kAudioStereoInputStreamParameters);
// Enables automatic picture-in-picture.
// TODO(crbug.com/421608904): Remove when rollout is complete to all form
// factors.
@@ -206,57 +206,57 @@ void ChromeBrowserFieldTrials::RegisterFeatureOverrides(
// Enable Media Engagement bypass and preload for desktop Android.
// TODO(crbug.com/490450572): Re-evaluate if we want to enable these features
// for all Android form factors after analysis.
- feature_overrides.EnableFeature(
- media::kMediaEngagementBypassAutoplayPolicies);
- feature_overrides.EnableFeature(media::kPreloadMediaEngagementData);
+ // feature_overrides.EnableFeature(
+ // media::kMediaEngagementBypassAutoplayPolicies);
+ // feature_overrides.EnableFeature(media::kPreloadMediaEngagementData);
// Disables the enhanced pip transition and uses the default animation.
// TODO(crbug.com/440384447): Remove when enhanced pip transition is fixed.
- feature_overrides.DisableFeature(media::kAllowEnhancedPipTransition);
+ // feature_overrides.DisableFeature(media::kAllowEnhancedPipTransition);
// Enable by default for desktop platforms, pending a phone / foldable /
// tablet rollout using the same flag.
// TODO(crbug.com/442327273): Remove when rollout is complete to all form
// factors.
- feature_overrides.EnableFeature(
- autofill::features::kAutofillAndroidDesktopKeyboardAccessoryRevamp);
+ // feature_overrides.EnableFeature(
+ // autofill::features::kAutofillAndroidDesktopKeyboardAccessoryRevamp);
// Enable by default for desktop platforms, pending a tablet rollout using the
// same flag.
// TODO(crbug.com/445475304): Remove when tablet rollout is complete.
- feature_overrides.EnableFeature(feed::kAndroidOpenIncognitoAsWindow);
+ // feature_overrides.EnableFeature(feed::kAndroidOpenIncognitoAsWindow);
// Enable ANGLE/Vulkan features.
// TODO (crbug.com//376280554): Enable these features with runtime checks
// instead.
- feature_overrides.EnableFeature(::features::kSkipVulkanBlocklist);
- feature_overrides.EnableFeature(::features::kDefaultANGLEVulkan);
- feature_overrides.EnableFeature(::features::kVulkanFromANGLE);
- feature_overrides.EnableFeature(::features::kDefaultPassthroughCommandDecoder);
+ // feature_overrides.EnableFeature(::features::kSkipVulkanBlocklist);
+ // feature_overrides.EnableFeature(::features::kDefaultANGLEVulkan);
+ // feature_overrides.EnableFeature(::features::kVulkanFromANGLE);
+ // feature_overrides.EnableFeature(::features::kDefaultPassthroughCommandDecoder);
// Enable site-per-process by default for desktop platforms.
// TODO(crbug.com/453856709): Remove when we determine how to ensure
// SitePerProcess is enabled for all necessary or eligible Android devices.
- feature_overrides.EnableFeature(::features::kSitePerProcess);
+ // feature_overrides.EnableFeature(::features::kSitePerProcess);
// By setting the kSiteIsolationEnableMemoryThresholdAndroid feature, we make
// sure that site isolation (enabled by kSitePerProcess above) is not disabled
// due to memory thresholds.
// TODO(crbug.com/454695278): Find a different way to disable the site
// isolation memory thresholds on Android desktop.
- feature_overrides.DisableFeature(
- site_isolation::features::kSiteIsolationEnableMemoryThresholdAndroid);
+ // feature_overrides.DisableFeature(
+ // site_isolation::features::kSiteIsolationEnableMemoryThresholdAndroid);
// Enable all tabs to have WebContents at all times for desktop platforms.
// TODO(crbug.com/448420873): Remove once we enable this feature for all form
// factors. This is currently blocked by performance regressions on low-end
// Android devices.
- feature_overrides.EnableFeature(features::kWebContentsDiscard);
- feature_overrides.EnableFeature(features::kLazyBrowserInterfaceBroker);
- feature_overrides.EnableFeature(chrome::android::kLoadAllTabsAtStartup);
+ // feature_overrides.EnableFeature(features::kWebContentsDiscard);
+ // feature_overrides.EnableFeature(features::kLazyBrowserInterfaceBroker);
+ // feature_overrides.EnableFeature(chrome::android::kLoadAllTabsAtStartup);
// Enable the ability for extensions to override chrome pages.
// TODO(crbug.com/404069963): Remove flag when the feature is verified to be
// stable on desktop Android.
- feature_overrides.EnableFeature(chrome::android::kChromeNativeUrlOverriding);
+ // feature_overrides.EnableFeature(chrome::android::kChromeNativeUrlOverriding);
// Enable desktop full screen to a screen feature flag by default for desktop
// platforms.
@@ -268,11 +268,11 @@ void ChromeBrowserFieldTrials::RegisterFeatureOverrides(
// Enables the ability to specify a platform-specific zoom scaling that will
// apply transparently to all pages.
// TODO(crbug.com/450281745): Remove once feature is enabled by default.
- feature_overrides.EnableFeature(::features::kAndroidDesktopZoomScaling);
+ // feature_overrides.EnableFeature(::features::kAndroidDesktopZoomScaling);
// Enable Android desktop fluid resize to improve UX.
// TODO(crbug.com/464967916): Remove when the feature is stable.
- feature_overrides.EnableFeature(features::kFluidResize);
+ // feature_overrides.EnableFeature(features::kFluidResize);
#endif // BUILDFLAG(IS_DESKTOP_ANDROID)
// Desktop-first features which are past incubation should either end up here,
// or to a finch trial that enables it for all form factors.
diff --git a/chrome/browser/chrome_browser_interface_binders_webui.cc b/chrome/browser/chrome_browser_interface_binders_webui.cc
--- a/chrome/browser/chrome_browser_interface_binders_webui.cc
+++ b/chrome/browser/chrome_browser_interface_binders_webui.cc
@@ -52,7 +52,7 @@
#include "mojo/public/cpp/bindings/binder_map.h"
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_DESKTOP_ANDROID)
+ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)
#include "chrome/browser/ui/webui/discards/discards.mojom.h"
#include "chrome/browser/ui/webui/discards/discards_ui.h"
#include "chrome/browser/ui/webui/discards/site_data.mojom.h"
@@ -178,7 +178,7 @@ void PopulateChromeWebUIFrameBinders(
#endif // BUILDFLAG(IS_CHROMEOS)
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_DESKTOP_ANDROID)
+ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)
RegisterWebUIControllerInterfaceBinder<discards::mojom::DetailsProvider,
DiscardsUI>(map);
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -4363,7 +4363,7 @@ base::OnceClosure ChromeContentBrowserClient::SelectClientCertificate(
// TODO(wenz): This should instead proceed with the selected certificate
// when there are matching certificates in the OS.
#if BUILDFLAG(ENABLE_EXTENSIONS) && \
- !(BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_DESKTOP_ANDROID))
+ !(BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE))
if (matching_certificates.empty() && nonmatching_certificates.empty()) {
extensions::ProcessMap* process_map =
extensions::ProcessMap::Get(profile);
@@ -4646,7 +4646,7 @@ void ChromeContentBrowserClient::OverrideWebPreferences(
// Fill font preferences. These are not registered on Android unless we're built
// with extensions (the chrome.fontSettings API can change these).
// - http://crbug.com/40337093, http://crbug.com/41304476.
-#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
// Enabling the FontFamilyCache needs some KeyedService that might not be
// available for some irregular profiles, like the System Profile.
if (!AreKeyedServicesDisabledForProfileByDefault(profile)) {
diff --git a/chrome/browser/devtools/BUILD.gn b/chrome/browser/devtools/BUILD.gn
--- a/chrome/browser/devtools/BUILD.gn
+++ b/chrome/browser/devtools/BUILD.gn
@@ -363,7 +363,7 @@ static_library("devtools") {
}
}
- if (!is_android || enable_desktop_android_extensions) {
+ if (!is_android || enable_desktop_android_extensions_cromite) {
sources += [
"global_confirm_info_bar.cc",
"global_confirm_info_bar.h",
diff --git a/chrome/browser/download/BUILD.gn b/chrome/browser/download/BUILD.gn
--- a/chrome/browser/download/BUILD.gn
+++ b/chrome/browser/download/BUILD.gn
@@ -295,7 +295,7 @@ source_set("impl") {
sources += [ "drag_download_item_aura.cc" ]
}
- if (is_android && !enable_desktop_android_extensions) {
+ if (is_android && !enable_desktop_android_extensions_cromite) {
sources += [ "download_crx_util_android.cc" ]
}
diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrome/browser/download/chrome_download_manager_delegate.cc
--- a/chrome/browser/download/chrome_download_manager_delegate.cc
+++ b/chrome/browser/download/chrome_download_manager_delegate.cc
@@ -745,7 +745,7 @@ bool ChromeDownloadManagerDelegate::DetermineDownloadTarget(
DownloadPathReservationTracker::FilenameConflictAction action =
kDefaultPlatformConflictAction;
#if BUILDFLAG(IS_ANDROID)
- if (base::android::device_info::is_desktop()) {
+ if (base::android::device_info::is_desktop_false()) {
action = DownloadPathReservationTracker::UNIQUIFY;
}
diff --git a/chrome/browser/download/download_offline_content_provider.cc b/chrome/browser/download/download_offline_content_provider.cc
--- a/chrome/browser/download/download_offline_content_provider.cc
+++ b/chrome/browser/download/download_offline_content_provider.cc
@@ -46,7 +46,7 @@
#include "content/public/common/content_features.h"
#include "ui/base/device_form_factor.h"
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
#include "chrome/browser/download/download_core_service.h"
#include "chrome/browser/download/download_core_service_factory.h"
#endif
@@ -489,7 +489,7 @@ void DownloadOfflineContentProvider::OnDownloadUpdated(DownloadItem* item) {
return;
}
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
// On desktop Android, the extensions chrome.download.setUiOptions() function
// can disable UI updates.
// TODO(crbug.com/459823225): Expand the IsDangerous() check to other
diff --git a/chrome/browser/extensions/BUILD.gn b/chrome/browser/extensions/BUILD.gn
--- a/chrome/browser/extensions/BUILD.gn
+++ b/chrome/browser/extensions/BUILD.gn
@@ -1697,7 +1697,7 @@ source_set("chrome_extensions_browser_client") {
"//extensions/browser/updater",
]
- if (enable_desktop_android_extensions) {
+ if (enable_desktop_android_extensions_cromite) {
sources += [ "chrome_extensions_browser_client_android.cc" ]
deps += [
@@ -1712,6 +1712,7 @@ source_set("chrome_extensions_browser_client") {
"//extensions/browser",
"//extensions/browser/kiosk",
]
+ deps += [ "//components/adblock/content:browser" ]
}
if (enable_extensions) {
diff --git a/chrome/browser/extensions/api/chrome_extensions_api_client_android.cc b/chrome/browser/extensions/api/chrome_extensions_api_client_android.cc
--- a/chrome/browser/extensions/api/chrome_extensions_api_client_android.cc
+++ b/chrome/browser/extensions/api/chrome_extensions_api_client_android.cc
@@ -15,7 +15,7 @@
// The stubs are implemented here instead of falling back to ExtensionsAPIClient
// to allow NOTIMPLEMENTED() logging and a place to put TODOs with bug IDs.
-static_assert(BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS));
+static_assert(BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE));
namespace extensions {
diff --git a/chrome/browser/extensions/api/identity/web_auth_flow.cc b/chrome/browser/extensions/api/identity/web_auth_flow.cc
--- a/chrome/browser/extensions/api/identity/web_auth_flow.cc
+++ b/chrome/browser/extensions/api/identity/web_auth_flow.cc
@@ -38,7 +38,7 @@
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_window.h"
#else
-static_assert(BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS));
+static_assert(BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE));
#include "base/functional/callback_forward.h"
#include "chrome/browser/android/tab_android.h"
#include "chrome/browser/tab_list/tab_list_interface.h"
@@ -166,7 +166,7 @@ void WebAuthFlow::CloseInfoBar() {
}
}
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
void WebAuthFlow::OnBrowserWindowInterfaceInitialized(
BrowserWindowInterface* browser) {
TabModel* tab_model =
@@ -202,7 +202,7 @@ bool WebAuthFlow::DisplayAuthPageInPopupWindow() {
browser->window()->Show();
#else
- static_assert(BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS));
+ static_assert(BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE));
BrowserWindowCreateParams params(BrowserWindowInterface::TYPE_POPUP,
*profile_, user_gesture_);
if (popup_bounds_.has_value()) {
diff --git a/chrome/browser/extensions/api/identity/web_auth_flow.h b/chrome/browser/extensions/api/identity/web_auth_flow.h
--- a/chrome/browser/extensions/api/identity/web_auth_flow.h
+++ b/chrome/browser/extensions/api/identity/web_auth_flow.h
@@ -149,7 +149,7 @@ class WebAuthFlow : public content::WebContentsObserver,
void MaybeStartTimeout();
void OnTimeout();
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
void OnBrowserWindowInterfaceInitialized(BrowserWindowInterface* browser);
#endif
@@ -195,7 +195,7 @@ class WebAuthFlow : public content::WebContentsObserver,
// the error code when the flow times out.
bool initial_url_loaded_ = false;
base::ScopedObservation<Profile, ProfileObserver> profile_observation_{this};
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
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
@@ -1725,6 +1725,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
@@ -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();
+#if BUILDFLAG(IS_ANDROID)
+ if (!contents) return;
+#endif
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
@@ -509,6 +523,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
@@ -547,6 +564,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
@@ -109,14 +109,22 @@ 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);
+#if BUILDFLAG(IS_ANDROID)
+ tab_list_->AddTabListInterfaceObserver(this);
+#endif
}
BrowserExtensionWindowController::~BrowserExtensionWindowController() {
+#if BUILDFLAG(IS_ANDROID)
+ if (tab_list_)
+ tab_list_->RemoveTabListInterfaceObserver(this);
+ tab_list_ = nullptr;
+#endif
WindowControllerList::GetInstance()->RemoveExtensionWindow(this);
}
@@ -126,6 +134,13 @@ BrowserExtensionWindowController* BrowserExtensionWindowController::From(
browser_window_interface->GetUnownedUserDataHost());
}
+void BrowserExtensionWindowController::OnTabListDestroyed(TabListInterface& tab_list) {
+#if BUILDFLAG(IS_ANDROID)
+ tab_list_->RemoveTabListInterfaceObserver(this);
+ tab_list_ = nullptr;
+#endif
+}
+
int BrowserExtensionWindowController::GetWindowId() const {
return static_cast<int>(session_id_.id());
}
@@ -272,7 +287,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
@@ -178,8 +178,12 @@ ManagedInstallationMode ExtensionManagement::GetInstallationMode(
update_url ? *update_url : std::string());
}
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
bool ExtensionManagement::ExtensionsEnabledForDesktopAndroid() const {
+ if ((true)) {
+ return base::FeatureList::IsEnabled(
+ extensions_features::kEnableExtensionsAndroid);
+ }
std::string user_name = profile_->GetProfileUserName();
// Crude check to avoid passing invalid strings to `ExtractDomainName`.
if (user_name.contains("@")) {
@@ -196,7 +200,7 @@ bool ExtensionManagement::ExtensionsEnabledForDesktopAndroid() const {
ManagedInstallationMode ExtensionManagement::GetInstallationMode(
const ExtensionId& extension_id,
const std::string& update_url) {
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
// Block extensions for managed profiles on Desktop Android. This is
// temporary until extensions are ready for dogfooding.
// TODO(crbug.com/422307625): Remove this check once extensions are ready for
diff --git a/chrome/browser/extensions/extension_management.h b/chrome/browser/extensions/extension_management.h
--- a/chrome/browser/extensions/extension_management.h
+++ b/chrome/browser/extensions/extension_management.h
@@ -104,7 +104,7 @@ class ExtensionManagement : public KeyedService,
const std::vector<std::unique_ptr<ManagementPolicy::Provider>>& GetProviders()
const;
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
// Checks if extensions are enabled for Desktop Android for the current
// profile. This is temporary for until extensions are ready for dogfooding.
// TODO(crbug.com/422307625): Remove this check once extensions are ready for
diff --git a/chrome/browser/extensions/extension_tab_util.cc b/chrome/browser/extensions/extension_tab_util.cc
--- a/chrome/browser/extensions/extension_tab_util.cc
+++ b/chrome/browser/extensions/extension_tab_util.cc
@@ -447,8 +447,10 @@ api::tabs::Tab ExtensionTabUtil::CreateTabObject(
tab_list->GetOpenerForTab(tab_interface->GetHandle());
if (opener) {
content::WebContents* opener_contents = opener->GetContents();
+#if !BUILDFLAG(IS_ANDROID)
CHECK(opener_contents);
- tab_object.opener_tab_id = GetTabIdForExtensions(*opener_contents);
+#endif
+ if (opener_contents) tab_object.opener_tab_id = GetTabIdForExtensions(*opener_contents);
}
}
@@ -1130,7 +1132,12 @@ base::expected<GURL, std::string> ExtensionTabUtil::PrepareURLForNavigation(
void ExtensionTabUtil::ForEachTab(
base::RepeatingCallback<void(WebContents*)> callback) {
tabs::ForEachTabInterface([&callback](tabs::TabInterface* tab) {
+#if BUILDFLAG(IS_ANDROID)
+ WebContents* web_contents = tab->GetContents();
+ if (web_contents) callback.Run(web_contents);
+#else
callback.Run(tab->GetContents());
+#endif
return true;
});
}
diff --git a/chrome/browser/extensions/extension_util.cc b/chrome/browser/extensions/extension_util.cc
--- a/chrome/browser/extensions/extension_util.cc
+++ b/chrome/browser/extensions/extension_util.cc
@@ -47,6 +47,10 @@
#include "chromeos/ash/components/file_manager/app_id.h"
#endif
+#if BUILDFLAG(IS_ANDROID)
+#include "extensions/common/extension_features.h"
+#endif
+
static_assert(BUILDFLAG(ENABLE_EXTENSIONS_CORE));
namespace extensions::util {
@@ -333,6 +337,13 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
bool AreExtensionsDisabled(const base::CommandLine& command_line,
content::BrowserContext* context) {
+#if BUILDFLAG(IS_ANDROID)
+ if (!base::FeatureList::IsEnabled(
+ extensions_features::kEnableExtensionsAndroid)) {
+ LOG(INFO) << "Extensions are disabled";
+ return true;
+ }
+#endif
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
@@ -36,7 +36,7 @@ class DeviceInfoFeedbackSource implements FeedbackSource {
type = TYPE_AUTO;
} else if (DeviceInfo.isXr()) {
type = TYPE_XR;
- } else if (DeviceInfo.isDesktop()) {
+ } else if (DeviceInfo.isDesktopFalse()) {
type = TYPE_DESKTOP;
} else if (DeviceFormFactor.isNonMultiDisplayContextOnTablet(
ContextUtils.getApplicationContext())) {
diff --git a/chrome/browser/finds/core/finds_tab_helper.cc b/chrome/browser/finds/core/finds_tab_helper.cc
--- a/chrome/browser/finds/core/finds_tab_helper.cc
+++ b/chrome/browser/finds/core/finds_tab_helper.cc
@@ -31,7 +31,7 @@ bool IsValidNavigation(content::NavigationHandle* navigation_handle) {
bool IsSupportedPlatform() {
#if BUILDFLAG(IS_ANDROID)
- if (base::android::device_info::is_desktop() ||
+ if (base::android::device_info::is_desktop_false() ||
base::android::device_info::is_tv() ||
base::android::device_info::is_automotive() ||
base::android::device_info::is_xr()) {
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
--- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
@@ -793,7 +793,7 @@ public abstract class ChromeFeatureList {
public static final CachedFlag sAndroidNewMediaPicker =
newCachedFlag(ANDROID_NEW_MEDIA_PICKER, false);
public static final CachedFlag sAndroidOpenIncognitoAsWindow =
- newCachedFlag(ANDROID_OPEN_INCOGNITO_AS_WINDOW, BuildConfig.IS_DESKTOP_ANDROID, true);
+ newCachedFlag(ANDROID_OPEN_INCOGNITO_AS_WINDOW, BuildConfig.IS_DESKTOP_ANDROID_FALSE, false);
public static final CachedFlag sAndroidPageInfoAsAppMenuItem =
newCachedFlag(ANDROID_PAGE_INFO_AS_APP_MENU_ITEM, false);
public static final CachedFlag sAndroidProgressBarVisualUpdate =
@@ -927,7 +927,7 @@ public abstract class ChromeFeatureList {
public static final CachedFlag sChromeItemPickerUi =
newCachedFlag(CHROME_ITEM_PICKER_UI, /* defaultValue= */ false);
public static final CachedFlag sChromeNativeUrlOverriding =
- newCachedFlag(CHROME_NATIVE_URL_OVERRIDING, BuildConfig.IS_DESKTOP_ANDROID);
+ newCachedFlag(CHROME_NATIVE_URL_OVERRIDING, BuildConfig.IS_DESKTOP_ANDROID_FALSE);
public static final CachedFlag sClampAutomotiveScaling =
newCachedFlag(CLAMP_AUTOMOTIVE_SCALING, true);
public static final CachedFlag sClankStartupLatencyInjection =
@@ -1122,7 +1122,7 @@ public abstract class ChromeFeatureList {
newCachedFlag(POWER_SAVING_MODE_BROADCAST_RECEIVER_IN_BACKGROUND, true);
public static final CachedFlag sPriceChangeModule = newCachedFlag(PRICE_CHANGE_MODULE, true);
public static final CachedFlag sProtectRecentlyVisibleTab =
- newCachedFlag(PROTECT_RECENTLY_VISIBLE_TAB, BuildConfig.IS_DESKTOP_ANDROID);
+ newCachedFlag(PROTECT_RECENTLY_VISIBLE_TAB, BuildConfig.IS_DESKTOP_ANDROID_CROMITE);
public static final CachedFlag sReportNotificationContentDetectionData =
newCachedFlag(
REPORT_NOTIFICATION_CONTENT_DETECTION_DATA,
diff --git a/chrome/browser/glic/public/features.cc b/chrome/browser/glic/public/features.cc
--- a/chrome/browser/glic/public/features.cc
+++ b/chrome/browser/glic/public/features.cc
@@ -54,7 +54,7 @@ BASE_FEATURE(kGlicLiveMode,
);
BASE_FEATURE(kGlicDefaultToLastActiveConversation,
-#if BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_DESKTOP_ANDROID)
+#if BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)
base::FEATURE_ENABLED_BY_DEFAULT
#else
base::FEATURE_DISABLED_BY_DEFAULT
diff --git a/chrome/browser/glic/service/glic_instance_impl.cc b/chrome/browser/glic/service/glic_instance_impl.cc
--- a/chrome/browser/glic/service/glic_instance_impl.cc
+++ b/chrome/browser/glic/service/glic_instance_impl.cc
@@ -112,7 +112,7 @@ BASE_FEATURE(kGlicSuppressAnimationsOnDetach, base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kGlicRemoveDaisyChainingWhenFreShowing,
base::FEATURE_ENABLED_BY_DEFAULT);
-#if BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_DESKTOP_ANDROID)
+#if BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)
BASE_FEATURE(kGlicUnbindOnClose, base::FEATURE_ENABLED_BY_DEFAULT);
#else
BASE_FEATURE(kGlicUnbindOnClose, base::FEATURE_DISABLED_BY_DEFAULT);
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/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
@@ -262,7 +262,7 @@ static_library("test_support") {
deps = []
sources = []
- if (!is_android || is_desktop_android) {
+ if (!is_android || is_desktop_android_cromite) {
deps += [
"//base",
"//chrome/browser/media/router/discovery",
@@ -413,7 +413,7 @@ source_set("unittests") {
}
# Traditional desktop platforms and desktop android with extensions support.
- if (!is_android || enable_desktop_android_extensions) {
+ if (!is_android) { # || enable_desktop_android_extensions) {
deps += [ "//chrome/browser/media/router/discovery:test_support" ]
}
diff --git a/chrome/browser/media/router/discovery/BUILD.gn b/chrome/browser/media/router/discovery/BUILD.gn
--- a/chrome/browser/media/router/discovery/BUILD.gn
+++ b/chrome/browser/media/router/discovery/BUILD.gn
@@ -4,7 +4,7 @@
import("//build/config/chrome_build.gni")
-assert(!is_android || is_desktop_android, "Not supported on mobile")
+assert(!is_android || is_desktop_android_cromite, "Not supported on mobile")
assert(!is_fuchsia, "Fuchsia shouldn't use anything in //chrome")
static_library("discovery") {
diff --git a/chrome/browser/media/router/media_router_feature.cc b/chrome/browser/media/router/media_router_feature.cc
--- a/chrome/browser/media/router/media_router_feature.cc
+++ b/chrome/browser/media/router/media_router_feature.cc
@@ -30,7 +30,7 @@
#include "extensions/buildflags/buildflags.h"
#include "ui/base/buildflags.h"
-#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_FALSE)
#include "components/prefs/pref_registry_simple.h"
#endif
@@ -43,7 +43,7 @@
namespace media_router {
-#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_FALSE)
BASE_FEATURE(kMediaRouter, base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kCastAllowAllIPsFeature,
"CastAllowAllIPs",
@@ -82,7 +82,7 @@ base::flat_map<content::BrowserContext*, bool>& GetStoredPrefValues() {
return *stored_pref_values;
}
-#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_FALSE)
// TODO(mfoltz): Add full implementation for validating playout delay value.
bool IsValidMirroringPlayoutDelayMs(int delay_ms) {
return delay_ms <= 1000 && delay_ms >= 1;
@@ -97,7 +97,7 @@ void ClearMediaRouterStoredPrefsForTesting() {
bool MediaRouterEnabled(content::BrowserContext* context) {
if ((true)) return false;
-#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_FALSE)
if (!base::FeatureList::IsEnabled(kMediaRouter)) {
return false;
}
@@ -132,7 +132,7 @@ bool MediaRouterEnabled(content::BrowserContext* context) {
return true;
}
-#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_FALSE)
void RegisterLocalStatePrefs(PrefRegistrySimple* registry) {
registry->RegisterBooleanPref(prefs::kMediaRouterCastAllowAllIPs, false,
PrefRegistry::PUBLIC);
diff --git a/chrome/browser/media/router/media_router_feature.h b/chrome/browser/media/router/media_router_feature.h
--- a/chrome/browser/media/router/media_router_feature.h
+++ b/chrome/browser/media/router/media_router_feature.h
@@ -27,7 +27,7 @@ bool MediaRouterEnabled(content::BrowserContext* context);
// process.
void ClearMediaRouterStoredPrefsForTesting();
-#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_FALSE)
// Enables the media router. Can be disabled in tests unrelated to
// Media Router where it interferes. Can also be useful to disable for local
// development on Mac because DIAL local discovery opens a local port
diff --git a/chrome/browser/media/webrtc/webrtc_event_log_manager.cc b/chrome/browser/media/webrtc/webrtc_event_log_manager.cc
--- a/chrome/browser/media/webrtc/webrtc_event_log_manager.cc
+++ b/chrome/browser/media/webrtc/webrtc_event_log_manager.cc
@@ -113,7 +113,7 @@ class PeerConnectionTrackerProxyImpl
// necessarily for any given user profile.
// Certain platforms (mobile) are blocked from remote-bound logging.
bool IsRemoteLoggingFeatureEnabled() {
-#if BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_DESKTOP_ANDROID)
+#if BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_DESKTOP_ANDROID_FALSE)
bool enabled = false;
#else
bool enabled = true;
@@ -465,7 +465,7 @@ WebRtcEventLogManager::CreateRemoteLogFileWriterFactory() {
if (remote_log_file_writer_factory_for_testing_) {
return std::move(remote_log_file_writer_factory_for_testing_);
} else {
-#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_DESKTOP_ANDROID)
+#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_DESKTOP_ANDROID_FALSE)
return std::make_unique<GzippedLogFileWriterFactory>(
std::make_unique<GzipLogCompressorFactory>(
std::make_unique<DefaultGzippedSizeEstimator::Factory>()));
diff --git a/chrome/browser/ntp_customization/java/src/org/chromium/chrome/browser/ntp_customization/NtpCustomizationUtils.java b/chrome/browser/ntp_customization/java/src/org/chromium/chrome/browser/ntp_customization/NtpCustomizationUtils.java
--- a/chrome/browser/ntp_customization/java/src/org/chromium/chrome/browser/ntp_customization/NtpCustomizationUtils.java
+++ b/chrome/browser/ntp_customization/java/src/org/chromium/chrome/browser/ntp_customization/NtpCustomizationUtils.java
@@ -274,7 +274,7 @@ public class NtpCustomizationUtils {
/** Returns whether the NTP simplification is enabled on desktop. */
public static boolean isNtpSimplificationEnabledOnDesktop() {
- return ChromeFeatureList.sNtpSimplification.isEnabled() && DeviceInfo.isDesktop();
+ return ChromeFeatureList.sNtpSimplification.isEnabled() && DeviceInfo.isDesktopCromite();
}
/**
diff --git a/chrome/browser/open_in_app/android/java/src/org/chromium/chrome/browser/open_in_app/OpenInAppUtils.java b/chrome/browser/open_in_app/android/java/src/org/chromium/chrome/browser/open_in_app/OpenInAppUtils.java
--- a/chrome/browser/open_in_app/android/java/src/org/chromium/chrome/browser/open_in_app/OpenInAppUtils.java
+++ b/chrome/browser/open_in_app/android/java/src/org/chromium/chrome/browser/open_in_app/OpenInAppUtils.java
@@ -14,7 +14,7 @@ public class OpenInAppUtils {
/** Returns whether Open in App is available. */
public static boolean isOpenInAppAvailable() {
- return ChromeFeatureList.sDesktopAndroidLinkCapturing.isEnabled() && DeviceInfo.isDesktop();
+ return ChromeFeatureList.sDesktopAndroidLinkCapturing.isEnabled() && DeviceInfo.isDesktopFalse();
}
private OpenInAppUtils() {}
diff --git a/chrome/browser/policy/policy_value_and_status_aggregator.cc b/chrome/browser/policy/policy_value_and_status_aggregator.cc
--- a/chrome/browser/policy/policy_value_and_status_aggregator.cc
+++ b/chrome/browser/policy/policy_value_and_status_aggregator.cc
@@ -47,7 +47,7 @@
#include "chrome/browser/policy/status_provider/updater_status_and_value_provider.h"
#endif // BUILDFLAG(IS_WIN) && BUILDFLAG(GOOGLE_CHROME_BRANDING)
-#if BUILDFLAG(ENABLE_EXTENSIONS)
+#if BUILDFLAG(ENABLE_EXTENSIONS_CORE)
#include "chrome/browser/policy/cloud/extension_install_policy_service_factory.h"
#include "chrome/browser/policy/value_provider/extension_install_policies_value_provider.h"
#include "chrome/browser/policy/value_provider/extension_policies_value_provider.h"
diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
--- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
+++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
@@ -669,7 +669,7 @@ void ChromeBrowserMainExtraPartsProfiles::
chromeos_extensions::EnsureBrowserContextKeyedServiceFactoriesBuilt();
#endif
extensions::EnsureBrowserContextKeyedServiceFactoriesBuilt();
-#elif BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#elif BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
chrome_extensions::EnsureBrowserContextKeyedServiceFactoriesBuilt();
// EnsureBrowserContextKeyedServiceFactoriesBuilt() is invoked before the
// ExtensionsBrowserClient is ready on Android. This is due to Android
diff --git a/chrome/browser/profiles/off_the_record_profile_impl.cc b/chrome/browser/profiles/off_the_record_profile_impl.cc
--- a/chrome/browser/profiles/off_the_record_profile_impl.cc
+++ b/chrome/browser/profiles/off_the_record_profile_impl.cc
@@ -110,6 +110,7 @@
#include "chrome/browser/extensions/extension_special_storage_policy.h"
#include "chrome/browser/ui/webui/extensions/extension_icon_source.h"
#include "extensions/browser/api/web_request/extension_web_request_event_router.h"
+#include "extensions/browser/process_manager.h"
#endif
#if BUILDFLAG(ENABLE_GUEST_VIEW)
@@ -209,7 +210,9 @@ void OffTheRecordProfileImpl::Init() {
// Make the chrome//extension-icon/ resource available.
content::URLDataSource::Add(
this, std::make_unique<extensions::ExtensionIconSource>(profile_));
-
+ if (extensions::ProcessManager* process_manager = extensions::ProcessManager::Get(this)) {
+ process_manager->MaybeCreateStartupBackgroundHosts();
+ }
extensions::WebRequestEventRouter::OnOTRBrowserContextCreated(profile_, this);
#endif // BUILDFLAG(ENABLE_EXTENSIONS_CORE)
diff --git a/chrome/browser/profiles/profile_destroyer.cc b/chrome/browser/profiles/profile_destroyer.cc
--- a/chrome/browser/profiles/profile_destroyer.cc
+++ b/chrome/browser/profiles/profile_destroyer.cc
@@ -29,7 +29,7 @@ namespace {
#if BUILDFLAG(IS_ANDROID)
// Set the render host waiting time to 5s on Android, that's the same
// as an "Application Not Responding" timeout.
-const int64_t kTimerDelaySeconds = 5;
+const int64_t kTimerDelaySeconds = 1;
#elif BUILDFLAG(IS_CHROMEOS)
// linux-chromeos-dbg is failing to destroy the profile in under 1 second
const int64_t kTimerDelaySeconds = 2;
diff --git a/chrome/browser/resources/BUILD.gn b/chrome/browser/resources/BUILD.gn
--- a/chrome/browser/resources/BUILD.gn
+++ b/chrome/browser/resources/BUILD.gn
@@ -123,7 +123,7 @@ group("resources") {
]
}
- if (is_win || is_mac || is_linux || is_chromeos || is_desktop_android) {
+ if (is_win || is_mac || is_linux || is_chromeos || is_desktop_android_cromite) {
public_deps += [
"discards:resources",
"management:resources",
diff --git a/chrome/browser/resources/discards/BUILD.gn b/chrome/browser/resources/discards/BUILD.gn
--- a/chrome/browser/resources/discards/BUILD.gn
+++ b/chrome/browser/resources/discards/BUILD.gn
@@ -5,7 +5,7 @@
import("//ui/webui/resources/tools/build_webui.gni")
import("//ui/webui/resources/tools/generate_grd.gni")
-assert(!is_android || is_desktop_android)
+assert(!is_android || is_desktop_android_cromite)
build_webui("build") {
grd_prefix = "discards"
diff --git a/chrome/browser/resources/extensions/detail_view.css b/chrome/browser/resources/extensions/detail_view.css
--- a/chrome/browser/resources/extensions/detail_view.css
+++ b/chrome/browser/resources/extensions/detail_view.css
@@ -212,3 +212,9 @@ extensions-toggle-row {
display: flex;
flex-direction: row;
}
+
+<if expr="is_android">
+.page-content {
+ width: 100% !important;
+}
+</if>
diff --git a/chrome/browser/resources/extensions/extensions.html b/chrome/browser/resources/extensions/extensions.html
--- a/chrome/browser/resources/extensions/extensions.html
+++ b/chrome/browser/resources/extensions/extensions.html
@@ -1,9 +1,15 @@
<!doctype html>
<html dir="$i18n{textdirection}" lang="$i18n{language}"
- class="loading $i18n{loadTimeClasses}">
+ class="loading $i18n{loadTimeClasses}"
+<if expr="is_android">
+ android
+</if>>
<head>
<meta charset="utf8">
<meta name="color-scheme" content="light dark">
+<if expr="is_android">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=yes">
+</if>
<title>$i18n{title}</title>
<base href="chrome://extensions">
<link rel="stylesheet" href="chrome://resources/css/md_colors.css">
diff --git a/chrome/browser/resources/extensions/item_list.css b/chrome/browser/resources/extensions/item_list.css
--- a/chrome/browser/resources/extensions/item_list.css
+++ b/chrome/browser/resources/extensions/item_list.css
@@ -10,7 +10,12 @@
.items-container,
#content-wrapper {
+<if expr="is_android">
+ --extensions-card-width: 90vw;
+</if>
+<if expr="not is_android">
--extensions-card-width: 400px;
+</if>
}
#container {
@@ -20,7 +25,12 @@
#content-wrapper {
min-width: var(--extensions-card-width);
+<if expr="is_android">
+ padding: 0 !important;
+</if>
+<if expr="not is_android">
padding: 24px 60px 64px;
+</if>
}
#content-wrapper:has(extensions-review-panel),
diff --git a/chrome/browser/resources/extensions/manager.css b/chrome/browser/resources/extensions/manager.css
--- a/chrome/browser/resources/extensions/manager.css
+++ b/chrome/browser/resources/extensions/manager.css
@@ -73,3 +73,7 @@ extensions-item {
#right {
flex: 1 1 0;
}
+
+#drawer {
+ z-index: 9999;
+}
diff --git a/chrome/browser/resources/extensions/toolbar.html.ts b/chrome/browser/resources/extensions/toolbar.html.ts
--- a/chrome/browser/resources/extensions/toolbar.html.ts
+++ b/chrome/browser/resources/extensions/toolbar.html.ts
@@ -26,13 +26,6 @@ export function getHtml(this: ToolbarElement) {
aria-labelledby="devModeLabel">
</cr-toggle>
</div>
- <if expr="is_android">
- <picture slot="product-logo">
- <source media="(prefers-color-scheme: dark)"
- srcset="//resources/images/chrome_logo_dark.svg">
- <img srcset="images/product_logo.png" role="presentation">
- </picture>
- </if>
<div class="more-actions">
<span>$i18n{toolbarExtensionUpdateEnabled}
<span id="need-update" ?hidden="${!this.shouldShowRelaunchDialog}">$i18n{toolbarExtensionUpdateEnabledNeedRestart}</span>
diff --git a/chrome/browser/sessions/session_restore_android.cc b/chrome/browser/sessions/session_restore_android.cc
--- a/chrome/browser/sessions/session_restore_android.cc
+++ b/chrome/browser/sessions/session_restore_android.cc
@@ -23,7 +23,7 @@
namespace {
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_FALSE)
BrowserWindowInterface::Type BrowserTypeFromWindowType(
sessions::SessionWindow::WindowType type) {
switch (type) {
@@ -109,7 +109,7 @@ void SessionRestore::RestoreForeignSessionWindows(
std::vector<const sessions::SessionWindow*>::const_iterator begin,
std::vector<const sessions::SessionWindow*>::const_iterator end,
base::OnceCallback<void(std::vector<BrowserWindowInterface*>)> callback) {
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_FALSE)
// The extensions sessions API can restore foreign windows.
size_t window_count = std::distance(begin, end);
// Wait for `window_count` callbacks.
diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/ChromeProvidedSharingOptionsProviderBase.java b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/ChromeProvidedSharingOptionsProviderBase.java
--- a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/ChromeProvidedSharingOptionsProviderBase.java
+++ b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/ChromeProvidedSharingOptionsProviderBase.java
@@ -305,7 +305,7 @@ public abstract class ChromeProvidedSharingOptionsProviderBase {
}
private void maybeAddCollaborateFirstPartyOption() {
- if (DeviceInfo.isDesktop()) {
+ if (DeviceInfo.isDesktopFalse()) {
return;
}
FirstPartyOption option = createCollaborateFirstPartyOption();
@@ -337,7 +337,7 @@ public abstract class ChromeProvidedSharingOptionsProviderBase {
private void maybeAddPrintFirstPartyOption() {
// For the desktop case, the Print action will be showed in the main menu.
- if (!DeviceInfo.isDesktop()
+ if (!DeviceInfo.isDesktopFalse()
&& mTabProvider.get() != null
&& UserPrefs.get(mProfile).getBoolean(Pref.PRINTING_ENABLED)) {
mOrderedFirstPartyOptions.add(createPrintingFirstPartyOption());
diff --git a/chrome/browser/startup_data.cc b/chrome/browser/startup_data.cc
--- a/chrome/browser/startup_data.cc
+++ b/chrome/browser/startup_data.cc
@@ -51,7 +51,7 @@
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "services/preferences/public/mojom/tracked_preference_validation_delegate.mojom.h"
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
#include "chrome/browser/extensions/chrome_extensions_browser_client.h"
#include "extensions/browser/extensions_browser_client.h"
#endif
@@ -167,7 +167,7 @@ StartupData::TakeProtoDatabaseProvider() {
void StartupData::PreProfilePrefServiceInit() {
pref_registry_ = base::MakeRefCounted<user_prefs::PrefRegistrySyncable>();
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
// On desktop Android the ExtensionsBrowserClient is created here because it
// must be initialized before BrowserContextKeyedServiceFactories are built.
// Some factories use ExtensionsBrowserClient::Get() in their DependsOn().
@@ -249,7 +249,7 @@ void StartupData::CreateServicesInternal() {
}
#endif
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
std::unique_ptr<extensions::ExtensionsBrowserClient>
StartupData::TakeExtensionsBrowserClient() {
return std::move(extensions_browser_client_);
diff --git a/chrome/browser/startup_data.h b/chrome/browser/startup_data.h
--- a/chrome/browser/startup_data.h
+++ b/chrome/browser/startup_data.h
@@ -12,7 +12,7 @@
#include "components/leveldb_proto/public/proto_database_provider.h"
#include "extensions/buildflags/buildflags.h"
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
namespace extensions {
class ExtensionsBrowserClient;
}
@@ -92,7 +92,7 @@ class StartupData {
TakeProtoDatabaseProvider();
#endif
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
// Passes ownership of the `extensions_browser_client_` to the caller.
std::unique_ptr<extensions::ExtensionsBrowserClient>
TakeExtensionsBrowserClient();
@@ -120,7 +120,7 @@ class StartupData {
std::unique_ptr<leveldb_proto::ProtoDatabaseProvider> proto_db_provider_;
#endif
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
std::unique_ptr<extensions::ExtensionsBrowserClient>
extensions_browser_client_;
#endif
diff --git a/chrome/browser/task_manager/common/task_manager_features.cc b/chrome/browser/task_manager/common/task_manager_features.cc
--- a/chrome/browser/task_manager/common/task_manager_features.cc
+++ b/chrome/browser/task_manager/common/task_manager_features.cc
@@ -11,7 +11,7 @@ namespace features {
#if BUILDFLAG(IS_ANDROID)
// Enables the Task Manager on Clank.
BASE_FEATURE(kTaskManagerClank,
-#if BUILDFLAG(IS_DESKTOP_ANDROID)
+#if BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)
base::FEATURE_ENABLED_BY_DEFAULT
#else
base::FEATURE_DISABLED_BY_DEFAULT
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -719,7 +719,7 @@ static_library("ui") {
}
# Desktop-Android-only dependencies.
- if (is_desktop_android) {
+ if (is_desktop_android_cromite) {
deps += [ "//chrome/browser/ui/android/extensions/windowing/internal" ]
}
@@ -3022,7 +3022,7 @@ static_library("ui") {
allow_circular_includes_from += [ "//chrome/browser/ui/wallet" ]
}
- if (is_win || is_mac || is_linux || is_chromeos || is_desktop_android) {
+ if (is_win || is_mac || is_linux || is_chromeos || is_desktop_android_cromite) {
sources += [
"webui/discards/discards_ui.cc",
"webui/discards/discards_ui.h",
diff --git a/chrome/browser/ui/android/context_menu_helper.cc b/chrome/browser/ui/android/context_menu_helper.cc
--- a/chrome/browser/ui/android/context_menu_helper.cc
+++ b/chrome/browser/ui/android/context_menu_helper.cc
@@ -24,7 +24,7 @@
#include "ui/gfx/geometry/size.h"
#include "url/gurl.h"
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
#include "chrome/browser/extensions/extension_menu_model_android.h"
#include "ui/menus/simple_menu_model.h"
#endif // BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
@@ -44,7 +44,7 @@ ContextMenuHelper::ContextMenuHelper(content::WebContents* web_contents)
}
ContextMenuHelper::~ContextMenuHelper() {
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
extension_menu_model_.reset();
#endif // BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
JNIEnv* env = base::android::AttachCurrentThread();
@@ -58,7 +58,7 @@ void ContextMenuHelper::ShowContextMenu(
context_menu_params_ = params;
gfx::NativeView view = GetWebContents().GetNativeView();
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
// Reset any previous menu model, in case a new menu is shown
// before the old one was gracefully closed.
extension_menu_model_.reset();
@@ -81,11 +81,17 @@ void ContextMenuHelper::ShowContextMenu(
}
void ContextMenuHelper::DismissContextMenu() {
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
+ extension_menu_model_.reset();
+#endif // BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
JNIEnv* env = base::android::AttachCurrentThread();
Java_ContextMenuHelper_dismissContextMenu(env, GetJavaObject(env));
}
void ContextMenuHelper::OnContextMenuClosed(JNIEnv* env) {
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
+ extension_menu_model_.reset();
+#endif // BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
GetWebContents().NotifyContextMenuClosed(context_menu_params_.link_followed,
context_menu_params_.impression);
}
diff --git a/chrome/browser/ui/android/context_menu_helper.h b/chrome/browser/ui/android/context_menu_helper.h
--- a/chrome/browser/ui/android/context_menu_helper.h
+++ b/chrome/browser/ui/android/context_menu_helper.h
@@ -15,7 +15,7 @@
#include "extensions/buildflags/buildflags.h"
#include "mojo/public/cpp/bindings/associated_remote.h"
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
namespace extensions {
class ExtensionMenuModel;
}
@@ -54,7 +54,7 @@ class ContextMenuHelper
content::ContextMenuParams context_menu_params_;
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
std::unique_ptr<extensions::ExtensionMenuModel> extension_menu_model_;
#endif // BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
diff --git a/chrome/browser/ui/android/desktop_site/java/src/org/chromium/chrome/browser/desktop_site/DesktopSiteUtils.java b/chrome/browser/ui/android/desktop_site/java/src/org/chromium/chrome/browser/desktop_site/DesktopSiteUtils.java
--- a/chrome/browser/ui/android/desktop_site/java/src/org/chromium/chrome/browser/desktop_site/DesktopSiteUtils.java
+++ b/chrome/browser/ui/android/desktop_site/java/src/org/chromium/chrome/browser/desktop_site/DesktopSiteUtils.java
@@ -115,7 +115,7 @@ public class DesktopSiteUtils {
*/
static boolean shouldDefaultEnableGlobalSetting(double displaySizeInInches, Context context) {
// Desktop Android always requests desktop sites.
- if (DeviceInfo.isDesktop()) {
+ if (DeviceInfo.isDesktopFalse()) {
return true;
}
@@ -195,7 +195,7 @@ public class DesktopSiteUtils {
boolean isOnExternalDisplay = isOnExternalDisplay(activity);
if (isOnExternalDisplay
|| smallestScreenWidthDp < DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP
- || DeviceInfo.isDesktop()) {
+ || DeviceInfo.isDesktopFalse()) {
return;
}
PrefService prefService = UserPrefs.get(profile);
diff --git a/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/TopControlsLockCoordinator.java b/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/TopControlsLockCoordinator.java
--- a/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/TopControlsLockCoordinator.java
+++ b/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/TopControlsLockCoordinator.java
@@ -100,7 +100,7 @@ public class TopControlsLockCoordinator {
private boolean shouldLockTopControls() {
// Desktop form factor always take priority.
// TODO(crbug.com/450970998): Explore if we can set this for all large tablets.
- if (DeviceInfo.isDesktop()) return true;
+ if (DeviceInfo.isDesktopFalse()) return true;
// Enable lock in desktop window mode. Only relevant when the device supports it.
if (mDesktopWindowStateManager != null) {
diff --git a/chrome/browser/ui/android/extensions/BUILD.gn b/chrome/browser/ui/android/extensions/BUILD.gn
--- a/chrome/browser/ui/android/extensions/BUILD.gn
+++ b/chrome/browser/ui/android/extensions/BUILD.gn
@@ -87,8 +87,8 @@ if (enable_extensions_core) {
java_cpp_template("generate_buildflags") {
sources = [ "java/templates/ExtensionsBuildflags.template" ]
- if (enable_desktop_android_extensions) {
- defines = [ "_ENABLE_DESKTOP_ANDROID_EXTENSIONS" ]
+ if (enable_desktop_android_extensions_cromite) {
+ defines = [ "_ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE" ]
}
}
diff --git a/chrome/browser/ui/android/extensions/extension_actions_bridge.cc b/chrome/browser/ui/android/extensions/extension_actions_bridge.cc
--- a/chrome/browser/ui/android/extensions/extension_actions_bridge.cc
+++ b/chrome/browser/ui/android/extensions/extension_actions_bridge.cc
@@ -8,12 +8,15 @@
#include <variant>
#include "base/android/jni_string.h"
+#include "base/files/file_util.h"
+#include "base/task/thread_pool.h"
#include "chrome/browser/extensions/extension_management.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser_window/public/browser_window_interface.h"
#include "ui/events/android/key_event_android.h"
// Must come after all headers that specialize FromJniType() / ToJniType().
+#include "extensions/common/constants.h"
#include "chrome/browser/ui/android/extensions/jni_headers/ExtensionAction_jni.h"
#include "chrome/browser/ui/android/extensions/jni_headers/ExtensionActionsBridge_jni.h"
@@ -28,6 +31,26 @@ ExtensionActionsBridge::ExtensionActionsBridge(
ExtensionActionsBridge::~ExtensionActionsBridge() = default;
+void ExtensionActionsBridge::ClearExtensionData(JNIEnv* env) {
+ auto install_directory = profile_->GetPath().AppendASCII(kInstallDirectoryName);
+ auto install_updacked_directory = profile_->GetPath().AppendASCII(kInstallDirectoryName);
+
+ base::ThreadPool::PostTask(
+ FROM_HERE, {base::MayBlock(), base::TaskPriority::USER_BLOCKING},
+ base::BindOnce(
+ [](const base::FilePath& install_directory,
+ const base::FilePath& install_updacked_directory) {
+ LOG(INFO) << "Removing " << install_directory;
+ if (!base::DeletePathRecursively(install_directory))
+ LOG(ERROR) << "Failed";
+
+ LOG(INFO) << "Removing " << install_updacked_directory;
+ if (!base::DeletePathRecursively(install_updacked_directory))
+ LOG(ERROR) << "Failed";
+ },
+ install_directory, install_updacked_directory));
+}
+
void ExtensionActionsBridge::Destroy(JNIEnv* env) {
delete this;
}
diff --git a/chrome/browser/ui/android/extensions/extension_actions_bridge.h b/chrome/browser/ui/android/extensions/extension_actions_bridge.h
--- a/chrome/browser/ui/android/extensions/extension_actions_bridge.h
+++ b/chrome/browser/ui/android/extensions/extension_actions_bridge.h
@@ -26,6 +26,7 @@ class ExtensionActionsBridge {
~ExtensionActionsBridge();
// JNI implementations.
+ void ClearExtensionData(JNIEnv* env);
void Destroy(JNIEnv* env);
private:
diff --git a/chrome/browser/ui/android/extensions/extensions_toolbar_android.cc b/chrome/browser/ui/android/extensions/extensions_toolbar_android.cc
--- a/chrome/browser/ui/android/extensions/extensions_toolbar_android.cc
+++ b/chrome/browser/ui/android/extensions/extensions_toolbar_android.cc
@@ -183,6 +183,7 @@ base::android::ScopedJavaLocalRef<jobject> ExtensionsToolbarAndroid::GetAction(
content::WebContents* web_contents) {
ToolbarActionViewModel* action =
toolbar_view_model_->GetActionModelForId(action_id);
+ if (!action) return nullptr;
return Java_ExtensionAction_Constructor(
env, action_id, base::UTF16ToUTF8(action->GetTooltip(web_contents)),
base::UTF16ToUTF8(action->GetAccessibleName(web_contents)));
diff --git a/chrome/browser/ui/android/extensions/java/res/layout/extensions_menu_footer.xml b/chrome/browser/ui/android/extensions/java/res/layout/extensions_menu_footer.xml
--- a/chrome/browser/ui/android/extensions/java/res/layout/extensions_menu_footer.xml
+++ b/chrome/browser/ui/android/extensions/java/res/layout/extensions_menu_footer.xml
@@ -36,6 +36,7 @@ found in the LICENSE file.
<LinearLayout
android:id="@+id/extensions_menu_discover_extensions_button"
+ android:visibility="gone"
style="@style/ExtensionsMenuFooterRow"
tools:ignore="UseCompoundDrawables" >
@@ -70,4 +71,4 @@ found in the LICENSE file.
</LinearLayout>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/chrome/browser/ui/android/extensions/java/res/values/dimens.xml b/chrome/browser/ui/android/extensions/java/res/values/dimens.xml
--- a/chrome/browser/ui/android/extensions/java/res/values/dimens.xml
+++ b/chrome/browser/ui/android/extensions/java/res/values/dimens.xml
@@ -14,6 +14,7 @@ found in the LICENSE file.
<dimen name="extensions_menu_footer_icon_size">20dp</dimen>
<!-- Extensions Toolbar dimensions -->
+ <dimen name="extension_toolbar_baseline_min_width">50dp</dimen>
<dimen name="extensions_toolbar_button_radius_inner">4dp</dimen>
<dimen name="extensions_toolbar_button_radius_outer">20dp</dimen>
<dimen name="extensions_request_access_button_margin_end">2dp</dimen>
diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionsBridge.java b/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionsBridge.java
--- a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionsBridge.java
+++ b/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionsBridge.java
@@ -45,12 +45,18 @@ public class ExtensionActionsBridge implements Destroyable {
return ExtensionActionsBridgeJni.get().extensionsEnabled(profile);
}
+ public void clearExtensionData() {
+ ExtensionActionsBridgeJni.get().clearExtensionData(mNativeExtensionActionsBridge);
+ }
+
@NativeMethods
public interface Natives {
boolean extensionsEnabled(@JniType("Profile*") Profile profile);
long init(ExtensionActionsBridge bridge, long browserWindowInterfacePtr);
+ void clearExtensionData(long nativeExtensionActionsBridge);
+
void destroy(long nativeExtensionActionsBridge);
}
}
diff --git a/chrome/browser/ui/android/extensions/windowing/internal/BUILD.gn b/chrome/browser/ui/android/extensions/windowing/internal/BUILD.gn
--- a/chrome/browser/ui/android/extensions/windowing/internal/BUILD.gn
+++ b/chrome/browser/ui/android/extensions/windowing/internal/BUILD.gn
@@ -6,7 +6,7 @@ import("//build/config/android/rules.gni")
import("//build/config/chrome_build.gni")
import("//third_party/jni_zero/jni_zero.gni")
-assert(is_desktop_android)
+assert(is_desktop_android_cromite)
source_set("internal") {
sources = [
diff --git a/chrome/browser/ui/android/extensions/windowing/internal/extension_window_controller_bridge.cc b/chrome/browser/ui/android/extensions/windowing/internal/extension_window_controller_bridge.cc
--- a/chrome/browser/ui/android/extensions/windowing/internal/extension_window_controller_bridge.cc
+++ b/chrome/browser/ui/android/extensions/windowing/internal/extension_window_controller_bridge.cc
@@ -69,12 +69,13 @@ ExtensionWindowControllerBridge::ExtensionWindowControllerBridge(
java_extension_window_controller_bridge,
BrowserWindowInterface* browser_window)
: extension_window_controller_(
- BrowserExtensionWindowController(browser_window)) {
+ std::make_unique<extensions::BrowserExtensionWindowController>(browser_window)) {
java_extension_window_controller_bridge_.Reset(
env, java_extension_window_controller_bridge);
}
ExtensionWindowControllerBridge::~ExtensionWindowControllerBridge() {
+ extension_window_controller_.reset();
Java_ExtensionWindowControllerBridgeImpl_clearNativePtr(
AttachCurrentThread(), java_extension_window_controller_bridge_);
}
@@ -84,22 +85,22 @@ void ExtensionWindowControllerBridge::Destroy(JNIEnv* env) {
}
void ExtensionWindowControllerBridge::OnTaskBoundsChanged(JNIEnv* env) {
- extension_window_controller_.NotifyWindowBoundsChanged();
+ extension_window_controller_->NotifyWindowBoundsChanged();
}
void ExtensionWindowControllerBridge::OnTaskFocusChanged(JNIEnv* env,
bool has_focus) {
- extension_window_controller_.NotifyWindowFocusChanged(has_focus);
+ extension_window_controller_->NotifyWindowFocusChanged(has_focus);
}
int ExtensionWindowControllerBridge::GetExtensionWindowIdForTesting(
JNIEnv* env) {
- return extension_window_controller_.GetWindowId();
+ return extension_window_controller_->GetWindowId();
}
-const BrowserExtensionWindowController&
-ExtensionWindowControllerBridge::GetExtensionWindowControllerForTesting() {
- return extension_window_controller_;
-}
+// const BrowserExtensionWindowController&
+// ExtensionWindowControllerBridge::GetExtensionWindowControllerForTesting() {
+// return extension_window_controller_;
+// }
DEFINE_JNI(ExtensionWindowControllerBridgeImpl)
diff --git a/chrome/browser/ui/android/extensions/windowing/internal/extension_window_controller_bridge.h b/chrome/browser/ui/android/extensions/windowing/internal/extension_window_controller_bridge.h
--- a/chrome/browser/ui/android/extensions/windowing/internal/extension_window_controller_bridge.h
+++ b/chrome/browser/ui/android/extensions/windowing/internal/extension_window_controller_bridge.h
@@ -64,7 +64,7 @@ class ExtensionWindowControllerBridge final {
base::android::ScopedJavaGlobalRef<jobject>
java_extension_window_controller_bridge_;
- extensions::BrowserExtensionWindowController extension_window_controller_;
+ std::unique_ptr<extensions::BrowserExtensionWindowController> extension_window_controller_;
raw_ptr<WindowControllerListObserverForTesting>
window_controller_list_observer_for_testing_;
diff --git a/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Enable-extensions-Android.grdp b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Enable-extensions-Android.grdp
new file mode 100644
--- /dev/null
+++ b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Enable-extensions-Android.grdp
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<grit-part>
+ <message name="IDS_STORAGE_MANAGEMENT_EXTENSION_STORAGE_DESCRIPTION" desc="Text used to describe extension storage space used by Chrome.">
+ Total data used by extensions
+ </message>
+ <message name="IDS_STORAGE_MANAGEMENT_CLEAR_ALL_EXTENSION_BUTTON" desc="Text on the button to clear all extension data. [CHAR_LIMIT=30]">
+ Clear All Extensions Data
+ </message>
+ <message name="IDS_STORAGE_MANAGEMENT_EXTENSION_RESET_APP_DIALOG_TITLE" desc="Title of the reset extension dialog in the storage UI used to reset the app.">
+ Delete extension data?
+ </message>
+ <message name="IDS_STORAGE_MANAGEMENT_EXTENSION_RESET_APP_DIALOG_TEXT" desc="Text of the reset extension dialoag in the storage UI.">
+ All Chromes extension data will be deleted permanently.
+ </message>
+</grit-part>
diff --git a/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Extensions-Android.grdp b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Extensions-Android.grdp
new file mode 100644
--- /dev/null
+++ b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Extensions-Android.grdp
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<grit-part>
+ <message name="IDS_ANDROID_EXTENSIONS_TITLE" desc="">
+ Enable Extensions
+ </message>
+ <message name="IDS_ANDROID_EXTENSIONS_SUMMARY" desc="">
+ 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
@@ -183,7 +183,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
@@ -133,7 +133,7 @@ class TestTabModel : public TabModel {
// BrowserWindowInterface is available on desktop Android, but not other Android
// builds.
-#if BUILDFLAG(IS_DESKTOP_ANDROID)
+#if BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)
void AssociateWithBrowserWindow(BrowserWindowInterface* browser_window);
#endif
diff --git a/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_phone.xml b/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_phone.xml
--- a/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_phone.xml
+++ b/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_phone.xml
@@ -65,6 +65,12 @@ found in the LICENSE file.
android:layout_height="match_parent"
android:visibility="gone"/>
+ <ViewStub
+ android:id="@+id/extensions_toolbar_container_stub"
+ android:inflatedId="@+id/extensions_toolbar_container"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent" />
+
<org.chromium.chrome.browser.toolbar.top.ToggleTabStackButton
android:id="@+id/tab_switcher_button"
style="@style/ToolbarHoverableButton"
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
@@ -25,6 +25,7 @@ import org.chromium.chrome.browser.tabmodel.TabCreator;
import org.chromium.chrome.browser.theme.ThemeColorProvider;
import org.chromium.chrome.browser.toolbar.MenuBuilderHelper;
import org.chromium.chrome.browser.toolbar.extensions.ExtensionsToolbarCoordinatorImpl.MenuButtonPinningDelegate;
+import org.chromium.chrome.browser.toolbar.extensions.ExtensionActionListCoordinator;
import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTask;
import org.chromium.chrome.browser.ui.extensions.ExtensionsToolbarBridge;
import org.chromium.chrome.browser.ui.extensions.R;
@@ -67,6 +68,7 @@ public class ExtensionsMenuCoordinator implements Destroyable, ExtensionsToolbar
private final ExtensionsToolbarBridge mExtensionsToolbarBridge;
private final MenuButtonPinningDelegate mMenuButtonPinningDelegate;
private final ThemeColorProvider.TintObserver mTintObserver = this::onTintChanged;
+ private final ExtensionActionListCoordinator mExtensionActionListCoordinator;
@Nullable @VisibleForTesting ExtensionsMenuMediator mMediator;
@@ -93,7 +95,9 @@ public class ExtensionsMenuCoordinator implements Destroyable, ExtensionsToolbar
NullableObservableSupplier<Tab> currentTabSupplier,
TabCreator tabCreator,
ExtensionsToolbarBridge extensionsToolbarBridge,
- MenuButtonPinningDelegate menuButtonPinningDelegate) {
+ MenuButtonPinningDelegate menuButtonPinningDelegate,
+ ExtensionActionListCoordinator extensionActionListCoordinator) {
+ mExtensionActionListCoordinator = extensionActionListCoordinator;
mContext = context;
mCurrentTabSupplier = currentTabSupplier;
mProfile = profile;
@@ -212,7 +216,7 @@ public class ExtensionsMenuCoordinator implements Destroyable, ExtensionsToolbar
mSitePermissionsPageModel,
/* onReady= */ () -> {
mExtensionsMenuButton.showMenu();
- });
+ }, mExtensionActionListCoordinator);
}
/**
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuItemProperties.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuItemProperties.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuItemProperties.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuItemProperties.java
@@ -29,6 +29,9 @@ public class ExtensionsMenuItemProperties {
public static final WritableIntPropertyKey CONTEXT_MENU_BUTTON_ICON =
new WritableIntPropertyKey();
+ public static final WritableObjectPropertyKey<View.OnClickListener> ITEM_CLICK_LISTENER =
+ new WritableObjectPropertyKey<>();
+
public static final WritableObjectPropertyKey<View.OnClickListener>
CONTEXT_MENU_BUTTON_ON_CLICK = new WritableObjectPropertyKey<>();
@@ -58,6 +61,7 @@ public class ExtensionsMenuItemProperties {
public static final PropertyKey[] ALL_KEYS =
new PropertyKey[] {
+ ITEM_CLICK_LISTENER,
EXTENSION_ID,
ICON,
TITLE,
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuItemViewBinder.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuItemViewBinder.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuItemViewBinder.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuItemViewBinder.java
@@ -35,6 +35,8 @@ public class ExtensionsMenuItemViewBinder {
// TODO: Investigate the correct resizing method.
bitmap.setDensity(120);
}
+ } else if (key == ExtensionsMenuItemProperties.ITEM_CLICK_LISTENER) {
+ view.setOnClickListener(model.get(ExtensionsMenuItemProperties.ITEM_CLICK_LISTENER));
} else if (key == ExtensionsMenuItemProperties.CONTEXT_MENU_BUTTON_ICON) {
ImageView contextMenuView = view.findViewById(R.id.extensions_menu_item_context_menu);
contextMenuView.setImageResource(
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuMediator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuMediator.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuMediator.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuMediator.java
@@ -15,6 +15,7 @@ import org.chromium.build.annotations.NullMarked;
import org.chromium.chrome.browser.extensions.ContextMenuSource;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.tab.Tab;
+import org.chromium.chrome.browser.toolbar.extensions.ExtensionActionListCoordinator;
import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTask;
import org.chromium.chrome.browser.ui.extensions.ExtensionActionContextMenuBridge;
import org.chromium.chrome.browser.ui.extensions.ExtensionsMenuBridge;
@@ -44,6 +45,7 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ
private final Runnable mOnReady;
private final ChromeAndroidTask mTask;
private final Profile mProfile;
+ private final ExtensionActionListCoordinator mExtensionActionListCoordinator;
/**
* @param context The context to use.
@@ -63,7 +65,9 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ
ModelList actionModels,
PropertyModel mainPageModel,
PropertyModel sitePermissionsPropertyModel,
- Runnable onReady) {
+ Runnable onReady,
+ ExtensionActionListCoordinator extensionActionListCoordinator) {
+ mExtensionActionListCoordinator = extensionActionListCoordinator;
mActionModels = actionModels;
mContext = context;
mCurrentTabSupplier = currentTabSupplier;
@@ -334,6 +338,9 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ
ExtensionsMenuItemProperties.CONTEXT_MENU_BUTTON_ON_CLICK,
(view) ->
onContextMenuButtonClicked((ListMenuButton) view, entry.id))
+ .with(
+ ExtensionsMenuItemProperties.ITEM_CLICK_LISTENER,
+ (view) -> mExtensionActionListCoordinator.openPopup(entry.id))
.with(
ExtensionsMenuItemProperties.CONTEXT_MENU_BUTTON_ICON,
contextMenuIcon)
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsToolbarCoordinatorImpl.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsToolbarCoordinatorImpl.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsToolbarCoordinatorImpl.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsToolbarCoordinatorImpl.java
@@ -87,13 +87,13 @@ public class ExtensionsToolbarCoordinatorImpl implements ExtensionsToolbarCoordi
ViewGroup rootView,
@Nullable ContextMenuPopulatorFactory contextMenuPopulatorFactory,
@Nullable SelectionDropdownMenuDelegate selectionDropdownMenuDelegate) {
- mBridge = new ExtensionActionsBridge(task, profile);
+ mBridge = ExtensionActionsBridge.Instance();
mProfile = profile;
extensionsToolbarStub.setLayoutResource(R.layout.extensions_toolbar_container);
mContainer = (LinearLayout) extensionsToolbarStub.inflate();
- mExtensionsToolbarBridge = new ExtensionsToolbarBridge(task, profile);
+ mExtensionsToolbarBridge = ExtensionsToolbarBridge.Instance();
mPrefService = UserPrefs.get(profile);
@@ -101,6 +101,7 @@ public class ExtensionsToolbarCoordinatorImpl implements ExtensionsToolbarCoordi
new ExtensionActionListCoordinator(
context,
mContainer.findViewById(R.id.extension_action_list),
+ mContainer.findViewById(R.id.extensions_menu_button),
windowAndroid,
task,
profile,
@@ -152,8 +153,8 @@ public class ExtensionsToolbarCoordinatorImpl implements ExtensionsToolbarCoordi
mExtensionAccessControlButtonCoordinator.destroy();
mExtensionsMenuCoordinator.destroy();
mExtensionActionListCoordinator.destroy();
- mExtensionsToolbarBridge.destroy();
- mBridge.destroy();
+ // mExtensionsToolbarBridge.destroy();
+ // mBridge.destroy();
LifetimeAssert.setSafeToGc(mLifetimeAssert, true);
}
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
@@ -20,7 +20,7 @@ public final class ChromeAndroidTaskTrackerFactory {
*/
@Nullable
public static ChromeAndroidTaskTracker getInstance() {
- if (BuildConfig.IS_DESKTOP_ANDROID) {
+ if (BuildConfig.IS_DESKTOP_ANDROID_CROMITE) {
return ChromeAndroidTaskTrackerImpl.getInstance();
}
diff --git a/chrome/browser/ui/prefs/BUILD.gn b/chrome/browser/ui/prefs/BUILD.gn
--- a/chrome/browser/ui/prefs/BUILD.gn
+++ b/chrome/browser/ui/prefs/BUILD.gn
@@ -65,7 +65,7 @@ source_set("impl") {
}
}
-if (!is_android || enable_desktop_android_extensions) {
+if (!is_android || enable_desktop_android_extensions_cromite) {
source_set("browser_tests") {
testonly = true
defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
@@ -83,7 +83,7 @@ if (!is_android || enable_desktop_android_extensions) {
"//third_party/blink/public/common:headers",
]
- if (enable_desktop_android_extensions) {
+ if (enable_desktop_android_extensions_cromite) {
deps += [ "//chrome/test:test_support_ui_android" ]
} else {
deps += [ "//chrome/test:test_support_ui" ]
diff --git a/chrome/browser/ui/prefs/prefs_tab_helper.cc b/chrome/browser/ui/prefs/prefs_tab_helper.cc
--- a/chrome/browser/ui/prefs/prefs_tab_helper.cc
+++ b/chrome/browser/ui/prefs/prefs_tab_helper.cc
@@ -78,7 +78,7 @@ using content::WebContents;
namespace {
-#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
// Registers a preference under the path |pref_name| for each script used for
// per-script font prefs.
// For example, for WEBKIT_WEBPREFS_FONTS_SERIF ("fonts.serif"):
@@ -151,7 +151,7 @@ constexpr auto kFontDefaults = std::to_array<FontDefault>({
{prefs::kWebKitFantasyFontFamily, IDS_FANTASY_FONT_FAMILY},
{prefs::kWebKitMathFontFamily, IDS_MATH_FONT_FAMILY},
#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || \
- BUILDFLAG(IS_LINUX) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+ BUILDFLAG(IS_LINUX) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
{prefs::kWebKitStandardFontFamilyJapanese,
IDS_STANDARD_FONT_FAMILY_JAPANESE},
{prefs::kWebKitFixedFontFamilyJapanese, IDS_FIXED_FONT_FAMILY_JAPANESE},
@@ -296,7 +296,7 @@ void OverrideFontFamily(blink::web_pref::WebPreferences* prefs,
(*map)[script] = base::UTF8ToUTF16(pref_value);
}
-#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
void RegisterLocalizedFontPref(user_prefs::PrefRegistrySyncable* registry,
const char* path,
int default_message_id) {
@@ -456,7 +456,7 @@ void PrefsTabHelper::RegisterProfilePrefs(
}
// Register font prefs. This is only configurable on desktop Chrome.
-#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
RegisterFontFamilyPrefs(registry, fonts_with_defaults);
registry->RegisterIntegerPref(prefs::kWebKitDefaultFontSize, 16);
diff --git a/chrome/browser/ui/webui/chrome_web_ui_configs.cc b/chrome/browser/ui/webui/chrome_web_ui_configs.cc
--- a/chrome/browser/ui/webui/chrome_web_ui_configs.cc
+++ b/chrome/browser/ui/webui/chrome_web_ui_configs.cc
@@ -180,7 +180,7 @@
// BUILDFLAG(IS_ANDROID)
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_DESKTOP_ANDROID)
+ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)
#include "chrome/browser/ui/webui/discards/discards_ui.h"
#include "chrome/browser/ui/webui/management/management_ui.h"
#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ||
@@ -426,7 +426,7 @@ void RegisterChromeWebUIConfigs() {
// BUILDFLAG(IS_ANDROID)
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_DESKTOP_ANDROID)
+ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)
map.AddWebUIConfig(std::make_unique<DiscardsUIConfig>());
map.AddWebUIConfig(std::make_unique<ManagementUIConfig>());
#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ||
diff --git a/chrome/browser/ui/webui/current_channel_logo.cc b/chrome/browser/ui/webui/current_channel_logo.cc
--- a/chrome/browser/ui/webui/current_channel_logo.cc
+++ b/chrome/browser/ui/webui/current_channel_logo.cc
@@ -29,8 +29,7 @@ int CurrentChannelLogoResourceId() {
case version_info::Channel::DEV:
case version_info::Channel::BETA:
case version_info::Channel::STABLE:
- CHECK_IS_TEST();
- [[fallthrough]];
+ return IDR_PRODUCT_LOGO_32;
#endif
case version_info::Channel::UNKNOWN:
return IDR_PRODUCT_LOGO_32;
diff --git a/chrome/browser/ui/webui/discards/discards_ui.cc b/chrome/browser/ui/webui/discards/discards_ui.cc
--- a/chrome/browser/ui/webui/discards/discards_ui.cc
+++ b/chrome/browser/ui/webui/discards/discards_ui.cc
@@ -60,7 +60,7 @@
#include "url/gurl.h"
#include "url/origin.h"
-#if !BUILDFLAG(IS_DESKTOP_ANDROID)
+#if !BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)
#include "chrome/browser/resource_coordinator/lifecycle_unit.h"
#include "chrome/browser/resource_coordinator/lifecycle_unit_state.mojom.h"
#include "chrome/browser/resource_coordinator/tab_lifecycle_unit.h"
@@ -240,7 +240,7 @@ class DiscardsDetailsProviderImpl
info->site_engagement_score = GetSiteEngagementScore(contents);
info->has_focus = page_node->IsFocused();
-#if !BUILDFLAG(IS_DESKTOP_ANDROID)
+#if !BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)
auto* lifecycle_unit_external = resource_coordinator::
TabLifecycleUnitSource::GetTabLifecycleUnitExternal(contents);
// A TabLifecycleUnitExternal object is always a TabLifecycleUnit object.
@@ -353,7 +353,7 @@ class DiscardsDetailsProviderImpl
}
void RefreshPerformanceTabCpuMeasurements() override {
-#if !BUILDFLAG(IS_DESKTOP_ANDROID)
+#if !BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)
performance_manager::user_tuning::PerformanceDetectionManager::GetInstance()
->ForceTabCpuDataRefresh();
#endif // !BUILDFLAG(IS_DESKTOP_ANDROID)
@@ -375,7 +375,7 @@ DiscardsUI::DiscardsUI(content::WebUI* web_ui)
profile, chrome::kChromeUIDiscardsHost);
bool demoModeEnabled = false;
-#if !BUILDFLAG(IS_DESKTOP_ANDROID)
+#if !BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)
demoModeEnabled = base::FeatureList::IsEnabled(
performance_manager::features::kPerformanceInterventionDemoMode);
#endif // !BUILDFLAG(IS_DESKTOP_ANDROID)
diff --git a/chrome/chrome_paks.gni b/chrome/chrome_paks.gni
--- a/chrome/chrome_paks.gni
+++ b/chrome/chrome_paks.gni
@@ -515,7 +515,7 @@ template("chrome_extra_paks") {
deps += [ "//chrome/browser/resources/app_settings:resources" ]
}
- if (is_win || is_mac || is_linux || is_chromeos || is_desktop_android) {
+ if (is_win || is_mac || is_linux || is_chromeos || is_desktop_android_cromite) {
sources += [
"$root_gen_dir/chrome/discards_resources.pak",
"$root_gen_dir/chrome/management_resources.pak",
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
--- a/chrome/common/chrome_features.cc
+++ b/chrome/common/chrome_features.cc
@@ -882,7 +882,7 @@ BASE_FEATURE(kGlicButtonAltLabel, base::FEATURE_ENABLED_BY_DEFAULT);
const base::FeatureParam<int> kGlicButtonAltLabelVariant{
&kGlicButtonAltLabel, "glic-button-alt-label-variant", 0};
-#if BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_DESKTOP_ANDROID)
+#if BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_DESKTOP_ANDROID_FALSE)
BASE_FEATURE(kGlicDaisyChainNewTabs, base::FEATURE_DISABLED_BY_DEFAULT);
#else
BASE_FEATURE(kGlicDaisyChainNewTabs, base::FEATURE_ENABLED_BY_DEFAULT);
diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc
--- a/chrome/common/chrome_switches.cc
+++ b/chrome/common/chrome_switches.cc
@@ -755,7 +755,7 @@ const char kMarketUrlForTesting[] = "market-url-for-testing";
const char kRequestDesktopSites[] = "request-desktop-sites";
#endif // BUILDFLAG(IS_ANDROID)
-#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_FALSE)
// If enabled, overrides the target playout delay for a casting mirroring
// session. The value will be parsed as milliseconds. Lowering this value will
// result in a lower end to end latency, but could come at the cost of other
diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h
--- a/chrome/common/chrome_switches.h
+++ b/chrome/common/chrome_switches.h
@@ -228,7 +228,7 @@ extern const char kMarketUrlForTesting[];
extern const char kRequestDesktopSites[];
#endif // BUILDFLAG(IS_ANDROID)
-#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_FALSE)
extern const char kCastMirroringTargetPlayoutDelay[];
#endif
diff --git a/chrome/common/extensions/api/api_sources.gni b/chrome/common/extensions/api/api_sources.gni
--- a/chrome/common/extensions/api/api_sources.gni
+++ b/chrome/common/extensions/api/api_sources.gni
@@ -74,6 +74,13 @@ uncompiled_sources_ = [
"top_sites.json",
]
+if (enable_extensions_core && is_android) {
+ uncompiled_sources_ += [
+ "browser_action.json",
+ "page_action.json",
+ ]
+}
+
# Some APIs rely on types and headers from other APIs.
types_only_schema_sources_ = []
diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_constants.cc
--- a/chrome/common/webui_url_constants.cc
+++ b/chrome/common/webui_url_constants.cc
@@ -255,7 +255,7 @@ base::span<const base::cstring_view> ChromeURLHosts() {
ash::kChromeUIInternetDetailDialogHost,
#endif
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_DESKTOP_ANDROID)
+ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)
kChromeUIDiscardsHost,
#endif
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_constants.h
--- a/chrome/common/webui_url_constants.h
+++ b/chrome/common/webui_url_constants.h
@@ -444,7 +444,7 @@ bool IsSystemWebUIHost(std::string_view host);
#endif // BUILDFLAG(IS_CHROMEOS)
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_DESKTOP_ANDROID)
+ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)
inline constexpr char kChromeUIDiscardsHost[] = "discards";
inline constexpr char kChromeUIDiscardsURL[] = "chrome://discards/";
#endif
diff --git a/chrome/renderer/sandbox_status_extension_android.cc b/chrome/renderer/sandbox_status_extension_android.cc
--- a/chrome/renderer/sandbox_status_extension_android.cc
+++ b/chrome/renderer/sandbox_status_extension_android.cc
@@ -34,7 +34,7 @@ SandboxStatusExtension::SandboxStatusExtension(content::RenderFrame* frame)
frame->GetAssociatedInterfaceRegistry()
->AddInterface<chrome::mojom::SandboxStatusExtension>(base::BindRepeating(
&SandboxStatusExtension::OnSandboxStatusExtensionRequest,
- base::RetainedRef(this)));
+ weak_ptr_factory_.GetWeakPtr()));
}
SandboxStatusExtension::~SandboxStatusExtension() = default;
@@ -46,6 +46,7 @@ void SandboxStatusExtension::Create(content::RenderFrame* frame) {
}
void SandboxStatusExtension::OnDestruct() {
+ weak_ptr_factory_.InvalidateWeakPtrs();
// This object is ref-counted, since a callback could still be in-flight.
Release();
}
diff --git a/chrome/renderer/sandbox_status_extension_android.h b/chrome/renderer/sandbox_status_extension_android.h
--- a/chrome/renderer/sandbox_status_extension_android.h
+++ b/chrome/renderer/sandbox_status_extension_android.h
@@ -73,6 +73,7 @@ class SandboxStatusExtension
mojo::AssociatedReceiver<chrome::mojom::SandboxStatusExtension> receiver_{
this};
+ base::WeakPtrFactory<SandboxStatusExtension> weak_ptr_factory_{this};
};
#endif // CHROME_RENDERER_SANDBOX_STATUS_EXTENSION_ANDROID_H_
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -385,7 +385,7 @@ static_library("test_support") {
]
}
- if (enable_desktop_android_extensions) {
+ if (enable_desktop_android_extensions_cromite) {
public_deps += [
"//extensions/browser:test_support",
"//extensions/common:test_support",
@@ -498,7 +498,7 @@ static_library("test_support") {
# TODO(https://crbug.com/356905053): Continue pulling more common test
# support pieces into here and eventually merge this with the
# `enable_extensions` block above.
- if (enable_desktop_android_extensions) {
+ if (enable_desktop_android_extensions_cromite) {
sources += [
"../browser/extensions/test_extension_menu_model_android.cc",
"../browser/extensions/test_extension_menu_model_android.h",
@@ -1527,7 +1527,7 @@ source_set("platform_browser_tests") {
}
}
- if (is_win || is_mac || is_linux || is_chromeos || is_desktop_android) {
+ if (is_win || is_mac || is_linux || is_chromeos || is_desktop_android_cromite) {
sources += [ "../browser/net/network_context_configuration_browsertest.cc" ]
deps += [
"//chrome/browser/ui/browser_window:create_browser_window",
@@ -1586,7 +1586,7 @@ source_set("platform_browser_tests") {
sources += [ "../browser/enterprise/remote_commands/user_remote_commands_service_browsertest.cc" ]
}
- if (!is_android || enable_desktop_android_extensions) {
+ if (!is_android || enable_desktop_android_extensions_cromite) {
deps += [ "//chrome/browser/ui/prefs:browser_tests" ]
}
@@ -1896,7 +1896,7 @@ source_set("platform_browser_tests") {
if (enable_guest_view) {
deps += [ "//components/guest_view/browser" ]
}
- if (!is_android || enable_desktop_android_extensions) {
+ if (!is_android || enable_desktop_android_extensions_cromite) {
sources +=
[ "../browser/devtools/global_confirm_info_bar_browsertest.cc" ]
}
@@ -2208,7 +2208,7 @@ if (is_android) {
extra_args = []
# TODO(crbug.com/473636857): Include once all Android builds correctly use BrowserWindowInterface.
- if (is_desktop_android) {
+ if (is_desktop_android_cromite) {
sources +=
[ "../browser/ui/android/browser_navigator_android_browsertest.cc" ]
deps += [
@@ -2305,7 +2305,7 @@ if (is_android) {
]
}
- if (enable_desktop_android_extensions) {
+ if (enable_desktop_android_extensions_cromite) {
sources += [
# These API tests can't be part of platform_browser_tests because they
# run in interactive_ui_tests on Win/Mac/Linux.
@@ -6395,7 +6395,7 @@ template("performance_test_suite_template_base") {
}
args += [ "--chromium-output-directory=@WrappedPath(.)" ]
- if (is_desktop_android) {
+ if (is_desktop_android_cromite) {
data = [ "//third_party/crossbench-web-tests" ]
}
@@ -8187,7 +8187,7 @@ test("unit_tests") {
]
}
- if (is_desktop_android) {
+ if (is_desktop_android_cromite) {
deps += [
# Unit test targets for //chrome/browser/ui/browser_window/internal.
#
@@ -10041,7 +10041,7 @@ test("unit_tests") {
]
}
- if (!is_android || enable_desktop_android_extensions) {
+ if (!is_android || enable_desktop_android_extensions_cromite) {
sources +=
[ "../browser/policy/developer_tools_policy_handler_unittest.cc" ]
}
@@ -10286,7 +10286,7 @@ test("unit_tests") {
}
}
- if (is_win || is_mac || is_linux || is_chromeos || is_desktop_android) {
+ if (is_win || is_mac || is_linux || is_chromeos || is_desktop_android_cromite) {
sources += [
"../browser/ui/webui/management/management_ui_handler_unittest.cc",
"../browser/ui/webui/management/management_ui_unittest.cc",
diff --git a/chrome/version.gni b/chrome/version.gni
--- a/chrome/version.gni
+++ b/chrome/version.gni
@@ -56,7 +56,7 @@ if (target_os == "android") {
# Generate hybrid configurations for target_cpu's that can run in hybrid configurations.
# i.e. "riscv64" does not show up in this list, as it's a 64-bit-only target_cpu.
if (target_cpu == "arm64" || target_cpu == "x64") {
- if (is_desktop_android) {
+ if (is_desktop_android_false) {
_version_dictionary_template +=
"chrome_desktop_version_code = \"@CHROME_DESKTOP_VERSION_CODE@\" "
_version_dictionary_template += "chrome_desktop_beta_version_code = \"@CHROME_DESKTOP_BETA_VERSION_CODE@\" "
@@ -384,7 +384,7 @@ if (is_android) {
} else {
true_true_true_true = trichrome_64_32_version_code
}
- if (is_desktop_android) {
+ if (is_desktop_android_false) {
true_true_true_false = trichrome_desktop_64_version_code
} else {
true_true_true_false = trichrome_64_version_code
diff --git a/components/content_settings/core/browser/host_content_settings_map.cc b/components/content_settings/core/browser/host_content_settings_map.cc
--- a/components/content_settings/core/browser/host_content_settings_map.cc
+++ b/components/content_settings/core/browser/host_content_settings_map.cc
@@ -327,6 +327,12 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs,
RecordExceptionMetrics();
}
+#if BUILDFLAG(IS_ANDROID)
+ SetContentSettingDefaultScope(
+ GURL("https://chromewebstore.google.com"), GURL(),
+ ContentSettingsType::REQUEST_DESKTOP_SITE, CONTENT_SETTING_ALLOW);
+#endif
+
const auto* registry =
content_settings::WebsiteSettingsRegistry::GetInstance();
for (const auto* info : *registry) {
diff --git a/components/embedder_support/android/java/src/org/chromium/components/embedder_support/view/ContentView.java b/components/embedder_support/android/java/src/org/chromium/components/embedder_support/view/ContentView.java
--- a/components/embedder_support/android/java/src/org/chromium/components/embedder_support/view/ContentView.java
+++ b/components/embedder_support/android/java/src/org/chromium/components/embedder_support/view/ContentView.java
@@ -459,7 +459,7 @@ public class ContentView extends FrameLayout
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE
&& Build.VERSION.SDK_INT <= 38
- && DeviceInfo.isDesktop()) {
+ && DeviceInfo.isDesktopFalse()) {
if (MotionEventUtils.isTrackpadEvent(event)
&& event.getClassification() == MotionEvent.CLASSIFICATION_TWO_FINGER_SWIPE
&& forwarder != null) {
diff --git a/components/embedder_support/user_agent_utils.cc b/components/embedder_support/user_agent_utils.cc
--- a/components/embedder_support/user_agent_utils.cc
+++ b/components/embedder_support/user_agent_utils.cc
@@ -304,7 +304,7 @@ std::string GetUnifiedPlatform() {
#if BUILDFLAG(IS_ANDROID)
// The Android XR device by default also has the unified platform of desktop
// form factor.
- if (base::android::device_info::is_desktop() ||
+ if (base::android::device_info::is_desktop_false() ||
base::android::device_info::is_xr()) {
return kUnifiedPlatformLinuxX64;
}
@@ -563,7 +563,7 @@ bool GetMobileBitForUAMetadata() {
// Android and not a desktop form factor, AND the kUseMobileUserAgent switch
// is present.
#if BUILDFLAG(IS_ANDROID)
- if (base::android::device_info::is_desktop() ||
+ if (base::android::device_info::is_desktop_false() ||
base::android::device_info::is_xr()) {
return false;
}
@@ -586,7 +586,7 @@ std::string GetPlatformVersion() {
#endif
#if BUILDFLAG(IS_ANDROID)
- if (base::android::device_info::is_desktop() ||
+ if (base::android::device_info::is_desktop_false() ||
base::android::device_info::is_xr()) {
return std::string();
}
@@ -606,7 +606,7 @@ std::string GetPlatformVersion() {
std::string GetPlatformForUAMetadata() {
#if BUILDFLAG(IS_ANDROID)
- if (base::android::device_info::is_desktop() ||
+ if (base::android::device_info::is_desktop_false() ||
base::android::device_info::is_xr()) {
return base::FeatureList::IsEnabled(
blink::features::kAndroidDesktopUAPlatform)
@@ -729,7 +729,7 @@ std::string GetCpuArchitecture() {
// TODO(crbug.com/433345971) The user agent string should contain the actual
// cpu type information obtained from the Android device. Same for the cpu bit
// count in #GetCpuBitness below.
- if (base::android::device_info::is_desktop() ||
+ if (base::android::device_info::is_desktop_false() ||
base::android::device_info::is_xr()) {
return "x86";
}
@@ -769,7 +769,7 @@ std::string GetCpuBitness() {
#elif BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_FUCHSIA)
return "64";
#elif BUILDFLAG(IS_ANDROID)
- if (base::android::device_info::is_desktop() ||
+ if (base::android::device_info::is_desktop_false() ||
base::android::device_info::is_xr()) {
return "64";
}
@@ -843,7 +843,7 @@ std::string BuildModelInfo() {
if ((true)) return std::string();
#if BUILDFLAG(IS_ANDROID)
// Model information is not exposed on Android desktop.
- if (base::android::device_info::is_desktop()) {
+ if (base::android::device_info::is_desktop_false()) {
return std::string();
}
diff --git a/components/local_state/local_state_utils.cc b/components/local_state/local_state_utils.cc
--- a/components/local_state/local_state_utils.cc
+++ b/components/local_state/local_state_utils.cc
@@ -39,7 +39,7 @@ base::ListValue GetPrefsMetadata(
metadata.Append("managed_by_custodian");
break;
case PrefValueStore::PrefStoreType::EXTENSION_STORE:
-#if BUILDFLAG(ENABLE_EXTENSIONS)
+#if BUILDFLAG(ENABLE_EXTENSIONS_CORE)
metadata.Append("extension_controlled");
metadata.Append("extension_modifiable");
break;
diff --git a/components/media_router/browser/android/media_router_android.cc b/components/media_router/browser/android/media_router_android.cc
--- a/components/media_router/browser/android/media_router_android.cc
+++ b/components/media_router/browser/android/media_router_android.cc
@@ -377,7 +377,7 @@ MediaRouterAndroid::GetFlingingController(const MediaRoute::Id& route_id) {
return bridge_->GetFlingingController(route_id);
}
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_FALSE)
MirroringMediaControllerHost*
MediaRouterAndroid::GetMirroringMediaControllerHost(
const MediaRoute::Id& route_id) {
diff --git a/components/media_router/browser/android/media_router_android.h b/components/media_router/browser/android/media_router_android.h
--- a/components/media_router/browser/android/media_router_android.h
+++ b/components/media_router/browser/android/media_router_android.h
@@ -56,7 +56,7 @@ class MediaRouterAndroid : public MediaRouterBase {
std::unique_ptr<media::FlingingController> GetFlingingController(
const MediaRoute::Id& route_id) override;
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_FALSE)
MirroringMediaControllerHost* GetMirroringMediaControllerHost(
const MediaRoute::Id& route_id) override;
IssueManager* GetIssueManager() override;
diff --git a/components/media_router/browser/media_router.h b/components/media_router/browser/media_router.h
--- a/components/media_router/browser/media_router.h
+++ b/components/media_router/browser/media_router.h
@@ -29,7 +29,7 @@
#include "media/base/flinging_controller.h"
#include "third_party/blink/public/mojom/presentation/presentation.mojom.h"
-#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_FALSE)
#include "components/media_router/browser/logger_impl.h"
#include "components/media_router/browser/media_router_debugger.h"
#include "components/media_router/common/mojom/media_controller.mojom.h"
@@ -155,7 +155,7 @@ class MediaRouter : public KeyedService {
virtual std::unique_ptr<media::FlingingController> GetFlingingController(
const MediaRoute::Id& route_id) = 0;
-#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_FALSE)
// Returns a pointer to a controller host that sends media commands related to
// mirroring within a route.
virtual MirroringMediaControllerHost* GetMirroringMediaControllerHost(
diff --git a/components/policy/android/java/src/org/chromium/components/policy/CombinedPolicyProvider.java b/components/policy/android/java/src/org/chromium/components/policy/CombinedPolicyProvider.java
--- a/components/policy/android/java/src/org/chromium/components/policy/CombinedPolicyProvider.java
+++ b/components/policy/android/java/src/org/chromium/components/policy/CombinedPolicyProvider.java
@@ -60,10 +60,10 @@ public class CombinedPolicyProvider {
Log.i(TAG, "#linkNativeInternal() " + mPolicyProviders.size());
- if (mPolicyProviders.isEmpty()) {
- mPolicyCacheProvider = new PolicyCacheProvider();
- mPolicyCacheProvider.setManagerAndSource(this, /* source= */ 0);
- }
+ // if (mPolicyProviders.isEmpty()) {
+ // mPolicyCacheProvider = new PolicyCacheProvider();
+ // mPolicyCacheProvider.setManagerAndSource(this, /* source= */ 0);
+ // }
refreshPolicies();
}
diff --git a/components/policy/android/java/src/org/chromium/components/policy/PolicyCacheUpdater.java b/components/policy/android/java/src/org/chromium/components/policy/PolicyCacheUpdater.java
--- a/components/policy/android/java/src/org/chromium/components/policy/PolicyCacheUpdater.java
+++ b/components/policy/android/java/src/org/chromium/components/policy/PolicyCacheUpdater.java
@@ -36,6 +36,6 @@ public class PolicyCacheUpdater {
@CalledByNative
public static void cachePolicies(PolicyMap policyMap) {
- PolicyCache.get().cachePolicies(policyMap, sPolicies);
+ //PolicyCache.get().cachePolicies(policyMap, sPolicies);
}
}
diff --git a/components/policy/core/browser/android/policy_cache_updater_android.cc b/components/policy/core/browser/android/policy_cache_updater_android.cc
--- a/components/policy/core/browser/android/policy_cache_updater_android.cc
+++ b/components/policy/core/browser/android/policy_cache_updater_android.cc
@@ -45,7 +45,9 @@ PolicyCacheUpdater::~PolicyCacheUpdater() {
void PolicyCacheUpdater::OnPolicyUpdated(const PolicyNamespace& ns,
const PolicyMap& previous,
const PolicyMap& current) {
- UpdateCache(current);
+ if (ns.domain == POLICY_DOMAIN_CHROME) {
+ UpdateCache(current);
+ }
}
void PolicyCacheUpdater::UpdateCache(const PolicyMap& current_policy_map) {
diff --git a/components/policy/core/browser/cloud/user_policy_signin_service_base.cc b/components/policy/core/browser/cloud/user_policy_signin_service_base.cc
--- a/components/policy/core/browser/cloud/user_policy_signin_service_base.cc
+++ b/components/policy/core/browser/cloud/user_policy_signin_service_base.cc
@@ -37,7 +37,7 @@ namespace {
em::DeviceRegisterRequest::Type GetCloudPolicyRegistrationType() {
#if BUILDFLAG(IS_ANDROID)
- if (base::android::device_info::is_desktop()) {
+ if (base::android::device_info::is_desktop_false()) {
return em::DeviceRegisterRequest::BROWSER;
} else {
return em::DeviceRegisterRequest::ANDROID_BROWSER;
diff --git a/components/policy/core/browser/configuration_policy_handler_list.cc b/components/policy/core/browser/configuration_policy_handler_list.cc
--- a/components/policy/core/browser/configuration_policy_handler_list.cc
+++ b/components/policy/core/browser/configuration_policy_handler_list.cc
@@ -109,7 +109,7 @@ bool ConfigurationPolicyHandlerList::IsBlockedDesktopAndroidPolicy(
// TODO(b/478012386): We shouldn't use IS_DESKTOP_ANDROID long-term. The feature
// flag needs to be removed as soon as we feel comfortable about all exist
// Android
-#if BUILDFLAG(IS_DESKTOP_ANDROID)
+#if BUILDFLAG(IS_DESKTOP_ANDROID_FALSE)
if (!base::FeatureList::IsEnabled(features::kDesktopAndroidPolicy)) {
return false;
}
@@ -227,7 +227,7 @@ bool ConfigurationPolicyHandlerList::IsBlockedFuturePolicy(
const base::flat_set<std::string>& future_policies_allowed,
const PolicyDetails& policy_details,
PolicyMap::const_reference entry) const {
-#if BUILDFLAG(IS_DESKTOP_ANDROID)
+#if BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)
if (base::FeatureList::IsEnabled(features::kFuturePoliciesOnDesktopAndroid) &&
policy_details.is_future) {
return false;
diff --git a/components/policy/core/common/cloud/cloud_policy_constants.cc b/components/policy/core/common/cloud/cloud_policy_constants.cc
--- a/components/policy/core/common/cloud/cloud_policy_constants.cc
+++ b/components/policy/core/common/cloud/cloud_policy_constants.cc
@@ -142,7 +142,7 @@ const char* GetChromeUserPolicyType() {
#if BUILDFLAG(IS_CHROMEOS)
return "google/chromeos/user";
#elif BUILDFLAG(IS_ANDROID)
- if (base::android::device_info::is_desktop()) {
+ if (base::android::device_info::is_desktop_false()) {
return "google/chrome/user";
} else {
return "google/android/user";
diff --git a/components/policy/core/common/features.cc b/components/policy/core/common/features.cc
--- a/components/policy/core/common/features.cc
+++ b/components/policy/core/common/features.cc
@@ -40,7 +40,7 @@ const base::FeatureParam<base::TimeDelta> kPolicyRegistrationDelay{
// Used to add a captive portal check in SafeSitesNavigationThrottle.
BASE_FEATURE(kSafeSitesCaptivePortalCheck, base::FEATURE_ENABLED_BY_DEFAULT);
-#if BUILDFLAG(IS_DESKTOP_ANDROID)
+#if BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)
// TODO(https://crbug.com/452666657): Remove this feature flag after launching
// policies to supported on Android Desktop.
BASE_FEATURE(kFuturePoliciesOnDesktopAndroid,
diff --git a/components/policy/core/common/policy_merger.cc b/components/policy/core/common/policy_merger.cc
--- a/components/policy/core/common/policy_merger.cc
+++ b/components/policy/core/common/policy_merger.cc
@@ -21,7 +21,7 @@ namespace policy {
namespace {
#if !BUILDFLAG(IS_IOS) && !BUILDFLAG(IS_FUCHSIA) && (!BUILDFLAG(IS_ANDROID) || \
- BUILDFLAG(IS_DESKTOP_ANDROID))
+ BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE))
constexpr const char* kDictionaryPoliciesToMerge[] = {
#if BUILDFLAG(IS_CHROMEOS)
key::kExtensionSettings, key::kDeviceLoginScreenPowerManagement,
@@ -190,7 +190,7 @@ void PolicyListMerger::DoMerge(PolicyMap::Entry* policy) const {
PolicyDictionaryMerger::PolicyDictionaryMerger(
base::flat_set<std::string> policies_to_merge)
#if BUILDFLAG(IS_IOS) || BUILDFLAG(IS_FUCHSIA) || \
- (BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_DESKTOP_ANDROID))
+ (BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE))
: policies_to_merge_(std::move(policies_to_merge)){}
#else
: policies_to_merge_(std::move(policies_to_merge)),
diff --git a/components/webapps/browser/installable/installable_icon_fetcher.cc b/components/webapps/browser/installable/installable_icon_fetcher.cc
--- a/components/webapps/browser/installable/installable_icon_fetcher.cc
+++ b/components/webapps/browser/installable/installable_icon_fetcher.cc
@@ -120,7 +120,7 @@ void ProcessFaviconInBackground(
FROM_HERE, base::BindOnce(std::move(success_callback), decoded));
}
-#if BUILDFLAG(IS_DESKTOP_ANDROID)
+#if BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)
// Generates a homescreen icon for `page_url` and posts a task to invoke
// `callback` on `ui_thread_task_runner.`
void GenerateHomeScreenIconInBackground(
@@ -261,7 +261,7 @@ void InstallableIconFetcher::OnIconFetched(const GURL& icon_url,
}
void InstallableIconFetcher::MaybeEndWithError(InstallableStatusCode code) {
-#if BUILDFLAG(IS_DESKTOP_ANDROID)
+#if BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)
// Desktop android will generate an icon if none is available.
base::ThreadPool::PostTask(
FROM_HERE,
@@ -285,7 +285,7 @@ void InstallableIconFetcher::EndWithError(InstallableStatusCode code) {
std::move(finish_callback_).Run(code);
}
-#if BUILDFLAG(IS_DESKTOP_ANDROID)
+#if BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)
void InstallableIconFetcher::OnHomeScreenIconGenerated(const GURL& page_url,
const SkBitmap& bitmap) {
if (bitmap.drawsNothing()) {
diff --git a/components/webapps/browser/installable/installable_icon_fetcher.h b/components/webapps/browser/installable/installable_icon_fetcher.h
--- a/components/webapps/browser/installable/installable_icon_fetcher.h
+++ b/components/webapps/browser/installable/installable_icon_fetcher.h
@@ -68,7 +68,7 @@ class InstallableIconFetcher {
// Ends the fetch with an error.
void EndWithError(InstallableStatusCode code);
-#if BUILDFLAG(IS_DESKTOP_ANDROID)
+#if BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)
void OnHomeScreenIconGenerated(const GURL& page_url, const SkBitmap& bitmap);
#endif
diff --git a/components/webui/version/resources/about_version.html b/components/webui/version/resources/about_version.html
--- a/components/webui/version/resources/about_version.html
+++ b/components/webui/version/resources/about_version.html
@@ -105,7 +105,7 @@ about:version template page
<span>$i18n{gms_version}</span>
</td>
</tr>
-<if expr="is_desktop_android">
+<if expr="is_desktop_android_false">
<tr>
<td class="label">Desktop Android</td>
<td class="version">true</td>
diff --git a/content/browser/android/selection/selection_popup_controller.cc b/content/browser/android/selection/selection_popup_controller.cc
--- a/content/browser/android/selection/selection_popup_controller.cc
+++ b/content/browser/android/selection/selection_popup_controller.cc
@@ -352,6 +352,11 @@ void SelectionPopupController::OnSelectAroundCaretAck(
result->word_start_adjust, result->word_end_adjust);
}
+void SelectionPopupController::DismissMenu() {
+ menu_model_bridge_.reset();
+ extra_items_menu_model_.reset();
+}
+
void SelectionPopupController::HidePopupsAndPreserveSelection() {
JNIEnv* env = AttachCurrentThread();
ScopedJavaLocalRef<jobject> obj = GetJavaObject(env);
diff --git a/content/browser/android/selection/selection_popup_controller.h b/content/browser/android/selection/selection_popup_controller.h
--- a/content/browser/android/selection/selection_popup_controller.h
+++ b/content/browser/android/selection/selection_popup_controller.h
@@ -69,6 +69,7 @@ class SelectionPopupController : public RenderWidgetHostConnector {
int endOffset,
int surroundingTextLength,
blink::mojom::SelectAroundCaretResultPtr result);
+ void DismissMenu();
void HidePopupsAndPreserveSelection();
void RestoreSelectionPopupsIfNecessary();
void ChildLocalSurfaceIdChanged();
diff --git a/content/browser/browser_main_loop.cc b/content/browser/browser_main_loop.cc
--- a/content/browser/browser_main_loop.cc
+++ b/content/browser/browser_main_loop.cc
@@ -837,7 +837,7 @@ int BrowserMainLoop::PreCreateThreads() {
base::UmaHistogramBoolean("SiteIsolation.IsSitePerProcessOrStricter",
SiteIsolationPolicy::IsSitePerProcessOrStricter());
-#if BUILDFLAG(IS_ANDROID) && BUILDFLAG(IS_DESKTOP_ANDROID)
+#if BUILDFLAG(IS_ANDROID) && BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)
base::UmaHistogramBoolean(
"SiteIsolation.IsSitePerProcessOrStricter.AndroidDesktop",
SiteIsolationPolicy::IsSitePerProcessOrStricter());
diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc
--- a/content/browser/renderer_host/render_widget_host_view_android.cc
+++ b/content/browser/renderer_host/render_widget_host_view_android.cc
@@ -184,7 +184,7 @@ bool IsTooltipsEnabled() {
// Only show on desktop devices up to B due to tooltips bug b/445244223.
if (base::android::android_info::sdk_int() <=
base::android::android_info::SDK_VERSION_BAKLAVA) {
- return base::android::device_info::is_desktop();
+ return base::android::device_info::is_desktop_false();
}
return true;
diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentUiEventHandler.java b/content/public/android/java/src/org/chromium/content/browser/ContentUiEventHandler.java
--- a/content/public/android/java/src/org/chromium/content/browser/ContentUiEventHandler.java
+++ b/content/public/android/java/src/org/chromium/content/browser/ContentUiEventHandler.java
@@ -133,9 +133,10 @@ public class ContentUiEventHandler implements UserData {
event,
MotionEventUtils.getEventTimeNanos(event),
EventForwarder.getMouseEventActionButton(event),
- shouldConvertToMouseEvent
- ? MotionEvent.TOOL_TYPE_MOUSE
- : event.getToolType(0));
+ MotionEvent.TOOL_TYPE_FINGER);
+ // shouldConvertToMouseEvent
+ // ? MotionEvent.TOOL_TYPE_MOUSE
+ // : event.getToolType(0));
if (didOffsetEvent) event.recycle();
return true;
}
diff --git a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java
--- a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java
+++ b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java
@@ -779,6 +779,9 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper
*/
@Override
public void finishActionMode() {
+ SelectionPopupControllerImplJni.get()
+ .dismissMenu(mNativeSelectionPopupController);
+
mHidden = false;
mHandler.removeCallbacks(mRepeatingHideRunnable);
@@ -2002,6 +2005,8 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper
void setTextHandlesTemporarilyHidden(long nativeSelectionPopupController, boolean hidden);
+ void dismissMenu(long nativeSelectionPopupController);
+
void setTextHandlesHiddenForDropdownMenu(
long nativeSelectionPopupController, boolean hidden);
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
--- a/content/public/common/content_features.cc
+++ b/content/public/common/content_features.cc
@@ -611,7 +611,7 @@ BASE_FEATURE(kLoadingPredictorLimitPreconnectSocketCount,
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kLogJsConsoleMessages,
-#if BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_DESKTOP_ANDROID)
+#if BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_DESKTOP_ANDROID_FALSE)
base::FEATURE_DISABLED_BY_DEFAULT
#else
base::FEATURE_ENABLED_BY_DEFAULT
@@ -1503,7 +1503,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
@@ -22,7 +22,7 @@ bool IsBackgroundMediaSuspendEnabled() {
if (base::FeatureList::IsEnabled(
features::kAndroidEnableBackgroundMediaLargeFormFactors) &&
(base::android::device_info::is_tablet() ||
- base::android::device_info::is_desktop())) {
+ base::android::device_info::is_desktop_false())) {
// Do not suspend background media if feature is enabled AND it was launched
// on a large display. Feature is enabled by default except for WebView
return false;
diff --git a/cromite_flags/chrome/browser/about_flags_cc/Extensions-Android.inc b/cromite_flags/chrome/browser/about_flags_cc/Extensions-Android.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/chrome/browser/about_flags_cc/Extensions-Android.inc
@@ -0,0 +1,12 @@
+#ifdef FLAG_SECTION
+
+#if BUILDFLAG(IS_ANDROID)
+
+ {"enable-extensions-android",
+ "Enable Extensions Android",
+ "Allows the use of extensions on Android", kOsAndroid,
+ FEATURE_VALUE_TYPE(extensions_features::kEnableExtensionsAndroid)},
+
+#endif
+
+#endif // ifdef FLAG_SECTION
diff --git a/cromite_flags/chrome/browser/about_flags_cc/Webstore-protection.inc b/cromite_flags/chrome/browser/about_flags_cc/Webstore-protection.inc
--- a/cromite_flags/chrome/browser/about_flags_cc/Webstore-protection.inc
+++ b/cromite_flags/chrome/browser/about_flags_cc/Webstore-protection.inc
@@ -1,19 +1,15 @@
#ifdef FLAG_SECTION
-#if !BUILDFLAG(IS_ANDROID)
-
{"enable-extension-autoupdate",
"Enable Extensions Autoupdate",
"Allows the auto-updating of installed extensions by sending the "
- "minimum required data.", kOsDesktop,
+ "minimum required data.", kOsAll,
FEATURE_VALUE_TYPE(extensions_features::kEnableExtensionAutoupdate)},
{"enable-extension-management-to-chrome-store",
"Allow full use of management api to chrome web store",
"When deactivated (default) allows installation but hide "
- "to the webstore which extensions are installed on the device.", kOsDesktop,
+ "to the webstore which extensions are installed on the device.", kOsAll,
FEATURE_VALUE_TYPE(extensions_features::kEnableExtensionManagementToChromeStore)},
-#endif // !BUILDFLAG(IS_ANDROID)
-
#endif // ifdef FLAG_SECTION
diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Experimental-support-for-extensions-on-Android.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Experimental-support-for-extensions-on-Android.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Experimental-support-for-extensions-on-Android.inc
@@ -0,0 +1 @@
+SET_CROMITE_FEATURE_DISABLED(kProcessRankPolicyAndroid);
diff --git a/extensions/browser/BUILD.gn b/extensions/browser/BUILD.gn
--- a/extensions/browser/BUILD.gn
+++ b/extensions/browser/BUILD.gn
@@ -11,7 +11,7 @@ import("//rlz/buildflags/buildflags.gni")
import("//testing/libfuzzer/fuzzer_test.gni")
import("//third_party/protobuf/proto_library.gni")
-if (enable_desktop_android_extensions) {
+if (enable_desktop_android_extensions_cromite) {
import("//build/config/android/rules.gni")
}
@@ -1249,7 +1249,7 @@ source_set("unit_tests") {
configs += [ "//build/config/compiler:no_exit_time_destructors" ]
}
-if (enable_desktop_android_extensions) {
+if (enable_desktop_android_extensions_cromite) {
java_cpp_enum("extension_action_enums") {
sources = [ "extension_action.h" ]
}
diff --git a/extensions/browser/api/api_browser_context_keyed_service_factories.cc b/extensions/browser/api/api_browser_context_keyed_service_factories.cc
--- a/extensions/browser/api/api_browser_context_keyed_service_factories.cc
+++ b/extensions/browser/api/api_browser_context_keyed_service_factories.cc
@@ -70,7 +70,7 @@
namespace extensions {
-void EnsureApiBrowserContextKeyedServiceFactoriesBuilt() {
+void EnsureApiBrowserContextKeyedServiceFactoriesBuilt() { //
AlarmManager::GetFactoryInstance();
ContentSettingsService::GetFactoryInstance();
declarative_net_request::RulesMonitorService::GetFactoryInstance();
diff --git a/extensions/browser/api/system_cpu/BUILD.gn b/extensions/browser/api/system_cpu/BUILD.gn
--- a/extensions/browser/api/system_cpu/BUILD.gn
+++ b/extensions/browser/api/system_cpu/BUILD.gn
@@ -36,7 +36,7 @@ source_set("system_cpu") {
sources += [ "cpu_info_provider_mac.cc" ]
}
- if (is_linux || is_chromeos || enable_desktop_android_extensions) {
+ if (is_linux || is_chromeos || enable_desktop_android_extensions_cromite) {
sources += [ "cpu_info_provider_linux.cc" ]
}
diff --git a/extensions/browser/api/web_request/permission_helper.cc b/extensions/browser/api/web_request/permission_helper.cc
--- a/extensions/browser/api/web_request/permission_helper.cc
+++ b/extensions/browser/api/web_request/permission_helper.cc
@@ -64,7 +64,7 @@ void BrowserContextKeyedAPIFactory<
// implicitly depends upon those.
ExtensionsAPIClient* extensions_api_client = ExtensionsAPIClient::Get();
-#if BUILDFLAG(IS_DESKTOP_ANDROID)
+#if BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)
// TODO(https://crbug.com/356905053): On Android, the startup and
// initialization flow is different.
// ExtensionsAPIClient is instantiated as part of the ExtensionsBrowserClient,
diff --git a/extensions/browser/extension_frame_host.cc b/extensions/browser/extension_frame_host.cc
--- a/extensions/browser/extension_frame_host.cc
+++ b/extensions/browser/extension_frame_host.cc
@@ -157,6 +157,10 @@ void ExtensionFrameHost::OpenChannelToExtension(
TRACE_EVENT("extensions", "ExtensionFrameHost::OpenChannelToExtension",
ChromeTrackEvent::kRenderProcessHost, *process);
+ if (!MessageServiceApi::GetMessageService()) {
+ LOG(INFO) << "--No MessageServiceApi";
+ return;
+ }
MessageServiceApi::GetMessageService()->OpenChannelToExtension(
render_frame_host->GetBrowserContext(), render_frame_host, port_id, *info,
channel_type, channel_name, std::move(port), std::move(port_host));
@@ -189,6 +193,10 @@ void ExtensionFrameHost::OpenChannelToTab(
mojo::PendingAssociatedRemote<extensions::mojom::MessagePort> port,
mojo::PendingAssociatedReceiver<extensions::mojom::MessagePortHost>
port_host) {
+ if (!MessageServiceApi::GetMessageService()) {
+ LOG(INFO) << "--No MessageServiceApi";
+ return;
+ }
content::RenderFrameHost* render_frame_host =
receivers_.GetCurrentTargetFrame();
auto* process = render_frame_host->GetProcess();
diff --git a/extensions/browser/extension_host.cc b/extensions/browser/extension_host.cc
--- a/extensions/browser/extension_host.cc
+++ b/extensions/browser/extension_host.cc
@@ -14,6 +14,7 @@
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/timer/elapsed_timer.h"
+#include "components/embedder_support/user_agent_utils.h"
#include "components/input/native_web_keyboard_event.h"
#include "components/javascript_dialogs/app_modal_dialog_manager.h"
#include "content/public/browser/browser_context.h"
@@ -323,9 +324,26 @@ const GURL& ExtensionHost::GetLastCommittedURL() const {
void ExtensionHost::LoadInitialURL() {
load_start_ = std::make_unique<base::ElapsedTimer>();
- host_contents_->GetController().LoadURL(
- initial_url_, content::Referrer(), ui::PAGE_TRANSITION_LINK,
- std::string());
+
+ content::NavigationController::LoadURLParams params(initial_url_);
+ params.referrer = content::Referrer();
+ params.transition_type = ui::PAGE_TRANSITION_LINK;
+ params.extra_headers = std::string();
+
+#if BUILDFLAG(IS_ANDROID)
+ if (extension_host_type() == mojom::ViewType::kExtensionPopup) {
+ constexpr char kOsOverrideForCromite[] = "Linux; Android 10; Cromite";
+ const std::string product = embedder_support::GetProductAndVersion();
+ blink::UserAgentOverride ua_override;
+ ua_override.ua_string_override =
+ embedder_support::BuildUserAgentFromOSAndProduct(kOsOverrideForCromite,
+ product);
+ host_contents_->SetUserAgentOverride(ua_override,
+ false /*override_in_new_tabs=*/);
+ params.override_user_agent = content::NavigationController::UA_OVERRIDE_TRUE;
+ }
+#endif
+ host_contents_->GetController().LoadURLWithParams(params);
}
bool ExtensionHost::IsBackgroundPage() const {
diff --git a/extensions/buildflags/BUILD.gn b/extensions/buildflags/BUILD.gn
--- a/extensions/buildflags/BUILD.gn
+++ b/extensions/buildflags/BUILD.gn
@@ -16,7 +16,8 @@ buildflag_header("buildflags") {
header = "buildflags.h"
flags = [
"ENABLE_EXTENSIONS=$enable_extensions",
- "ENABLE_DESKTOP_ANDROID_EXTENSIONS=$enable_desktop_android_extensions",
+ "ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE=$enable_desktop_android_extensions_cromite",
+ "ENABLE_DESKTOP_ANDROID_EXTENSIONS_FALSE=false",
"ENABLE_EXTENSIONS_CORE=$enable_extensions_core",
"ENABLE_PLATFORM_APPS=$enable_platform_apps",
]
diff --git a/extensions/buildflags/buildflags.gni b/extensions/buildflags/buildflags.gni
--- a/extensions/buildflags/buildflags.gni
+++ b/extensions/buildflags/buildflags.gni
@@ -27,7 +27,7 @@ declare_args() {
#
# TODO(https://crbug.com/356905053): Continue expanding the scope of
# enable_desktop_android_extensions.
- enable_desktop_android_extensions = is_desktop_android
+ enable_desktop_android_extensions_cromite = is_android
}
# Note: GN forbids relying on args from the same declare_args() block, so we
@@ -45,5 +45,5 @@ declare_args() {
# `if (enable_extensions || enable_desktop_android_extensions)`, since the
# core handling in each of these implementations is similar.
enable_extensions_core =
- enable_extensions || enable_desktop_android_extensions
+ enable_extensions || enable_desktop_android_extensions_cromite
}
diff --git a/extensions/common/api/schema.gni b/extensions/common/api/schema.gni
--- a/extensions/common/api/schema.gni
+++ b/extensions/common/api/schema.gni
@@ -110,7 +110,7 @@ if (enable_extensions) {
# the C++ types for certain APIs, since they are used from outside the
# extensions layer. These should be removed as we add support for the full
# API by moving these entries to the `extensions_api_schema_files_` above.
-if (enable_desktop_android_extensions) {
+if (enable_desktop_android_extensions_cromite) {
extensions_types_only_schema_files_ += [
"clipboard.webidl",
"scripts_internal.webidl",
diff --git a/extensions/common/command.cc b/extensions/common/command.cc
--- a/extensions/common/command.cc
+++ b/extensions/common/command.cc
@@ -119,7 +119,7 @@ std::string Command::CommandPlatform() {
return ui::kKeybindingPlatformChromeOs;
#elif BUILDFLAG(IS_LINUX)
return ui::kKeybindingPlatformLinux;
-#elif BUILDFLAG(IS_DESKTOP_ANDROID)
+#elif BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)
// For now, we use linux keybindings on desktop android.
return ui::kKeybindingPlatformLinux;
#else
diff --git a/extensions/common/extension_features.cc b/extensions/common/extension_features.cc
--- a/extensions/common/extension_features.cc
+++ b/extensions/common/extension_features.cc
@@ -62,7 +62,7 @@ BASE_FEATURE(kCheckingNoExtensionIdInExtensionIpcs,
BASE_FEATURE(kEnableWebHidInWebView, base::FEATURE_ENABLED_BY_DEFAULT);
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
// Disabled by default because on first-run we don't have a Finch seed yet, so
// we want to default to the safe behavior of no extensions.
BASE_FEATURE(kEnableExtensionsForCorpDesktopAndroid,
@@ -179,7 +179,7 @@ BASE_FEATURE(kDisableExtensionsOnChromeUrlsSwitch,
// TODO (crbug.com/426554244): Determine if this switch should be
// removed for desktop-android builds as well.
#if BUILDFLAG(GOOGLE_CHROME_BRANDING) && !BUILDFLAG(IS_CHROMEOS) && \
- !BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+ !BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
base::FEATURE_ENABLED_BY_DEFAULT
#else
base::FEATURE_DISABLED_BY_DEFAULT
@@ -227,4 +227,10 @@ CROMITE_FEATURE(kEnableExtensionAutoupdate,
CROMITE_FEATURE(kEnableExtensionManagementToChromeStore,
"EnableExtensionToChromeStore",
base::FEATURE_DISABLED_BY_DEFAULT);
+
+#if BUILDFLAG(IS_ANDROID)
+CROMITE_FEATURE(kEnableExtensionsAndroid,
+ "EnableExtensionsAndroid",
+ base::FEATURE_DISABLED_BY_DEFAULT);
+#endif
} // namespace extensions_features
diff --git a/extensions/common/extension_features.h b/extensions/common/extension_features.h
--- a/extensions/common/extension_features.h
+++ b/extensions/common/extension_features.h
@@ -103,7 +103,7 @@ BASE_DECLARE_FEATURE(kCheckingNoExtensionIdInExtensionIpcs);
// embedding Chrome App to request access to Human Interface Devices.
BASE_DECLARE_FEATURE(kEnableWebHidInWebView);
-#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
// If enabled, extensions will be enabled for @google.com and @managedchrome.com
// users on desktop Android. Otherwise they will be blocked.
BASE_DECLARE_FEATURE(kEnableExtensionsForCorpDesktopAndroid);
@@ -330,6 +330,10 @@ BASE_DECLARE_FEATURE(kEnableExtensionAutoupdate);
// Allows the installation of new extensions.
// If active, exposes all features to the chrome web store like chromium.
BASE_DECLARE_FEATURE(kEnableExtensionManagementToChromeStore);
+
+#if BUILDFLAG(IS_ANDROID)
+BASE_DECLARE_FEATURE(kEnableExtensionsAndroid);
+#endif
} // namespace extensions_features
#endif // EXTENSIONS_COMMON_EXTENSION_FEATURES_H_
diff --git a/extensions/common/extension_l10n_util.cc b/extensions/common/extension_l10n_util.cc
--- a/extensions/common/extension_l10n_util.cc
+++ b/extensions/common/extension_l10n_util.cc
@@ -470,8 +470,10 @@ bool GetValidLocales(const base::FilePath& locale_path,
}
if (valid_locales->empty()) {
+#if !BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
*error = errors::kLocalesNoValidLocaleNamesListed;
return false;
+#endif
}
return true;
@@ -566,7 +568,11 @@ bool ShouldSkipValidation(const base::FilePath& locales_path,
// '.svn' directories.
base::FilePath relative_path;
if (!locales_path.AppendRelativePath(locale_path, &relative_path)) {
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
+ return true;
+#else
NOTREACHED();
+#endif
}
std::string subdir = relative_path.MaybeAsASCII();
if (subdir.empty())
diff --git a/extensions/common/features/feature.cc b/extensions/common/features/feature.cc
--- a/extensions/common/features/feature.cc
+++ b/extensions/common/features/feature.cc
@@ -28,7 +28,7 @@ Feature::Platform Feature::GetCurrentPlatform() {
return MACOSX_PLATFORM;
#elif BUILDFLAG(IS_WIN)
return WIN_PLATFORM;
-#elif BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
+#elif BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
return DESKTOP_ANDROID_PLATFORM;
#else
return UNSPECIFIED_PLATFORM;
diff --git a/extensions/common/manifest_handlers/default_locale_handler.cc b/extensions/common/manifest_handlers/default_locale_handler.cc
--- a/extensions/common/manifest_handlers/default_locale_handler.cc
+++ b/extensions/common/manifest_handlers/default_locale_handler.cc
@@ -115,6 +115,9 @@ bool DefaultLocaleHandler::Validate(
// Only message file for default locale has to exist.
if (!has_default_locale_message_file) {
+#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS_CROMITE)
+ if (base::PathExists(default_locale_path)) return true;
+#endif
*error = errors::kLocalesNoDefaultMessages;
return false;
}
diff --git a/extensions/renderer/bindings/api_binding_util.cc b/extensions/renderer/bindings/api_binding_util.cc
--- a/extensions/renderer/bindings/api_binding_util.cc
+++ b/extensions/renderer/bindings/api_binding_util.cc
@@ -148,7 +148,7 @@ std::string_view GetPlatformString() {
return "mac";
#elif BUILDFLAG(IS_WIN)
return "win";
-#elif BUILDFLAG(IS_DESKTOP_ANDROID)
+#elif BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)
return "desktop_android";
#else
NOTREACHED();
diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc
--- a/gpu/config/gpu_finch_features.cc
+++ b/gpu/config/gpu_finch_features.cc
@@ -625,7 +625,7 @@ bool IsSkiaGraphiteSupportedByDevice(const base::CommandLine* command_line) {
// Desktop Android isn't ready to pick up the fieldtrial_testing_config.json
// change that enables graphite. However, it's the same platform as regular
// Android and does. Skip enabling the feature there for now.
- if (base::android::device_info::is_desktop()) {
+ if (base::android::device_info::is_desktop_false()) {
return false;
}
@@ -738,7 +738,7 @@ bool ShouldEnableDrDc() {
// Chrome on Android desktop aims to be Vulkan-only, which can result
// in crashes when enabled together with DrDc. Re-enable DrDc after
// crbug.com/380295059 is fixed if it is shown beneficial on desktop.
- if (base::android::device_info::is_desktop()) {
+ if (base::android::device_info::is_desktop_false()) {
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
@@ -30,8 +30,8 @@ declare_args() {
disable_zstd_filter = false
# Multicast DNS. Enabled on desktop Android for the chrome.mdns extension API.
- enable_mdns = is_win || is_linux || is_chromeos || is_fuchsia || is_apple ||
- enable_desktop_android_extensions
+ enable_mdns = is_win || is_linux || is_chromeos || is_fuchsia || is_apple
+ #|| enable_desktop_android_extensions
# Reporting not used on iOS.
enable_reporting = !is_ios
diff --git a/skia/features.gni b/skia/features.gni
--- a/skia/features.gni
+++ b/skia/features.gni
@@ -12,7 +12,7 @@ declare_args() {
skia_use_dawn =
is_mac || is_win ||
(is_android && target_cpu != "x86" && target_cpu != "x64") ||
- (is_ios && use_blink) || (is_linux && !is_castos) || is_desktop_android
+ (is_ios && use_blink) || (is_linux && !is_castos) || is_desktop_android_false
}
# Skia only needs to support GPU rasterization if we use the full Chromium
diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc
--- a/third_party/blink/common/features.cc
+++ b/third_party/blink/common/features.cc
@@ -2438,7 +2438,7 @@ BASE_FEATURE(kStopInBackground,
// b/248036988 - Disable this for Chromecast on Android builds to prevent apps
// that play audio in the background from stopping.
#if BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CAST_ANDROID) && \
- !BUILDFLAG(IS_DESKTOP_ANDROID)
+ !BUILDFLAG(IS_DESKTOP_ANDROID_FALSE)
base::FEATURE_ENABLED_BY_DEFAULT
#else
base::FEATURE_DISABLED_BY_DEFAULT
@@ -2742,7 +2742,7 @@ bool IsFencedFramesEnabled() {
// https://bugs.chromium.org/p/chromium/issues/detail?id=1335069#c3.
bool IsMemoryPurgeOnBackgroundingEnabled() {
return
-#if BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_DESKTOP_ANDROID)
+#if BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_DESKTOP_ANDROID_FALSE)
false
#else
true
diff --git a/third_party/blink/renderer/modules/modules_initializer.cc b/third_party/blink/renderer/modules/modules_initializer.cc
--- a/third_party/blink/renderer/modules/modules_initializer.cc
+++ b/third_party/blink/renderer/modules/modules_initializer.cc
@@ -121,7 +121,7 @@
namespace blink {
namespace {
-#if BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_DESKTOP_ANDROID)
+#if BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_DESKTOP_ANDROID_FALSE)
class SuspendCaptureObserver : public GarbageCollected<SuspendCaptureObserver>,
public Supplement<Page>,
@@ -378,7 +378,7 @@ void ModulesInitializer::ProvideModulesToPage(
const SessionStorageNamespaceId& namespace_id) const {
StorageNamespace::ProvideSessionStorageNamespaceTo(page, namespace_id);
AudioGraphTracer::ProvideAudioGraphTracerTo(page);
-#if BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_DESKTOP_ANDROID)
+#if BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_DESKTOP_ANDROID_FALSE)
page.ProvideSupplement(MakeGarbageCollected<SuspendCaptureObserver>(page));
#endif // BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_DESKTOP_ANDROID)
}
diff --git a/third_party/libvpx/BUILD.gn b/third_party/libvpx/BUILD.gn
--- a/third_party/libvpx/BUILD.gn
+++ b/third_party/libvpx/BUILD.gn
@@ -30,7 +30,7 @@ if (current_cpu == "x86") {
}
} else if (current_cpu == "arm64" || current_cpu == "arm64e") {
if (is_linux || is_win || is_chromeos || is_mac || is_ios ||
- is_desktop_android) {
+ is_desktop_android_false) {
# This is necessary for CrOS and macOS as they reuse the Linux
# configuration, of which there are two (see the later definition of
# os_category).
diff --git a/tools/grit/grit_args.gni b/tools/grit/grit_args.gni
--- a/tools/grit/grit_args.gni
+++ b/tools/grit/grit_args.gni
@@ -34,7 +34,8 @@ _grit_defines = [
# Mac wants Title Case strings.
"use_titlecase=${is_mac}",
- "is_desktop_android=${is_desktop_android}",
+ "is_desktop_android_false=${is_desktop_android_false}",
+ "is_desktop_android_cromite=${is_desktop_android_cromite}",
]
# Must match `enable_hidpi` in ui/base/ui_features.gni.
diff --git a/tools/json_schema_compiler/cpp_bundle_generator.py b/tools/json_schema_compiler/cpp_bundle_generator.py
--- a/tools/json_schema_compiler/cpp_bundle_generator.py
+++ b/tools/json_schema_compiler/cpp_bundle_generator.py
@@ -138,7 +138,7 @@ class CppBundleGenerator(object):
if platform == Platforms.CHROMEOS:
ifdefs.append('BUILDFLAG(IS_CHROMEOS)')
elif platform == Platforms.DESKTOP_ANDROID:
- ifdefs.append('BUILDFLAG(IS_DESKTOP_ANDROID)')
+ ifdefs.append('BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)')
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
@@ -636,7 +636,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
@@ -233,8 +233,13 @@ public class PopupSpecCalculator implements SpecCalculator {
- marginPx;
// Bias based on the center of the popup and where it is on the screen.
- final boolean idealFitsBelow = idealContentSize.getHeight() <= spaceBelowAnchor;
- final boolean idealFitsAbove = idealContentSize.getHeight() <= spaceAboveAnchor;
+ boolean idealFitsBelow = idealContentSize.getHeight() <= spaceBelowAnchor;
+ boolean idealFitsAbove = idealContentSize.getHeight() <= spaceAboveAnchor;
+
+ if (!idealFitsBelow && !idealFitsAbove) {
+ idealFitsAbove = (spaceBelowAnchor < spaceAboveAnchor);
+ idealFitsBelow = !idealFitsAbove;
+ }
// Determine whether or not the popup should be above or below the anchor.
// Aggressively try to put it below the anchor. Put it above only if it would fit
diff --git a/ui/android/javatests/src/org/chromium/ui/test/util/UiDisableIfSkipCheck.java b/ui/android/javatests/src/org/chromium/ui/test/util/UiDisableIfSkipCheck.java
--- a/ui/android/javatests/src/org/chromium/ui/test/util/UiDisableIfSkipCheck.java
+++ b/ui/android/javatests/src/org/chromium/ui/test/util/UiDisableIfSkipCheck.java
@@ -28,17 +28,17 @@ public class UiDisableIfSkipCheck extends DisableIfSkipCheck {
() -> {
switch (type) {
case DeviceFormFactor.PHONE:
- return !DeviceInfo.isDesktop() && !isTablet();
+ return !DeviceInfo.isDesktopFalse() && !isTablet();
case DeviceFormFactor.ONLY_TABLET:
- return !DeviceInfo.isDesktop() && isTablet();
+ return !DeviceInfo.isDesktopFalse() && isTablet();
case DeviceFormFactor.DESKTOP:
- return DeviceInfo.isDesktop();
+ return DeviceInfo.isDesktopFalse();
case DeviceFormFactor.DESKTOP_FREEFORM:
return UiRestriction.isDesktopFreeform();
case DeviceFormFactor.TABLET_OR_DESKTOP:
return isTablet();
case DeviceFormFactor.PHONE_OR_TABLET:
- return !DeviceInfo.isDesktop();
+ return !DeviceInfo.isDesktopFalse();
default:
return false;
}
diff --git a/ui/android/javatests/src/org/chromium/ui/test/util/UiRestriction.java b/ui/android/javatests/src/org/chromium/ui/test/util/UiRestriction.java
--- a/ui/android/javatests/src/org/chromium/ui/test/util/UiRestriction.java
+++ b/ui/android/javatests/src/org/chromium/ui/test/util/UiRestriction.java
@@ -31,7 +31,7 @@ public final class UiRestriction {
if (sIsDesktop == null) {
// See the following link for implementation details:
// https://source.chromium.org/chromium/chromium/src/+/main:base/android/java/src/org/chromium/base/DeviceInfo.java;l=285-287;drc=61d3d9feb38d8045309dd9e237f5305de987523d
- sIsDesktop = DeviceInfo.isDesktop();
+ sIsDesktop = DeviceInfo.isDesktopFalse();
}
return sIsDesktop;
}
@@ -50,7 +50,7 @@ public final class UiRestriction {
if (sIsDesktopFreeform == null) {
var packageManager = ContextUtils.getApplicationContext().getPackageManager();
sIsDesktopFreeform =
- BuildConfig.IS_DESKTOP_ANDROID
+ BuildConfig.IS_DESKTOP_ANDROID_FALSE
&& packageManager.hasSystemFeature(PackageManager.FEATURE_PC);
}
diff --git a/ui/base/accelerators/command.cc b/ui/base/accelerators/command.cc
--- a/ui/base/accelerators/command.cc
+++ b/ui/base/accelerators/command.cc
@@ -86,7 +86,7 @@ std::string Command::CommandPlatform() {
// TODO(crbug.com/40220501): Change this once we decide what string should be
// used for Fuchsia.
return ui::kKeybindingPlatformLinux;
-#elif BUILDFLAG(IS_DESKTOP_ANDROID)
+#elif BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE)
// For now, we use linux keybindings on desktop android.
// TODO(https://crbug.com/356905053): Should this be ChromeOS keybindings?
return ui::kKeybindingPlatformLinux;
diff --git a/ui/base/device_form_factor_android.cc b/ui/base/device_form_factor_android.cc
--- a/ui/base/device_form_factor_android.cc
+++ b/ui/base/device_form_factor_android.cc
@@ -28,7 +28,7 @@ DeviceFormFactor GetDeviceFormFactor() {
return DEVICE_FORM_FACTOR_AUTOMOTIVE;
}
- if (base::android::device_info::is_desktop()) {
+ if (base::android::device_info::is_desktop_false()) {
return DEVICE_FORM_FACTOR_DESKTOP;
}
diff --git a/ui/gl/features.gni b/ui/gl/features.gni
--- a/ui/gl/features.gni
+++ b/ui/gl/features.gni
@@ -14,7 +14,7 @@ declare_args() {
# Vulkan Validation Layers.
use_dawn = is_apple || is_win || is_chromeos || (is_linux && !is_castos) ||
(is_android && target_cpu != "x86" && target_cpu != "x64") ||
- is_desktop_android
+ is_desktop_android_false
# Should Dawn test binaries (unittests, end2end_tests, perf_tests) be built?
# Independent of use_dawn, which controls whether Dawn is used in Chromium.
diff --git a/ui/resources/ui_resources.grd b/ui/resources/ui_resources.grd
--- a/ui/resources/ui_resources.grd
+++ b/ui/resources/ui_resources.grd
@@ -28,7 +28,7 @@
</if>
<structure type="chrome_scaled_image" name="IDR_DEFAULT_FAVICON" file="common/default_favicon.png" />
<structure type="chrome_scaled_image" name="IDR_DEFAULT_FAVICON_DARK" file="common/default_favicon_dark.png" />
- <if expr="not is_android or is_desktop_android">
+ <if expr="not is_android or is_desktop_android_cromite">
<structure type="chrome_scaled_image" name="IDR_DEFAULT_FAVICON_32" file="common/default_favicon_32.png" />
<structure type="chrome_scaled_image" name="IDR_DEFAULT_FAVICON_DARK_32" file="common/default_favicon_dark_32.png" />
<structure type="chrome_scaled_image" name="IDR_DEFAULT_FAVICON_64" file="common/default_favicon_64.png" />
diff --git a/ui/webui/resources/BUILD.gn b/ui/webui/resources/BUILD.gn
--- a/ui/webui/resources/BUILD.gn
+++ b/ui/webui/resources/BUILD.gn
@@ -50,7 +50,7 @@ generate_grd("build_grd") {
"$target_gen_dir/mojo/resources.grdp",
]
- if ((!is_android && !is_ios) || is_desktop_android) {
+ if ((!is_android && !is_ios) || is_desktop_android_cromite) {
public_deps += [
"cr_components/cr_shortcut_input:build_grdp",
"cr_components/managed_footnote:build_grdp",
diff --git a/ui/webui/resources/cr_components/cr_shortcut_input/BUILD.gn b/ui/webui/resources/cr_components/cr_shortcut_input/BUILD.gn
--- a/ui/webui/resources/cr_components/cr_shortcut_input/BUILD.gn
+++ b/ui/webui/resources/cr_components/cr_shortcut_input/BUILD.gn
@@ -4,7 +4,7 @@
import("//ui/webui/resources/tools/build_webui.gni")
-assert((!is_android && !is_ios) || is_desktop_android)
+assert((!is_android && !is_ios) || is_desktop_android_cromite)
build_webui("build") {
grd_prefix = "cr_components_cr_shortcut_input"
diff --git a/ui/webui/resources/cr_components/managed_footnote/BUILD.gn b/ui/webui/resources/cr_components/managed_footnote/BUILD.gn
--- a/ui/webui/resources/cr_components/managed_footnote/BUILD.gn
+++ b/ui/webui/resources/cr_components/managed_footnote/BUILD.gn
@@ -4,7 +4,7 @@
import("//ui/webui/resources/tools/build_webui.gni")
-assert((!is_android && !is_ios) || is_desktop_android)
+assert((!is_android && !is_ios) || is_desktop_android_cromite)
build_webui("build") {
grd_prefix = "cr_components_managed_footnote"
diff --git a/ui/webui/resources/cr_elements/BUILD.gn b/ui/webui/resources/cr_elements/BUILD.gn
--- a/ui/webui/resources/cr_elements/BUILD.gn
+++ b/ui/webui/resources/cr_elements/BUILD.gn
@@ -87,7 +87,7 @@ build_webui("build") {
]
}
- if ((!is_android && !is_ios) || is_desktop_android) {
+ if ((!is_ios) || is_desktop_android_cromite) {
static_files = [ "cr_a11y_announcer/cr_a11y_announcer.css" ]
ts_files += [
"cr_radio_button/cr_radio_button_mixin_lit.ts",
diff --git a/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar.css b/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar.css
--- a/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar.css
+++ b/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar.css
@@ -123,6 +123,9 @@ picture {
}
#menuButton ~ h1 {
+<if expr="is_android">
+ font-size: 15px !important;
+</if>
margin-inline-start: 0;
}
diff --git a/ui/webui/resources/css/BUILD.gn b/ui/webui/resources/css/BUILD.gn
--- a/ui/webui/resources/css/BUILD.gn
+++ b/ui/webui/resources/css/BUILD.gn
@@ -35,7 +35,7 @@ preprocess_if_expr("preprocess") {
in_files += [ "roboto.css" ]
}
- if (include_polymer || is_desktop_android) {
+ if (include_polymer || is_desktop_android_cromite) {
in_files += [ "md_colors.css" ]
}
}
--