diff --git a/network/web/chromium-browser/files/downgrade-duplicate-peer-error-to-dvlog.patch b/network/web/chromium-browser/files/downgrade-duplicate-peer-error-to-dvlog.patch new file mode 100644 index 0000000000..62d553e08c --- /dev/null +++ b/network/web/chromium-browser/files/downgrade-duplicate-peer-error-to-dvlog.patch @@ -0,0 +1,33 @@ +From 00604ca8ed6d669fb6cb3ae8bacd6028d5ef10ac Mon Sep 17 00:00:00 2001 +From: Stephen Roettger +Date: Thu, 20 Jan 2022 10:04:04 +0000 +Subject: [PATCH] Downgrade duplicate peer error to dvlog +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Downgrading since this case can happen in non-error situations. There can be +duplicate introductions in flight in which case we simply drop the second one. + +Change-Id: I2c51b177913ccd9634e9bb6343d468101d9735ed +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3398794 +Reviewed-by: Ken Rockot +Commit-Queue: Stephen Röttger +Cr-Commit-Position: refs/heads/main@{#961389} +--- + mojo/core/node_controller.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mojo/core/node_controller.cc b/mojo/core/node_controller.cc +index 7cde7719687..81712676733 100644 +--- a/mojo/core/node_controller.cc ++++ b/mojo/core/node_controller.cc +@@ -594,7 +594,7 @@ void NodeController::AddPeer(const ports::NodeName& name, + } + + if (dropped_peers_.Contains(name)) { +- LOG(ERROR) << "Trying to re-add dropped peer " << name; ++ DVLOG(1) << "Trying to re-add dropped peer " << name; + return; + } + diff --git a/network/web/chromium-browser/files/fix-build-break-with-system-libdrm.patch b/network/web/chromium-browser/files/fix-build-break-with-system-libdrm.patch new file mode 100644 index 0000000000..fe8eee6d1e --- /dev/null +++ b/network/web/chromium-browser/files/fix-build-break-with-system-libdrm.patch @@ -0,0 +1,62 @@ +From 5b287e0be8d8d8475ec6ef81b16eaa61e19db078 Mon Sep 17 00:00:00 2001 +From: "Steinar H. Gunderson" +Date: Tue, 25 Jan 2022 19:14:53 +0000 +Subject: [PATCH] Fix build break with system libdrm. + +This patch is submitted on behalf of Andres Salomon + (on Cc). Also adding him to src/AUTHORS +per policy, as he has signed the CLA. + +Original patch: +https://salsa.debian.org/dilinger/chromium/-/commit/2333c2fb985ac1ef3d7331776a7833d965c63302 + +Change-Id: I18bd60e2e80f2b9181e74ee7972c3f457ab33b10 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3401704 +Reviewed-by: Andres Calderon Jaramillo +Commit-Queue: Steinar H Gunderson +Auto-Submit: Steinar H Gunderson +Cr-Commit-Position: refs/heads/main@{#963119} +--- + AUTHORS | 1 + + media/gpu/chromeos/BUILD.gn | 1 + + media/gpu/chromeos/video_decoder_pipeline.cc | 2 +- + 3 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/AUTHORS b/AUTHORS +index 0eba3de5065..50edd3f6b38 100644 +--- a/AUTHORS ++++ b/AUTHORS +@@ -93,6 +93,7 @@ Andreas Papacharalampous + Andrei Borza + Andrei Parvu + Andrei Parvu ++Andres Salomon + Andreu Botella + Andrew Boyarshin + Andrew Brampton +diff --git a/media/gpu/chromeos/BUILD.gn b/media/gpu/chromeos/BUILD.gn +index 7cb4c3ea39a..6fe21c15ecc 100644 +--- a/media/gpu/chromeos/BUILD.gn ++++ b/media/gpu/chromeos/BUILD.gn +@@ -25,6 +25,7 @@ source_set("chromeos") { + + deps = [ + "//base", ++ "//build/config/linux/libdrm", + "//media", + "//media/gpu:buildflags", + "//media/gpu:command_buffer_helper", +diff --git a/media/gpu/chromeos/video_decoder_pipeline.cc b/media/gpu/chromeos/video_decoder_pipeline.cc +index d2f154ea0d8..416b9434a8d 100644 +--- a/media/gpu/chromeos/video_decoder_pipeline.cc ++++ b/media/gpu/chromeos/video_decoder_pipeline.cc +@@ -28,8 +28,8 @@ + #include "third_party/abseil-cpp/absl/types/optional.h" + + #if BUILDFLAG(USE_VAAPI) ++#include + #include "media/gpu/vaapi/vaapi_video_decoder.h" +-#include "third_party/libdrm/src/include/drm/drm_fourcc.h" + #elif BUILDFLAG(USE_V4L2_CODEC) + #include "media/gpu/v4l2/v4l2_video_decoder.h" + #else diff --git a/network/web/chromium-browser/files/patches/chromium-95-libyuv-arm.patch b/network/web/chromium-browser/files/patches/chromium-95-libyuv-arm.patch new file mode 100644 index 0000000000..25a8cdb878 --- /dev/null +++ b/network/web/chromium-browser/files/patches/chromium-95-libyuv-arm.patch @@ -0,0 +1,13 @@ +diff --git a/third_party/libyuv/source/row_neon.cc b/third_party/libyuv/source/row_neon.cc +index 6ef6f1c..e4a9e1e 100644 +--- a/third_party/libyuv/source/row_neon.cc ++++ b/third_party/libyuv/source/row_neon.cc +@@ -2346,7 +2346,7 @@ void ARGBToAB64Row_NEON(const uint8_t* src_argb, + uint16_t* dst_ab64, + int width) { + asm volatile( +- "vld1.8 q4, %3 \n" // shuffler ++ "vld1.8 {d8, d9}, %3 \n" // shuffler + "1: \n" + "vld1.8 {q0}, [%0]! \n" + "vld1.8 {q2}, [%0]! \n" 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 deleted file mode 100644 index ca1a0b6d72..0000000000 --- a/network/web/chromium-browser/files/patches/chromium-97-Point-constexpr.patch +++ /dev/null @@ -1,27 +0,0 @@ -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 deleted file mode 100644 index 91354e4330..0000000000 --- a/network/web/chromium-browser/files/patches/chromium-97-ScrollView-reference.patch +++ /dev/null @@ -1,23 +0,0 @@ -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-98-MiraclePtr-gcc-ice.patch b/network/web/chromium-browser/files/patches/chromium-98-MiraclePtr-gcc-ice.patch new file mode 100644 index 0000000000..c538befef2 --- /dev/null +++ b/network/web/chromium-browser/files/patches/chromium-98-MiraclePtr-gcc-ice.patch @@ -0,0 +1,91 @@ +Workaround GCC ICE with MiraclePtr, see https://gcc.gnu.org/PR103455 + +--- a/gpu/command_buffer/client/gl_helper.h ++++ b/gpu/command_buffer/client/gl_helper.h +@@ -34,7 +34,7 @@ class ScopedGLuint { + GenFunc gen_func, + DeleteFunc delete_func) + : gl_(gl), id_(0u), delete_func_(delete_func) { +- (gl_->*gen_func)(1, &id_); ++ (gl_.get()->*gen_func)(1, &id_); + } + + operator GLuint() const { return id_; } +@@ -46,7 +46,7 @@ class ScopedGLuint { + + ~ScopedGLuint() { + if (id_ != 0) { +- (gl_->*delete_func_)(1, &id_); ++ (gl_.get()->*delete_func_)(1, &id_); + } + } + +@@ -86,13 +86,13 @@ class ScopedBinder { + typedef void (gles2::GLES2Interface::*BindFunc)(GLenum target, GLuint id); + ScopedBinder(gles2::GLES2Interface* gl, GLuint id, BindFunc bind_func) + : gl_(gl), bind_func_(bind_func) { +- (gl_->*bind_func_)(Target, id); ++ (gl_.get()->*bind_func_)(Target, id); + } + + ScopedBinder(const ScopedBinder&) = delete; + ScopedBinder& operator=(const ScopedBinder&) = delete; + +- virtual ~ScopedBinder() { (gl_->*bind_func_)(Target, 0); } ++ virtual ~ScopedBinder() { (gl_.get()->*bind_func_)(Target, 0); } + + private: + raw_ptr gl_; +--- a/ui/accessibility/ax_node.h ++++ b/ui/accessibility/ax_node.h +@@ -822,10 +822,10 @@ AXNode::ChildIteratorBase*LastChild)()) ++ if (child_ == (parent_.get()->*LastChild)()) + child_ = nullptr; + else +- child_ = (child_->*NextSibling)(); ++ child_ = (child_.get()->*NextSibling)(); + } + + return *this; +@@ -850,12 +850,12 @@ AXNode::ChildIteratorBase*LastChild)(); ++ child_ = (parent_.get()->*LastChild)(); + // Decrement the iterator gives us the previous element, except when the + // iterator is at the beginning; in which case, decrementing the iterator + // remains at the beginning. +- else if (child_ != (parent_->*FirstChild)()) +- child_ = (child_->*PreviousSibling)(); ++ else if (child_ != (parent_.get()->*FirstChild)()) ++ child_ = (child_.get()->*PreviousSibling)(); + } + + return *this; +--- a/ui/views/layout/flex_layout_types.cc ++++ b/ui/views/layout/flex_layout_types.cc +@@ -59,7 +59,7 @@ class LazySize { + const gfx::Size& operator*() const { return *get(); } + const gfx::Size* get() const { + if (!size_) +- size_ = (view_->*size_func_)(); ++ size_ = (view_.get()->*size_func_)(); + return &size_.value(); + } + LazyDimension width() const { +--- a/chrome/browser/ui/views/passwords/auto_signin_first_run_dialog_view.cc ++++ b/chrome/browser/ui/views/passwords/auto_signin_first_run_dialog_view.cc +@@ -37,7 +37,7 @@ AutoSigninFirstRunDialogView::AutoSigninFirstRunDialogView( + auto call_controller = [](AutoSigninFirstRunDialogView* dialog, + ControllerCallbackFn func) { + if (dialog->controller_) { +- (dialog->controller_->*func)(); ++ (dialog->controller_.get()->*func)(); + } + }; + SetAcceptCallback( diff --git a/network/web/chromium-browser/files/patches/chromium-98-WaylandFrameManager-check.patch b/network/web/chromium-browser/files/patches/chromium-98-WaylandFrameManager-check.patch new file mode 100644 index 0000000000..dc8b06b394 --- /dev/null +++ b/network/web/chromium-browser/files/patches/chromium-98-WaylandFrameManager-check.patch @@ -0,0 +1,27 @@ +From 8e2458ffc6727943518a622753b074b42e713403 Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann +Date: Sat, 18 Dec 2021 08:38:57 +0000 +Subject: [PATCH] libstdc++: fix DCHECK_NE in ui::WaylandFrameManager + +There is no CheckOpValueStr() for std::unique_ptr. Use get() to +compare pointer values. +--- + ui/ozone/platform/wayland/host/wayland_frame_manager.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ui/ozone/platform/wayland/host/wayland_frame_manager.cc b/ui/ozone/platform/wayland/host/wayland_frame_manager.cc +index 569526c..58fae14 100644 +--- a/ui/ozone/platform/wayland/host/wayland_frame_manager.cc ++++ b/ui/ozone/platform/wayland/host/wayland_frame_manager.cc +@@ -379,7 +379,7 @@ void WaylandFrameManager::OnPresentation( + // Investigate the issue with surface sync. + frame->feedback = gfx::PresentationFeedback::Failure(); + } +- CHECK_NE(frame, submitted_frames_.back()); ++ CHECK_NE(frame.get(), submitted_frames_.back().get()); + } + MaybeProcessSubmittedFrames(); + } +-- +2.32.0 + diff --git a/network/web/chromium-browser/files/patches/chromium-97-compiler.patch b/network/web/chromium-browser/files/patches/chromium-98-compiler.patch similarity index 85% rename from network/web/chromium-browser/files/patches/chromium-97-compiler.patch rename to network/web/chromium-browser/files/patches/chromium-98-compiler.patch index 8e6b8dcdb4..2556ee1025 100644 --- a/network/web/chromium-browser/files/patches/chromium-97-compiler.patch +++ b/network/web/chromium-browser/files/patches/chromium-98-compiler.patch @@ -1,30 +1,31 @@ From 307a0f63dd9b118f4b8470ed3d7567e81fdb7a6d Mon Sep 17 00:00:00 2001 From: Mike Gilbert -Date: Tue, 2 Nov 2021 11:27:25 +0000 +Date: Fri, 3 Dec 2021 09:50:31 +0000 Subject: [PATCH] Disable various compiler configs --- - build/config/compiler/BUILD.gn | 98 ++++++---------------------------- - 1 file changed, 17 insertions(+), 81 deletions(-) + build/config/compiler/BUILD.gn | 105 ++++++--------------------------- + 1 file changed, 17 insertions(+), 88 deletions(-) diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn -index 2656f80..221e6db 100644 +index 5365544..e6d9b56 100644 --- a/build/config/compiler/BUILD.gn +++ b/build/config/compiler/BUILD.gn -@@ -296,8 +296,6 @@ config("compiler") { +@@ -291,9 +291,7 @@ config("compiler") { configs += [ # See the definitions below. - ":clang_revision", + ":rustc_revision", - ":compiler_cpu_abi", ":compiler_codegen", ":compiler_deterministic", ] -@@ -538,24 +536,6 @@ config("compiler") { +@@ -534,31 +532,6 @@ config("compiler") { ldflags += [ "-Wl,-z,keep-text-section-prefix" ] } -- if (is_clang && !is_nacl && !use_xcode_clang && current_os != "zos") { +- if (is_clang && !is_nacl && current_os != "zos") { - cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ] - - # TODO(hans): Remove this once Clang generates better optimized debug info @@ -40,12 +41,19 @@ index 2656f80..221e6db 100644 - ldflags += [ "-Wl,-mllvm,-instcombine-lower-dbg-declare=0" ] - } - } +- +- # TODO(crbug.com/1235145): Investigate why/if this should be needed. +- if (is_win) { +- cflags += [ "/clang:-ffp-contract=off" ] +- } else { +- cflags += [ "-ffp-contract=off" ] +- } - } - # C11/C++11 compiler flags setup. # --------------------------- if (is_linux || is_chromeos || is_android || (is_nacl && is_clang) || -@@ -1246,45 +1226,6 @@ config("compiler_deterministic") { +@@ -1231,45 +1204,6 @@ config("compiler_deterministic") { } } @@ -91,7 +99,7 @@ index 2656f80..221e6db 100644 # 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") { +@@ -1556,7 +1490,7 @@ config("chromium_code") { defines = [ "_HAS_NODISCARD" ] } } else { @@ -100,7 +108,7 @@ index 2656f80..221e6db 100644 if (treat_warnings_as_errors) { cflags += [ "-Werror" ] -@@ -1571,10 +1512,6 @@ config("chromium_code") { +@@ -1565,10 +1499,6 @@ config("chromium_code") { # well. ldflags = [ "-Werror" ] } @@ -111,7 +119,7 @@ index 2656f80..221e6db 100644 # 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") { +@@ -1577,15 +1507,6 @@ config("chromium_code") { "__STDC_FORMAT_MACROS", ] @@ -127,7 +135,7 @@ index 2656f80..221e6db 100644 if (is_mac) { cflags_objc = [ "-Wobjc-missing-property-synthesis" ] cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] -@@ -1959,7 +1887,8 @@ config("default_stack_frames") { +@@ -1988,7 +1909,8 @@ config("default_stack_frames") { } # Default "optimization on" config. @@ -137,7 +145,7 @@ index 2656f80..221e6db 100644 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") { +@@ -2026,7 +1948,8 @@ config("optimize") { } # Turn off optimizations. @@ -147,7 +155,7 @@ index 2656f80..221e6db 100644 if (is_win) { cflags = [ "/Od", # Disable optimization. -@@ -2039,7 +1969,8 @@ config("no_optimize") { +@@ -2066,7 +1989,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. @@ -157,7 +165,7 @@ index 2656f80..221e6db 100644 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") { +@@ -2099,7 +2023,8 @@ config("optimize_max") { # # TODO(crbug.com/621335) - rework how all of these configs are related # so that we don't need this disclaimer. @@ -167,7 +175,7 @@ index 2656f80..221e6db 100644 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") { +@@ -2125,7 +2050,8 @@ config("optimize_speed") { } } @@ -177,7 +185,7 @@ index 2656f80..221e6db 100644 cflags = [ "-O1" ] + common_optimize_on_cflags rustflags = [ "-Copt-level=1" ] ldflags = common_optimize_on_ldflags -@@ -2218,7 +2151,8 @@ config("win_pdbaltpath") { +@@ -2245,7 +2171,8 @@ config("win_pdbaltpath") { } # Full symbols. @@ -187,7 +195,7 @@ index 2656f80..221e6db 100644 if (is_win) { if (is_clang) { cflags = [ "/Z7" ] # Debug information in the .obj files. -@@ -2337,7 +2271,8 @@ config("symbols") { +@@ -2369,7 +2296,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. @@ -197,7 +205,7 @@ index 2656f80..221e6db 100644 if (is_win) { # Functions, files, and line tables only. cflags = [] -@@ -2407,7 +2342,8 @@ config("minimal_symbols") { +@@ -2438,7 +2366,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. diff --git a/network/web/chromium-browser/files/sql-make-VirtualCursor-standard-layout-type.patch b/network/web/chromium-browser/files/sql-make-VirtualCursor-standard-layout-type.patch index c1c68f1164..3364d41ee0 100644 --- a/network/web/chromium-browser/files/sql-make-VirtualCursor-standard-layout-type.patch +++ b/network/web/chromium-browser/files/sql-make-VirtualCursor-standard-layout-type.patch @@ -1,30 +1,29 @@ -From 80368f8ba7a8bab13440463a254888311efe3986 Mon Sep 17 00:00:00 2001 +From 144479ad7b4287bee4067f95e4218f614798a865 Mon Sep 17 00:00:00 2001 From: Stephan Hartmann -Date: Tue, 4 May 2021 15:00:19 +0000 +Date: Sun, 16 Jan 2022 19:15:26 +0000 Subject: [PATCH] sql: make VirtualCursor standard layout type sql::recover::VirtualCursor needs to be a standard layout type, but has members of type std::unique_ptr. However, std::unique_ptr is not guaranteed to be standard layout. Compiling with clang combined with -gcc-11 libstdc++ fails because of this. Replace std::unique_ptr with -raw pointers. +gcc-11 libstdc++ fails because of this. Bug: 1189788 Change-Id: Ia6dc388cc5ef1c0f2afc75f8ca45b9f12687ca9c --- - sql/recover_module/btree.cc | 21 +++++++++++++++------ - sql/recover_module/btree.h | 17 +++++++++++++---- + sql/recover_module/btree.cc | 18 ++++++++++++------ + sql/recover_module/btree.h | 21 +++++++++++++++------ sql/recover_module/cursor.cc | 24 ++++++++++++------------ sql/recover_module/cursor.h | 2 +- - sql/recover_module/pager.cc | 7 +++---- - sql/recover_module/pager.h | 5 +++-- - 6 files changed, 47 insertions(+), 29 deletions(-) + sql/recover_module/pager.cc | 5 ++--- + sql/recover_module/pager.h | 6 +++--- + 6 files changed, 45 insertions(+), 31 deletions(-) diff --git a/sql/recover_module/btree.cc b/sql/recover_module/btree.cc -index 9ecaafe8a3..839318abf9 100644 +index cc9420e5c05..f12d8fa32a2 100644 --- a/sql/recover_module/btree.cc +++ b/sql/recover_module/btree.cc -@@ -135,16 +135,25 @@ static_assert(std::is_trivially_destructible::value, +@@ -136,16 +136,22 @@ static_assert(std::is_trivially_destructible::value, "Move the destructor to the .cc file if it's non-trival"); #endif // !DCHECK_IS_ON() @@ -34,46 +33,47 @@ index 9ecaafe8a3..839318abf9 100644 - cell_count_(ComputeCellCount(db_reader)), - next_read_index_(0), - last_record_size_(0) { ++LeafPageDecoder::LeafPageDecoder() noexcept = default; ++ +void LeafPageDecoder::Initialize(DatabasePageReader* db_reader) { -+ DCHECK(db_reader); - DCHECK(IsOnValidPage(db_reader)); + page_id_ = db_reader->page_id(); + db_reader_ = db_reader; + cell_count_ = ComputeCellCount(db_reader); + next_read_index_ = 0; + last_record_size_ = 0; + DCHECK(IsOnValidPage(db_reader)); DCHECK(DatabasePageReader::IsValidPageId(page_id_)); } +void LeafPageDecoder::Reset() { + db_reader_ = nullptr; -+ page_id_ = 0; -+ cell_count_ = 0; -+ next_read_index_ = 0; -+ last_record_size_ = 0; +} + bool LeafPageDecoder::TryAdvance() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(CanAdvance()); diff --git a/sql/recover_module/btree.h b/sql/recover_module/btree.h -index d76d076bf6..33114b01fa 100644 +index eaa087a5c52..df0e0c937c0 100644 --- a/sql/recover_module/btree.h +++ b/sql/recover_module/btree.h -@@ -102,7 +102,7 @@ class LeafPageDecoder { +@@ -101,9 +101,7 @@ class LeafPageDecoder { + public: + // Creates a decoder for a DatabasePageReader's last read page. // - // |db_reader| must have been used to read an inner page of a table B-tree. - // |db_reader| must outlive this instance. +- // |db_reader| must have been used to read an inner page of a table B-tree. +- // |db_reader| must outlive this instance. - explicit LeafPageDecoder(DatabasePageReader* db_reader) noexcept; -+ explicit LeafPageDecoder() noexcept = default; ++ LeafPageDecoder() noexcept; ~LeafPageDecoder() noexcept = default; LeafPageDecoder(const LeafPageDecoder&) = delete; -@@ -150,6 +150,15 @@ class LeafPageDecoder { +@@ -151,6 +149,17 @@ class LeafPageDecoder { // read as long as CanAdvance() returns true. bool TryAdvance(); + // Initialize with DatabasePageReader ++ // |db_reader| must have been used to read an inner page of a table B-tree. ++ // |db_reader| must outlive this instance. + void Initialize(DatabasePageReader* db_reader); + + // Reset internal DatabasePageReader @@ -85,7 +85,7 @@ index d76d076bf6..33114b01fa 100644 // True if the given reader may point to an inner page in a table B-tree. // // The last ReadPage() call on |db_reader| must have succeeded. -@@ -163,14 +172,14 @@ class LeafPageDecoder { +@@ -164,14 +173,14 @@ class LeafPageDecoder { static int ComputeCellCount(DatabasePageReader* db_reader); // The number of the B-tree page this reader is reading. @@ -104,10 +104,10 @@ index d76d076bf6..33114b01fa 100644 // The reader's cursor state. // diff --git a/sql/recover_module/cursor.cc b/sql/recover_module/cursor.cc -index 0029ff9295..42548bc4b5 100644 +index 4f827edf1b4..240de4999fe 100644 --- a/sql/recover_module/cursor.cc +++ b/sql/recover_module/cursor.cc -@@ -26,7 +26,7 @@ VirtualCursor::~VirtualCursor() { +@@ -28,7 +28,7 @@ VirtualCursor::~VirtualCursor() { int VirtualCursor::First() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); inner_decoders_.clear(); @@ -116,7 +116,7 @@ index 0029ff9295..42548bc4b5 100644 AppendPageDecoder(table_->root_page_id()); return Next(); -@@ -36,18 +36,18 @@ int VirtualCursor::Next() { +@@ -38,18 +38,18 @@ int VirtualCursor::Next() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); record_reader_.Reset(); @@ -142,7 +142,7 @@ index 0029ff9295..42548bc4b5 100644 continue; } if (!record_reader_.Initialize()) -@@ -99,13 +99,13 @@ int VirtualCursor::ReadColumn(int column_index, +@@ -101,13 +101,13 @@ int VirtualCursor::ReadColumn(int column_index, int64_t VirtualCursor::RowId() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(record_reader_.IsInitialized()); @@ -159,7 +159,7 @@ index 0029ff9295..42548bc4b5 100644 << __func__ << " must only be called when the current path has no leaf decoder"; -@@ -113,7 +113,7 @@ void VirtualCursor::AppendPageDecoder(int page_id) { +@@ -115,7 +115,7 @@ void VirtualCursor::AppendPageDecoder(int page_id) { return; if (LeafPageDecoder::IsOnValidPage(&db_reader_)) { @@ -169,10 +169,10 @@ index 0029ff9295..42548bc4b5 100644 } diff --git a/sql/recover_module/cursor.h b/sql/recover_module/cursor.h -index afcd6900e1..b15c31d425 100644 +index 845b7852648..cc4e85f83f9 100644 --- a/sql/recover_module/cursor.h +++ b/sql/recover_module/cursor.h -@@ -129,7 +129,7 @@ class VirtualCursor { +@@ -130,7 +130,7 @@ class VirtualCursor { std::vector> inner_decoders_; // Decodes the leaf page containing records. @@ -182,7 +182,7 @@ index afcd6900e1..b15c31d425 100644 SEQUENCE_CHECKER(sequence_checker_); }; diff --git a/sql/recover_module/pager.cc b/sql/recover_module/pager.cc -index 58e75de270..5fe96204e5 100644 +index 58e75de2704..69d98cef98d 100644 --- a/sql/recover_module/pager.cc +++ b/sql/recover_module/pager.cc @@ -23,8 +23,7 @@ static_assert(DatabasePageReader::kMaxPageId <= std::numeric_limits::max(), @@ -191,34 +191,34 @@ index 58e75de270..5fe96204e5 100644 DatabasePageReader::DatabasePageReader(VirtualTable* table) - : page_data_(std::make_unique(table->page_size())), - table_(table) { -+ : page_data_(), table_(table) { ++ : page_data_(table->page_size()), table_(table) { DCHECK(table != nullptr); DCHECK(IsValidPageSize(table->page_size())); } -@@ -57,8 +56,8 @@ int DatabasePageReader::ReadPage(int page_id) { - std::numeric_limits::max(), +@@ -58,7 +57,7 @@ int DatabasePageReader::ReadPage(int page_id) { "The |read_offset| computation above may overflow"); -- int sqlite_status = + int sqlite_status = - RawRead(sqlite_file, read_size, read_offset, page_data_.get()); -+ int sqlite_status = RawRead(sqlite_file, read_size, read_offset, -+ const_cast(page_data_.data())); ++ RawRead(sqlite_file, read_size, read_offset, page_data_.data()); // |page_id_| needs to be set to kInvalidPageId if the read failed. // Otherwise, future ReadPage() calls with the previous |page_id_| value diff --git a/sql/recover_module/pager.h b/sql/recover_module/pager.h -index 0e388ddc3b..99314e30ff 100644 +index 07cac3cb989..d08f0932fab 100644 --- a/sql/recover_module/pager.h +++ b/sql/recover_module/pager.h -@@ -5,6 +5,7 @@ - #ifndef SQL_RECOVER_MODULE_PAGER_H_ +@@ -6,8 +6,8 @@ #define SQL_RECOVER_MODULE_PAGER_H_ -+#include #include - #include +-#include + #include ++#include -@@ -70,7 +71,7 @@ class DatabasePageReader { + #include "base/check_op.h" + #include "base/memory/raw_ptr.h" +@@ -72,7 +72,7 @@ class DatabasePageReader { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_NE(page_id_, kInvalidPageId) << "Successful ReadPage() required before accessing pager state"; @@ -227,12 +227,12 @@ index 0e388ddc3b..99314e30ff 100644 } // The number of bytes in the page read by the last ReadPage() call. -@@ -137,7 +138,7 @@ class DatabasePageReader { +@@ -139,7 +139,7 @@ class DatabasePageReader { int page_id_ = kInvalidPageId; // Stores the bytes of the last page successfully read by ReadPage(). // The content is undefined if the last call to ReadPage() did not succeed. - const std::unique_ptr page_data_; -+ const std::array page_data_; ++ std::vector page_data_; // Raw pointer usage is acceptable because this instance's owner is expected // to ensure that the VirtualTable outlives this. - VirtualTable* const table_; + const raw_ptr table_; diff --git a/network/web/chromium-browser/files/use-FT_Done_MM_Var-in-CFX_Font-AdjustMMParams.patch b/network/web/chromium-browser/files/use-FT_Done_MM_Var-in-CFX_Font-AdjustMMParams.patch new file mode 100644 index 0000000000..5b9c0e353f --- /dev/null +++ b/network/web/chromium-browser/files/use-FT_Done_MM_Var-in-CFX_Font-AdjustMMParams.patch @@ -0,0 +1,72 @@ +From cb0aad687f34629a42053d600cf2947282cea2c0 Mon Sep 17 00:00:00 2001 +From: Lei Zhang +Date: Mon, 31 Jan 2022 22:42:35 +0000 +Subject: [PATCH] Use FT_Done_MM_Var() in CFX_Font::AdjustMMParams() when + possible. + +When FreeType has FT_Done_MM_Var(), use that to free memory in +CFX_Font::AdjustMMParams() to avoid mismatched alloc/free functions. + +Bug: pdfium:1400 +Change-Id: I044540893103921fc64cdd53fcd628cfebf2c9db +Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/90130 +Reviewed-by: Nigi +Commit-Queue: Lei Zhang + +(cherry picked from commit ffeb67faf715475f6e463d65c368f556780adf19) +--- + core/fxge/cfx_font.cpp | 28 ++++++++++++++++++++++++++-- + 1 file changed, 26 insertions(+), 2 deletions(-) + +diff --git a/core/fxge/cfx_font.cpp b/core/fxge/cfx_font.cpp +index 7a4e8eb24..0ef421fe7 100644 +--- a/core/fxge/cfx_font.cpp ++++ b/core/fxge/cfx_font.cpp +@@ -43,6 +43,30 @@ struct OUTLINE_PARAMS { + float m_CoordUnit; + }; + ++// TODO(crbug.com/pdfium/1400): When FT_Done_MM_Var() is more likely to be ++// available to all users in the future, remove FreeMMVar() and use ++// FT_Done_MM_Var() directly. ++// ++// Use weak symbols to check if FT_Done_MM_Var() is available at runtime. ++#if !defined(OS_WIN) ++extern "C" __attribute__((weak)) decltype(FT_Done_MM_Var) FT_Done_MM_Var; ++#endif ++ ++void FreeMMVar(FXFT_FaceRec* rec, FXFT_MM_VarPtr variation_desc) { ++#if defined(OS_WIN) ++ // Assume `use_system_freetype` GN var is never set on Windows. ++ constexpr bool has_ft_done_mm_var_func = true; ++#else ++ static const bool has_ft_done_mm_var_func = !!FT_Done_MM_Var; ++#endif ++ if (has_ft_done_mm_var_func) { ++ FT_Done_MM_Var(CFX_GEModule::Get()->GetFontMgr()->GetFTLibrary(), ++ variation_desc); ++ } else { ++ FXFT_Free(rec, variation_desc); ++ } ++} ++ + #ifdef PDF_ENABLE_XFA + unsigned long FTStreamRead(FXFT_StreamRec* stream, + unsigned long offset, +@@ -640,14 +664,14 @@ void CFX_Font::AdjustMMParams(int glyph_index, + int max_width = FXFT_Get_Glyph_HoriAdvance(m_Face->GetRec()) * 1000 / + FXFT_Get_Face_UnitsPerEM(m_Face->GetRec()); + if (max_width == min_width) { +- FXFT_Free(m_Face->GetRec(), pMasters); ++ FreeMMVar(m_Face->GetRec(), pMasters); + return; + } + int param = min_param + (max_param - min_param) * (dest_width - min_width) / + (max_width - min_width); + coords[1] = param; + } +- FXFT_Free(m_Face->GetRec(), pMasters); ++ FreeMMVar(m_Face->GetRec(), pMasters); + FT_Set_MM_Design_Coordinates(m_Face->GetRec(), 2, coords); + } + diff --git a/network/web/chromium-browser/pspec.xml b/network/web/chromium-browser/pspec.xml index c940d79943..47928193f8 100644 --- a/network/web/chromium-browser/pspec.xml +++ b/network/web/chromium-browser/pspec.xml @@ -13,7 +13,7 @@ app:gui A WebKit powered web browser Chromium-browser is an open-source web browser, powered by WebKit. - http://gsdview.appspot.com/chromium-browser-official/chromium-97.0.4692.77.tar.xz + http://gsdview.appspot.com/chromium-browser-official/chromium-98.0.4758.91.tar.xz alsa-lib-devel at-spi2-atk-devel @@ -103,9 +103,9 @@ - unexpire-accelerated-video-decode-flag.patch - fix-tag-dragging-in-KWin.patch - fix-tag-dragging-in-Mutter.patch + downgrade-duplicate-peer-error-to-dvlog.patch + fix-build-break-with-system-libdrm.patch + use-FT_Done_MM_Var-in-CFX_Font-AdjustMMParams.patch sql-make-VirtualCursor-standard-layout-type.patch use-oauth2-client-switches-as-default.patch @@ -116,9 +116,9 @@ patches/chromium-78-protobuf-RepeatedPtrField-export.patch - patches/chromium-97-Point-constexpr.patch - patches/chromium-97-ScrollView-reference.patch - patches/chromium-97-compiler.patch + patches/chromium-98-compiler.patch + patches/chromium-98-MiraclePtr-gcc-ice.patch + patches/chromium-98-WaylandFrameManager-check.patch @@ -200,6 +200,13 @@ + + 2022-02-14 + 98.0.4758.91 + Version Bump + İdris Kalp + idriskalp@gmail.com + 2022-01-11 97.0.4692.77