diff --git a/patch/patch.cfg b/patch/patch.cfg index 795b1becc..6f2b811b9 100644 --- a/patch/patch.cfg +++ b/patch/patch.cfg @@ -329,6 +329,11 @@ patches = [ # https://bitbucket.org/chromiumembedded/cef/issues/2256 'name': 'linux_build', }, + { + # Linux: Remove GTK build dependency. + # https://bitbucket.org/chromiumembedded/cef/issues/2014 + 'name': 'linux_gtk_2014', + }, { # Changes necessary to support for chrome extensions: # (a) Add a new ExtensionHost constructor that allows CEF to create the diff --git a/patch/patches/linux_gtk_2014.patch b/patch/patches/linux_gtk_2014.patch new file mode 100644 index 000000000..20c8d8a0b --- /dev/null +++ b/patch/patches/linux_gtk_2014.patch @@ -0,0 +1,170 @@ +diff --git build/config/linux/gtk/BUILD.gn build/config/linux/gtk/BUILD.gn +index a2b40d82674e..fac0c1900ce8 100644 +--- build/config/linux/gtk/BUILD.gn ++++ build/config/linux/gtk/BUILD.gn +@@ -4,8 +4,10 @@ + + import("//build/config/linux/gtk/gtk.gni") + import("//build/config/linux/pkg_config.gni") ++import("//build/config/ui.gni") + + assert(is_linux, "This file should only be referenced on Linux") ++assert(use_gtk, "This file should only be referenced when GTK is enabled") + + # GN doesn't check visibility for configs so we give this an obviously internal + # name to discourage random targets from accidentally depending on this and +diff --git build/config/ui.gni build/config/ui.gni +index 547b42fb5c66..0eae3470e1bb 100644 +--- build/config/ui.gni ++++ build/config/ui.gni +@@ -37,6 +37,9 @@ declare_args() { + # True means the UI is built using the "views" framework. + toolkit_views = (is_mac || is_win || is_chromeos || use_aura) && + !is_chromecast && !is_fuchsia ++ ++ # Whether we should use GTK. ++ use_gtk = use_aura && is_linux + } + + # Additional dependent variables ----------------------------------------------- +diff --git chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc +index d44c7feaabec..5f1992335a38 100644 +--- chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc ++++ chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc +@@ -5,6 +5,7 @@ + #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.h" + + #include "base/run_loop.h" ++#include "cef/libcef/features/features.h" + #include "chrome/browser/chrome_browser_main.h" + #include "chrome/browser/profiles/profile.h" + #include "chrome/browser/themes/theme_service.h" +@@ -30,6 +31,7 @@ + + namespace { + ++#if !BUILDFLAG(ENABLE_CEF) + ui::NativeTheme* GetNativeThemeForWindow(aura::Window* window) { + if (!window) + return nullptr; +@@ -54,6 +56,7 @@ ui::NativeTheme* GetNativeThemeForWindow(aura::Window* window) { + + return ui::NativeTheme::GetInstanceForNativeUi(); + } ++#endif // !BUILDFLAG(ENABLE_CEF) + + } // namespace + +@@ -67,9 +70,11 @@ ChromeBrowserMainExtraPartsViewsLinux:: + } + + void ChromeBrowserMainExtraPartsViewsLinux::PreEarlyInitialization() { ++#if !BUILDFLAG(ENABLE_CEF) + views::LinuxUI* gtk_ui = BuildGtkUi(); + gtk_ui->SetNativeThemeOverride(base::Bind(&GetNativeThemeForWindow)); + views::LinuxUI::SetInstance(gtk_ui); ++#endif + } + + void ChromeBrowserMainExtraPartsViewsLinux::ToolkitInitialized() { +diff --git chrome/test/BUILD.gn chrome/test/BUILD.gn +index 0e7209082c6c..795c02bd676f 100644 +--- chrome/test/BUILD.gn ++++ chrome/test/BUILD.gn +@@ -3827,7 +3827,7 @@ test("unit_tests") { + "../browser/ui/input_method/input_method_engine_unittest.cc", + ] + } +- if (!is_chromeos && !is_chromecast && is_linux) { ++ if (!is_chromeos && !is_chromecast && is_linux && use_gtk) { + sources += + [ "../browser/ui/libgtkui/select_file_dialog_impl_gtk_unittest.cc" ] + deps += [ "//build/config/linux/gtk" ] +@@ -3848,7 +3848,7 @@ test("unit_tests") { + if (use_gio) { + configs += [ "//build/linux:gio_config" ] + } +- if (!is_chromeos && !use_ozone && is_linux) { ++ if (!is_chromeos && !use_ozone && is_linux && use_gtk) { + deps += [ "//chrome/browser/ui/libgtkui" ] + } + +@@ -4970,7 +4970,7 @@ if (!is_android) { + # suites, it seems like one or another starts timing out too. + "../browser/ui/views/keyboard_access_browsertest.cc", + ] +- if (!use_ozone) { ++ if (!use_ozone && use_gtk) { + sources += [ + "../browser/ui/libgtkui/select_file_dialog_interactive_uitest.cc", + ] +diff --git remoting/host/BUILD.gn remoting/host/BUILD.gn +index 563d8318c231..4795186b594c 100644 +--- remoting/host/BUILD.gn ++++ remoting/host/BUILD.gn +@@ -336,7 +336,7 @@ static_library("host") { + "//build/config/linux:xrandr", + ] + deps += [ "//remoting/host/linux:x11" ] +- if (is_desktop_linux) { ++ if (is_desktop_linux && use_gtk) { + deps += [ "//build/config/linux/gtk" ] + } + } else { +@@ -717,7 +717,7 @@ if (enable_me2me_host) { + deps += [ "//components/policy:generated" ] + } + +- if (is_desktop_linux) { ++ if (is_desktop_linux && use_gtk) { + deps += [ "//build/config/linux/gtk" ] + } + if ((is_linux && !is_chromeos) || is_mac) { +diff --git remoting/host/it2me/BUILD.gn remoting/host/it2me/BUILD.gn +index 1d8b50d2320e..f72d8a1f3ba3 100644 +--- remoting/host/it2me/BUILD.gn ++++ remoting/host/it2me/BUILD.gn +@@ -53,7 +53,7 @@ source_set("common") { + "//remoting/resources", + "//remoting/signaling", + ] +- if (is_desktop_linux) { ++ if (is_desktop_linux && use_gtk) { + deps += [ + "//build/config/linux/gtk", + +@@ -247,7 +247,7 @@ if (!is_chromeos && enable_remoting_host) { + } + } + +- if (is_desktop_linux) { ++ if (is_desktop_linux && use_gtk) { + deps += [ "//build/config/linux/gtk" ] + } + } +diff --git remoting/host/linux/BUILD.gn remoting/host/linux/BUILD.gn +index fa24d0b9b4ab..3ca8743bb4c7 100644 +--- remoting/host/linux/BUILD.gn ++++ remoting/host/linux/BUILD.gn +@@ -98,7 +98,7 @@ source_set("linux") { + if (use_x11) { + deps += [ ":x11" ] + } +- if (is_desktop_linux) { ++ if (is_desktop_linux && use_gtk) { + deps += [ "//build/config/linux/gtk" ] + } + } +diff --git remoting/test/BUILD.gn remoting/test/BUILD.gn +index 267049123534..3672603366df 100644 +--- remoting/test/BUILD.gn ++++ remoting/test/BUILD.gn +@@ -197,7 +197,7 @@ if (enable_remoting_host && !is_android && !is_chromeos) { + ":it2me_standalone_host", + ] + +- if (is_desktop_linux) { ++ if (is_desktop_linux && use_gtk) { + deps += [ "//build/config/linux/gtk" ] + } + diff --git a/patch/patches/print_header_footer_1478_1565.patch b/patch/patches/print_header_footer_1478_1565.patch index fedb9542b..d47daf8fe 100644 --- a/patch/patches/print_header_footer_1478_1565.patch +++ b/patch/patches/print_header_footer_1478_1565.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/ui/BUILD.gn chrome/browser/ui/BUILD.gn -index 58bfe0e13733..371653fc39e8 100644 +index 58bfe0e13733..981abac36b2d 100644 --- chrome/browser/ui/BUILD.gn +++ chrome/browser/ui/BUILD.gn @@ -828,6 +828,7 @@ jumbo_split_static_library("ui") { @@ -10,6 +10,15 @@ index 58bfe0e13733..371653fc39e8 100644 "//chrome:extra_resources", "//chrome:resources", "//chrome:strings", +@@ -2709,7 +2710,7 @@ jumbo_split_static_library("ui") { + "views/frame/native_browser_frame_factory_ozone.cc", + ] + } else { +- if (use_aura) { ++ if (use_aura && use_gtk) { + # This is the only component that can interact with gtk. + deps += [ "//chrome/browser/ui/libgtkui" ] + } diff --git chrome/browser/ui/cocoa/applescript/tab_applescript.mm chrome/browser/ui/cocoa/applescript/tab_applescript.mm index f0a489a0c3af..1bd1259e47e3 100644 --- chrome/browser/ui/cocoa/applescript/tab_applescript.mm diff --git a/tools/gn_args.py b/tools/gn_args.py index d70c56a15..e6d0d77cf 100644 --- a/tools/gn_args.py +++ b/tools/gn_args.py @@ -260,6 +260,9 @@ def GetRequiredArgs(): # See https://bugs.chromium.org/p/chromium/issues/detail?id=848100#c4 result['enable_vulkan'] = False + # Build without GTK dependencies (see issue #2014). + result['use_gtk'] = False + if platform == 'macosx': # Always generate dSYM files. The make_distrib script will fail if # enable_dsyms=true is not explicitly set when is_official_build=false.