diff --git a/DEPS b/DEPS index 7f6f247e5d5d..6e927afa7f50 100644 --- a/DEPS +++ b/DEPS @@ -2,7 +2,7 @@ gclient_gn_args_from = 'src' vars = { 'chromium_version': - '136.0.7103.116', + '136.0.7103.149', 'node_version': 'v22.15.1', 'nan_version': diff --git a/patches/chromium/.patches b/patches/chromium/.patches index 029358022d7a..afe3ceed903a 100644 --- a/patches/chromium/.patches +++ b/patches/chromium/.patches @@ -149,4 +149,3 @@ mac_fix_check_on_ime_reconversion_due_to_invalid_replacement_range.patch fix_osr_stutter_fix_backport_for_electron.patch do_not_check_the_order_of_display_id_order_on_windows.patch make_focus_methods_in_webcontentsviewchildframe_notimplemented.patch -cherry-pick-69d5a982aed6.patch diff --git a/patches/chromium/build_libc_as_static_library.patch b/patches/chromium/build_libc_as_static_library.patch index 2b4ec2e0833e..962cbdea673a 100644 --- a/patches/chromium/build_libc_as_static_library.patch +++ b/patches/chromium/build_libc_as_static_library.patch @@ -7,23 +7,10 @@ Build libc++ as static library to compile and pass nan tests diff --git a/buildtools/third_party/libc++/BUILD.gn b/buildtools/third_party/libc++/BUILD.gn -index 29e8bbcb5e7ee2fb310ce00b0c20913424adc9c8..649330dde1e2b717e0af5a15834bf96ae4e19245 100644 +index d2e6e482d82782d1004e1f8ea377e69cbbe2677b..2bb9ec60180cf80be6e565081d56ea747820196b 100644 --- a/buildtools/third_party/libc++/BUILD.gn +++ b/buildtools/third_party/libc++/BUILD.gn -@@ -269,7 +269,11 @@ libcxx_modules("std_wctype_h") { - if (libcxx_is_shared) { - _libcxx_target_type = "shared_library" - } else { -- _libcxx_target_type = "source_set" -+ if (is_win) { -+ _libcxx_target_type = "source_set" -+ } else { -+ _libcxx_target_type = "static_library" -+ } - } - - target(_libcxx_target_type, "libc++") { -@@ -278,6 +282,7 @@ target(_libcxx_target_type, "libc++") { +@@ -272,6 +272,7 @@ target(libcxx_target_type, "libc++") { # need to explicitly depend on libc++. visibility = [ "//build/config:common_deps", @@ -31,16 +18,3 @@ index 29e8bbcb5e7ee2fb310ce00b0c20913424adc9c8..649330dde1e2b717e0af5a15834bf96a "//third_party/catapult/devil:devil", ] if (is_linux) { -diff --git a/buildtools/third_party/libc++abi/BUILD.gn b/buildtools/third_party/libc++abi/BUILD.gn -index 331ea447ea15e9f439396d4c7d41832de60adf4a..b96a994c43ac2ed0b0d5ec599f907ea0b501156e 100644 ---- a/buildtools/third_party/libc++abi/BUILD.gn -+++ b/buildtools/third_party/libc++abi/BUILD.gn -@@ -6,7 +6,7 @@ import("//build/config/android/config.gni") - import("//build/config/c++/c++.gni") - import("//build/config/unwind.gni") - --source_set("libc++abi") { -+static_library("libc++abi") { - if (export_libcxxabi_from_executables) { - visibility = [ "//build/config:executable_deps" ] - } else { diff --git a/patches/chromium/cherry-pick-69d5a982aed6.patch b/patches/chromium/cherry-pick-69d5a982aed6.patch deleted file mode 100644 index bbf8bcd3101e..000000000000 --- a/patches/chromium/cherry-pick-69d5a982aed6.patch +++ /dev/null @@ -1,90 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Guido Urdaneta -Date: Thu, 15 May 2025 06:22:26 -0700 -Subject: Disable relaxed mode for audio devices - -Relaxed mode is required only for cameras and there have been -reports of problems with audio bluetooth devices. - -Bug: 417256410 -Change-Id: Icfff72e5de12ea9efa1f0fe529b8a01ff4b5a149 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6550297 -Commit-Queue: Guido Urdaneta -Reviewed-by: Palak Agarwal -Cr-Commit-Position: refs/heads/main@{#1460672} - -diff --git a/content/browser/renderer_host/media/media_devices_manager.cc b/content/browser/renderer_host/media/media_devices_manager.cc -index 4d3189e34c90f2be18d44c4a6f42859b495f58ae..20ca4a98945f9d7a37bec292442147376659f8df 100644 ---- a/content/browser/renderer_host/media/media_devices_manager.cc -+++ b/content/browser/renderer_host/media/media_devices_manager.cc -@@ -354,7 +354,8 @@ struct MediaDevicesManager::EnumerationRequest { - // considered valid for some time after an enumeration. - class MediaDevicesManager::CacheInfo { - public: -- CacheInfo() = default; -+ explicit CacheInfo(bool allow_relaxed_mode) -+ : allow_relaxed_mode_(allow_relaxed_mode) {} - - void InvalidateCache() { - DCHECK(thread_checker_.CalledOnValidThread()); -@@ -425,7 +426,7 @@ class MediaDevicesManager::CacheInfo { - void RecordSpuriousInvalidation() { - DCHECK(thread_checker_.CalledOnValidThread()); - CHECK(IsRelaxedCacheFeatureEnabled()); -- if (is_in_relaxed_mode_) { -+ if (is_in_relaxed_mode_ || !allow_relaxed_mode_) { - return; - } - if (++num_spurious_invalidations_ >= kMaxSpuriousInvalidations) { -@@ -434,6 +435,8 @@ class MediaDevicesManager::CacheInfo { - } - } - -+ bool allow_relaxed_mode() const { return allow_relaxed_mode_; } -+ - private: - bool IsCacheExpired() const { - CHECK(IsRelaxedCacheFeatureEnabled()); -@@ -451,9 +454,13 @@ class MediaDevicesManager::CacheInfo { - int64_t seq_last_invalidation_ = 0; - bool is_update_ongoing_ = false; - int num_spurious_invalidations_ = 0; -+ const bool allow_relaxed_mode_; - // This is eventually set to true on systems where the normal cache policy - // can result in notification loops. Once set to true, it is never set back - // to false in order to avoid these loops. See https://crbug.com/325590346. -+ // An invariant that must be preserved at all times is that -+ // `is_in_relaxed_mode_` can be set to true only if `allow_relaxed_mode_` is -+ // true. - bool is_in_relaxed_mode_ = false; - base::TimeTicks time_last_update_; - base::ThreadChecker thread_checker_; -@@ -551,7 +558,6 @@ MediaDevicesManager::MediaDevicesManager( - stop_removed_input_device_cb_(std::move(stop_removed_input_device_cb)), - ui_input_device_change_cb_(std::move(ui_input_device_change_cb)), - permission_checker_(std::make_unique()), -- cache_infos_(static_cast(MediaDeviceType::kNumMediaDeviceTypes)), - get_salt_and_origin_cb_( - base::BindRepeating(&GetMediaDeviceSaltAndOrigin)) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); -@@ -559,6 +565,20 @@ MediaDevicesManager::MediaDevicesManager( - DCHECK(video_capture_manager_.get()); - DCHECK(!stop_removed_input_device_cb_.is_null()); - DCHECK(!ui_input_device_change_cb_.is_null()); -+ // Enable relaxed mode only for cameras. -+ // Audio devices do not need relaxed mode and it can interfere with bluetooth -+ // notifications. See https://crbug.com/417256410 -+ cache_infos_.emplace_back(/*allow_relaxed_mode=*/false); -+ cache_infos_.emplace_back(/*allow_relaxed_mode=*/true); -+ cache_infos_.emplace_back(/*allow_relaxed_mode=*/false); -+ CHECK_EQ(cache_infos_.size(), -+ static_cast(MediaDeviceType::kNumMediaDeviceTypes)); -+ CHECK(!cache_infos_[static_cast(MediaDeviceType::kMediaAudioInput)] -+ .allow_relaxed_mode()); -+ CHECK(cache_infos_[static_cast(MediaDeviceType::kMediaVideoInput)] -+ .allow_relaxed_mode()); -+ CHECK(!cache_infos_[static_cast(MediaDeviceType::kMediaAudioOutput)] -+ .allow_relaxed_mode()); - SendLogMessage("MediaDevicesManager()"); - cache_policies_.fill(CachePolicy::NO_CACHE); - } diff --git a/patches/chromium/feat_add_support_for_missing_dialog_features_to_shell_dialogs.patch b/patches/chromium/feat_add_support_for_missing_dialog_features_to_shell_dialogs.patch index 3b127aae5909..7f579fde8b27 100644 --- a/patches/chromium/feat_add_support_for_missing_dialog_features_to_shell_dialogs.patch +++ b/patches/chromium/feat_add_support_for_missing_dialog_features_to_shell_dialogs.patch @@ -16,10 +16,10 @@ It also: This may be partially upstreamed to Chromium in the future. diff --git a/ui/gtk/select_file_dialog_linux_gtk.cc b/ui/gtk/select_file_dialog_linux_gtk.cc -index b83f0177a2adb0a19be49684f865941e6708f626..a8c7032cfc122b97665c41da9e1191e747b95a33 100644 +index 4a9118dcabbc0cffeea17dc26a8e1f2a54604766..4ae6001c0376822d41a77949ce05ea0328abcee4 100644 --- a/ui/gtk/select_file_dialog_linux_gtk.cc +++ b/ui/gtk/select_file_dialog_linux_gtk.cc -@@ -259,8 +259,12 @@ void SelectFileDialogLinuxGtk::SelectFileImpl( +@@ -261,8 +261,12 @@ void SelectFileDialogLinuxGtk::SelectFileImpl( case SELECT_EXISTING_FOLDER: dialog = CreateSelectFolderDialog(type, title_string, default_path, owning_window); @@ -34,7 +34,7 @@ index b83f0177a2adb0a19be49684f865941e6708f626..a8c7032cfc122b97665c41da9e1191e7 break; case SELECT_OPEN_FILE: dialog = CreateFileOpenDialog(title_string, default_path, owning_window); -@@ -407,9 +411,11 @@ GtkWidget* SelectFileDialogLinuxGtk::CreateFileOpenHelper( +@@ -409,9 +413,11 @@ GtkWidget* SelectFileDialogLinuxGtk::CreateFileOpenHelper( const std::string& title, const base::FilePath& default_path, gfx::NativeWindow parent) { @@ -47,7 +47,7 @@ index b83f0177a2adb0a19be49684f865941e6708f626..a8c7032cfc122b97665c41da9e1191e7 SetGtkTransientForAura(dialog, parent); AddFilters(GTK_FILE_CHOOSER(dialog)); -@@ -425,6 +431,7 @@ GtkWidget* SelectFileDialogLinuxGtk::CreateFileOpenHelper( +@@ -427,6 +433,7 @@ GtkWidget* SelectFileDialogLinuxGtk::CreateFileOpenHelper( GtkFileChooserSetCurrentFolder(GTK_FILE_CHOOSER(dialog), *last_opened_path()); } @@ -55,7 +55,7 @@ index b83f0177a2adb0a19be49684f865941e6708f626..a8c7032cfc122b97665c41da9e1191e7 return dialog; } -@@ -440,11 +447,15 @@ GtkWidget* SelectFileDialogLinuxGtk::CreateSelectFolderDialog( +@@ -442,11 +449,15 @@ GtkWidget* SelectFileDialogLinuxGtk::CreateSelectFolderDialog( ? l10n_util::GetStringUTF8(IDS_SELECT_UPLOAD_FOLDER_DIALOG_TITLE) : l10n_util::GetStringUTF8(IDS_SELECT_FOLDER_DIALOG_TITLE); } @@ -76,7 +76,7 @@ index b83f0177a2adb0a19be49684f865941e6708f626..a8c7032cfc122b97665c41da9e1191e7 GtkWidget* dialog = GtkFileChooserDialogNew( title_string.c_str(), nullptr, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, -@@ -466,7 +477,8 @@ GtkWidget* SelectFileDialogLinuxGtk::CreateSelectFolderDialog( +@@ -468,7 +479,8 @@ GtkWidget* SelectFileDialogLinuxGtk::CreateSelectFolderDialog( gtk_file_filter_add_mime_type(only_folders, "inode/directory"); gtk_file_filter_add_mime_type(only_folders, "text/directory"); gtk_file_chooser_add_filter(chooser, only_folders); @@ -86,7 +86,7 @@ index b83f0177a2adb0a19be49684f865941e6708f626..a8c7032cfc122b97665c41da9e1191e7 return dialog; } -@@ -503,10 +515,11 @@ GtkWidget* SelectFileDialogLinuxGtk::CreateSaveAsDialog( +@@ -505,10 +517,11 @@ GtkWidget* SelectFileDialogLinuxGtk::CreateSaveAsDialog( std::string title_string = !title.empty() ? title : l10n_util::GetStringUTF8(IDS_SAVE_AS_DIALOG_TITLE); @@ -100,7 +100,7 @@ index b83f0177a2adb0a19be49684f865941e6708f626..a8c7032cfc122b97665c41da9e1191e7 GTK_RESPONSE_ACCEPT); SetGtkTransientForAura(dialog, parent); -@@ -532,9 +545,10 @@ GtkWidget* SelectFileDialogLinuxGtk::CreateSaveAsDialog( +@@ -534,9 +547,10 @@ GtkWidget* SelectFileDialogLinuxGtk::CreateSaveAsDialog( gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), FALSE); // Overwrite confirmation is always enabled in GTK4. if (!GtkCheckVersion(4)) { @@ -113,7 +113,7 @@ index b83f0177a2adb0a19be49684f865941e6708f626..a8c7032cfc122b97665c41da9e1191e7 return dialog; } -@@ -589,15 +603,29 @@ void SelectFileDialogLinuxGtk::OnSelectSingleFolderDialogResponse( +@@ -591,15 +605,29 @@ void SelectFileDialogLinuxGtk::OnSelectSingleFolderDialogResponse( void SelectFileDialogLinuxGtk::OnSelectMultiFileDialogResponse( GtkWidget* dialog, int response_id) {