From 1d3cc4fbf7abc276f7c11202e124116e94a8de8f Mon Sep 17 00:00:00 2001
From: Ting-Wei Lan <lantw44@gmail.com>
Date: Sun, 9 Feb 2020 15:59:49 +0800
Subject: chromium: Chromium 79.0.3945.130 -> 80.0.3987.87

---
 chromium/chromium/chromium-ffmpeg-clean.sh         |   3 +
 .../chromium-fix-use_system_harfbuzz-ng.patch      |  44 ----
 chromium/chromium/chromium-gcc9-blink.patch        |  45 ++++
 chromium/chromium/chromium-gcc9-permissive.patch   |  33 +++
 chromium/chromium/chromium-gcc9-r707329.patch      |  86 --------
 chromium/chromium/chromium-gcc9-r709411.patch      |  39 ----
 chromium/chromium/chromium-gcc9-r709469.patch      |  99 ---------
 chromium/chromium/chromium-gcc9-r709472.patch      |  52 -----
 chromium/chromium/chromium-gcc9-r709569.patch      |  47 ----
 chromium/chromium/chromium-gcc9-r723499.patch      |  38 ++++
 chromium/chromium/chromium-gcc9-r725070.patch      | 240 +++++++++++++++++++++
 chromium/chromium/chromium-gcc9-r732437.patch      |  37 ++++
 chromium/chromium/chromium-quiche-gcc9.patch       |  38 ++++
 chromium/chromium/chromium-unbundle-libxml.patch   | 130 +++++++++++
 chromium/chromium/chromium.spec                    |  32 +--
 15 files changed, 581 insertions(+), 382 deletions(-)
 delete mode 100644 chromium/chromium/chromium-fix-use_system_harfbuzz-ng.patch
 create mode 100644 chromium/chromium/chromium-gcc9-blink.patch
 create mode 100644 chromium/chromium/chromium-gcc9-permissive.patch
 delete mode 100644 chromium/chromium/chromium-gcc9-r707329.patch
 delete mode 100644 chromium/chromium/chromium-gcc9-r709411.patch
 delete mode 100644 chromium/chromium/chromium-gcc9-r709469.patch
 delete mode 100644 chromium/chromium/chromium-gcc9-r709472.patch
 delete mode 100644 chromium/chromium/chromium-gcc9-r709569.patch
 create mode 100644 chromium/chromium/chromium-gcc9-r723499.patch
 create mode 100644 chromium/chromium/chromium-gcc9-r725070.patch
 create mode 100644 chromium/chromium/chromium-gcc9-r732437.patch
 create mode 100644 chromium/chromium/chromium-quiche-gcc9.patch
 create mode 100644 chromium/chromium/chromium-unbundle-libxml.patch

(limited to 'chromium')

diff --git a/chromium/chromium/chromium-ffmpeg-clean.sh b/chromium/chromium/chromium-ffmpeg-clean.sh
index f197328..3f85ee4 100755
--- a/chromium/chromium/chromium-ffmpeg-clean.sh
+++ b/chromium/chromium/chromium-ffmpeg-clean.sh
@@ -111,6 +111,7 @@ header_files="	libavcodec/x86/inline_asm.h \
 		libavcodec/mdct15.c \
 		libavcodec/mdct15.h \
 		libavcodec/me_cmp.h \
+		libavcodec/mlp_parse.h \
 		libavcodec/motion_est.h \
 		libavcodec/mpeg12.h \
 		libavcodec/mpeg12data.h \
@@ -210,6 +211,7 @@ header_files="	libavcodec/x86/inline_asm.h \
 		libavutil/thread.h \
 		libavutil/timer.h \
 		libavutil/timestamp.h \
+		libavutil/tx_priv.h \
 		libavutil/version.h \
 		libswresample/swresample.h \
 		libswresample/version.h \
@@ -260,6 +262,7 @@ manual_files="	libavcodec/aarch64/fft_neon.S \
 		libavutil/fixed_dsp.c \
 		libavutil/float_dsp.c \
 		libavutil/imgutils.c \
+		libavutil/tx_template.c \
 		libavutil/x86/cpu.c \
 		libavutil/x86/float_dsp_init.c \
 		libavutil/x86/x86inc.asm \
diff --git a/chromium/chromium/chromium-fix-use_system_harfbuzz-ng.patch b/chromium/chromium/chromium-fix-use_system_harfbuzz-ng.patch
deleted file mode 100644
index 383aa0a..0000000
--- a/chromium/chromium/chromium-fix-use_system_harfbuzz-ng.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From ea7a9bad96f921da314ab8d171b1e22ad19d49a7 Mon Sep 17 00:00:00 2001
-From: ckitagawa <ckitagawa@chromium.org>
-Date: Tue, 22 Oct 2019 14:31:41 +0000
-Subject: [PATCH] [Build] fix use_system_harfbuzz-ng
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Use <> for harfbuzz includes to support the option to build with system
-harfbuzz rather than the version in third_party.
-
-Bug: 1016158
-Change-Id: I8a85e928c010ca65e04b5ebc4909a051b4312672
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1873236
-Commit-Queue: Calder Kitagawa <ckitagawa@chromium.org>
-Commit-Queue: Dominik Röttsches <drott@chromium.org>
-Reviewed-by: Dominik Röttsches <drott@chromium.org>
-Cr-Commit-Position: refs/heads/master@{#708176}
----
- components/paint_preview/common/subset_font.cc | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/components/paint_preview/common/subset_font.cc b/components/paint_preview/common/subset_font.cc
-index a218d6373350..287f5600ce9b 100644
---- a/components/paint_preview/common/subset_font.cc
-+++ b/components/paint_preview/common/subset_font.cc
-@@ -7,11 +7,12 @@
- #include <memory>
- #include <utility>
- 
-+#include <hb-subset.h>
-+#include <hb.h>
-+
- #include "base/bind.h"
- #include "base/callback.h"
- #include "base/macros.h"
--#include "third_party/harfbuzz-ng/src/src/hb-subset.h"
--#include "third_party/harfbuzz-ng/src/src/hb.h"
- #include "third_party/skia/include/core/SkStream.h"
- #include "third_party/skia/include/core/SkTypeface.h"
- 
--- 
-2.23.0
-
diff --git a/chromium/chromium/chromium-gcc9-blink.patch b/chromium/chromium/chromium-gcc9-blink.patch
new file mode 100644
index 0000000..2118b46
--- /dev/null
+++ b/chromium/chromium/chromium-gcc9-blink.patch
@@ -0,0 +1,45 @@
+../../third_party/blink/renderer/core/editing/commands/delete_selection_command.cc: In member function 'void blink::DeleteSelectionCommand::InitializePositionData(blink::EditingState*)':
+../../third_party/blink/renderer/core/editing/commands/delete_selection_command.cc:256:59: error: no matching function for call to 'EnclosingNodeOfType(blink::Position&, <unresolved overloaded function type>)'
+  256 |       EnclosingNodeOfType(start, &IsA<HTMLTableRowElement>));
+      |                                                           ^
+In file included from ../../third_party/blink/renderer/core/editing/commands/delete_selection_command.cc:34:
+../../third_party/blink/renderer/core/editing/editing_utilities.h:112:19: note: candidate: 'blink::Node* blink::EnclosingNodeOfType(const Position&, bool (*)(const blink::Node*), blink::EditingBoundaryCrossingRule)'
+  112 | CORE_EXPORT Node* EnclosingNodeOfType(
+      |                   ^~~~~~~~~~~~~~~~~~~
+../../third_party/blink/renderer/core/editing/editing_utilities.h:114:12: note:   no known conversion for argument 2 from '<unresolved overloaded function type>' to 'bool (*)(const blink::Node*)'
+  114 |     bool (*node_is_of_type)(const Node*),
+      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+../../third_party/blink/renderer/core/editing/editing_utilities.h:116:19: note: candidate: 'blink::Node* blink::EnclosingNodeOfType(const PositionInFlatTree&, bool (*)(const blink::Node*), blink::EditingBoundaryCrossingRule)'
+  116 | CORE_EXPORT Node* EnclosingNodeOfType(
+      |                   ^~~~~~~~~~~~~~~~~~~
+../../third_party/blink/renderer/core/editing/editing_utilities.h:117:5: note:   no known conversion for argument 1 from 'blink::Position' {aka 'blink::PositionTemplate<blink::EditingAlgorithm<blink::NodeTraversal> >'} to 'const PositionInFlatTree&' {aka 'const blink::PositionTemplate<blink::EditingAlgorithm<blink::FlatTreeTraversal> >&'}
+  117 |     const PositionInFlatTree&,
+      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
+
+diff --git a/third_party/blink/renderer/core/editing/commands/delete_selection_command.cc b/third_party/blink/renderer/core/editing/commands/delete_selection_command.cc
+index 6ff6906..dd531ae 100644
+--- a/third_party/blink/renderer/core/editing/commands/delete_selection_command.cc
++++ b/third_party/blink/renderer/core/editing/commands/delete_selection_command.cc
+@@ -224,6 +224,10 @@ static Position TrailingWhitespacePosition(const Position& position,
+   return Position();
+ }
+ 
++static bool IsAHTMLTableRowElement(const Node* node) {
++  return IsA<HTMLTableRowElement>(node);
++}
++
+ void DeleteSelectionCommand::InitializePositionData(
+     EditingState* editing_state) {
+   DCHECK(!GetDocument().NeedsLayoutTreeUpdate());
+@@ -253,9 +257,9 @@ void DeleteSelectionCommand::InitializePositionData(
+   end_root_ = RootEditableElementOf(end);
+ 
+   start_table_row_ = To<HTMLTableRowElement>(
+-      EnclosingNodeOfType(start, &IsA<HTMLTableRowElement>));
++      EnclosingNodeOfType(start, &IsAHTMLTableRowElement));
+   end_table_row_ = To<HTMLTableRowElement>(
+-      EnclosingNodeOfType(end, &IsA<HTMLTableRowElement>));
++      EnclosingNodeOfType(end, &IsAHTMLTableRowElement));
+ 
+   // Don't move content out of a table cell.
+   // If the cell is non-editable, enclosingNodeOfType won't return it by
diff --git a/chromium/chromium/chromium-gcc9-permissive.patch b/chromium/chromium/chromium-gcc9-permissive.patch
new file mode 100644
index 0000000..c7aef49
--- /dev/null
+++ b/chromium/chromium/chromium-gcc9-permissive.patch
@@ -0,0 +1,33 @@
+In file included from ../../media/base/media_log_properties.h:13,
+                 from ../../media/base/media_log.h:23,
+                 from ../../media/filters/frame_processor.h:15,
+                 from ../../media/filters/frame_processor.cc:5:
+../../media/base/media_log_properties_helper.h:86:8: error: extra qualification not allowed [-fpermissive]
+   86 | struct internal::MediaLogPropertyTypeConverter<media::AudioDecoderConfig> {
+      |        ^~~~~~~~
+../../media/base/media_log_properties_helper.h:86:75: error: explicit specialization of non-template 'media::internal::<unnamed struct>'
+   86 | struct internal::MediaLogPropertyTypeConverter<media::AudioDecoderConfig> {
+      |                                                                           ^
+
+diff --git a/media/base/media_log_properties_helper.h b/media/base/media_log_properties_helper.h
+index 95ff70a..549b003 100644
+--- a/media/base/media_log_properties_helper.h
++++ b/media/base/media_log_properties_helper.h
+@@ -83,7 +83,7 @@ struct MediaLogPropertyTypeConverter<std::vector<T>> {
+ 
+ // Specializer for sending AudioDecoderConfigs to the media tab in devtools.
+ template <>
+-struct internal::MediaLogPropertyTypeConverter<media::AudioDecoderConfig> {
++struct MediaLogPropertyTypeConverter<media::AudioDecoderConfig> {
+   static base::Value Convert(const AudioDecoderConfig& value) {
+     base::Value result(base::Value::Type::DICTIONARY);
+     result.SetStringKey("codec", GetCodecName(value.codec()));
+@@ -114,7 +114,7 @@ struct internal::MediaLogPropertyTypeConverter<media::AudioDecoderConfig> {
+ 
+ // Specializer for sending VideoDecoderConfigs to the media tab in devtools.
+ template <>
+-struct internal::MediaLogPropertyTypeConverter<VideoDecoderConfig> {
++struct MediaLogPropertyTypeConverter<VideoDecoderConfig> {
+   static base::Value Convert(const VideoDecoderConfig& value) {
+     base::Value result(base::Value::Type::DICTIONARY);
+     result.SetStringKey("codec", GetCodecName(value.codec()));
diff --git a/chromium/chromium/chromium-gcc9-r707329.patch b/chromium/chromium/chromium-gcc9-r707329.patch
deleted file mode 100644
index 4e5f4c5..0000000
--- a/chromium/chromium/chromium-gcc9-r707329.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From 528e9a3e1f25bd264549c4c7779748abfd16bb1c Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Jan=20Wilken=20D=C3=B6rrie?= <jdoerrie@chromium.org>
-Date: Fri, 18 Oct 2019 11:45:24 +0000
-Subject: [PATCH] Reland "GCC: Fix base::internal::InvokeFuncImpl"
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-This is a reland of 9293d5c86eec1c34fc00716645400b44a14e764e
-
-Original change's description:
-> GCC: Fix base::internal::InvokeFuncImpl
->
-> GCC doesn't like that the Value data member has no out-of-line
-> definition. The problem is triggered specifically only when compiling
->
->   components/services/leveldb/leveldb_database_impl.cc
->
-> which has lambda functions returning locally-defined classes.
->
-> The current code works as-is in C++17 mode which introduces the concept
-> of inline variables, but in C++14 we need either an explicit out-of-line
-> definition or a function member instead of a data member.
->
-> Use std::integral_constant for defining the value.
->
-> Bug: 819294
-> Change-Id: I5c68e14ce3fa9d8b4d8a2cb42d7f9b53938aabf3
-> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1862451
-> Reviewed-by: Jan Wilken Dörrie <jdoerrie@chromium.org>
-> Reviewed-by: Daniel Cheng <dcheng@chromium.org>
-> Commit-Queue: Jüri Valdmann <juri.valdmann@qt.io>
-> Cr-Commit-Position: refs/heads/master@{#706384}
-
-Bug: 819294
-Change-Id: I3d5a52ddc6815516e2239f9347c60de06bf765a2
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1865212
-Reviewed-by: Daniel Cheng <dcheng@chromium.org>
-Commit-Queue: Jan Wilken Dörrie <jdoerrie@chromium.org>
-Cr-Commit-Position: refs/heads/master@{#707329}
----
- base/bind.h | 18 ++++++++----------
- 1 file changed, 8 insertions(+), 10 deletions(-)
-
-diff --git a/base/bind.h b/base/bind.h
-index 7a400af63fa5..1070ce6d5a8b 100644
---- a/base/bind.h
-+++ b/base/bind.h
-@@ -187,18 +187,15 @@ using MakeUnwrappedTypeList =
- // well-formed. Using `Invoker::Run` with a OnceCallback triggers a
- // static_assert, which is why the ternary expression does not compile.
- // TODO(crbug.com/752720): Remove this indirection once we have `if constexpr`.
--template <bool is_once, typename Invoker>
--struct InvokeFuncImpl;
--
- template <typename Invoker>
--struct InvokeFuncImpl<true, Invoker> {
--  static constexpr auto Value = &Invoker::RunOnce;
--};
-+constexpr auto GetInvokeFunc(std::true_type) {
-+  return Invoker::RunOnce;
-+}
- 
- template <typename Invoker>
--struct InvokeFuncImpl<false, Invoker> {
--  static constexpr auto Value = &Invoker::Run;
--};
-+constexpr auto GetInvokeFunc(std::false_type) {
-+  return Invoker::Run;
-+}
- 
- template <template <typename> class CallbackT,
-           typename Functor,
-@@ -229,7 +226,8 @@ decltype(auto) BindImpl(Functor&& functor, Args&&... args) {
-   // InvokeFuncStorage, so that we can ensure its type matches to
-   // PolymorphicInvoke, to which CallbackType will cast back.
-   using PolymorphicInvoke = typename CallbackType::PolymorphicInvoke;
--  PolymorphicInvoke invoke_func = InvokeFuncImpl<kIsOnce, Invoker>::Value;
-+  PolymorphicInvoke invoke_func =
-+      GetInvokeFunc<Invoker>(std::integral_constant<bool, kIsOnce>());
- 
-   using InvokeFuncStorage = internal::BindStateBase::InvokeFuncStorage;
-   return CallbackType(BindState::Create(
--- 
-2.23.0
-
diff --git a/chromium/chromium/chromium-gcc9-r709411.patch b/chromium/chromium/chromium-gcc9-r709411.patch
deleted file mode 100644
index fa62088..0000000
--- a/chromium/chromium/chromium-gcc9-r709411.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 97eb905ba262382bc3583078761c68f4452aea71 Mon Sep 17 00:00:00 2001
-From: Jose Dapena Paz <jose.dapena@lge.com>
-Date: Fri, 25 Oct 2019 09:27:53 +0000
-Subject: [PATCH] IWYU: launch_manager.h uses std::vector
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Add #include <vector> for using std::vector. This fixes GCC build.
-
-./../chrome/browser/apps/launch_service/launch_manager.h:46:15: error: ‘vector’ in namespace ‘std’ does not name a template type
-   static std::vector<base::FilePath> GetLaunchFilesFromCommandLine(
-               ^~~~~~
-
-Bug: 819294
-Change-Id: I02ec3a2914a8fbe3aa0041017a0228f4b0ca1ec9
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1879289
-Reviewed-by: Alexey Baskakov <loyso@chromium.org>
-Commit-Queue: José Dapena Paz <jose.dapena@lge.com>
-Cr-Commit-Position: refs/heads/master@{#709411}
----
- chrome/browser/apps/launch_service/launch_manager.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/chrome/browser/apps/launch_service/launch_manager.h b/chrome/browser/apps/launch_service/launch_manager.h
-index 00aeb9d9c2a5..76570ead0f9d 100644
---- a/chrome/browser/apps/launch_service/launch_manager.h
-+++ b/chrome/browser/apps/launch_service/launch_manager.h
-@@ -6,6 +6,7 @@
- #define CHROME_BROWSER_APPS_LAUNCH_SERVICE_LAUNCH_MANAGER_H_
- 
- #include <string>
-+#include <vector>
- 
- #include "base/macros.h"
- 
--- 
-2.23.0
-
diff --git a/chromium/chromium/chromium-gcc9-r709469.patch b/chromium/chromium/chromium-gcc9-r709469.patch
deleted file mode 100644
index 0ef1d76..0000000
--- a/chromium/chromium/chromium-gcc9-r709469.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From e925deab264e5ebc3c5c13415aa3d44a746e8d45 Mon Sep 17 00:00:00 2001
-From: Jose Dapena Paz <jose.dapena@lge.com>
-Date: Fri, 25 Oct 2019 14:53:51 +0000
-Subject: [PATCH] GCC: avoid clash of WebThemeEngine::ForcedColors with
- ForcedColors enum class
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-GCC fails to build because the declaration of the enum class ForcedColors
-clashes with the GetForcedColors method.
-
-Bug: 819294
-Change-Id: I5c7647978d15c771f5372a8c70ac6aeb2284fb2f
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1879452
-Reviewed-by: Kentaro Hara <haraken@chromium.org>
-Commit-Queue: José Dapena Paz <jose.dapena@lge.com>
-Cr-Commit-Position: refs/heads/master@{#709469}
----
- content/child/webthemeengine_impl_android.cc                  | 2 +-
- content/child/webthemeengine_impl_android.h                   | 2 +-
- content/child/webthemeengine_impl_default.cc                  | 2 +-
- content/child/webthemeengine_impl_default.h                   | 2 +-
- content/child/webthemeengine_impl_mac.cc                      | 2 +-
- content/child/webthemeengine_impl_mac.h                       | 2 +-
- third_party/blink/public/platform/web_theme_engine.h          | 2 +-
- third_party/blink/renderer/core/css/media_values.cc           | 2 +-
- third_party/blink/renderer/core/css/style_engine.cc           | 4 ++--
- third_party/blink/renderer/core/dom/document.cc               | 2 +-
- .../blink/renderer/core/testing/color_scheme_helper.cc        | 2 +-
- 11 files changed, 12 insertions(+), 12 deletions(-)
-
-diff --git a/content/child/webthemeengine_impl_default.cc b/content/child/webthemeengine_impl_default.cc
-index bf8bd544d8f1..a126964b3e81 100644
---- a/content/child/webthemeengine_impl_default.cc
-+++ b/content/child/webthemeengine_impl_default.cc
-@@ -232,7 +232,7 @@ void WebThemeEngineDefault::cacheScrollBarMetrics(
- }
- #endif
- 
--blink::ForcedColors WebThemeEngineDefault::ForcedColors() const {
-+blink::ForcedColors WebThemeEngineDefault::GetForcedColors() const {
-   return ui::NativeTheme::GetInstanceForWeb()->UsesHighContrastColors()
-              ? blink::ForcedColors::kActive
-              : blink::ForcedColors::kNone;
-diff --git a/content/child/webthemeengine_impl_default.h b/content/child/webthemeengine_impl_default.h
-index 181223b8856f..755a6d8afe32 100644
---- a/content/child/webthemeengine_impl_default.h
-+++ b/content/child/webthemeengine_impl_default.h
-@@ -39,7 +39,7 @@ class WebThemeEngineDefault : public blink::WebThemeEngine {
-                                     int32_t vertical_arrow_bitmap_height,
-                                     int32_t horizontal_arrow_bitmap_width);
- #endif
--  blink::ForcedColors ForcedColors() const override;
-+  blink::ForcedColors GetForcedColors() const override;
-   void SetForcedColors(const blink::ForcedColors forced_colors) override;
- };
- 
-diff --git a/third_party/blink/public/platform/web_theme_engine.h b/third_party/blink/public/platform/web_theme_engine.h
-index 2b55c0b0bafa..8fba3f2f83ea 100644
---- a/third_party/blink/public/platform/web_theme_engine.h
-+++ b/third_party/blink/public/platform/web_theme_engine.h
-@@ -226,7 +226,7 @@ class WebThemeEngine {
-     return base::nullopt;
-   }
- 
--  virtual ForcedColors ForcedColors() const { return ForcedColors::kNone; }
-+  virtual ForcedColors GetForcedColors() const { return ForcedColors::kNone; }
-   virtual void SetForcedColors(const blink::ForcedColors forced_colors) {}
- };
- 
-diff --git a/third_party/blink/renderer/core/css/media_values.cc b/third_party/blink/renderer/core/css/media_values.cc
-index 045d7937d148..f7c0484a11e3 100644
---- a/third_party/blink/renderer/core/css/media_values.cc
-+++ b/third_party/blink/renderer/core/css/media_values.cc
-@@ -221,7 +221,7 @@ bool MediaValues::CalculatePrefersReducedMotion(LocalFrame* frame) {
- 
- ForcedColors MediaValues::CalculateForcedColors() {
-   if (Platform::Current() && Platform::Current()->ThemeEngine())
--    return Platform::Current()->ThemeEngine()->ForcedColors();
-+    return Platform::Current()->ThemeEngine()->GetForcedColors();
-   else
-     return ForcedColors::kNone;
- }
-diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
-index fe3647ab4263..7d406ccb38f3 100644
---- a/third_party/blink/renderer/core/dom/document.cc
-+++ b/third_party/blink/renderer/core/dom/document.cc
-@@ -8624,7 +8624,7 @@ void Document::ColorSchemeChanged() {
- bool Document::InForcedColorsMode() const {
-   return RuntimeEnabledFeatures::ForcedColorsEnabled() && Platform::Current() &&
-          Platform::Current()->ThemeEngine() &&
--         Platform::Current()->ThemeEngine()->ForcedColors() !=
-+         Platform::Current()->ThemeEngine()->GetForcedColors() !=
-              ForcedColors::kNone;
- }
- 
--- 
-2.23.0
diff --git a/chromium/chromium/chromium-gcc9-r709472.patch b/chromium/chromium/chromium-gcc9-r709472.patch
deleted file mode 100644
index 617780f..0000000
--- a/chromium/chromium/chromium-gcc9-r709472.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From f7c177d35242311ea7a2cf49a0980c61664f27ba Mon Sep 17 00:00:00 2001
-From: Jose Dapena Paz <jose.dapena@lge.com>
-Date: Fri, 25 Oct 2019 15:07:09 +0000
-Subject: [PATCH] IWYU: include algorithm to use std::lower_bound in
- ui/gfx/font.cc
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Fix GCC build because of missing include:
-../../ui/gfx/font.cc: In function ‘gfx::Font::Weight gfx::FontWeightFromInt(int)’:
-../../ui/gfx/font.cc:114:8: error: no matching function for call to ‘lower_bound(const gfx::Font::Weight*, const gfx::Font::Weight*, int&, gfx::FontWeightFromInt(int)::<lambda(const gfx::Font::Weight&, const int&)>)’
-       });
-        ^
-In file included from /usr/include/c++/8/bits/char_traits.h:39,
-                 from /usr/include/c++/8/string:40,
-                 from ../../ui/gfx/font.h:8,
-                 from ../../ui/gfx/font.cc:5:
-/usr/include/c++/8/bits/stl_algobase.h:984:5: note: candidate: ‘template<class _ForwardIterator, class _Tp> _ForwardIterator std::lower_bound(_ForwardIterator, _ForwardIterator, const _Tp&)’
-     lower_bound(_ForwardIterator __first, _ForwardIterator __last,
-     ^~~~~~~~~~~
-/usr/include/c++/8/bits/stl_algobase.h:984:5: note:   template argument deduction/substitution failed:
-../../ui/gfx/font.cc:114:8: note:   candidate expects 3 arguments, 4 provided
-       });
-        ^
-
-Bug: 819294
-Change-Id: Ic59dcf3a06bdd54d1d426c08a61624873a0ff30c
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1879909
-Commit-Queue: Alexei Svitkine <asvitkine@chromium.org>
-Reviewed-by: Alexei Svitkine <asvitkine@chromium.org>
-Cr-Commit-Position: refs/heads/master@{#709472}
----
- ui/gfx/font.cc | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/ui/gfx/font.cc b/ui/gfx/font.cc
-index 21367fd72976..92b159e13d10 100644
---- a/ui/gfx/font.cc
-+++ b/ui/gfx/font.cc
-@@ -4,6 +4,8 @@
- 
- #include "ui/gfx/font.h"
- 
-+#include <algorithm>
-+
- #include "base/strings/utf_string_conversions.h"
- #include "build/build_config.h"
- #include "ui/gfx/platform_font.h"
--- 
-2.23.0
-
diff --git a/chromium/chromium/chromium-gcc9-r709569.patch b/chromium/chromium/chromium-gcc9-r709569.patch
deleted file mode 100644
index 32efff7..0000000
--- a/chromium/chromium/chromium-gcc9-r709569.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From af77dc4014ead3d898fdc8a7a70fe5063ac9b102 Mon Sep 17 00:00:00 2001
-From: Jose Dapena Paz <jose.dapena@lge.com>
-Date: Fri, 25 Oct 2019 19:01:29 +0000
-Subject: [PATCH] GCC: use brace-initializer for DohUpgrade vector
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Constructing NoDestructor with parenthesis constructor is ambiguous
-in GCC. Use brace-initializer to avoid that problem. This fixes this
-build error:
-
-Bug: 819294
-Change-Id: I00dda42daa1794d11e022f26ac07f92e599d106d
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1879910
-Reviewed-by: Eric Orth <ericorth@chromium.org>
-Commit-Queue: José Dapena Paz <jose.dapena@lge.com>
-Cr-Commit-Position: refs/heads/master@{#709569}
----
- net/dns/dns_util.cc | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/net/dns/dns_util.cc b/net/dns/dns_util.cc
-index 14997c48b23c..637b6f2bb8d3 100644
---- a/net/dns/dns_util.cc
-+++ b/net/dns/dns_util.cc
-@@ -144,7 +144,7 @@ const std::vector<DohUpgradeEntry>& GetDohUpgradeList() {
-   // DohProviderId histogram suffix list in
-   // tools/metrics/histograms/histograms.xml.
-   static const base::NoDestructor<std::vector<DohUpgradeEntry>>
--      upgradable_servers({
-+      upgradable_servers{{
-           DohUpgradeEntry(
-               "CleanBrowsingAdult",
-               {"185.228.168.10", "185.228.169.11", "2a0d:2a00:1::1",
-@@ -215,7 +215,7 @@ const std::vector<DohUpgradeEntry>& GetDohUpgradeList() {
-               {"9.9.9.9", "149.112.112.112", "2620:fe::fe", "2620:fe::9"},
-               {"dns.quad9.net", "dns9.quad9.net"} /* DoT hostname */,
-               {"https://dns.quad9.net/dns-query", true /* use_post */}),
--      });
-+      }};
-   return *upgradable_servers;
- }
- 
--- 
-2.23.0
-
diff --git a/chromium/chromium/chromium-gcc9-r723499.patch b/chromium/chromium/chromium-gcc9-r723499.patch
new file mode 100644
index 0000000..5c620a7
--- /dev/null
+++ b/chromium/chromium/chromium-gcc9-r723499.patch
@@ -0,0 +1,38 @@
+From 8273f4d3130e06fd8b6bef87b07c936304b971d9 Mon Sep 17 00:00:00 2001
+From: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
+Date: Tue, 10 Dec 2019 20:59:57 +0000
+Subject: [PATCH] [cros search service]: Include <cmath> for std::pow()
+
+IWYU. Follow up to commit 2b2ea3c09b ("[cros search service] Move shared
+string matching functions to //chrome"), which broke the libstdc++ build:
+
+    ../../chrome/common/string_matching/fuzzy_tokenized_string_match.cc:199:14: error: no member named 'pow' in namespace 'std'
+            std::pow(partial_match_penalty_rate, long_start - current - 1);
+            ~~~~~^
+
+Bug: 957519
+Change-Id: I66f61cb4f93cfa0bfa3d1b00ba391ddd8f31a7fb
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1960310
+Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
+Reviewed-by: Jia Meng <jiameng@chromium.org>
+Commit-Queue: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
+Cr-Commit-Position: refs/heads/master@{#723499}
+---
+ chrome/common/string_matching/fuzzy_tokenized_string_match.cc | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/chrome/common/string_matching/fuzzy_tokenized_string_match.cc b/chrome/common/string_matching/fuzzy_tokenized_string_match.cc
+index 8351fa701e4d..884ef638c61c 100644
+--- a/chrome/common/string_matching/fuzzy_tokenized_string_match.cc
++++ b/chrome/common/string_matching/fuzzy_tokenized_string_match.cc
+@@ -5,6 +5,7 @@
+ #include "chrome/common/string_matching/fuzzy_tokenized_string_match.h"
+ 
+ #include <algorithm>
++#include <cmath>
+ #include <iterator>
+ 
+ #include "base/i18n/case_conversion.h"
+-- 
+2.24.1
+
diff --git a/chromium/chromium/chromium-gcc9-r725070.patch b/chromium/chromium/chromium-gcc9-r725070.patch
new file mode 100644
index 0000000..ba57aca
--- /dev/null
+++ b/chromium/chromium/chromium-gcc9-r725070.patch
@@ -0,0 +1,240 @@
+From cdf3e81ff49b200213d67d65558f2919222b60ab Mon Sep 17 00:00:00 2001
+From: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
+Date: Mon, 16 Dec 2019 11:39:11 +0000
+Subject: [PATCH] BookmarkModelMerger: Move RemoteTreeNode declaration to
+ header.
+
+This fixes the build with libstdc++ after commit 8f5dad93e58 ("Fix CHECK
+failure due to untracked local nodes"):
+
+/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/stl_pair.h:215:11: error: field has incomplete type 'sync_bookmarks::BookmarkModelMerger::RemoteTreeNode'
+      _T2 second;                /// @c second is a copy of the second object
+          ^
+/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/ext/aligned_buffer.h:91:28: note: in instantiation of template class 'std::pair<const std::__cxx11::basic_string<char>, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode>' requested here
+    : std::aligned_storage<sizeof(_Tp), __alignof__(_Tp)>
+                           ^
+/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/hashtable_policy.h:233:43: note: in instantiation of template class '__gnu_cxx::__aligned_buffer<std::pair<const std::__cxx11::basic_string<char>, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode> >' requested here
+      __gnu_cxx::__aligned_buffer<_Value> _M_storage;
+                                          ^
+/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/hashtable_policy.h:264:39: note: in instantiation of template class 'std::__detail::_Hash_node_value_base<std::pair<const std::__cxx11::basic_string<char>, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode> >' requested here
+    struct _Hash_node<_Value, true> : _Hash_node_value_base<_Value>
+                                      ^
+/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/hashtable_policy.h:2028:25: note: in instantiation of template class 'std::__detail::_Hash_node<std::pair<const std::__cxx11::basic_string<char>, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode>, true>' requested here
+        rebind_traits<typename __node_type::value_type>;
+                               ^
+/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/hashtable.h:184:15: note: in instantiation of template class 'std::__detail::_Hashtable_alloc<std::allocator<std::__detail::_Hash_node<std::pair<const std::__cxx11::basic_string<char>, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode>, true> > >
+' requested here
+      private __detail::_Hashtable_alloc<
+              ^
+/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/unordered_map.h:105:18: note: in instantiation of template class 'std::_Hashtable<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode>, std::allocator<std::pair<con
+st std::__cxx11::basic_string<char>, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode> >, std::__detail::_Select1st, std::equal_to<std::__cxx11::basic_string<char> >, std::hash<std::string>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__deta
+il::_Hashtable_traits<true, false, true> >' requested here
+      _Hashtable _M_h;
+                 ^
+../../components/sync_bookmarks/bookmark_model_merger.h:146:22: note: in instantiation of template class 'std::unordered_map<std::__cxx11::basic_string<char>, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode, std::hash<std::string>, std::equal_to<std::__cxx11::basic_string<char> >, std::allocator<std::pair<con
+st std::__cxx11::basic_string<char>, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode> > >' requested here
+  const RemoteForest remote_forest_;
+                     ^
+../../components/sync_bookmarks/bookmark_model_merger.h:53:9: note: forward declaration of 'sync_bookmarks::BookmarkModelMerger::RemoteTreeNode'
+  class RemoteTreeNode;
+        ^
+
+Essentially, the problem is that libstdc++'s std::unordered_map<T, U>
+implementation requires both T and U to be fully declared. I raised the
+problem in https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92770, and GCC's
+position is that we are relying on undefined behavior according to the C++
+standard (https://eel.is/c++draft/requirements#res.on.functions-2.5).
+
+Bug: 957519
+Change-Id: Ife7e435e516932a795bfbe05b2c910c3272878f0
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1960156
+Commit-Queue: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
+Reviewed-by: Mikel Astiz <mastiz@chromium.org>
+Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
+Cr-Commit-Position: refs/heads/master@{#725070}
+---
+ .../sync_bookmarks/bookmark_model_merger.cc   | 89 +++++++------------
+ .../sync_bookmarks/bookmark_model_merger.h    | 48 +++++++++-
+ 2 files changed, 80 insertions(+), 57 deletions(-)
+
+diff --git a/components/sync_bookmarks/bookmark_model_merger.cc b/components/sync_bookmarks/bookmark_model_merger.cc
+index eae153eff953..579848ee664e 100644
+--- a/components/sync_bookmarks/bookmark_model_merger.cc
++++ b/components/sync_bookmarks/bookmark_model_merger.cc
+@@ -5,7 +5,6 @@
+ #include "components/sync_bookmarks/bookmark_model_merger.h"
+ 
+ #include <algorithm>
+-#include <memory>
+ #include <set>
+ #include <string>
+ #include <utility>
+@@ -205,66 +204,44 @@ UpdatesPerParentId GroupValidUpdatesByParentId(
+ 
+ }  // namespace
+ 
+-class BookmarkModelMerger::RemoteTreeNode final {
+- public:
+-  // Constructs a tree given |update| as root and recursively all descendants by
+-  // traversing |*updates_per_parent_id|. |update| and |updates_per_parent_id|
+-  // must not be null. All updates |*updates_per_parent_id| must represent valid
+-  // updates. Updates corresponding from descendant nodes are moved away from
+-  // |*updates_per_parent_id|.
+-  static RemoteTreeNode BuildTree(
+-      std::unique_ptr<syncer::UpdateResponseData> update,
+-      UpdatesPerParentId* updates_per_parent_id);
+-
+-  ~RemoteTreeNode() = default;
+-
+-  // Allow moves, useful during construction.
+-  RemoteTreeNode(RemoteTreeNode&&) = default;
+-  RemoteTreeNode& operator=(RemoteTreeNode&&) = default;
+-
+-  const syncer::EntityData& entity() const { return *update_->entity; }
+-  int64_t response_version() const { return update_->response_version; }
+-
+-  // Direct children nodes, sorted by ascending unique position. These are
+-  // guaranteed to be valid updates (e.g. IsValidBookmarkSpecifics()).
+-  const std::vector<RemoteTreeNode>& children() const { return children_; }
+-
+-  // Recursively emplaces all GUIDs (this node and descendants) into
+-  // |*guid_to_remote_node_map|, which must not be null.
+-  void EmplaceSelfAndDescendantsByGUID(
+-      std::unordered_map<std::string, const RemoteTreeNode*>*
+-          guid_to_remote_node_map) const {
+-    DCHECK(guid_to_remote_node_map);
+-
+-    const std::string& guid = entity().specifics.bookmark().guid();
+-    if (!guid.empty()) {
+-      DCHECK(base::IsValidGUID(guid));
+-
+-      // Duplicate GUIDs have been sorted out before.
+-      bool success = guid_to_remote_node_map->emplace(guid, this).second;
+-      DCHECK(success);
+-    }
++BookmarkModelMerger::RemoteTreeNode::RemoteTreeNode() = default;
+ 
+-    for (const RemoteTreeNode& child : children_) {
+-      child.EmplaceSelfAndDescendantsByGUID(guid_to_remote_node_map);
+-    }
+-  }
++BookmarkModelMerger::RemoteTreeNode::~RemoteTreeNode() = default;
++
++BookmarkModelMerger::RemoteTreeNode::RemoteTreeNode(
++    BookmarkModelMerger::RemoteTreeNode&&) = default;
++BookmarkModelMerger::RemoteTreeNode& BookmarkModelMerger::RemoteTreeNode::
++operator=(BookmarkModelMerger::RemoteTreeNode&&) = default;
++
++void BookmarkModelMerger::RemoteTreeNode::EmplaceSelfAndDescendantsByGUID(
++    std::unordered_map<std::string, const RemoteTreeNode*>*
++        guid_to_remote_node_map) const {
++  DCHECK(guid_to_remote_node_map);
++
++  const std::string& guid = entity().specifics.bookmark().guid();
++  if (!guid.empty()) {
++    DCHECK(base::IsValidGUID(guid));
+ 
+- private:
+-  static bool UniquePositionLessThan(const RemoteTreeNode& lhs,
+-                                     const RemoteTreeNode& rhs) {
+-    const syncer::UniquePosition a_pos =
+-        syncer::UniquePosition::FromProto(lhs.entity().unique_position);
+-    const syncer::UniquePosition b_pos =
+-        syncer::UniquePosition::FromProto(rhs.entity().unique_position);
+-    return a_pos.LessThan(b_pos);
++    // Duplicate GUIDs have been sorted out before.
++    bool success = guid_to_remote_node_map->emplace(guid, this).second;
++    DCHECK(success);
+   }
+ 
+-  RemoteTreeNode() = default;
++  for (const RemoteTreeNode& child : children_) {
++    child.EmplaceSelfAndDescendantsByGUID(guid_to_remote_node_map);
++  }
++}
+ 
+-  std::unique_ptr<syncer::UpdateResponseData> update_;
+-  std::vector<RemoteTreeNode> children_;
+-};
++// static
++bool BookmarkModelMerger::RemoteTreeNode::UniquePositionLessThan(
++    const RemoteTreeNode& lhs,
++    const RemoteTreeNode& rhs) {
++  const syncer::UniquePosition a_pos =
++      syncer::UniquePosition::FromProto(lhs.entity().unique_position);
++  const syncer::UniquePosition b_pos =
++      syncer::UniquePosition::FromProto(rhs.entity().unique_position);
++  return a_pos.LessThan(b_pos);
++}
+ 
+ // static
+ BookmarkModelMerger::RemoteTreeNode
+diff --git a/components/sync_bookmarks/bookmark_model_merger.h b/components/sync_bookmarks/bookmark_model_merger.h
+index 9b592000dc59..bf0783ecf8ee 100644
+--- a/components/sync_bookmarks/bookmark_model_merger.h
++++ b/components/sync_bookmarks/bookmark_model_merger.h
+@@ -5,6 +5,7 @@
+ #ifndef COMPONENTS_SYNC_BOOKMARKS_BOOKMARK_MODEL_MERGER_H_
+ #define COMPONENTS_SYNC_BOOKMARKS_BOOKMARK_MODEL_MERGER_H_
+ 
++#include <memory>
+ #include <string>
+ #include <unordered_map>
+ #include <vector>
+@@ -50,7 +51,52 @@ class BookmarkModelMerger {
+ 
+  private:
+   // Internal representation of a remote tree, composed of nodes.
+-  class RemoteTreeNode;
++  class RemoteTreeNode final {
++   private:
++    using UpdatesPerParentId =
++        std::unordered_map<base::StringPiece,
++                           syncer::UpdateResponseDataList,
++                           base::StringPieceHash>;
++
++   public:
++    // Constructs a tree given |update| as root and recursively all descendants
++    // by traversing |*updates_per_parent_id|. |update| and
++    // |updates_per_parent_id| must not be null. All updates
++    // |*updates_per_parent_id| must represent valid updates. Updates
++    // corresponding from descendant nodes are moved away from
++    // |*updates_per_parent_id|.
++    static RemoteTreeNode BuildTree(
++        std::unique_ptr<syncer::UpdateResponseData> update,
++        UpdatesPerParentId* updates_per_parent_id);
++
++    ~RemoteTreeNode();
++
++    // Allow moves, useful during construction.
++    RemoteTreeNode(RemoteTreeNode&&);
++    RemoteTreeNode& operator=(RemoteTreeNode&&);
++
++    const syncer::EntityData& entity() const { return *update_->entity; }
++    int64_t response_version() const { return update_->response_version; }
++
++    // Direct children nodes, sorted by ascending unique position. These are
++    // guaranteed to be valid updates (e.g. IsValidBookmarkSpecifics()).
++    const std::vector<RemoteTreeNode>& children() const { return children_; }
++
++    // Recursively emplaces all GUIDs (this node and descendants) into
++    // |*guid_to_remote_node_map|, which must not be null.
++    void EmplaceSelfAndDescendantsByGUID(
++        std::unordered_map<std::string, const RemoteTreeNode*>*
++            guid_to_remote_node_map) const;
++
++   private:
++    static bool UniquePositionLessThan(const RemoteTreeNode& lhs,
++                                       const RemoteTreeNode& rhs);
++
++    RemoteTreeNode();
++
++    std::unique_ptr<syncer::UpdateResponseData> update_;
++    std::vector<RemoteTreeNode> children_;
++  };
+ 
+   // A forest composed of multiple trees where the root of each tree represents
+   // a permanent node, keyed by server-defined unique tag of the root.
+-- 
+2.24.1
+
diff --git a/chromium/chromium/chromium-gcc9-r732437.patch b/chromium/chromium/chromium-gcc9-r732437.patch
new file mode 100644
index 0000000..0fe8211
--- /dev/null
+++ b/chromium/chromium/chromium-gcc9-r732437.patch
@@ -0,0 +1,37 @@
+From 5633ce55ffd8e3df4a2c8c29c597b48aa7676435 Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Thu, 16 Jan 2020 17:22:10 +0000
+Subject: [PATCH] GCC: use scoped_refptr to return abstract VideoTrackInterface
+
+Fix compilation issue in GCC with CrossThreadCopierPassThrough and VideoTrackInterface.
+
+Bug: 819294
+Change-Id: Id453c3a7bc63fc75a0f882af450730ada5b717de
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2002512
+Reviewed-by: Chris Mumford <cmumford@google.com>
+Reviewed-by: Guido Urdaneta <guidou@chromium.org>
+Commit-Queue: Guido Urdaneta <guidou@chromium.org>
+Cr-Commit-Position: refs/heads/master@{#732437}
+---
+ .../peerconnection/adapters/web_rtc_cross_thread_copier.h    | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/third_party/blink/renderer/modules/peerconnection/adapters/web_rtc_cross_thread_copier.h b/third_party/blink/renderer/modules/peerconnection/adapters/web_rtc_cross_thread_copier.h
+index 54cb7d13bff3..0d6c40f0b428 100644
+--- a/third_party/blink/renderer/modules/peerconnection/adapters/web_rtc_cross_thread_copier.h
++++ b/third_party/blink/renderer/modules/peerconnection/adapters/web_rtc_cross_thread_copier.h
+@@ -165,8 +165,9 @@ struct CrossThreadCopier<blink::MediaStreamVideoTrack>
+ };
+ 
+ template <>
+-struct CrossThreadCopier<webrtc::VideoTrackInterface>
+-    : public CrossThreadCopierPassThrough<webrtc::VideoTrackInterface> {
++struct CrossThreadCopier<rtc::scoped_refptr<webrtc::VideoTrackInterface>>
++    : public CrossThreadCopierPassThrough<
++          rtc::scoped_refptr<webrtc::VideoTrackInterface>> {
+   STATIC_ONLY(CrossThreadCopier);
+ };
+ 
+-- 
+2.24.1
+
diff --git a/chromium/chromium/chromium-quiche-gcc9.patch b/chromium/chromium/chromium-quiche-gcc9.patch
new file mode 100644
index 0000000..8104665
--- /dev/null
+++ b/chromium/chromium/chromium-quiche-gcc9.patch
@@ -0,0 +1,38 @@
+From 00f47df999c9b19e80fdc01db0ae9ca1b6a12b3a Mon Sep 17 00:00:00 2001
+From: vasilvv <vasilvv@google.com>
+Date: Wed, 3 Apr 2019 13:58:53 -0700
+Subject: [PATCH] GCC: do not delete move constructor of QuicStreamSendBuffer
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+QuicStreamSendBuffer constructor is implicitely required in the
+initialization of the vector of substreams in QuicCryptoStream.
+Though clang apparently ignores that, GCC fails to build.
+
+BUG=chromium:819294
+
+Originally submitted by José Dapena Paz <jose.dapena@lge.com> at https://quiche-review.googlesource.com/c/quiche/+/2420
+
+PiperOrigin-RevId: 241800134
+Change-Id: I4e3c97d6e5895d85340e8c1b740e6196d9104066
+---
+ quic/core/quic_stream_send_buffer.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/quic/core/quic_stream_send_buffer.h b/quic/core/quic_stream_send_buffer.h
+index e34514b..74e9d0d 100644
+--- a/net/third_party/quiche/src/quic/core/quic_stream_send_buffer.h
++++ b/net/third_party/quiche/src/quic/core/quic_stream_send_buffer.h
+@@ -62,7 +62,7 @@ class QUIC_EXPORT_PRIVATE QuicStreamSendBuffer {
+  public:
+   explicit QuicStreamSendBuffer(QuicBufferAllocator* allocator);
+   QuicStreamSendBuffer(const QuicStreamSendBuffer& other) = delete;
+-  QuicStreamSendBuffer(QuicStreamSendBuffer&& other) = delete;
++  QuicStreamSendBuffer(QuicStreamSendBuffer&& other) = default;
+   ~QuicStreamSendBuffer();
+ 
+   // Save |data_length| of data starts at |iov_offset| in |iov| to send buffer.
+-- 
+2.24.1
+
diff --git a/chromium/chromium/chromium-unbundle-libxml.patch b/chromium/chromium/chromium-unbundle-libxml.patch
new file mode 100644
index 0000000..23cc8ff
--- /dev/null
+++ b/chromium/chromium/chromium-unbundle-libxml.patch
@@ -0,0 +1,130 @@
+From d3afade220ddb307e16a6dd4f2b0ec88b2af91e7 Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Tue, 28 Jan 2020 18:16:54 +0000
+Subject: [PATCH] Fix building with unbundled libxml
+
+Add new targets to libxml.gn that were added in
+ https://chromium-review.googlesource.com/c/chromium/src/+/1894877
+Adjust includes to use system libxml headers too
+
+Bug: 1043042
+Change-Id: I948c063e212e49b9e7f42fed2b8bf7f4af042ca7
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2007110
+Reviewed-by: Robert Sesek <rsesek@chromium.org>
+Reviewed-by: Daniel Cheng <dcheng@chromium.org>
+Reviewed-by: Nico Weber <thakis@chromium.org>
+Commit-Queue: Robert Sesek <rsesek@chromium.org>
+Cr-Commit-Position: refs/heads/master@{#735957}
+---
+ build/linux/unbundle/libxml.gn             | 41 ++++++++++++++++++++--
+ third_party/libxml/chromium/libxml_utils.h |  4 +--
+ third_party/libxml/chromium/xml_reader.cc  |  3 +-
+ third_party/libxml/chromium/xml_writer.cc  |  3 +-
+ 4 files changed, 45 insertions(+), 6 deletions(-)
+
+diff --git a/build/linux/unbundle/libxml.gn b/build/linux/unbundle/libxml.gn
+index c481bd3547bb..3587881eea89 100644
+--- a/build/linux/unbundle/libxml.gn
++++ b/build/linux/unbundle/libxml.gn
+@@ -8,11 +8,48 @@ pkg_config("system_libxml") {
+   packages = [ "libxml-2.0" ]
+ }
+ 
+-static_library("libxml") {
++source_set("libxml") {
++  public_configs = [ ":system_libxml" ]
++}
++
++static_library("libxml_utils") {
++  # Do not expand this visibility list without first consulting with the
++  # Security Team.
++  visibility = [
++    ":xml_reader",
++    ":xml_writer",
++    "//base/test:test_support",
++    "//services/data_decoder:xml_parser_fuzzer",
++  ]
+   sources = [
+     "chromium/libxml_utils.cc",
+     "chromium/libxml_utils.h",
+   ]
+-
+   public_configs = [ ":system_libxml" ]
+ }
++
++static_library("xml_reader") {
++  # Do not expand this visibility list without first consulting with the
++  # Security Team.
++  visibility = [
++    "//base/test:test_support",
++    "//components/policy/core/common:unit_tests",
++    "//services/data_decoder:*",
++    "//tools/traffic_annotation/auditor:auditor_sources",
++  ]
++  sources = [
++    "chromium/xml_reader.cc",
++    "chromium/xml_reader.h",
++  ]
++  deps = [ ":libxml_utils" ]
++}
++
++static_library("xml_writer") {
++  # The XmlWriter is considered safe to use from any target.
++  visibility = [ "*" ]
++  sources = [
++    "chromium/xml_writer.cc",
++    "chromium/xml_writer.h",
++  ]
++  deps = [ ":libxml_utils" ]
++}
+diff --git a/third_party/libxml/chromium/libxml_utils.h b/third_party/libxml/chromium/libxml_utils.h
+index ff969fab5406..8b2383f9c8bd 100644
+--- a/third_party/libxml/chromium/libxml_utils.h
++++ b/third_party/libxml/chromium/libxml_utils.h
+@@ -5,9 +5,9 @@
+ #ifndef THIRD_PARTY_LIBXML_CHROMIUM_LIBXML_UTILS_H_
+ #define THIRD_PARTY_LIBXML_CHROMIUM_LIBXML_UTILS_H_
+ 
+-#include <string>
++#include <libxml/xmlreader.h>
+ 
+-#include "third_party/libxml/src/include/libxml/xmlreader.h"
++#include <string>
+ 
+ // libxml uses a global error function pointer for reporting errors.
+ // A ScopedXmlErrorFunc object lets you change the global error pointer
+diff --git a/third_party/libxml/chromium/xml_reader.cc b/third_party/libxml/chromium/xml_reader.cc
+index 92464f4cbccf..899ccefb7c8e 100644
+--- a/third_party/libxml/chromium/xml_reader.cc
++++ b/third_party/libxml/chromium/xml_reader.cc
+@@ -4,10 +4,11 @@
+ 
+ #include "third_party/libxml/chromium/xml_reader.h"
+ 
++#include <libxml/xmlreader.h>
++
+ #include <vector>
+ 
+ #include "third_party/libxml/chromium/libxml_utils.h"
+-#include "third_party/libxml/src/include/libxml/xmlreader.h"
+ 
+ using internal::XmlStringToStdString;
+ 
+diff --git a/third_party/libxml/chromium/xml_writer.cc b/third_party/libxml/chromium/xml_writer.cc
+index 51fce8ebeb19..7c58031fe2d2 100644
+--- a/third_party/libxml/chromium/xml_writer.cc
++++ b/third_party/libxml/chromium/xml_writer.cc
+@@ -4,8 +4,9 @@
+ 
+ #include "third_party/libxml/chromium/xml_writer.h"
+ 
++#include <libxml/xmlwriter.h>
++
+ #include "third_party/libxml/chromium/libxml_utils.h"
+-#include "third_party/libxml/src/include/libxml/xmlwriter.h"
+ 
+ XmlWriter::XmlWriter() : writer_(nullptr), buffer_(nullptr) {}
+ 
+-- 
+2.24.1
+
diff --git a/chromium/chromium/chromium.spec b/chromium/chromium/chromium.spec
index e9245d6..bc78517 100644
--- a/chromium/chromium/chromium.spec
+++ b/chromium/chromium/chromium.spec
@@ -55,7 +55,7 @@
 %bcond_with fedora_compilation_flags
 
 Name:       chromium
-Version:    79.0.3945.130
+Version:    80.0.3987.87
 Release:    100%{?dist}
 Summary:    A WebKit (Blink) powered web browser
 
@@ -116,17 +116,19 @@ Patch30:    chromium-webrtc-cstring.patch
 # Pull patches from Gentoo
 # https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5b7b57438d399738
 # https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6b89e0d09ed3f133
-# http://distfiles.gentoo.org/distfiles/chromium-78-revert-noexcept-r1.patch.gz
+# https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=63e5fbd254535ca8
+# https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8ba7a983c4c70ff8
 Patch40:    chromium-unbundle-zlib.patch
 Patch41:    chromium-base-location.patch
+Patch42:    chromium-gcc9-blink.patch
+Patch43:    chromium-gcc9-permissive.patch
 
 # Pull upstream patches
-Patch50:    chromium-fix-use_system_harfbuzz-ng.patch
-Patch51:    chromium-gcc9-r707329.patch
-Patch52:    chromium-gcc9-r709411.patch
-Patch53:    chromium-gcc9-r709469.patch
-Patch54:    chromium-gcc9-r709472.patch
-Patch55:    chromium-gcc9-r709569.patch
+Patch50:    chromium-unbundle-libxml.patch
+Patch51:    chromium-quiche-gcc9.patch
+Patch52:    chromium-gcc9-r723499.patch
+Patch53:    chromium-gcc9-r725070.patch
+Patch54:    chromium-gcc9-r732437.patch
 
 # I don't have time to test whether it work on other architectures
 ExclusiveArch: x86_64
@@ -279,9 +281,6 @@ find -type f -exec \
     third_party/axe-core \
     third_party/boringssl \
     third_party/boringssl/src/third_party/fiat \
-    third_party/boringssl/src/third_party/sike \
-    third_party/boringssl/linux-aarch64/crypto/third_party/sike \
-    third_party/boringssl/linux-x86_64/crypto/third_party/sike \
     third_party/blink \
     third_party/breakpad \
     third_party/breakpad/breakpad/src/third_party/curl \
@@ -316,12 +315,14 @@ find -type f -exec \
     third_party/dawn \
     third_party/depot_tools \
     third_party/devscripts \
+    third_party/devtools-frontend \
+    third_party/devtools-frontend/src/third_party \
     third_party/dom_distiller_js \
     third_party/emoji-segmenter \
     third_party/ffmpeg \
     third_party/flatbuffers \
-    third_party/flot \
     third_party/freetype \
+    third_party/libgifcodec \
     third_party/glslang \
     third_party/google_input_tools \
     third_party/google_input_tools/third_party/closure_library \
@@ -406,7 +407,6 @@ find -type f -exec \
     third_party/skia \
     third_party/skia/include/third_party/skcms \
     third_party/skia/include/third_party/vulkan \
-    third_party/skia/third_party/gif \
     third_party/skia/third_party/skcms \
     third_party/skia/third_party/vulkan \
     third_party/smhasher \
@@ -437,6 +437,7 @@ find -type f -exec \
     third_party/webrtc/rtc_base/third_party/sigslot \
     third_party/widevine \
     third_party/woff2 \
+    third_party/wuffs \
     third_party/xdg-utils \
     third_party/yasm/run_yasm.py \
     third_party/zlib/google \
@@ -612,7 +613,6 @@ install -m 644 out/Release/icudtl.dat %{buildroot}%{chromiumdir}/
 install -m 755 out/Release/nacl_helper %{buildroot}%{chromiumdir}/
 install -m 755 out/Release/nacl_helper_bootstrap %{buildroot}%{chromiumdir}/
 install -m 644 out/Release/nacl_irt_x86_64.nexe %{buildroot}%{chromiumdir}/
-install -m 644 out/Release/natives_blob.bin %{buildroot}%{chromiumdir}/
 install -m 644 out/Release/v8_context_snapshot.bin %{buildroot}%{chromiumdir}/
 install -m 644 out/Release/*.pak %{buildroot}%{chromiumdir}/
 install -m 644 out/Release/locales/*.pak %{buildroot}%{chromiumdir}/locales/
@@ -673,7 +673,6 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
 %{chromiumdir}/nacl_helper
 %{chromiumdir}/nacl_helper_bootstrap
 %{chromiumdir}/nacl_irt_x86_64.nexe
-%{chromiumdir}/natives_blob.bin
 %{chromiumdir}/v8_context_snapshot.bin
 %{chromiumdir}/*.pak
 %dir %{chromiumdir}/locales
@@ -688,6 +687,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
 
 
 %changelog
+* Sun Feb 09 2020 - Ting-Wei Lan <lantw44@gmail.com> - 80.0.3987.87-100
+- Update to 80.0.3987.87
+
 * Sat Jan 18 2020 - Ting-Wei Lan <lantw44@gmail.com> - 79.0.3945.130-100
 - Update to 79.0.3945.130
 
-- 
cgit v1.2.3