From 8321e43aa2b2a2d904ba8636aabab7557ba592c0 Mon Sep 17 00:00:00 2001 From: idriskalp Date: Mon, 14 Feb 2022 02:15:53 +0300 Subject: [PATCH] chromium --- .../files/fix-tag-dragging-in-KWin.patch | 35 +++ .../files/fix-tag-dragging-in-Mutter.patch | 46 ++++ .../patches/chromium-97-Point-constexpr.patch | 27 +++ .../chromium-97-ScrollView-reference.patch | 23 ++ .../files/patches/chromium-97-compiler.patch | 212 ++++++++++++++++++ 5 files changed, 343 insertions(+) create mode 100644 network/web/chromium-browser/files/fix-tag-dragging-in-KWin.patch create mode 100644 network/web/chromium-browser/files/fix-tag-dragging-in-Mutter.patch create mode 100644 network/web/chromium-browser/files/patches/chromium-97-Point-constexpr.patch create mode 100644 network/web/chromium-browser/files/patches/chromium-97-ScrollView-reference.patch create mode 100644 network/web/chromium-browser/files/patches/chromium-97-compiler.patch diff --git a/network/web/chromium-browser/files/fix-tag-dragging-in-KWin.patch b/network/web/chromium-browser/files/fix-tag-dragging-in-KWin.patch new file mode 100644 index 0000000000..226e925933 --- /dev/null +++ b/network/web/chromium-browser/files/fix-tag-dragging-in-KWin.patch @@ -0,0 +1,35 @@ +From 52d0ad25ea695da44195e49f36e69fa81b55e670 Mon Sep 17 00:00:00 2001 +From: Tom Anderson +Date: Wed, 5 Jan 2022 21:11:03 +0000 +Subject: [PATCH] [X11] Fix tag dragging in KWin + +R=sky + +Bug: 1279532 +Change-Id: Iac166803e2149eef234045d922b630f0019c8073 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3355376 +Auto-Submit: Thomas Anderson +Reviewed-by: Scott Violet +Commit-Queue: Thomas Anderson +Cr-Commit-Position: refs/heads/main@{#955869} +--- + ui/platform_window/x11/x11_topmost_window_finder.cc | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/ui/platform_window/x11/x11_topmost_window_finder.cc b/ui/platform_window/x11/x11_topmost_window_finder.cc +index 50e75e17f0a..2e16393487b 100644 +--- a/ui/platform_window/x11/x11_topmost_window_finder.cc ++++ b/ui/platform_window/x11/x11_topmost_window_finder.cc +@@ -68,9 +68,9 @@ bool EnumerateAllWindows(ShouldStopIteratingCallback should_stop_iterating, + + void EnumerateTopLevelWindows( + ui::ShouldStopIteratingCallback should_stop_iterating) { +- // Some WMs parent 'top-level' windows in unnamed actual top-level windows +- // (ion WM), so extend the search depth to all children of top-level windows. +- const int kMaxSearchDepth = 1; ++ // WMs may reparent toplevel windows inside their own containers, so extend ++ // the search to all grandchildren of all toplevel windows. ++ const int kMaxSearchDepth = 2; + ui::EnumerateAllWindows(should_stop_iterating, kMaxSearchDepth); + } + diff --git a/network/web/chromium-browser/files/fix-tag-dragging-in-Mutter.patch b/network/web/chromium-browser/files/fix-tag-dragging-in-Mutter.patch new file mode 100644 index 0000000000..01f2da5782 --- /dev/null +++ b/network/web/chromium-browser/files/fix-tag-dragging-in-Mutter.patch @@ -0,0 +1,46 @@ +From 3806f28918ea23291749ff4775339075a5f394e8 Mon Sep 17 00:00:00 2001 +From: Tom Anderson +Date: Thu, 6 Jan 2022 00:59:40 +0000 +Subject: [PATCH] [X11] Fix tag dragging in Mutter + +We used to use a BFS to find the target window for tag dragging, but +this causes windows underneath (like the window for the desktop +wallpaper) to take precedence over nested windows. + +This CL switches to a DFS. + +R=sky + +Bug: 1279532 +Change-Id: Ib569e9270be60bcb4fff088517dfe295697608b0 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3355470 +Reviewed-by: Scott Violet +Commit-Queue: Thomas Anderson +Auto-Submit: Thomas Anderson +Cr-Commit-Position: refs/heads/main@{#955976} +--- + ui/platform_window/x11/x11_topmost_window_finder.cc | 11 ++--------- + 1 file changed, 2 insertions(+), 9 deletions(-) + +diff --git a/ui/platform_window/x11/x11_topmost_window_finder.cc b/ui/platform_window/x11/x11_topmost_window_finder.cc +index 2e16393487b..e20bf0abf0e 100644 +--- a/ui/platform_window/x11/x11_topmost_window_finder.cc ++++ b/ui/platform_window/x11/x11_topmost_window_finder.cc +@@ -44,15 +44,8 @@ bool EnumerateChildren(ShouldStopIteratingCallback should_stop_iterating, + for (iter = windows.rbegin(); iter != windows.rend(); iter++) { + if (IsWindowNamed(*iter) && should_stop_iterating.Run(*iter)) + return true; +- } +- +- // If we're at this point, we didn't find the window we're looking for at the +- // current level, so we need to recurse to the next level. We use a second +- // loop because the recursion and call to XQueryTree are expensive and is only +- // needed for a small number of cases. +- if (++depth <= max_depth) { +- for (iter = windows.rbegin(); iter != windows.rend(); iter++) { +- if (EnumerateChildren(should_stop_iterating, *iter, max_depth, depth)) ++ if (depth < max_depth) { ++ if (EnumerateChildren(should_stop_iterating, *iter, max_depth, depth + 1)) + return true; + } + } diff --git a/network/web/chromium-browser/files/patches/chromium-97-Point-constexpr.patch b/network/web/chromium-browser/files/patches/chromium-97-Point-constexpr.patch new file mode 100644 index 0000000000..ca1a0b6d72 --- /dev/null +++ b/network/web/chromium-browser/files/patches/chromium-97-Point-constexpr.patch @@ -0,0 +1,27 @@ +From 9850414c0425aebf038faf418f331df2d6ad573b Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann +Date: Fri, 5 Nov 2021 08:53:26 +0000 +Subject: [PATCH] GCC: make gfx::Point::operator== constexpr + +blink::IntRect::operator== is constexpr. Therefore, +gfx::Point::operator== needs to be constexpr as well. +--- + ui/gfx/geometry/point.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ui/gfx/geometry/point.h b/ui/gfx/geometry/point.h +index 71c5a5b..55b3220 100644 +--- a/ui/gfx/geometry/point.h ++++ b/ui/gfx/geometry/point.h +@@ -95,7 +95,7 @@ class GEOMETRY_EXPORT Point { + int y_; + }; + +-inline bool operator==(const Point& lhs, const Point& rhs) { ++constexpr bool operator==(const Point& lhs, const Point& rhs) { + return lhs.x() == rhs.x() && lhs.y() == rhs.y(); + } + +-- +2.32.0 + diff --git a/network/web/chromium-browser/files/patches/chromium-97-ScrollView-reference.patch b/network/web/chromium-browser/files/patches/chromium-97-ScrollView-reference.patch new file mode 100644 index 0000000000..91354e4330 --- /dev/null +++ b/network/web/chromium-browser/files/patches/chromium-97-ScrollView-reference.patch @@ -0,0 +1,23 @@ +From ce58517e546f3f3433931609683b5b4e455bbb7f Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann +Date: Fri, 5 Nov 2021 15:48:05 +0000 +Subject: [PATCH] GCC: fix undefined reference to ScrollView::SetContents() + +--- + ui/views/controls/scroll_view.h | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/ui/views/controls/scroll_view.h b/ui/views/controls/scroll_view.h +index 3bd5a8bf..f850728c 100644 +--- a/ui/views/controls/scroll_view.h ++++ b/ui/views/controls/scroll_view.h +@@ -386,6 +386,9 @@ + ScrollViewCallbackList on_contents_scroll_ended_; + }; + ++// Required for WebAppUrlHandlerIntentPickerView ++template View* ScrollView::SetContents(std::unique_ptr a_view); ++ + BEGIN_VIEW_BUILDER(VIEWS_EXPORT, ScrollView, View) + VIEW_BUILDER_VIEW_TYPE_PROPERTY(View, Contents) + VIEW_BUILDER_PROPERTY(ui::LayerType, ContentsLayerType) diff --git a/network/web/chromium-browser/files/patches/chromium-97-compiler.patch b/network/web/chromium-browser/files/patches/chromium-97-compiler.patch new file mode 100644 index 0000000000..8e6b8dcdb4 --- /dev/null +++ b/network/web/chromium-browser/files/patches/chromium-97-compiler.patch @@ -0,0 +1,212 @@ +From 307a0f63dd9b118f4b8470ed3d7567e81fdb7a6d Mon Sep 17 00:00:00 2001 +From: Mike Gilbert +Date: Tue, 2 Nov 2021 11:27:25 +0000 +Subject: [PATCH] Disable various compiler configs + +--- + build/config/compiler/BUILD.gn | 98 ++++++---------------------------- + 1 file changed, 17 insertions(+), 81 deletions(-) + +diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn +index 2656f80..221e6db 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -296,8 +296,6 @@ config("compiler") { + + configs += [ + # See the definitions below. +- ":clang_revision", +- ":compiler_cpu_abi", + ":compiler_codegen", + ":compiler_deterministic", + ] +@@ -538,24 +536,6 @@ config("compiler") { + ldflags += [ "-Wl,-z,keep-text-section-prefix" ] + } + +- if (is_clang && !is_nacl && !use_xcode_clang && current_os != "zos") { +- cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ] +- +- # TODO(hans): Remove this once Clang generates better optimized debug info +- # by default. https://crbug.com/765793 +- cflags += [ +- "-mllvm", +- "-instcombine-lower-dbg-declare=0", +- ] +- if (!is_debug && use_thin_lto && is_a_target_toolchain) { +- if (is_win) { +- ldflags += [ "-mllvm:-instcombine-lower-dbg-declare=0" ] +- } else { +- ldflags += [ "-Wl,-mllvm,-instcombine-lower-dbg-declare=0" ] +- } +- } +- } +- + # C11/C++11 compiler flags setup. + # --------------------------- + if (is_linux || is_chromeos || is_android || (is_nacl && is_clang) || +@@ -1246,45 +1226,6 @@ config("compiler_deterministic") { + } + } + +- # Makes builds independent of absolute file path. +- if (is_clang && strip_absolute_paths_from_debug_symbols) { +- # If debug option is given, clang includes $cwd in debug info by default. +- # For such build, this flag generates reproducible obj files even we use +- # different build directory like "out/feature_a" and "out/feature_b" if +- # we build same files with same compile flag. +- # Other paths are already given in relative, no need to normalize them. +- if (is_nacl) { +- # TODO(https://crbug.com/1231236): Use -ffile-compilation-dir= here. +- cflags += [ +- "-Xclang", +- "-fdebug-compilation-dir", +- "-Xclang", +- ".", +- ] +- } else { +- # -ffile-compilation-dir is an alias for both -fdebug-compilation-dir= +- # and -fcoverage-compilation-dir=. +- cflags += [ "-ffile-compilation-dir=." ] +- } +- if (!is_win) { +- # We don't use clang -cc1as on Windows (yet? https://crbug.com/762167) +- asmflags = [ "-Wa,-fdebug-compilation-dir,." ] +- } +- +- if (is_win && use_lld) { +- if (symbol_level == 2 || (is_clang && using_sanitizer)) { +- # Absolutize source file paths for PDB. Pass the real build directory +- # if the pdb contains source-level debug information and if linker +- # reproducibility is not critical. +- ldflags += [ "/PDBSourcePath:" + rebase_path(root_build_dir) ] +- } else { +- # Use a fake fixed base directory for paths in the pdb to make the pdb +- # output fully deterministic and independent of the build directory. +- ldflags += [ "/PDBSourcePath:o:\fake\prefix" ] +- } +- } +- } +- + # Tells the compiler not to use absolute paths when passing the default + # paths to the tools it invokes. We don't want this because we don't + # really need it and it can mess up the goma cache entries. +@@ -1562,7 +1503,7 @@ config("chromium_code") { + defines = [ "_HAS_NODISCARD" ] + } + } else { +- cflags = [ "-Wall" ] ++ cflags = [] + if (treat_warnings_as_errors) { + cflags += [ "-Werror" ] + +@@ -1571,10 +1512,6 @@ config("chromium_code") { + # well. + ldflags = [ "-Werror" ] + } +- if (is_clang) { +- # Enable extra warnings for chromium_code when we control the compiler. +- cflags += [ "-Wextra" ] +- } + + # In Chromium code, we define __STDC_foo_MACROS in order to get the + # C99 macros on Mac and Linux. +@@ -1583,15 +1520,6 @@ config("chromium_code") { + "__STDC_FORMAT_MACROS", + ] + +- if (!is_debug && !using_sanitizer && current_cpu != "s390x" && +- current_cpu != "s390" && current_cpu != "ppc64" && +- current_cpu != "mips" && current_cpu != "mips64") { +- # Non-chromium code is not guaranteed to compile cleanly with +- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are +- # disabled, so only do that for Release build. +- defines += [ "_FORTIFY_SOURCE=2" ] +- } +- + if (is_mac) { + cflags_objc = [ "-Wobjc-missing-property-synthesis" ] + cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] +@@ -1959,7 +1887,8 @@ config("default_stack_frames") { + } + + # Default "optimization on" config. +-config("optimize") { ++config("optimize") { } ++config("xoptimize") { + if (is_win) { + if (chrome_pgo_phase != 2) { + # Favor size over speed, /O1 must be before the common flags. +@@ -1999,7 +1928,8 @@ config("optimize") { + } + + # Turn off optimizations. +-config("no_optimize") { ++config("no_optimize") { } ++config("xno_optimize") { + if (is_win) { + cflags = [ + "/Od", # Disable optimization. +@@ -2039,7 +1969,8 @@ config("no_optimize") { + # Turns up the optimization level. On Windows, this implies whole program + # optimization and link-time code generation which is very expensive and should + # be used sparingly. +-config("optimize_max") { ++config("optimize_max") { } ++config("xoptimize_max") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2072,7 +2003,8 @@ config("optimize_max") { + # + # TODO(crbug.com/621335) - rework how all of these configs are related + # so that we don't need this disclaimer. +-config("optimize_speed") { ++config("optimize_speed") { } ++config("xoptimize_speed") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2098,7 +2030,8 @@ config("optimize_speed") { + } + } + +-config("optimize_fuzzing") { ++config("optimize_fuzzing") { } ++config("xoptimize_fuzzing") { + cflags = [ "-O1" ] + common_optimize_on_cflags + rustflags = [ "-Copt-level=1" ] + ldflags = common_optimize_on_ldflags +@@ -2218,7 +2151,8 @@ config("win_pdbaltpath") { + } + + # Full symbols. +-config("symbols") { ++config("symbols") { } ++config("xsymbols") { + if (is_win) { + if (is_clang) { + cflags = [ "/Z7" ] # Debug information in the .obj files. +@@ -2337,7 +2271,8 @@ config("symbols") { + # Minimal symbols. + # This config guarantees to hold symbol for stack trace which are shown to user + # when crash happens in unittests running on buildbot. +-config("minimal_symbols") { ++config("minimal_symbols") { } ++config("xminimal_symbols") { + if (is_win) { + # Functions, files, and line tables only. + cflags = [] +@@ -2407,7 +2342,8 @@ config("minimal_symbols") { + # This configuration contains function names only. That is, the compiler is + # told to not generate debug information and the linker then just puts function + # names in the final debug information. +-config("no_symbols") { ++config("no_symbols") { } ++config("xno_symbols") { + if (is_win) { + ldflags = [ "/DEBUG" ] + +-- +2.32.0 +