Hello community,

here is the log from the commit of package chromium for openSUSE:Factory 
checked in at 2019-12-23 22:37:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/chromium (Old)
 and      /work/SRC/openSUSE:Factory/.chromium.new.6675 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "chromium"

Mon Dec 23 22:37:29 2019 rev:240 rq:758715 version:79.0.3945.88

Changes:
--------
--- /work/SRC/openSUSE:Factory/chromium/chromium.changes        2019-11-23 
23:40:52.958904404 +0100
+++ /work/SRC/openSUSE:Factory/.chromium.new.6675/chromium.changes      
2019-12-23 22:41:00.693913176 +0100
@@ -1,0 +2,71 @@
+Thu Dec 19 21:58:01 UTC 2019 - Andreas Stieger <andreas.stie...@gmx.de>
+
+- update to 79.0.3945.88:
+  * CVE-2019-13767: Use after free in media picker (boo#1159498)
+
+-------------------------------------------------------------------
+Wed Dec 11 09:34:00 UTC 2019 - Tomáš Chvátal <tchva...@suse.com>
+
+- Update to 79.0.3945.79:
+  * CVE-2019-13725: Use after free in Bluetooth
+  * CVE-2019-13726: Heap buffer overflow in password manager
+  * CVE-2019-13727: Insufficient policy enforcement in WebSockets
+  * CVE-2019-13728: Out of bounds write in V8
+  * CVE-2019-13729: Use after free in WebSockets
+  * CVE-2019-13730: Type Confusion in V8
+  * CVE-2019-13732: Use after free in WebAudio
+  * CVE-2019-13734: Out of bounds write in SQLite
+  * CVE-2019-13735: Out of bounds write in V8
+  * CVE-2019-13764: Type Confusion in V8
+  * CVE-2019-13736: Integer overflow in PDFium
+  * CVE-2019-13737: Insufficient policy enforcement in autocomplete
+  * CVE-2019-13738: Insufficient policy enforcement in navigation
+  * CVE-2019-13739: Incorrect security UI in Omnibox
+  * CVE-2019-13740: Incorrect security UI in sharing
+  * CVE-2019-13741: Insufficient validation of untrusted input in Blink
+  * CVE-2019-13742: Incorrect security UI in Omnibox
+  * CVE-2019-13743: Incorrect security UI in external protocol handling
+  * CVE-2019-13744: Insufficient policy enforcement in cookies
+  * CVE-2019-13745: Insufficient policy enforcement in audio
+  * CVE-2019-13746: Insufficient policy enforcement in Omnibox
+  * CVE-2019-13747: Uninitialized Use in rendering
+  * CVE-2019-13748: Insufficient policy enforcement in developer tools
+  * CVE-2019-13749: Incorrect security UI in Omnibox
+  * CVE-2019-13750: Insufficient data validation in SQLite
+  * CVE-2019-13751: Uninitialized Use in SQLite
+  * CVE-2019-13752: Out of bounds read in SQLite
+  * CVE-2019-13753: Out of bounds read in SQLite
+  * CVE-2019-13754: Insufficient policy enforcement in extensions
+  * CVE-2019-13755: Insufficient policy enforcement in extensions
+  * CVE-2019-13756: Incorrect security UI in printing
+  * CVE-2019-13757: Incorrect security UI in Omnibox
+  * CVE-2019-13758: Insufficient policy enforcement in navigation
+  * CVE-2019-13759: Incorrect security UI in interstitials
+  * CVE-2019-13761: Incorrect security UI in Omnibox
+  * CVE-2019-13762: Insufficient policy enforcement in downloads
+  * CVE-2019-13763: Insufficient policy enforcement in payments
+- Remove merged patches:
+  * chromium-77-clang.patch
+  * chromium-78-gcc-enum-range.patch
+  * chromium-78-gcc-noexcept.patch
+  * chromium-78-gcc-std-vector.patch
+  * chromium-78-icon.patch
+  * chromium-78-include.patch
+  * chromium-78-noexcept.patch
+  * chromium-78-pm-crash.patch
+  * chromium-78-protobuf-export.patch
+- Add new patches:
+  * chromium-79-gcc-alignas.patch
+  * chromium-79-gcc-ambiguous-nodestructor.patch
+  * chromium-79-gcc-name-clash.patch
+  * chromium-79-gcc-permissive.patch
+  * chromium-79-include.patch
+  * chromium-79-system-hb.patch
+- Rebase patches:
+  * chromium-dma-buf.patch
+  * chromium-old-glibc-noexcept.patch
+  * chromium-vaapi-fix.patch
+  * fix_building_widevinecdm_with_chromium.patch
+  * old-libva.patch
+
+-------------------------------------------------------------------

Old:
----
  chromium-77-clang.patch
  chromium-78-gcc-enum-range.patch
  chromium-78-gcc-noexcept.patch
  chromium-78-gcc-std-vector.patch
  chromium-78-icon.patch
  chromium-78-include.patch
  chromium-78-noexcept.patch
  chromium-78-pm-crash.patch
  chromium-78-protobuf-export.patch
  chromium-78.0.3904.108.tar.xz

New:
----
  chromium-79-gcc-alignas.patch
  chromium-79-gcc-ambiguous-nodestructor.patch
  chromium-79-gcc-name-clash.patch
  chromium-79-gcc-permissive.patch
  chromium-79-include.patch
  chromium-79-system-hb.patch
  chromium-79.0.3945.88.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ chromium.spec ++++++
--- /var/tmp/diff_new_pack.QIugbg/_old  2019-12-23 22:41:13.557918757 +0100
+++ /var/tmp/diff_new_pack.QIugbg/_new  2019-12-23 22:41:13.565918760 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package chromium
 #
-# Copyright (c) 2019 SUSE LLC
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -57,7 +57,7 @@
 %bcond_with clang
 %bcond_with wayland
 Name:           chromium
-Version:        78.0.3904.108
+Version:        79.0.3945.88
 Release:        0
 Summary:        Google's open source browser project
 License:        BSD-3-Clause AND LGPL-2.1-or-later
@@ -84,17 +84,14 @@
 Patch9:         chromium-system-libusb.patch
 Patch10:        gcc-enable-lto.patch
 Patch11:        chromium-unbundle-zlib.patch
-Patch12:        chromium-78-noexcept.patch
-Patch13:        chromium-78-gcc-enum-range.patch
-Patch14:        chromium-78-gcc-noexcept.patch
-Patch15:        chromium-78-gcc-std-vector.patch
-Patch16:        chromium-78-icon.patch
-Patch17:        chromium-78-include.patch
-Patch18:        chromium-78-pm-crash.patch
-Patch19:        chromium-78-protobuf-export.patch
-Patch20:        chromium-77-clang.patch
-Patch21:        chromium-old-glibc-noexcept.patch
-Patch22:        chromium-79-icu-65.patch
+Patch12:        chromium-old-glibc-noexcept.patch
+Patch13:        chromium-79-gcc-alignas.patch
+Patch14:        chromium-79-gcc-ambiguous-nodestructor.patch
+Patch15:        chromium-79-gcc-name-clash.patch
+Patch16:        chromium-79-gcc-permissive.patch
+Patch17:        chromium-79-icu-65.patch
+Patch18:        chromium-79-include.patch
+Patch19:        chromium-79-system-hb.patch
 # Google seem not too keen on merging this but GPU accel is quite important
 #  https://chromium-review.googlesource.com/c/chromium/src/+/532294
 #  
https://github.com/saiarcot895/chromium-ubuntu-build/tree/master/debian/patches
@@ -454,6 +451,7 @@
     third_party/swiftshader
     third_party/swiftshader/third_party/llvm-7.0
     third_party/swiftshader/third_party/llvm-subzero
+    third_party/swiftshader/third_party/marl
     third_party/swiftshader/third_party/subzero
     third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1
     third_party/tcmalloc
@@ -528,12 +526,13 @@
 cp -a %{_includedir}/libusb-1.0/libusb.h third_party/libusb/src/libusb/libusb.h
 
 %build
+# GN sets lto on its own and we need just ldflag options, not cflags
+%define _lto_cflags %{nil}
 %if %{with clang}
 export CC=clang
 export CXX=clang++
 %else
 # REDUCE DEBUG as it gets TOO large
-%define _lto_cflags %{nil}
 ARCH_FLAGS="`echo %{optflags} | sed -e 's/^-g / /g' -e 's/ -g / /g' -e 's/ 
-g$//g'`"
 export CXXFLAGS="${ARCH_FLAGS} -fpermissive -Wno-return-type"
 # extra flags to reduce warnings that aren't very useful
@@ -563,6 +562,7 @@
 %endif
 # do not eat all memory
 %limit_build -m 2600
+
 %if %{with lto}
 export LDFLAGS="-flto=%{jobs} --param lto-max-streaming-parallelism=1"
 %endif
@@ -675,6 +675,9 @@
 %if %{with lto}
 myconf_gn+=" gcc_lto=true"
 %endif
+%if %{with system_icu}
+myconf_gn+=" icu_use_data_file=false"
+%endif
 
 # The proprietary codecs just force the chromium to say they can use it and
 # offload the actual computation to the ffmpeg, otherwise the chromium

++++++ chromium-79-gcc-alignas.patch ++++++
Re-use chromium alignas workaround in protobuf.
---

diff --git a/third_party/protobuf/src/google/protobuf/arena.h 
b/third_party/protobuf/src/google/protobuf/arena.h
index dedc221..a8515ce 100644
--- a/third_party/protobuf/src/google/protobuf/arena.h
+++ b/third_party/protobuf/src/google/protobuf/arena.h
@@ -245,7 +245,7 @@ struct ArenaOptions {
 // well as protobuf container types like RepeatedPtrField and Map. The protocol
 // is internal to protobuf and is not guaranteed to be stable. Non-proto types
 // should not rely on this protocol.
-class PROTOBUF_EXPORT alignas(8) Arena final {
+class PROTOBUF_EXPORT PROTOBUF_ALIGNAS(8) Arena final {
  public:
   // Arena constructor taking custom options. See ArenaOptions below for
   // descriptions of the options available.
diff --git a/third_party/protobuf/src/google/protobuf/port_def.inc 
b/third_party/protobuf/src/google/protobuf/port_def.inc
index f1bd85d..6d02b53 100644
--- a/third_party/protobuf/src/google/protobuf/port_def.inc
+++ b/third_party/protobuf/src/google/protobuf/port_def.inc
@@ -528,6 +528,35 @@ PROTOBUF_EXPORT_TEMPLATE_TEST(DEFAULT, 
__declspec(dllimport));
 #undef IN
 #endif  // _MSC_VER
 
+// Specify memory alignment for structs, classes, etc.
+// Use like:
+//   class PROTOBUF_ALIGNAS(16) MyClass { ... }
+//   PROTOBUF_ALIGNAS(16) int array[4];
+//
+// In most places you can use the C++11 keyword "alignas", which is preferred.
+//
+// But compilers have trouble mixing __attribute__((...)) syntax with
+// alignas(...) syntax.
+//
+// Doesn't work in clang or gcc:
+//   struct alignas(16) __attribute__((packed)) S { char c; };
+// Works in clang but not gcc:
+//   struct __attribute__((packed)) alignas(16) S2 { char c; };
+// Works in clang and gcc:
+//   struct alignas(16) S3 { char c; } __attribute__((packed));
+//
+// There are also some attributes that must be specified *before* a class
+// definition: visibility (used for exporting functions/classes) is one of
+// these attributes. This means that it is not possible to use alignas() with a
+// class that is marked as exported.
+#if defined(_MSC_VER)
+#define PROTOBUF_ALIGNAS(byte_alignment) __declspec(align(byte_alignment))
+#elif defined(__GNUC__)
+#define PROTOBUF_ALIGNAS(byte_alignment) 
__attribute__((aligned(byte_alignment)))
+#else
+#define PROTOBUF_ALIGNAS(byte_alignment) alignas(byte_alignment)
+#endif
+
 #if defined(__clang__)
 #pragma clang diagnostic push
 // TODO(gerbens) ideally we cleanup the code. But a cursory try shows many
diff --git a/third_party/protobuf/src/google/protobuf/port_undef.inc 
b/third_party/protobuf/src/google/protobuf/port_undef.inc
index b7e67fe..ba1fffc 100644
--- a/third_party/protobuf/src/google/protobuf/port_undef.inc
+++ b/third_party/protobuf/src/google/protobuf/port_undef.inc
@@ -80,6 +80,7 @@
 #undef PROTOBUF_EXPORT_TEMPLATE_STYLE_MATCH_foj3FJo5StF0OvIzl7oMxA__declspec
 #undef PROTOBUF_EXPORT_TEMPLATE_STYLE_MATCH_DECLSPEC_dllexport
 #undef PROTOBUF_EXPORT_TEMPLATE_STYLE_MATCH_DECLSPEC_dllimport
+#undef PROTOBUF_ALIGNAS
 
 
 
++++++ chromium-79-gcc-ambiguous-nodestructor.patch ++++++
>From af77dc4014ead3d898fdc8a7a70fe5063ac9b102 Mon Sep 17 00:00:00 2001
From: Jose Dapena Paz <jose.dap...@lge.com>
Date: Fri, 25 Oct 2019 19:01:29 +0000
Subject: [PATCH] GCC: use brace-initializer for DohUpgrade vector

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 <erico...@chromium.org>
Commit-Queue: José Dapena Paz <jose.dap...@lge.com>
Cr-Commit-Position: refs/heads/master@{#709569}
---

diff --git a/net/dns/dns_util.cc b/net/dns/dns_util.cc
index 14997c4..637b6f2 100644
--- a/net/dns/dns_util.cc
+++ b/net/dns/dns_util.cc
@@ -144,7 +144,7 @@
   // 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 @@
               {"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;
 }
 
++++++ chromium-79-gcc-name-clash.patch ++++++
>From e925deab264e5ebc3c5c13415aa3d44a746e8d45 Mon Sep 17 00:00:00 2001
From: Jose Dapena Paz <jose.dap...@lge.com>
Date: Fri, 25 Oct 2019 14:53:51 +0000
Subject: [PATCH] GCC: avoid clash of WebThemeEngine::ForcedColors with 
ForcedColors enum class

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 <hara...@chromium.org>
Commit-Queue: José Dapena Paz <jose.dap...@lge.com>
Cr-Commit-Position: refs/heads/master@{#709469}

(backported to M79)
---

Index: chromium-79.0.3945.36/content/child/webthemeengine_impl_android.cc
===================================================================
--- chromium-79.0.3945.36.orig/content/child/webthemeengine_impl_android.cc
+++ chromium-79.0.3945.36/content/child/webthemeengine_impl_android.cc
@@ -228,7 +228,7 @@ void WebThemeEngineAndroid::Paint(
       native_theme_extra_params, NativeColorScheme(color_scheme));
 }
 
-blink::ForcedColors WebThemeEngineAndroid::ForcedColors() const {
+blink::ForcedColors WebThemeEngineAndroid::GetForcedColors() const {
   return forced_colors_;
 }
 
Index: chromium-79.0.3945.36/content/child/webthemeengine_impl_android.h
===================================================================
--- chromium-79.0.3945.36.orig/content/child/webthemeengine_impl_android.h
+++ chromium-79.0.3945.36/content/child/webthemeengine_impl_android.h
@@ -22,7 +22,7 @@ class WebThemeEngineAndroid : public bli
              const blink::WebRect& rect,
              const blink::WebThemeEngine::ExtraParams* extra_params,
              blink::WebColorScheme color_scheme) override;
-  blink::ForcedColors ForcedColors() const override;
+  blink::ForcedColors GetForcedColors() const override;
   void SetForcedColors(const blink::ForcedColors forced_colors) override;
 
  private:
Index: chromium-79.0.3945.36/content/child/webthemeengine_impl_default.cc
===================================================================
--- chromium-79.0.3945.36.orig/content/child/webthemeengine_impl_default.cc
+++ chromium-79.0.3945.36/content/child/webthemeengine_impl_default.cc
@@ -232,7 +232,7 @@ void WebThemeEngineDefault::cacheScrollB
 }
 #endif
 
-blink::ForcedColors WebThemeEngineDefault::ForcedColors() const {
+blink::ForcedColors WebThemeEngineDefault::GetForcedColors() const {
   return ui::NativeTheme::GetInstanceForWeb()->UsesHighContrastColors()
              ? blink::ForcedColors::kActive
              : blink::ForcedColors::kNone;
Index: chromium-79.0.3945.36/content/child/webthemeengine_impl_default.h
===================================================================
--- chromium-79.0.3945.36.orig/content/child/webthemeengine_impl_default.h
+++ chromium-79.0.3945.36/content/child/webthemeengine_impl_default.h
@@ -39,7 +39,7 @@ class WebThemeEngineDefault : public bli
                                     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;
 };
 
Index: chromium-79.0.3945.36/content/child/webthemeengine_impl_mac.cc
===================================================================
--- chromium-79.0.3945.36.orig/content/child/webthemeengine_impl_mac.cc
+++ chromium-79.0.3945.36/content/child/webthemeengine_impl_mac.cc
@@ -6,7 +6,7 @@
 
 namespace content {
 
-blink::ForcedColors WebThemeEngineMac::ForcedColors() const {
+blink::ForcedColors WebThemeEngineMac::GetForcedColors() const {
   return forced_colors_;
 }
 
Index: chromium-79.0.3945.36/content/child/webthemeengine_impl_mac.h
===================================================================
--- chromium-79.0.3945.36.orig/content/child/webthemeengine_impl_mac.h
+++ chromium-79.0.3945.36/content/child/webthemeengine_impl_mac.h
@@ -13,7 +13,7 @@ class WebThemeEngineMac : public blink::
  public:
   ~WebThemeEngineMac() override {}
 
-  blink::ForcedColors ForcedColors() const override;
+  blink::ForcedColors GetForcedColors() const override;
   void SetForcedColors(const blink::ForcedColors forced_colors) override;
 
  private:
Index: 
chromium-79.0.3945.36/third_party/blink/public/platform/web_theme_engine.h
===================================================================
--- 
chromium-79.0.3945.36.orig/third_party/blink/public/platform/web_theme_engine.h
+++ chromium-79.0.3945.36/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) {}
 };
 
Index: chromium-79.0.3945.36/third_party/blink/renderer/core/css/media_values.cc
===================================================================
--- 
chromium-79.0.3945.36.orig/third_party/blink/renderer/core/css/media_values.cc
+++ chromium-79.0.3945.36/third_party/blink/renderer/core/css/media_values.cc
@@ -221,7 +221,7 @@ bool MediaValues::CalculatePrefersReduce
 
 ForcedColors MediaValues::CalculateForcedColors() {
   if (Platform::Current() && Platform::Current()->ThemeEngine())
-    return Platform::Current()->ThemeEngine()->ForcedColors();
+    return Platform::Current()->ThemeEngine()->GetForcedColors();
   else
     return ForcedColors::kNone;
 }
Index: chromium-79.0.3945.36/third_party/blink/renderer/core/dom/document.cc
===================================================================
--- chromium-79.0.3945.36.orig/third_party/blink/renderer/core/dom/document.cc
+++ chromium-79.0.3945.36/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;
 }
 
++++++ chromium-79-gcc-permissive.patch ++++++
>From 528e9a3e1f25bd264549c4c7779748abfd16bb1c Mon Sep 17 00:00:00 2001
From: Jan Wilken Dörrie <jdoer...@chromium.org>
Date: Fri, 18 Oct 2019 11:45:24 +0000
Subject: [PATCH] Reland "GCC: Fix base::internal::InvokeFuncImpl"

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 <jdoer...@chromium.org>
> Reviewed-by: Daniel Cheng <dch...@chromium.org>
> Commit-Queue: Jüri Valdmann <juri.valdm...@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 <dch...@chromium.org>
Commit-Queue: Jan Wilken Dörrie <jdoer...@chromium.org>
Cr-Commit-Position: refs/heads/master@{#707329}
---

diff --git a/base/bind.h b/base/bind.h
index 7a400af..1070ce6 100644
--- a/base/bind.h
+++ b/base/bind.h
@@ -187,18 +187,15 @@
 // 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>
+constexpr auto GetInvokeFunc(std::true_type) {
+  return Invoker::RunOnce;
+}
 
 template <typename Invoker>
-struct InvokeFuncImpl<true, Invoker> {
-  static constexpr auto Value = &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 @@
   // 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(
++++++ chromium-78-include.patch -> chromium-79-include.patch ++++++
--- /work/SRC/openSUSE:Factory/chromium/chromium-78-include.patch       
2019-10-30 14:44:35.369976296 +0100
+++ /work/SRC/openSUSE:Factory/.chromium.new.6675/chromium-79-include.patch     
2019-12-23 22:40:22.297896519 +0100
@@ -1,40 +1,131 @@
-From bbfe2665923225b4a7c436ba2b6c7e5f695f2e52 Mon Sep 17 00:00:00 2001
-From: David Landell <land...@vewd.com>
-Date: Fri, 13 Sep 2019 12:24:13 +0000
-Subject: [PATCH] Add missing include for unique_ptr
-
-Change-Id: I614d2f42868d563eb6a92dfb2aae08286e20d687
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1803137
-Reviewed-by: Henrik Boström <h...@chromium.org>
-Commit-Queue: Henrik Boström <h...@chromium.org>
-Cr-Commit-Position: refs/heads/master@{#696355}
+From f7c177d35242311ea7a2cf49a0980c61664f27ba Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dap...@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
+
+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 <asvitk...@chromium.org>
+Reviewed-by: Alexei Svitkine <asvitk...@chromium.org>
+Cr-Commit-Position: refs/heads/master@{#709472}
 ---
 
-diff --git a/third_party/blink/public/platform/web_rtc_rtp_source.h 
b/third_party/blink/public/platform/web_rtc_rtp_source.h
-index 959440f..c3fd542 100644
---- a/third_party/blink/public/platform/web_rtc_rtp_source.h
-+++ b/third_party/blink/public/platform/web_rtc_rtp_source.h
-@@ -5,6 +5,8 @@
- #ifndef THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_RTC_RTP_SOURCE_H_
- #define THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_RTC_RTP_SOURCE_H_
+diff --git a/ui/gfx/font.cc b/ui/gfx/font.cc
+index 21367fd7..92b159e 100644
+--- a/ui/gfx/font.cc
++++ b/ui/gfx/font.cc
+@@ -4,6 +4,8 @@
  
-+#include <memory>
+ #include "ui/gfx/font.h"
+ 
++#include <algorithm>
 +
- #include "base/optional.h"
- #include "third_party/blink/public/platform/web_common.h"
+ #include "base/strings/utf_string_conversions.h"
+ #include "build/build_config.h"
+ #include "ui/gfx/platform_font.h"
+
+From 97eb905ba262382bc3583078761c68f4452aea71 Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dap...@lge.com>
+Date: Fri, 25 Oct 2019 09:27:53 +0000
+Subject: [PATCH] IWYU: launch_manager.h uses std::vector
+
+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 <lo...@chromium.org>
+Commit-Queue: José Dapena Paz <jose.dap...@lge.com>
+Cr-Commit-Position: refs/heads/master@{#709411}
+---
+
+diff --git a/chrome/browser/apps/launch_service/launch_manager.h 
b/chrome/browser/apps/launch_service/launch_manager.h
+index 00aeb9d..76570ea 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>
  
-Missing include due to reverting ProfileManagerObserver
+ #include "base/macros.h"
+ 
+From e7407ce7fa262e9fd1a19dd0957e5a950520ee3a Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dap...@lge.com>
+Date: Fri, 25 Oct 2019 08:25:45 +0000
+Subject: [PATCH] IWYU: include cstdint in register_context.h as it uses 
uintptr_t
+
+GCC build fix as build fails with this:
+../../base/profiler/register_context.h:31:1: error: ‘uintptr_t’ does not name 
a type; did you mean ‘intptr_t’?
+ uintptr_t& AsUintPtr(T* value) {
+ ^~~~~~~~~
+ intptr_t
+../../base/profiler/register_context.h:110:3: error: ‘uintptr_t’ does not name 
a type; did you mean ‘intptr_t’?
+   uintptr_t stack_pointer;
+   ^~~~~~~~~
+   intptr_t
+../../base/profiler/register_context.h:111:3: error: ‘uintptr_t’ does not name 
a type; did you mean ‘intptr_t’?
+   uintptr_t frame_pointer;
+   ^~~~~~~~~
+   intptr_t
+../../base/profiler/register_context.h:112:3: error: ‘uintptr_t’ does not name 
a type; did you mean ‘intptr_t’?
+   uintptr_t instruction_pointer;
+   ^~~~~~~~~
+   intptr_t
+../../base/profiler/register_context.h:115:8: error: ‘uintptr_t’ does not name 
a type; did you mean ‘intptr_t’?
+ inline uintptr_t& RegisterContextStackPointer(RegisterContext* context) {
+        ^~~~~~~~~
+        intptr_t
+../../base/profiler/register_context.h:119:8: error: ‘uintptr_t’ does not name 
a type; did you mean ‘intptr_t’?
+ inline uintptr_t& RegisterContextFramePointer(RegisterContext* context) {
+        ^~~~~~~~~
+        intptr_t
+../../base/profiler/register_context.h:123:8: error: ‘uintptr_t’ does not name 
a type; did you mean ‘intptr_t’?
+ inline uintptr_t& RegisterContextInstructionPointer(RegisterContext* context) 
{
+        ^~~~~~~~~
+        intptr_t
+
+
+Bug: 819294
+Change-Id: I49567b00a6f021686c52053a22fb9c502c84f1bc
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1879908
+Reviewed-by: Mike Wittman <witt...@chromium.org>
+Commit-Queue: José Dapena Paz <jose.dap...@lge.com>
+Cr-Commit-Position: refs/heads/master@{#709398}
 ---
 
-diff --git a/chrome/browser/web_applications/extensions/bookmark_app_util.cc 
b/chrome/browser/web_applications/extensions/bookmark_app_util.cc
-index ee4b70a..b31e5f5 100644
---- a/chrome/browser/web_applications/extensions/bookmark_app_util.cc
-+++ b/chrome/browser/web_applications/extensions/bookmark_app_util.cc
-@@ -7,6 +7,7 @@
- #include "base/strings/string_piece.h"
- #include "base/values.h"
- #include "chrome/browser/extensions/extension_service.h"
-+#include "chrome/browser/profiles/profile.h"
- #include "chrome/browser/web_applications/components/app_registrar.h"
- #include "chrome/browser/web_applications/components/web_app_provider_base.h"
- #include "chrome/common/chrome_features.h"
+diff --git a/base/profiler/register_context.h 
b/base/profiler/register_context.h
+index 46c4250..7dd86ff 100644
+--- a/base/profiler/register_context.h
++++ b/base/profiler/register_context.h
+@@ -9,6 +9,7 @@
+ #ifndef BASE_PROFILER_REGISTER_CONTEXT_H_
+ #define BASE_PROFILER_REGISTER_CONTEXT_H_
+ 
++#include <cstdint>
+ #include <type_traits>
+ 
+ #include "build/build_config.h"

++++++ chromium-79-system-hb.patch ++++++
diff --git a/components/paint_preview/common/subset_font.cc 
b/components/paint_preview/common/subset_font.cc
index a218d63..6a5bdae 100644
--- a/components/paint_preview/common/subset_font.cc
+++ b/components/paint_preview/common/subset_font.cc
@@ -10,11 +10,12 @@
 #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"
 
+#include <hb-subset.h>
+#include <hb.h>
+
 namespace paint_preview {
 
 namespace {
++++++ chromium-78.0.3904.108.tar.xz -> chromium-79.0.3945.88.tar.xz ++++++
/work/SRC/openSUSE:Factory/chromium/chromium-78.0.3904.108.tar.xz 
/work/SRC/openSUSE:Factory/.chromium.new.6675/chromium-79.0.3945.88.tar.xz 
differ: char 27, line 1

++++++ chromium-dma-buf.patch ++++++
--- /var/tmp/diff_new_pack.QIugbg/_old  2019-12-23 22:41:13.701918819 +0100
+++ /var/tmp/diff_new_pack.QIugbg/_new  2019-12-23 22:41:13.705918821 +0100
@@ -1,9 +1,9 @@
-Index: chromium-76.0.3800.0/ui/gfx/linux/client_native_pixmap_dmabuf.cc
+Index: chromium-79.0.3941.4/ui/gfx/linux/client_native_pixmap_dmabuf.cc
 ===================================================================
---- chromium-76.0.3800.0.orig/ui/gfx/linux/client_native_pixmap_dmabuf.cc
-+++ chromium-76.0.3800.0/ui/gfx/linux/client_native_pixmap_dmabuf.cc
-@@ -24,9 +24,6 @@
- #include "build/build_config.h"
+--- chromium-79.0.3941.4.orig/ui/gfx/linux/client_native_pixmap_dmabuf.cc
++++ chromium-79.0.3941.4/ui/gfx/linux/client_native_pixmap_dmabuf.cc
+@@ -25,9 +25,6 @@
+ #include "ui/gfx/buffer_format_util.h"
  #include "ui/gfx/switches.h"
  
 -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
@@ -12,7 +12,7 @@
  #include <linux/types.h>
  
  struct dma_buf_sync {
-@@ -41,7 +38,6 @@ struct dma_buf_sync {
+@@ -42,7 +39,6 @@ struct dma_buf_sync {
  
  #define DMA_BUF_BASE 'b'
  #define DMA_BUF_IOCTL_SYNC _IOW(DMA_BUF_BASE, 0, struct dma_buf_sync)

++++++ chromium-old-glibc-noexcept.patch ++++++
--- /var/tmp/diff_new_pack.QIugbg/_old  2019-12-23 22:41:13.721918828 +0100
+++ /var/tmp/diff_new_pack.QIugbg/_new  2019-12-23 22:41:13.721918828 +0100
@@ -1,6 +1,7 @@
-diff -up 
chromium-78.0.3904.70/chrome/common/media_router/media_sink.cc.el7-noexcept 
chromium-78.0.3904.70/chrome/common/media_router/media_sink.cc
---- 
chromium-78.0.3904.70/chrome/common/media_router/media_sink.cc.el7-noexcept     
   2019-10-21 15:06:26.000000000 -0400
-+++ chromium-78.0.3904.70/chrome/common/media_router/media_sink.cc     
2019-10-30 09:26:51.339057055 -0400
+Index: chromium-79.0.3941.4/chrome/common/media_router/media_sink.cc
+===================================================================
+--- chromium-79.0.3941.4.orig/chrome/common/media_router/media_sink.cc
++++ chromium-79.0.3941.4/chrome/common/media_router/media_sink.cc
 @@ -19,12 +19,12 @@ MediaSink::MediaSink(const MediaSink::Id
        provider_id_(provider_id) {}
  
@@ -16,9 +17,10 @@
  
  bool MediaSink::IsMaybeCloudSink() const {
    switch (icon_type_) {
-diff -up 
chromium-78.0.3904.70/components/history/core/browser/history_types.cc.el7-noexcept
 chromium-78.0.3904.70/components/history/core/browser/history_types.cc
---- 
chromium-78.0.3904.70/components/history/core/browser/history_types.cc.el7-noexcept
        2019-10-21 15:06:29.000000000 -0400
-+++ chromium-78.0.3904.70/components/history/core/browser/history_types.cc     
2019-10-30 09:26:51.358056614 -0400
+Index: chromium-79.0.3941.4/components/history/core/browser/history_types.cc
+===================================================================
+--- chromium-79.0.3941.4.orig/components/history/core/browser/history_types.cc
++++ chromium-79.0.3941.4/components/history/core/browser/history_types.cc
 @@ -42,7 +42,7 @@ QueryResults::QueryResults(QueryResults&
    Swap(&other);
  }
@@ -37,10 +39,11 @@
  
  // MostVisitedURL 
--------------------------------------------------------------
  
-diff -up 
chromium-78.0.3904.70/components/history/core/browser/history_types.h.el7-noexcept
 chromium-78.0.3904.70/components/history/core/browser/history_types.h
---- 
chromium-78.0.3904.70/components/history/core/browser/history_types.h.el7-noexcept
 2019-10-21 15:06:29.000000000 -0400
-+++ chromium-78.0.3904.70/components/history/core/browser/history_types.h      
2019-10-30 09:26:51.623050465 -0400
-@@ -143,7 +143,7 @@ class QueryResults {
+Index: chromium-79.0.3941.4/components/history/core/browser/history_types.h
+===================================================================
+--- chromium-79.0.3941.4.orig/components/history/core/browser/history_types.h
++++ chromium-79.0.3941.4/components/history/core/browser/history_types.h
+@@ -141,7 +141,7 @@ class QueryResults {
    ~QueryResults();
  
    QueryResults(QueryResults&& other) noexcept;
@@ -49,7 +52,7 @@
  
    void set_reached_beginning(bool reached) { reached_beginning_ = reached; }
    bool reached_beginning() { return reached_beginning_; }
-@@ -278,7 +278,7 @@ struct QueryURLResult {
+@@ -276,7 +276,7 @@ struct QueryURLResult {
    QueryURLResult(const QueryURLResult&);
    QueryURLResult(QueryURLResult&&) noexcept;
    QueryURLResult& operator=(const QueryURLResult&);
@@ -58,9 +61,10 @@
    ~QueryURLResult();
  
    // Indicates whether the call to HistoryBackend::QueryURL was successfull
-diff -up 
chromium-78.0.3904.70/components/history/core/browser/url_row.cc.el7-noexcept 
chromium-78.0.3904.70/components/history/core/browser/url_row.cc
---- 
chromium-78.0.3904.70/components/history/core/browser/url_row.cc.el7-noexcept   
   2019-10-21 15:06:29.000000000 -0400
-+++ chromium-78.0.3904.70/components/history/core/browser/url_row.cc   
2019-10-30 09:26:51.625050418 -0400
+Index: chromium-79.0.3941.4/components/history/core/browser/url_row.cc
+===================================================================
+--- chromium-79.0.3941.4.orig/components/history/core/browser/url_row.cc
++++ chromium-79.0.3941.4/components/history/core/browser/url_row.cc
 @@ -26,7 +26,7 @@ URLRow::~URLRow() {
  }
  
@@ -70,9 +74,10 @@
  
  void URLRow::Swap(URLRow* other) {
    std::swap(id_, other->id_);
-diff -up 
chromium-78.0.3904.70/components/omnibox/browser/suggestion_answer.cc.el7-noexcept
 chromium-78.0.3904.70/components/omnibox/browser/suggestion_answer.cc
---- 
chromium-78.0.3904.70/components/omnibox/browser/suggestion_answer.cc.el7-noexcept
 2019-10-21 15:06:29.000000000 -0400
-+++ chromium-78.0.3904.70/components/omnibox/browser/suggestion_answer.cc      
2019-10-30 09:26:51.627050372 -0400
+Index: chromium-79.0.3941.4/components/omnibox/browser/suggestion_answer.cc
+===================================================================
+--- chromium-79.0.3941.4.orig/components/omnibox/browser/suggestion_answer.cc
++++ chromium-79.0.3941.4/components/omnibox/browser/suggestion_answer.cc
 @@ -60,7 +60,7 @@ SuggestionAnswer::TextField::TextField(T
  SuggestionAnswer::TextField& SuggestionAnswer::TextField::operator=(
      const TextField&) = default;
@@ -82,9 +87,10 @@
  
  // static
  bool SuggestionAnswer::TextField::ParseTextField(const base::Value& 
field_json,
-diff -up 
chromium-78.0.3904.70/components/policy/core/common/policy_map.cc.el7-noexcept 
chromium-78.0.3904.70/components/policy/core/common/policy_map.cc
---- 
chromium-78.0.3904.70/components/policy/core/common/policy_map.cc.el7-noexcept  
   2019-10-21 15:06:29.000000000 -0400
-+++ chromium-78.0.3904.70/components/policy/core/common/policy_map.cc  
2019-10-30 09:26:51.628050349 -0400
+Index: chromium-79.0.3941.4/components/policy/core/common/policy_map.cc
+===================================================================
+--- chromium-79.0.3941.4.orig/components/policy/core/common/policy_map.cc
++++ chromium-79.0.3941.4/components/policy/core/common/policy_map.cc
 @@ -52,7 +52,7 @@ PolicyMap::Entry::Entry(
  PolicyMap::Entry::~Entry() = default;
  
@@ -93,10 +99,11 @@
 +PolicyMap::Entry& PolicyMap::Entry::operator=(Entry&&) = default;
  
  PolicyMap::Entry PolicyMap::Entry::DeepCopy() const {
-   Entry copy;
-diff -up 
chromium-78.0.3904.70/components/search_provider_logos/logo_common.cc.el7-noexcept
 chromium-78.0.3904.70/components/search_provider_logos/logo_common.cc
---- 
chromium-78.0.3904.70/components/search_provider_logos/logo_common.cc.el7-noexcept
 2019-10-30 09:27:30.773143557 -0400
-+++ chromium-78.0.3904.70/components/search_provider_logos/logo_common.cc      
2019-10-30 13:09:43.872691009 -0400
+   Entry copy(level, scope, source, value ? value->CreateDeepCopy() : nullptr,
+Index: chromium-79.0.3941.4/components/search_provider_logos/logo_common.cc
+===================================================================
+--- chromium-79.0.3941.4.orig/components/search_provider_logos/logo_common.cc
++++ chromium-79.0.3941.4/components/search_provider_logos/logo_common.cc
 @@ -14,14 +14,14 @@ LogoMetadata::LogoMetadata() = default;
  LogoMetadata::LogoMetadata(const LogoMetadata&) = default;
  LogoMetadata::LogoMetadata(LogoMetadata&&) noexcept = default;
@@ -123,10 +130,11 @@
  LogoCallbacks::~LogoCallbacks() = default;
  
  }  // namespace search_provider_logos
-diff -up 
chromium-78.0.3904.70/components/signin/public/identity_manager/account_info.cc.el7-noexcept
 chromium-78.0.3904.70/components/signin/public/identity_manager/account_info.cc
---- 
chromium-78.0.3904.70/components/signin/public/identity_manager/account_info.cc.el7-noexcept
       2019-10-21 15:06:30.000000000 -0400
-+++ 
chromium-78.0.3904.70/components/signin/public/identity_manager/account_info.cc 
   2019-10-30 09:26:51.629050326 -0400
-@@ -57,7 +57,7 @@ CoreAccountInfo::CoreAccountInfo(CoreAcc
+Index: 
chromium-79.0.3941.4/components/signin/public/identity_manager/account_info.cc
+===================================================================
+--- 
chromium-79.0.3941.4.orig/components/signin/public/identity_manager/account_info.cc
++++ 
chromium-79.0.3941.4/components/signin/public/identity_manager/account_info.cc
+@@ -58,7 +58,7 @@ CoreAccountInfo::CoreAccountInfo(CoreAcc
  CoreAccountInfo& CoreAccountInfo::operator=(const CoreAccountInfo& other) =
      default;
  
@@ -135,7 +143,7 @@
      default;
  
  bool CoreAccountInfo::IsEmpty() const {
-@@ -74,7 +74,7 @@ AccountInfo::AccountInfo(AccountInfo&& o
+@@ -75,7 +75,7 @@ AccountInfo::AccountInfo(AccountInfo&& o
  
  AccountInfo& AccountInfo::operator=(const AccountInfo& other) = default;
  
@@ -144,9 +152,10 @@
  
  bool AccountInfo::IsEmpty() const {
    return CoreAccountInfo::IsEmpty() && hosted_domain.empty() &&
-diff -up 
chromium-78.0.3904.70/google_apis/gaia/core_account_id.cc.el7-noexcept 
chromium-78.0.3904.70/google_apis/gaia/core_account_id.cc
---- chromium-78.0.3904.70/google_apis/gaia/core_account_id.cc.el7-noexcept     
2019-10-21 15:06:34.000000000 -0400
-+++ chromium-78.0.3904.70/google_apis/gaia/core_account_id.cc  2019-10-30 
09:26:51.630050302 -0400
+Index: chromium-79.0.3941.4/google_apis/gaia/core_account_id.cc
+===================================================================
+--- chromium-79.0.3941.4.orig/google_apis/gaia/core_account_id.cc
++++ chromium-79.0.3941.4/google_apis/gaia/core_account_id.cc
 @@ -14,7 +14,7 @@ CoreAccountId::~CoreAccountId() = defaul
  
  CoreAccountId& CoreAccountId::operator=(const CoreAccountId&) = default;
@@ -156,9 +165,10 @@
  
  CoreAccountId::CoreAccountId(const char* id) : id(id) {}
  
-diff -up chromium-78.0.3904.70/google_apis/gaia/core_account_id.h.el7-noexcept 
chromium-78.0.3904.70/google_apis/gaia/core_account_id.h
---- chromium-78.0.3904.70/google_apis/gaia/core_account_id.h.el7-noexcept      
2019-10-21 15:06:34.000000000 -0400
-+++ chromium-78.0.3904.70/google_apis/gaia/core_account_id.h   2019-10-30 
09:26:51.631050279 -0400
+Index: chromium-79.0.3941.4/google_apis/gaia/core_account_id.h
+===================================================================
+--- chromium-79.0.3941.4.orig/google_apis/gaia/core_account_id.h
++++ chromium-79.0.3941.4/google_apis/gaia/core_account_id.h
 @@ -20,7 +20,7 @@ struct CoreAccountId {
    ~CoreAccountId();
  
@@ -168,10 +178,11 @@
  
    // Those implicit constructor and conversion operator allow to
    // progressively migrate the code to use this struct. Removing
-diff -up chromium-78.0.3904.70/gpu/config/gpu_info.cc.el7-noexcept 
chromium-78.0.3904.70/gpu/config/gpu_info.cc
---- chromium-78.0.3904.70/gpu/config/gpu_info.cc.el7-noexcept  2019-10-21 
15:06:35.000000000 -0400
-+++ chromium-78.0.3904.70/gpu/config/gpu_info.cc       2019-10-30 
09:26:51.633050233 -0400
-@@ -169,7 +169,7 @@ GPUInfo::GPUDevice& GPUInfo::GPUDevice::
+Index: chromium-79.0.3941.4/gpu/config/gpu_info.cc
+===================================================================
+--- chromium-79.0.3941.4.orig/gpu/config/gpu_info.cc
++++ chromium-79.0.3941.4/gpu/config/gpu_info.cc
+@@ -173,7 +173,7 @@ GPUInfo::GPUDevice& GPUInfo::GPUDevice::
      const GPUInfo::GPUDevice& other) = default;
  
  GPUInfo::GPUDevice& GPUInfo::GPUDevice::operator=(
@@ -180,9 +191,10 @@
  
  GPUInfo::GPUInfo()
      : optimus(false),
-diff -up 
chromium-78.0.3904.70/third_party/openscreen/src/osp/public/service_info.h.el7-noexcept
 chromium-78.0.3904.70/third_party/openscreen/src/osp/public/service_info.h
---- 
chromium-78.0.3904.70/third_party/openscreen/src/osp/public/service_info.h.el7-noexcept
    2019-10-21 15:09:14.000000000 -0400
-+++ chromium-78.0.3904.70/third_party/openscreen/src/osp/public/service_info.h 
2019-10-30 09:26:51.634050210 -0400
+Index: 
chromium-79.0.3941.4/third_party/openscreen/src/osp/public/service_info.h
+===================================================================
+--- 
chromium-79.0.3941.4.orig/third_party/openscreen/src/osp/public/service_info.h
++++ chromium-79.0.3941.4/third_party/openscreen/src/osp/public/service_info.h
 @@ -21,7 +21,7 @@ struct ServiceInfo {
    ServiceInfo(ServiceInfo&&) MAYBE_NOEXCEPT = default;
    ServiceInfo(const ServiceInfo&) MAYBE_NOEXCEPT = default;

++++++ chromium-vaapi-fix.patch ++++++
--- /var/tmp/diff_new_pack.QIugbg/_old  2019-12-23 22:41:13.749918840 +0100
+++ /var/tmp/diff_new_pack.QIugbg/_new  2019-12-23 22:41:13.749918840 +0100
@@ -9,11 +9,11 @@
  media/gpu/vaapi/vaapi_wrapper.cc              | 24 +++++++++++++++----
  3 files changed, 42 insertions(+), 5 deletions(-)
 
-Index: chromium-78.0.3887.7/media/gpu/gpu_video_decode_accelerator_factory.cc
+Index: chromium-79.0.3945.36/media/gpu/gpu_video_decode_accelerator_factory.cc
 ===================================================================
---- chromium-78.0.3887.7.orig/media/gpu/gpu_video_decode_accelerator_factory.cc
-+++ chromium-78.0.3887.7/media/gpu/gpu_video_decode_accelerator_factory.cc
-@@ -171,6 +171,8 @@ GpuVideoDecodeAcceleratorFactory::Create
+--- 
chromium-79.0.3945.36.orig/media/gpu/gpu_video_decode_accelerator_factory.cc
++++ chromium-79.0.3945.36/media/gpu/gpu_video_decode_accelerator_factory.cc
+@@ -185,6 +185,8 @@ GpuVideoDecodeAcceleratorFactory::Create
      vda = (this->*create_vda_function)(workarounds, gpu_preferences, 
media_log);
      if (vda && vda->Initialize(config, client))
        return vda;
@@ -22,10 +22,10 @@
    }
  
    return nullptr;
-Index: chromium-78.0.3887.7/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
+Index: chromium-79.0.3945.36/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
 ===================================================================
---- chromium-78.0.3887.7.orig/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-+++ chromium-78.0.3887.7/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
+--- 
chromium-79.0.3945.36.orig/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
++++ chromium-79.0.3945.36/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
 @@ -63,6 +63,9 @@ void ReportToUMA(VAVDADecoderFailure fai
                              VAVDA_DECODER_FAILURES_MAX + 1);
  }
@@ -45,7 +45,7 @@
  }  // namespace
  
  #define RETURN_AND_NOTIFY_ON_FAILURE(result, log, error_code, ret) \
-@@ -635,6 +640,13 @@ void VaapiVideoDecodeAccelerator::Assign
+@@ -637,6 +642,13 @@ void VaapiVideoDecodeAccelerator::Assign
    va_surface_format_ = GetVaFormatForVideoCodecProfile(profile_);
    std::vector<VASurfaceID> va_surface_ids;
  
@@ -59,15 +59,15 @@
    // If we aren't in BufferAllocationMode::kNone, we have to allocate a
    // |vpp_vaapi_wrapper_| for VaapiPicture to DownloadFromSurface() the VA's
    // internal decoded frame.
-@@ -648,6 +660,7 @@ void VaapiVideoDecodeAccelerator::Assign
-       NotifyError(PLATFORM_FAILURE);
-     }
+@@ -654,6 +666,7 @@ void VaapiVideoDecodeAccelerator::Assign
+                                  "Failed to create Context",
+                                  PLATFORM_FAILURE, );
    }
 +  #endif
  
    for (size_t i = 0; i < buffers.size(); ++i) {
      // If we aren't in BufferAllocationMode::kNone, this |picture| is
-@@ -659,9 +672,13 @@ void VaapiVideoDecodeAccelerator::Assign
+@@ -665,9 +678,13 @@ void VaapiVideoDecodeAccelerator::Assign
      PictureBuffer buffer = buffers[i];
      buffer.set_size(requested_pic_size_);
      std::unique_ptr<VaapiPicture> picture = vaapi_picture_factory_->Create(
@@ -81,7 +81,7 @@
          make_context_current_cb_, bind_image_cb_, buffer);
      RETURN_AND_NOTIFY_ON_FAILURE(picture, "Failed creating a VaapiPicture",
                                   PLATFORM_FAILURE, );
-@@ -1086,6 +1103,9 @@ VaapiVideoDecodeAccelerator::GetSupporte
+@@ -1093,6 +1110,9 @@ VaapiVideoDecodeAccelerator::GetSupporte
  
  VaapiVideoDecodeAccelerator::BufferAllocationMode
  VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() {
@@ -91,7 +91,7 @@
    // TODO(crbug.com/912295): Enable a better BufferAllocationMode for IMPORT
    // |output_mode_| as well.
    if (output_mode_ == VideoDecodeAccelerator::Config::OutputMode::IMPORT)
-@@ -1121,6 +1141,7 @@ VaapiVideoDecodeAccelerator::DecideBuffe
+@@ -1128,6 +1148,7 @@ VaapiVideoDecodeAccelerator::DecideBuffe
      return BufferAllocationMode::kReduced;
  
    return BufferAllocationMode::kSuperReduced;
@@ -99,11 +99,11 @@
  }
  
  bool 
VaapiVideoDecodeAccelerator::IsBufferAllocationModeReducedOrSuperReduced()
-Index: chromium-78.0.3887.7/media/gpu/vaapi/vaapi_wrapper.cc
+Index: chromium-79.0.3945.36/media/gpu/vaapi/vaapi_wrapper.cc
 ===================================================================
---- chromium-78.0.3887.7.orig/media/gpu/vaapi/vaapi_wrapper.cc
-+++ chromium-78.0.3887.7/media/gpu/vaapi/vaapi_wrapper.cc
-@@ -328,6 +328,10 @@ void VADisplayState::PreSandboxInitializ
+--- chromium-79.0.3945.36.orig/media/gpu/vaapi/vaapi_wrapper.cc
++++ chromium-79.0.3945.36/media/gpu/vaapi/vaapi_wrapper.cc
+@@ -344,6 +344,10 @@ void VADisplayState::PreSandboxInitializ
        base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE);
    if (drm_file.IsValid())
      VADisplayState::Get()->SetDrmFd(drm_file.GetPlatformFile());
@@ -114,7 +114,7 @@
  }
  
  VADisplayState::VADisplayState()
-@@ -362,10 +366,11 @@ bool VADisplayState::InitializeOnce() {
+@@ -378,10 +382,11 @@ bool VADisplayState::InitializeOnce() {
      case gl::kGLImplementationDesktopGL:
  #if defined(USE_X11)
        va_display_ = vaGetDisplay(gfx::GetXDisplay());
@@ -129,7 +129,7 @@
        break;
      // Cannot infer platform from GL, try all available displays
      case gl::kGLImplementationNone:
-@@ -398,8 +403,17 @@ bool VADisplayState::InitializeOnce() {
+@@ -414,8 +419,17 @@ bool VADisplayState::InitializeOnce() {
    int major_version, minor_version;
    VAStatus va_res = vaInitialize(va_display_, &major_version, &minor_version);
    if (va_res != VA_STATUS_SUCCESS) {

++++++ fix_building_widevinecdm_with_chromium.patch ++++++
--- /var/tmp/diff_new_pack.QIugbg/_old  2019-12-23 22:41:13.781918854 +0100
+++ /var/tmp/diff_new_pack.QIugbg/_new  2019-12-23 22:41:13.781918854 +0100
@@ -1,7 +1,7 @@
-Index: chromium-71.0.3578.80/third_party/widevine/cdm/widevine_cdm_version.h
+Index: chromium-79.0.3941.4/third_party/widevine/cdm/widevine_cdm_version.h
 ===================================================================
---- chromium-71.0.3578.80.orig/third_party/widevine/cdm/widevine_cdm_version.h
-+++ chromium-71.0.3578.80/third_party/widevine/cdm/widevine_cdm_version.h
+--- chromium-79.0.3941.4.orig/third_party/widevine/cdm/widevine_cdm_version.h
++++ chromium-79.0.3941.4/third_party/widevine/cdm/widevine_cdm_version.h
 @@ -11,5 +11,6 @@
  // If the Widevine CDM is available define the following:
  //  - WIDEVINE_CDM_VERSION_STRING (with the version of the CDM that's 
available
@@ -9,16 +9,3 @@
 +#define WIDEVINE_CDM_VERSION_STRING "unknown"
  
  #endif  // WIDEVINE_CDM_VERSION_H_
-Index: chromium-71.0.3578.80/chrome/common/chrome_content_client.cc
-===================================================================
---- chromium-71.0.3578.80.orig/chrome/common/chrome_content_client.cc
-+++ chromium-71.0.3578.80/chrome/common/chrome_content_client.cc
-@@ -99,7 +99,7 @@
- // Registers Widevine CDM if Widevine is enabled, the Widevine CDM is
- // bundled and not a component. When the Widevine CDM is a component, it is
- // registered in widevine_cdm_component_installer.cc.
--#if BUILDFLAG(BUNDLE_WIDEVINE_CDM) && 
!BUILDFLAG(ENABLE_WIDEVINE_CDM_COMPONENT)
-+#if BUILDFLAG(ENABLE_WIDEVINE) && !BUILDFLAG(ENABLE_WIDEVINE_CDM_COMPONENT)
- #define REGISTER_BUNDLED_WIDEVINE_CDM
- #include "third_party/widevine/cdm/widevine_cdm_common.h"  // nogncheck
- // TODO(crbug.com/663554): Needed for WIDEVINE_CDM_VERSION_STRING. Support

++++++ old-libva.patch ++++++
--- /var/tmp/diff_new_pack.QIugbg/_old  2019-12-23 22:41:13.809918866 +0100
+++ /var/tmp/diff_new_pack.QIugbg/_new  2019-12-23 22:41:13.809918866 +0100
@@ -1,8 +1,8 @@
-Index: chromium-76.0.3809.12/media/gpu/vaapi/vaapi_wrapper.cc
+Index: chromium-79.0.3945.36/media/gpu/vaapi/vaapi_wrapper.cc
 ===================================================================
---- chromium-76.0.3809.12.orig/media/gpu/vaapi/vaapi_wrapper.cc
-+++ chromium-76.0.3809.12/media/gpu/vaapi/vaapi_wrapper.cc
-@@ -63,6 +63,10 @@
+--- chromium-79.0.3945.36.orig/media/gpu/vaapi/vaapi_wrapper.cc
++++ chromium-79.0.3945.36/media/gpu/vaapi/vaapi_wrapper.cc
+@@ -65,6 +65,10 @@
  #include "ui/ozone/public/surface_factory_ozone.h"
  #endif
  
@@ -13,7 +13,7 @@
  using media_gpu_vaapi::kModuleVa;
  using media_gpu_vaapi::kModuleVa_drm;
  #if defined(USE_X11)
-@@ -351,10 +355,6 @@ bool VADisplayState::Initialize() {
+@@ -367,10 +371,6 @@ bool VADisplayState::Initialize() {
  }
  
  bool VADisplayState::InitializeOnce() {
@@ -24,10 +24,30 @@
    switch (gl::GetGLImplementation()) {
      case gl::kGLImplementationEGLGLES2:
        va_display_ = vaGetDisplayDRM(drm_fd_.get());
-Index: chromium-76.0.3809.12/media/gpu/vaapi/vaapi_jpeg_decoder.cc
+@@ -1502,7 +1502,7 @@ VaapiWrapper::ExportVASurfaceAsNativePix
+     LOG(ERROR) << "Cannot export an invalid surface";
+     return nullptr;
+   }
+-
++#if VA_MAJOR_VERSION >= 2 || (VA_MAJOR_VERSION == 1 && VA_MINOR_VERSION >= 2)
+   VADRMPRIMESurfaceDescriptor descriptor;
+   {
+     base::AutoLock auto_lock(*va_lock_);
+@@ -1595,6 +1595,10 @@ VaapiWrapper::ExportVASurfaceAsNativePix
+   exported_pixmap->pixmap = base::MakeRefCounted<gfx::NativePixmapDmaBuf>(
+       scoped_va_surface.size(), buffer_format, std::move(handle));
+   return exported_pixmap;
++#else
++  LOG(ERROR) << "Exporting a surface with FOURCC has been disabled on old 
libva";
++  return nullptr;
++#endif
+ }
+ 
+ bool VaapiWrapper::SyncSurface(VASurfaceID va_surface_id) {
+Index: chromium-79.0.3945.36/media/gpu/vaapi/vaapi_jpeg_decoder.cc
 ===================================================================
---- chromium-76.0.3809.12.orig/media/gpu/vaapi/vaapi_jpeg_decoder.cc
-+++ chromium-76.0.3809.12/media/gpu/vaapi/vaapi_jpeg_decoder.cc
+--- chromium-79.0.3945.36.orig/media/gpu/vaapi/vaapi_jpeg_decoder.cc
++++ chromium-79.0.3945.36/media/gpu/vaapi/vaapi_jpeg_decoder.cc
 @@ -20,6 +20,10 @@
  #include "media/parsers/jpeg_parser.h"
  #include "ui/gfx/geometry/size.h"
@@ -39,13 +59,13 @@
  namespace media {
  
  namespace {
-Index: chromium-76.0.3809.12/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc
+Index: chromium-79.0.3945.36/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc
 ===================================================================
---- 
chromium-76.0.3809.12.orig/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc
-+++ chromium-76.0.3809.12/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc
+--- 
chromium-79.0.3945.36.orig/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc
++++ chromium-79.0.3945.36/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc
 @@ -44,6 +44,10 @@
- #include "ui/gfx/linux/native_pixmap_dmabuf.h"
- #include "ui/gfx/native_pixmap.h"
+ #include "ui/gfx/geometry/size.h"
+ #include "ui/gfx/gpu_memory_buffer.h"
  
 +#ifndef VA_FOURCC_I420
 +#define VA_FOURCC_I420 0x30323449
@@ -54,27 +74,21 @@
  namespace media {
  
  namespace {
-diff --git a/media/gpu/vaapi/vaapi_wrapper.cc 
b/media/gpu/vaapi/vaapi_wrapper.cc
-index 82f2b3c154f6..5edaa92e7380 100644
---- a/media/gpu/vaapi/vaapi_wrapper.cc
-+++ b/media/gpu/vaapi/vaapi_wrapper.cc
-@@ -1456,7 +1456,7 @@ VaapiWrapper::ExportVASurfaceAsNativePixmapDmaBuf(
-     LOG(ERROR) << "Cannot export an invalid surface";
-     return nullptr;
-   }
--
-+#if VA_MAJOR_VERSION >= 2 || (VA_MAJOR_VERSION == 1 && VA_MINOR_VERSION >= 2)
-   VADRMPRIMESurfaceDescriptor descriptor;
-   {
-     base::AutoLock auto_lock(*va_lock_);
-@@ -1549,6 +1549,10 @@ VaapiWrapper::ExportVASurfaceAsNativePixmapDmaBuf(
-   exported_pixmap->pixmap = base::MakeRefCounted<gfx::NativePixmapDmaBuf>(
-       scoped_va_surface.size(), buffer_format, std::move(handle));
-   return exported_pixmap;
-+#else
-+  LOG(ERROR) << "Exporting a surface with FOURCC has been disabled on old 
libva";
-+  return nullptr;
+Index: chromium-79.0.3945.36/media/gpu/chromeos/fourcc.cc
+===================================================================
+--- chromium-79.0.3945.36.orig/media/gpu/chromeos/fourcc.cc
++++ chromium-79.0.3945.36/media/gpu/chromeos/fourcc.cc
+@@ -15,6 +15,13 @@
+ #include <va/va.h>
+ #endif  // BUILDFLAG(USE_VAAPI)
+ 
++#ifndef VA_FOURCC_I420
++#define VA_FOURCC_I420 0x30323449
 +#endif
- }
++#ifndef VA_FOURCC_NV21
++#define VA_FOURCC_NV21 0x3132564E
++#endif
++
+ namespace media {
  
- bool VaapiWrapper::SyncSurface(VASurfaceID va_surface_id) {
+ Fourcc::Fourcc() : value_(Fourcc::INVALID) {}


Reply via email to