[chromium-libs-media-freeworld: 196/259] 75.0.3770.80
by Nicolas Chauvet
commit 43b2c19f2ea012c08a1d9e5498749ac818e948a7
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Mon Jun 10 14:36:48 2019 -0400
75.0.3770.80
.gitignore | 1 +
chromium-67.0.3396.99-py3fix.patch | 12 -
chromium-74-2f28731.patch | 324 ------------
chromium-74-7685422.patch | 12 -
chromium-74-c2c467f.patch | 75 ---
chromium-74-e1b1f3a.patch | 587 ---------------------
...mium-74.0.3729.169-glibc-2.29-clone-vfork.patch | 50 --
chromium-75.0.3770.80-SIOCGSTAMP.patch | 15 +
...ium-75.0.3770.80-aeed4d-gcc-dcheck_ne-fix.patch | 14 +
chromium-75.0.3770.80-gcc-no-assume.patch | 21 +
chromium-75.0.3770.80-no-zlib-mangle.patch | 14 +
chromium-75.0.3770.80-pure-virtual-crash-fix.patch | 24 +
chromium-75.0.3770.80-revert-daff6b.patch | 13 +
...m-75.0.3770.80-vaapi-libva1-compatibility.patch | 14 +
chromium.spec | 71 +--
clean_ffmpeg.sh | 1 +
enable-vaapi.patch | 50 +-
quiche-00f47df.patch | 38 --
sources | 2 +-
19 files changed, 184 insertions(+), 1154 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index e0568e7..3b0fcbc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -78,3 +78,4 @@
/chromium-73.0.3683.86-clean.tar.xz
/chromium-73.0.3683.103-clean.tar.xz
/chromium-74.0.3729.169-clean.tar.xz
+/chromium-75.0.3770.80-clean.tar.xz
diff --git a/chromium-75.0.3770.80-SIOCGSTAMP.patch b/chromium-75.0.3770.80-SIOCGSTAMP.patch
new file mode 100644
index 0000000..0ef1e7f
--- /dev/null
+++ b/chromium-75.0.3770.80-SIOCGSTAMP.patch
@@ -0,0 +1,15 @@
+diff -up chromium-75.0.3770.80/third_party/webrtc/rtc_base/physical_socket_server.h.SIOCGSTAMP chromium-75.0.3770.80/third_party/webrtc/rtc_base/physical_socket_server.h
+--- chromium-75.0.3770.80/third_party/webrtc/rtc_base/physical_socket_server.h.SIOCGSTAMP 2019-06-06 10:04:57.050403639 -0400
++++ chromium-75.0.3770.80/third_party/webrtc/rtc_base/physical_socket_server.h 2019-06-06 10:06:03.975121688 -0400
+@@ -16,6 +16,11 @@
+ #define WEBRTC_USE_EPOLL 1
+ #endif
+
++// for SIOCGSTAMP in Linux 5.2
++#if defined(WEBRTC_LINUX)
++#include <linux/sockios.h>
++#endif
++
+ #include <memory>
+ #include <set>
+ #include <vector>
diff --git a/chromium-75.0.3770.80-aeed4d-gcc-dcheck_ne-fix.patch b/chromium-75.0.3770.80-aeed4d-gcc-dcheck_ne-fix.patch
new file mode 100644
index 0000000..2a8ac2f
--- /dev/null
+++ b/chromium-75.0.3770.80-aeed4d-gcc-dcheck_ne-fix.patch
@@ -0,0 +1,14 @@
+diff -up chromium-75.0.3770.80/cc/scheduler/compositor_frame_reporting_controller.cc.gcc-dcheck_ne-fix chromium-75.0.3770.80/cc/scheduler/compositor_frame_reporting_controller.cc
+--- chromium-75.0.3770.80/cc/scheduler/compositor_frame_reporting_controller.cc.gcc-dcheck_ne-fix 2019-06-06 12:42:27.431575032 -0400
++++ chromium-75.0.3770.80/cc/scheduler/compositor_frame_reporting_controller.cc 2019-06-06 12:43:05.692848409 -0400
+@@ -31,8 +31,8 @@ void CompositorFrameReportingController:
+
+ void CompositorFrameReportingController::WillBeginMainFrame() {
+ DCHECK(reporters_[PipelineStage::kBeginImplFrame]);
+- DCHECK_NE(reporters_[PipelineStage::kBeginMainFrame],
+- reporters_[PipelineStage::kBeginImplFrame]);
++ DCHECK(reporters_[PipelineStage::kBeginMainFrame] !=
++ reporters_[PipelineStage::kBeginImplFrame]);
+ reporters_[PipelineStage::kBeginImplFrame]->StartStage(
+ "SendBeginMainFrameToCommit");
+ AdvanceReporterStage(PipelineStage::kBeginImplFrame,
diff --git a/chromium-75.0.3770.80-gcc-no-assume.patch b/chromium-75.0.3770.80-gcc-no-assume.patch
new file mode 100644
index 0000000..0bbb08f
--- /dev/null
+++ b/chromium-75.0.3770.80-gcc-no-assume.patch
@@ -0,0 +1,21 @@
+diff -up chromium-75.0.3770.80/third_party/angle/src/common/debug.h.gcc-assume chromium-75.0.3770.80/third_party/angle/src/common/debug.h
+--- chromium-75.0.3770.80/third_party/angle/src/common/debug.h.gcc-assume 2019-06-06 17:38:01.876631704 -0400
++++ chromium-75.0.3770.80/third_party/angle/src/common/debug.h 2019-06-07 09:30:06.205446547 -0400
+@@ -248,7 +248,7 @@ std::ostream &FmtHex(std::ostream &os, T
+ # define EVENT(message, ...) (void(0))
+ #endif
+
+-#if defined(COMPILER_GCC) || defined(__clang__)
++#if defined(__GNUC__)
+ # define ANGLE_CRASH() __builtin_trap()
+ #else
+ # define ANGLE_CRASH() ((void)(*(volatile char *)0 = 0)), __assume(0)
+@@ -336,7 +336,7 @@ std::ostream &FmtHex(std::ostream &os, T
+ # define ANGLE_ENABLE_STRUCT_PADDING_WARNINGS \
+ _Pragma("clang diagnostic push") _Pragma("clang diagnostic error \"-Wpadded\"")
+ # define ANGLE_DISABLE_STRUCT_PADDING_WARNINGS _Pragma("clang diagnostic pop")
+-#elif defined(COMPILER_GCC)
++#elif defined(__GNUC__)
+ # define ANGLE_ENABLE_STRUCT_PADDING_WARNINGS \
+ _Pragma("GCC diagnostic push") _Pragma("GCC diagnostic error \"-Wpadded\"")
+ # define ANGLE_DISABLE_STRUCT_PADDING_WARNINGS _Pragma("GCC diagnostic pop")
diff --git a/chromium-75.0.3770.80-no-zlib-mangle.patch b/chromium-75.0.3770.80-no-zlib-mangle.patch
new file mode 100644
index 0000000..998be67
--- /dev/null
+++ b/chromium-75.0.3770.80-no-zlib-mangle.patch
@@ -0,0 +1,14 @@
+diff -up chromium-75.0.3770.80/third_party/zlib/zconf.h.nozmangle chromium-75.0.3770.80/third_party/zlib/zconf.h
+--- chromium-75.0.3770.80/third_party/zlib/zconf.h.nozmangle 2019-06-05 11:12:30.420412467 -0400
++++ chromium-75.0.3770.80/third_party/zlib/zconf.h 2019-06-05 11:17:43.512683058 -0400
+@@ -8,10 +8,6 @@
+ #ifndef ZCONF_H
+ #define ZCONF_H
+
+-/* This include does prefixing as below, but with an updated set of names. Also
+- * sets up export macros in component builds. */
+-#include "chromeconf.h"
+-
+ /*
+ * If you *really* need a unique prefix for all types and library functions,
+ * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
diff --git a/chromium-75.0.3770.80-pure-virtual-crash-fix.patch b/chromium-75.0.3770.80-pure-virtual-crash-fix.patch
new file mode 100644
index 0000000..06c909f
--- /dev/null
+++ b/chromium-75.0.3770.80-pure-virtual-crash-fix.patch
@@ -0,0 +1,24 @@
+diff -up chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.cc.pure-virtual-fix chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.cc
+--- chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.cc.pure-virtual-fix 2019-06-07 15:03:43.302202979 -0400
++++ chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.cc 2019-06-07 15:04:25.140393048 -0400
+@@ -116,4 +116,9 @@ void RenderProcessUserData::RenderProces
+ base::Unretained(process_node_.get()), info.exit_code));
+ }
+
++void RenderProcessUserData::RenderProcessHostDestroyed(
++ content::RenderProcessHost* host) {
++ host->RemoveUserData(kRenderProcessUserDataKey);
++}
++
+ } // namespace performance_manager
+diff -up chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.h.pure-virtual-fix chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.h
+--- chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.h.pure-virtual-fix 2019-06-07 15:04:43.530039597 -0400
++++ chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.h 2019-06-07 15:05:13.770458374 -0400
+@@ -47,6 +47,7 @@ class RenderProcessUserData : public bas
+ void RenderProcessExited(
+ content::RenderProcessHost* host,
+ const content::ChildProcessTerminationInfo& info) override;
++ void RenderProcessHostDestroyed(content::RenderProcessHost* host) override;
+
+ // All instances are linked together in a doubly linked list to allow orderly
+ // destruction at browser shutdown time.
diff --git a/chromium-75.0.3770.80-revert-daff6b.patch b/chromium-75.0.3770.80-revert-daff6b.patch
new file mode 100644
index 0000000..f996898
--- /dev/null
+++ b/chromium-75.0.3770.80-revert-daff6b.patch
@@ -0,0 +1,13 @@
+diff -up chromium-75.0.3770.80/components/omnibox/browser/autocomplete_match.cc.revert-daff6b chromium-75.0.3770.80/components/omnibox/browser/autocomplete_match.cc
+--- chromium-75.0.3770.80/components/omnibox/browser/autocomplete_match.cc.revert-daff6b 2019-06-06 14:54:13.819190586 -0400
++++ chromium-75.0.3770.80/components/omnibox/browser/autocomplete_match.cc 2019-06-06 14:54:31.892839991 -0400
+@@ -154,8 +154,7 @@ AutocompleteMatch::AutocompleteMatch(con
+ additional_info(match.additional_info),
+ duplicate_matches(match.duplicate_matches) {}
+
+-AutocompleteMatch::AutocompleteMatch(AutocompleteMatch&& match) noexcept =
+- default;
++AutocompleteMatch::AutocompleteMatch(AutocompleteMatch&& match) = default;
+
+ AutocompleteMatch::~AutocompleteMatch() {
+ }
diff --git a/chromium-75.0.3770.80-vaapi-libva1-compatibility.patch b/chromium-75.0.3770.80-vaapi-libva1-compatibility.patch
new file mode 100644
index 0000000..dc0bfcb
--- /dev/null
+++ b/chromium-75.0.3770.80-vaapi-libva1-compatibility.patch
@@ -0,0 +1,14 @@
+diff -up chromium-75.0.3770.80/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc.va1compat chromium-75.0.3770.80/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc
+--- chromium-75.0.3770.80/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc.va1compat 2019-06-05 11:35:57.274466969 -0400
++++ chromium-75.0.3770.80/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc 2019-06-05 11:36:17.201067326 -0400
+@@ -39,6 +39,10 @@ enum VAJDADecoderFailure {
+ VAJDA_DECODER_FAILURES_MAX,
+ };
+
++#ifndef VA_FOURCC_I420
++#define VA_FOURCC_I420 VA_FOURCC('I', '4', '2', '0')
++#endif
++
+ static void ReportToVAJDADecoderFailureUMA(VAJDADecoderFailure failure) {
+ UMA_HISTOGRAM_ENUMERATION("Media.VAJDA.DecoderFailure", failure,
+ VAJDA_DECODER_FAILURES_MAX + 1);
diff --git a/chromium.spec b/chromium.spec
index 886e509..7dd7d6d 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -12,6 +12,9 @@
# We usually want this.
%global build_headless 1
+# We'd like to always have this on.
+%global use_vaapi 0
+
# NEVER EVER EVER turn this on in official builds
%global freeworld 0
%if %{freeworld}
@@ -51,9 +54,9 @@
%global __provides_exclude_from %{chromium_path}/.*\\.so|%{chromium_path}/lib/.*\\.so|%{chromium_path}/lib/.*\\.so.*
%if 0%{?rhel} == 7
-%global privlibs libEGL|libGLESv2|libVkICD_mock_icd|libVkLayer_core_validation|libVkLayer_object_lifetimes|libVkLayer_stateless_validation|libVkLayer_thread_safety|libVkLayer_unique_objects|libaccessibility|libandroid_mojo_bindings_shared|libanimation|libapdu|libaura|libaura_extra|libbase|libbase_i18n|libbindings|libbindings_base|libblink_android_mojo_bindings_shared|libblink_common|libblink_controller|libblink_core|libblink_core_mojo_bindings_shared|libblink_embedded_frame_sink_mojo_bindings_shared|libblink_modules|libblink_mojo_bindings_shared|libblink_platform|libbluetooth|libboringssl|libbrowser_ui_views|libcaptive_portal|libcapture_base|libcapture_lib|libcbor|libcc|libcc_animation|libcc_base|libcc_debug|libcc_mojo_embedder|libcc_paint|libcdm_manager|libcertificate_matching|libchrome_features|libchromium_sqlite3|libclearkeycdm|libclient|libcloud_policy_proto_generated_compile|libcodec|libcolor_space|libcommon|libcompositor|libcontent|libcontent_common_mojo_bindings_shared|libcon
tent_public_common_mojo_bindings_shared|libcontent_service_cpp|libcontent_service_mojom|libcontent_service_mojom_shared|libcrash_key|libcrcrypto|libdbus|libdbus_thread_linux|libdevice_base|libdevice_event_log|libdevice_features|libdevice_gamepad|libdevice_vr|libdevice_vr_mojo_bindings|libdevice_vr_mojo_bindings_blink|libdevice_vr_mojo_bindings_shared|libdevices|libdiscardable_memory_client|libdiscardable_memory_common|libdiscardable_memory_service|libdisplay|libdisplay_types|libdisplay_util|libdomain_reliability|libembedder|libembedder_switches|libevents|libevents_base|libevents_devices_x11|libevents_ozone_layout|libevents_x|libextras|libfido|libfingerprint|libfreetype_harfbuzz|libgamepad_mojom|libgamepad_mojom_blink|libgamepad_mojom_shared|libgamepad_shared_typemap_traits|libgcm|libgeometry|libgeometry_skia|libgesture_detection|libgfx|libgfx_ipc|libgfx_ipc_buffer_types|libgfx_ipc_color|libgfx_ipc_geometry|libgfx_ipc_skia|libgfx_switches|libgfx_x11|libgin|libgl_in_process_context|li
bgl_init|libgl_wrapper|libgles2|libgles2_implementation|libgles2_utils|libgpu|libgpu_ipc_service|libgtkui|libheadless|libhost|libicui18n|libicuuc|libinterfaces_shared|libipc|libipc_mojom|libipc_mojom_shared|libkeycodes_x11|libkeyed_service_content|libkeyed_service_core|liblearning_common|liblearning_impl|libleveldatabase|liblive_tab_count_metrics|libmanager|libmedia_blink|libmedia_filters_jpeg_parser|libmedia_gpu|libmedia_mojo_services|libmedia_session_cpp|libmedia_webrtc|libmemory_instrumentation|libmessage_center|libmessage_support|libmetrics_cpp|libmidi|libmirclient.so.9|libmirroring_service|libmojo_base_lib|libmojo_base_mojom|libmojo_base_mojom_blink|libmojo_base_mojom_shared|libmojo_base_shared_typemap_traits|libmojo_core_embedder|libmojo_core_embedder_internal|libmojo_core_ports|libmojo_cpp_platform|libmojo_ime_lib|libmojo_mojom_bindings|libmojo_mojom_bindings_shared|libmojo_public_system|libmojo_public_system_cpp|libmojom_core_shared|libmojom_mhtml_load_result_shared|libmojom
_modules_shared|libmojom_platform_shared|libmpris|libnative_theme|libnet|libnet_with_v8|libnetwork_cpp|libnetwork_cpp_base|libnetwork_service|libnetwork_session_configurator|libonc|libos_crypt|libperfetto|libplatform|libplatform_window_handler_libs|libpolicy_component|libpolicy_proto|libppapi_host|libppapi_proxy|libppapi_shared|libprefs|libprinting|libprotobuf_lite|libproxy_config|libpublic|librange|libraster|libresource_coordinator_cpp_base|libresource_coordinator_cpp_features|libresource_coordinator_public_mojom|libresource_coordinator_public_mojom_blink|libresource_coordinator_public_mojom_shared|libsandbox|libsandbox_services|libscheduling_metrics|libseccomp_bpf|libservice|libservice_manager_cpp|libservice_manager_cpp_types|libservice_manager_mojom|libservice_manager_mojom_blink|libservice_manager_mojom_constants|libservice_manager_mojom_constants_blink|libservice_manager_mojom_constants_shared|libservice_manager_mojom_shared|libservice_manager_mojom_traits|libsessions|libshared
_memory_support|libshell_dialogs|libskia|libsnapshot|libspeech_recognition_error_code_mojom|libspeech_recognition_error_code_mojom_blink|libspeech_recognition_error_code_mojom_shared|libsql|libstartup_tracing|libstorage_browser|libstorage_common|libstub_window|libsuid_sandbox_client|libsurface|libtracing|libtracing_cpp|libtracing_mojom|libtracing_mojom_shared|libui_accessibility_ax_mojom|libui_accessibility_ax_mojom_blink|libui_accessibility_ax_mojom_shared|libui_base|libui_base_clipboard|libui_base_clipboard_types|libui_base_features|libui_base_ime|libui_base_ime_linux|libui_base_ime_types|libui_base_x|libui_data_pack|libui_devtools|libui_message_center_cpp|libui_touch_selection|libui_views_mus_lib|liburl|liburl_ipc|liburl_matcher|libusb_shared|libuser_manager|libuser_prefs|libv8|libv8_libbase|libv8_libplatform|libviews|libviz_common|libviz_resource_format_utils|libviz_vulkan_context_provider|libvr_base|libvr_common|libvulkan_init|libvulkan_wrapper|libvulkan_x11|libweb_dialogs|libw
eb_feature_mojo_bindings_mojom|libweb_feature_mojo_bindings_mojom_blink|libweb_feature_mojo_bindings_mojom_shared|libwebdata_common|libwebgpu|libwebview|libwm|libwm_public|libwtf|libx11_events_platform|libx11_window|libzygote|libmedia|libffmpeg|libfontconfig
+%global privlibs libEGL|libGLESv2|libVkICD_mock_icd|libVkLayer_core_validation|libVkLayer_object_lifetimes|libVkLayer_stateless_validation|libVkLayer_thread_safety|libVkLayer_unique_objects|libaccessibility|libandroid_mojo_bindings_shared|libanimation|libapdu|libaura|libaura_extra|libauthenticator_test_mojo_bindings_shared|libbase|libbase_i18n|libbindings|libbindings_base|libblink_common|libblink_controller|libblink_core|libblink_embedded_frame_sink_mojo_bindings_shared|libblink_features|libblink_modules|libblink_mojo_bindings_shared|libblink_mojom_broadcastchannel_bindings_shared|libblink_platform|libbluetooth|libboringssl|libbrowser_ui_views|libcaptive_portal|libcapture_base|libcapture_lib|libcbor|libcc|libcc_animation|libcc_base|libcc_debug|libcc_mojo_embedder|libcc_paint|libcdm_manager|libcertificate_matching|libchrome_features|libchromium_sqlite3|libclearkeycdm|libclient|libcloud_policy_proto_generated_compile|libcodec|libcolor_space|libcommon|libcompositor|libcontent|libconten
t_common_mojo_bindings_shared|libcontent_public_common_mojo_bindings_shared|libcontent_service_cpp|libcontent_service_mojom|libcontent_service_mojom_shared|libcrash_key|libcrcrypto|libdbus|libdbus_thread_linux|libdevice_base|libdevice_event_log|libdevice_features|libdevice_gamepad|libdevice_vr|libdevice_vr_mojo_bindings|libdevice_vr_mojo_bindings_blink|libdevice_vr_mojo_bindings_shared|libdevices|libdiscardable_memory_client|libdiscardable_memory_common|libdiscardable_memory_service|libdisplay|libdisplay_types|libdisplay_util|libdomain_reliability|libembedder|libembedder_switches|libevents|libevents_base|libevents_devices_x11|libevents_ozone_layout|libevents_x|libextras|libfido|libfingerprint|libfreetype_harfbuzz|libgamepad_mojom|libgamepad_mojom_blink|libgamepad_mojom_shared|libgamepad_shared_typemap_traits|libgcm|libgeometry|libgeometry_skia|libgesture_detection|libgfx|libgfx_ipc|libgfx_ipc_buffer_types|libgfx_ipc_color|libgfx_ipc_geometry|libgfx_ipc_skia|libgfx_switches|libgfx_x1
1|libgin|libgl_in_process_context|libgl_init|libgl_wrapper|libgles2|libgles2_implementation|libgles2_utils|libgpu|libgpu_ipc_service|libgtkui|libheadless|libhost|libicui18n|libicuuc|libinterfaces_shared|libipc|libipc_mojom|libipc_mojom_shared|libkeycodes_x11|libkeyed_service_content|libkeyed_service_core|liblearning_common|liblearning_impl|libleveldatabase|liblive_tab_count_metrics|libmanager|libmedia_blink|libmedia_filters_jpeg_parser|libmedia_gpu|libmedia_mojo_services|libmedia_session_cpp|libmedia_webrtc|libmemory_instrumentation|libmessage_center|libmessage_support|libmetrics_cpp|libmidi|libmirclient.so.9|libmirroring_service|libmojo_base_lib|libmojo_base_mojom|libmojo_base_mojom_blink|libmojo_base_mojom_shared|libmojo_base_shared_typemap_traits|libmojo_core_embedder|libmojo_core_embedder_internal|libmojo_core_ports|libmojo_cpp_platform|libmojo_ime_lib|libmojo_mojom_bindings|libmojo_mojom_bindings_shared|libmojo_public_system|libmojo_public_system_cpp|libmojom_core_shared|libmoj
om_mhtml_load_result_shared|libmojom_modules_shared|libmojom_platform_shared|libmpris|libnative_theme|libnet|libnet_with_v8|libnetwork_cpp|libnetwork_cpp_base|libnetwork_service|libnetwork_session_configurator|libonc|libos_crypt|libperfetto|libplatform|libplatform_window_handler_libs|libpolicy_component|libpolicy_proto|libppapi_host|libppapi_proxy|libppapi_shared|libprefs|libprinting|libprotobuf_lite|libproxy_config|libpublic|librange|libraster|libresource_coordinator_cpp_base|libresource_coordinator_cpp_features|libresource_coordinator_public_mojom|libresource_coordinator_public_mojom_blink|libresource_coordinator_public_mojom_shared|libsandbox|libsandbox_services|libscheduling_metrics|libseccomp_bpf|libservice|libservice_manager_cpp|libservice_manager_cpp_types|libservice_manager_mojom|libservice_manager_mojom_blink|libservice_manager_mojom_constants|libservice_manager_mojom_constants_blink|libservice_manager_mojom_constants_shared|libservice_manager_mojom_shared|libservice_manage
r_mojom_traits|libsessions|libshared_memory_support|libshell_dialogs|libskia|libsnapshot|libsql|libstartup_tracing|libstorage_browser|libstorage_common|libstub_window|libsuid_sandbox_client|libsurface|libtracing|libtracing_cpp|libtracing_mojom|libtracing_mojom_shared|libui_accessibility_ax_mojom|libui_accessibility_ax_mojom_blink|libui_accessibility_ax_mojom_shared|libui_base|libui_base_clipboard|libui_base_clipboard_types|libui_base_features|libui_base_idle|libui_base_ime|libui_base_ime_init|libui_base_ime_linux|libui_base_ime_types|libui_base_x|libui_data_pack|libui_devtools|libui_message_center_cpp|libui_touch_selection|libui_views_mus_lib|liburl|liburl_ipc|liburl_matcher|libusb_shared|libuser_manager|libuser_prefs|libv8|libv8_libbase|libv8_libplatform|libviews|libviz_common|libviz_resource_format_utils|libviz_vulkan_context_provider|libvr_base|libvr_common|libvulkan_init|libvulkan_wrapper|libvulkan_x11|libweb_dialogs|libweb_feature_mojo_bindings_mojom|libweb_feature_mojo_binding
s_mojom_blink|libweb_feature_mojo_bindings_mojom_shared|libwebdata_common|libwebgpu|libwebview|libwm|libwm_public|libwtf|libx11_events_platform|libx11_window|libzygote|libmedia|libffmpeg|libfontconfig
%else
-%global privlibs libEGL|libGLESv2|libVkICD_mock_icd|libVkLayer_core_validation|libVkLayer_object_lifetimes|libVkLayer_stateless_validation|libVkLayer_thread_safety|libVkLayer_unique_objects|libaccessibility|libandroid_mojo_bindings_shared|libanimation|libapdu|libaura|libaura_extra|libbase|libbase_i18n|libbindings|libbindings_base|libblink_android_mojo_bindings_shared|libblink_common|libblink_controller|libblink_core|libblink_core_mojo_bindings_shared|libblink_embedded_frame_sink_mojo_bindings_shared|libblink_modules|libblink_mojo_bindings_shared|libblink_platform|libbluetooth|libboringssl|libbrowser_ui_views|libcaptive_portal|libcapture_base|libcapture_lib|libcbor|libcc|libcc_animation|libcc_base|libcc_debug|libcc_mojo_embedder|libcc_paint|libcdm_manager|libcertificate_matching|libchrome_features|libchromium_sqlite3|libclearkeycdm|libclient|libcloud_policy_proto_generated_compile|libcodec|libcolor_space|libcommon|libcompositor|libcontent|libcontent_common_mojo_bindings_shared|libcon
tent_public_common_mojo_bindings_shared|libcontent_service_cpp|libcontent_service_mojom|libcontent_service_mojom_shared|libcrash_key|libcrcrypto|libdbus|libdbus_thread_linux|libdevice_base|libdevice_event_log|libdevice_features|libdevice_gamepad|libdevice_vr|libdevice_vr_mojo_bindings|libdevice_vr_mojo_bindings_blink|libdevice_vr_mojo_bindings_shared|libdevices|libdiscardable_memory_client|libdiscardable_memory_common|libdiscardable_memory_service|libdisplay|libdisplay_types|libdisplay_util|libdomain_reliability|libembedder|libembedder_switches|libevents|libevents_base|libevents_devices_x11|libevents_ozone_layout|libevents_x|libextras|libfido|libfingerprint|libfreetype_harfbuzz|libgamepad_mojom|libgamepad_mojom_blink|libgamepad_mojom_shared|libgamepad_shared_typemap_traits|libgcm|libgeometry|libgeometry_skia|libgesture_detection|libgfx|libgfx_ipc|libgfx_ipc_buffer_types|libgfx_ipc_color|libgfx_ipc_geometry|libgfx_ipc_skia|libgfx_switches|libgfx_x11|libgin|libgl_in_process_context|li
bgl_init|libgl_wrapper|libgles2|libgles2_implementation|libgles2_utils|libgpu|libgpu_ipc_service|libgtkui|libheadless|libhost|libicui18n|libicuuc|libinterfaces_shared|libipc|libipc_mojom|libipc_mojom_shared|libkeycodes_x11|libkeyed_service_content|libkeyed_service_core|liblearning_common|liblearning_impl|libleveldatabase|liblive_tab_count_metrics|libmanager|libmedia_blink|libmedia_filters_jpeg_parser|libmedia_gpu|libmedia_mojo_services|libmedia_session_cpp|libmedia_webrtc|libmemory_instrumentation|libmessage_center|libmessage_support|libmetrics_cpp|libmidi|libmirclient.so.9|libmirroring_service|libmojo_base_lib|libmojo_base_mojom|libmojo_base_mojom_blink|libmojo_base_mojom_shared|libmojo_base_shared_typemap_traits|libmojo_core_embedder|libmojo_core_embedder_internal|libmojo_core_ports|libmojo_cpp_platform|libmojo_ime_lib|libmojo_mojom_bindings|libmojo_mojom_bindings_shared|libmojo_public_system|libmojo_public_system_cpp|libmojom_core_shared|libmojom_mhtml_load_result_shared|libmojom
_modules_shared|libmojom_platform_shared|libmpris|libnative_theme|libnet|libnet_with_v8|libnetwork_cpp|libnetwork_cpp_base|libnetwork_service|libnetwork_session_configurator|libonc|libos_crypt|libperfetto|libplatform|libplatform_window_handler_libs|libpolicy_component|libpolicy_proto|libppapi_host|libppapi_proxy|libppapi_shared|libprefs|libprinting|libprotobuf_lite|libproxy_config|libpublic|librange|libraster|libresource_coordinator_cpp_base|libresource_coordinator_cpp_features|libresource_coordinator_public_mojom|libresource_coordinator_public_mojom_blink|libresource_coordinator_public_mojom_shared|libsandbox|libsandbox_services|libscheduling_metrics|libseccomp_bpf|libservice|libservice_manager_cpp|libservice_manager_cpp_types|libservice_manager_mojom|libservice_manager_mojom_blink|libservice_manager_mojom_constants|libservice_manager_mojom_constants_blink|libservice_manager_mojom_constants_shared|libservice_manager_mojom_shared|libservice_manager_mojom_traits|libsessions|libshared
_memory_support|libshell_dialogs|libskia|libsnapshot|libspeech_recognition_error_code_mojom|libspeech_recognition_error_code_mojom_blink|libspeech_recognition_error_code_mojom_shared|libsql|libstartup_tracing|libstorage_browser|libstorage_common|libstub_window|libsuid_sandbox_client|libsurface|libtracing|libtracing_cpp|libtracing_mojom|libtracing_mojom_shared|libui_accessibility_ax_mojom|libui_accessibility_ax_mojom_blink|libui_accessibility_ax_mojom_shared|libui_base|libui_base_clipboard|libui_base_clipboard_types|libui_base_features|libui_base_ime|libui_base_ime_linux|libui_base_ime_types|libui_base_x|libui_data_pack|libui_devtools|libui_message_center_cpp|libui_touch_selection|libui_views_mus_lib|liburl|liburl_ipc|liburl_matcher|libusb_shared|libuser_manager|libuser_prefs|libv8|libv8_libbase|libv8_libplatform|libviews|libviz_common|libviz_resource_format_utils|libviz_vulkan_context_provider|libvr_base|libvr_common|libvulkan_init|libvulkan_wrapper|libvulkan_x11|libweb_dialogs|libw
eb_feature_mojo_bindings_mojom|libweb_feature_mojo_bindings_mojom_blink|libweb_feature_mojo_bindings_mojom_shared|libwebdata_common|libwebgpu|libwebview|libwm|libwm_public|libwtf|libx11_events_platform|libx11_window|libzygote|libmedia|libffmpeg
+%global privlibs libEGL|libGLESv2|libVkICD_mock_icd|libVkLayer_core_validation|libVkLayer_object_lifetimes|libVkLayer_stateless_validation|libVkLayer_thread_safety|libVkLayer_unique_objects|libaccessibility|libandroid_mojo_bindings_shared|libanimation|libapdu|libaura|libaura_extra|libauthenticator_test_mojo_bindings_shared|libbase|libbase_i18n|libbindings|libbindings_base|libblink_common|libblink_controller|libblink_core|libblink_embedded_frame_sink_mojo_bindings_shared|libblink_features|libblink_modules|libblink_mojo_bindings_shared|libblink_mojom_broadcastchannel_bindings_shared|libblink_platform|libbluetooth|libboringssl|libbrowser_ui_views|libcaptive_portal|libcapture_base|libcapture_lib|libcbor|libcc|libcc_animation|libcc_base|libcc_debug|libcc_mojo_embedder|libcc_paint|libcdm_manager|libcertificate_matching|libchrome_features|libchromium_sqlite3|libclearkeycdm|libclient|libcloud_policy_proto_generated_compile|libcodec|libcolor_space|libcommon|libcompositor|libcontent|libconten
t_common_mojo_bindings_shared|libcontent_public_common_mojo_bindings_shared|libcontent_service_cpp|libcontent_service_mojom|libcontent_service_mojom_shared|libcrash_key|libcrcrypto|libdbus|libdbus_thread_linux|libdevice_base|libdevice_event_log|libdevice_features|libdevice_gamepad|libdevice_vr|libdevice_vr_mojo_bindings|libdevice_vr_mojo_bindings_blink|libdevice_vr_mojo_bindings_shared|libdevices|libdiscardable_memory_client|libdiscardable_memory_common|libdiscardable_memory_service|libdisplay|libdisplay_types|libdisplay_util|libdomain_reliability|libembedder|libembedder_switches|libevents|libevents_base|libevents_devices_x11|libevents_ozone_layout|libevents_x|libextras|libfido|libfingerprint|libfreetype_harfbuzz|libgamepad_mojom|libgamepad_mojom_blink|libgamepad_mojom_shared|libgamepad_shared_typemap_traits|libgcm|libgeometry|libgeometry_skia|libgesture_detection|libgfx|libgfx_ipc|libgfx_ipc_buffer_types|libgfx_ipc_color|libgfx_ipc_geometry|libgfx_ipc_skia|libgfx_switches|libgfx_x1
1|libgin|libgl_in_process_context|libgl_init|libgl_wrapper|libgles2|libgles2_implementation|libgles2_utils|libgpu|libgpu_ipc_service|libgtkui|libheadless|libhost|libicui18n|libicuuc|libinterfaces_shared|libipc|libipc_mojom|libipc_mojom_shared|libkeycodes_x11|libkeyed_service_content|libkeyed_service_core|liblearning_common|liblearning_impl|libleveldatabase|liblive_tab_count_metrics|libmanager|libmedia_blink|libmedia_filters_jpeg_parser|libmedia_gpu|libmedia_mojo_services|libmedia_session_cpp|libmedia_webrtc|libmemory_instrumentation|libmessage_center|libmessage_support|libmetrics_cpp|libmidi|libmirclient.so.9|libmirroring_service|libmojo_base_lib|libmojo_base_mojom|libmojo_base_mojom_blink|libmojo_base_mojom_shared|libmojo_base_shared_typemap_traits|libmojo_core_embedder|libmojo_core_embedder_internal|libmojo_core_ports|libmojo_cpp_platform|libmojo_ime_lib|libmojo_mojom_bindings|libmojo_mojom_bindings_shared|libmojo_public_system|libmojo_public_system_cpp|libmojom_core_shared|libmoj
om_mhtml_load_result_shared|libmojom_modules_shared|libmojom_platform_shared|libmpris|libnative_theme|libnet|libnet_with_v8|libnetwork_cpp|libnetwork_cpp_base|libnetwork_service|libnetwork_session_configurator|libonc|libos_crypt|libperfetto|libplatform|libplatform_window_handler_libs|libpolicy_component|libpolicy_proto|libppapi_host|libppapi_proxy|libppapi_shared|libprefs|libprinting|libprotobuf_lite|libproxy_config|libpublic|librange|libraster|libresource_coordinator_cpp_base|libresource_coordinator_cpp_features|libresource_coordinator_public_mojom|libresource_coordinator_public_mojom_blink|libresource_coordinator_public_mojom_shared|libsandbox|libsandbox_services|libscheduling_metrics|libseccomp_bpf|libservice|libservice_manager_cpp|libservice_manager_cpp_types|libservice_manager_mojom|libservice_manager_mojom_blink|libservice_manager_mojom_constants|libservice_manager_mojom_constants_blink|libservice_manager_mojom_constants_shared|libservice_manager_mojom_shared|libservice_manage
r_mojom_traits|libsessions|libshared_memory_support|libshell_dialogs|libskia|libsnapshot|libsql|libstartup_tracing|libstorage_browser|libstorage_common|libstub_window|libsuid_sandbox_client|libsurface|libtracing|libtracing_cpp|libtracing_mojom|libtracing_mojom_shared|libui_accessibility_ax_mojom|libui_accessibility_ax_mojom_blink|libui_accessibility_ax_mojom_shared|libui_base|libui_base_clipboard|libui_base_clipboard_types|libui_base_features|libui_base_idle|libui_base_ime|libui_base_ime_init|libui_base_ime_linux|libui_base_ime_types|libui_base_x|libui_data_pack|libui_devtools|libui_message_center_cpp|libui_touch_selection|libui_views_mus_lib|liburl|liburl_ipc|liburl_matcher|libusb_shared|libuser_manager|libuser_prefs|libv8|libv8_libbase|libv8_libplatform|libviews|libviz_common|libviz_resource_format_utils|libviz_vulkan_context_provider|libvr_base|libvr_common|libvulkan_init|libvulkan_wrapper|libvulkan_x11|libweb_dialogs|libweb_feature_mojo_bindings_mojom|libweb_feature_mojo_binding
s_mojom_blink|libweb_feature_mojo_bindings_mojom_shared|libwebdata_common|libwebgpu|libwebview|libwm|libwm_public|libwtf|libx11_events_platform|libx11_window|libzygote|libmedia|libffmpeg
%endif
%global __requires_exclude ^(%{privlibs})\\.so*
@@ -154,14 +157,14 @@ BuildRequires: libicu-devel >= 5.4
%global chromoting_client_id %nil
%endif
-%global majorversion 74
+%global majorversion 75
%if %{freeworld}
Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
%else
Name: chromium%{chromium_channel}
%endif
-Version: %{majorversion}.0.3729.169
+Version: %{majorversion}.0.3770.80
Release: 1%{?dist}
Summary: A WebKit (Blink) powered web browser
Url: http://www.chromium.org/Home
@@ -227,7 +230,7 @@ Patch42: chromium-60.0.3112.78-no-libpng-prefix.patch
# Do not mangle libjpeg
Patch43: chromium-60.0.3112.78-jpeg-nomangle.patch
# Do not mangle zlib
-Patch45: chromium-60.0.3112.78-no-zlib-mangle.patch
+Patch45: chromium-75.0.3770.80-no-zlib-mangle.patch
# Apply these changes to work around EPEL7 compiler issues
Patch46: chromium-62.0.3202.62-kmaxskip-constexpr.patch
Patch47: chromium-60.0.3112.90-vulkan-force-c99.patch
@@ -280,7 +283,6 @@ Patch100: chromium-67.0.3396.62-epel7-use-old-python-exec-syntax.patch
# Add "Fedora" to the user agent string
Patch101: chromium-72.0.3626.121-fedora-user-agent.patch
# Try to fix version.py for Rawhide
-Patch102: chromium-67.0.3396.99-py3fix.patch
Patch103: chromium-71.0.3578.98-py2-bootstrap.patch
# Fix default on redeclaration error
# https://chromium.googlesource.com/chromium/src/+/122692ccee62223f266a988c...
@@ -306,33 +308,33 @@ Patch119: chromium-70.0.3538.77-aarch64-arch-want-new-stat.patch
Patch121: enable-vaapi.patch
Patch122: chromium-73.0.3683.75-vaapi-i686-fpermissive.patch
# Fix compatibility with VA-API library (libva) version 1
-Patch124: chromium-71.0.3578.98-vaapi-libva1-compatibility.patch
+Patch124: chromium-75.0.3770.80-vaapi-libva1-compatibility.patch
# drop rsp clobber, which breaks gcc9 (thanks to Jeff Law)
Patch126: chromium-71.0.3578.98-gcc9-drop-rsp-clobber.patch
-# Thanks Gentoo
-Patch128: https://dev.gentoo.org/~floppym/dist/chromium-74-e1b1f3a.patch
-Patch129: https://gitweb.gentoo.org/repo/gentoo.git/plain/www-client/chromium/files...
# Thanks Ubuntu
# Disable these two patches when v75 lands
Patch130: revert-gn-4980.patch
Patch131: revert-gn-4960.patch
# Try to load widevine from other places
Patch132: chromium-widevine-other-locations.patch
-# Gentoo again!
-# https://chromium.googlesource.com/chromium/src/+/7685422a90e1da829cb32d68...
-Patch133: chromium-74-7685422.patch
-Patch134: chromium-74-c2c467f.patch
# Disable -fno-delete-null-pointer-checks
Patch135: chromium-73.0.3683.75-disable-fno-delete-null-pointer-checks.patch
# Add #include <cstring> to get pipewire code to build
Patch136: chromium-73.0.3683.75-pipewire-cstring-fix.patch
-# One more gentoo patch
-# https://chromium-review.googlesource.com/c/chromium/src/+/1472716
-Patch137: chromium-74-2f28731.patch
# el7 only patch
Patch139: chromium-73.0.3683.75-el7-fix-noexcept.patch
-# https://bugs.chromium.org/p/chromium/issues/detail?id=949312
-Patch140: chromium-74.0.3729.169-glibc-2.29-clone-vfork.patch
+# gcc does not have __assume
+Patch140: chromium-75.0.3770.80-gcc-no-assume.patch
+# Linux 5.2 defines SIOCGSTAMP in a slightly different way, so we need to teach chromium where to find it
+Patch141: chromium-75.0.3770.80-SIOCGSTAMP.patch
+# https://chromium.googlesource.com/chromium/src/+/aeed4d1f15ce84a17ea0bc21...
+Patch142: chromium-75.0.3770.80-aeed4d-gcc-dcheck_ne-fix.patch
+# Revert https://chromium.googlesource.com/chromium/src/+/daff6b66faae53a0cefb8898...
+# It might make clang happy but it breaks gcc. F*** clang.
+Patch143: chromium-75.0.3770.80-revert-daff6b.patch
+# Avoid pure virtual crash destroying RenderProcessUserData
+# https://chromium.googlesource.com/chromium/src/+/cdf306db81efaaaa95448758...
+Patch144: chromium-75.0.3770.80-pure-virtual-crash-fix.patch
# Use chromium-latest.py to generate clean tarball from released build tarballs, found here:
# http://build.chromium.org/buildbot/official/
@@ -883,7 +885,6 @@ udev.
# %%patch100 -p1 -b .oldexec
%endif
%patch101 -p1 -b .fedora-user-agent
-%patch102 -p1 -b .py3fix
%patch103 -p1 -b .py2
# %%patch108 -p1 -b .move-unique-ptr
%patch110 -p1 -b .fix-default-redeclaration
@@ -895,26 +896,27 @@ udev.
# %%patch116 -p1 -b .r591015
%patch117 -p1 -b .nofc
%patch119 -p1 -b .aarch64-new-stat
+%if %{use_vaapi}
%patch121 -p1 -b .vaapi
+%endif
%ifarch i686
%patch122 -p1 -b .i686permissive
%endif
%patch124 -p1 -b .va1compat
%patch126 -p1 -b .gcc9
-%patch128 -p1 -b .gentoo2
-%patch129 -p1 -b .gentoo3
-%patch130 -p1 -b .revert-gn-4980
-%patch131 -p1 -b .revert-gn-4960
+# %%patch130 -p1 -b .revert-gn-4980
+# %%patch131 -p1 -b .revert-gn-4960
%patch132 -p1 -b .widevine-other-locations
-%patch133 -p1 -b .gentoo4
-%patch134 -p1 -b .gentoo5
%patch135 -p1 -b .disable-ndnpc
%patch136 -p1 -b .cstring-fix
-%patch137 -p1 -b .2f28731
%if 0%{?rhel} == 7
%patch139 -p1 -b .el7-noexcept
%endif
-%patch140 -p1 -b .glibc229
+%patch140 -p1 -b .gcc-assume
+%patch141 -p1 -b .SIOCGSTAMP
+%patch142 -p1 -b .gcc-dcheck_ne-fix
+%patch143 -p1 -b .revert-daff6b
+%patch144 -p1 -b .pure-virtual-fix
# Change shebang in all relevant files in this directory and all subdirectories
# See `man find` for how the `-exec command {} +` syntax works
@@ -1105,12 +1107,14 @@ CHROMIUM_BROWSER_GN_DEFINES+=' is_component_ffmpeg=true is_component_build=true'
%else
CHROMIUM_BROWSER_GN_DEFINES+=' is_component_ffmpeg=false is_component_build=false'
%endif
-CHROMIUM_BROWSER_GN_DEFINES+=' remove_webcore_debug_symbols=true enable_hangout_services_extension=true'
+CHROMIUM_BROWSER_GN_DEFINES+=' blink_symbol_level=0 enable_hangout_services_extension=true'
CHROMIUM_BROWSER_GN_DEFINES+=' use_aura=true'
CHROMIUM_BROWSER_GN_DEFINES+=' enable_widevine=true'
+%if %{use_vaapi}
%if 0%{?fedora} >= 28
CHROMIUM_BROWSER_GN_DEFINES+=' use_vaapi=true'
%endif
+%endif
%if 0%{?fedora}
CHROMIUM_BROWSER_GN_DEFINES+=' rtc_use_pipewire=true rtc_link_pipewire=true'
%endif
@@ -1172,6 +1176,7 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/angle/third_party/vulkan-tools' \
'third_party/angle/third_party/vulkan-validation-layers' \
'third_party/apple_apsl' \
+ 'third_party/axe-core' \
'third_party/blanketjs' \
'third_party/blink' \
'third_party/boringssl' \
@@ -1197,16 +1202,17 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/cld_3' \
'third_party/closure_compiler' \
'third_party/crashpad' \
+ 'third_party/crashpad/crashpad/third_party/lss' \
'third_party/crashpad/crashpad/third_party/zlib/' \
'third_party/crc32c' \
'third_party/cros_system_api' \
'third_party/dav1d' \
+ 'third_party/dawn' \
'third_party/devscripts' \
'third_party/dom_distiller_js' \
'third_party/emoji-segmenter' \
'third_party/expat' \
'third_party/ffmpeg' \
- 'third_party/fips181' \
'third_party/flac' \
'third_party/flatbuffers' \
'third_party/flot' \
@@ -1283,6 +1289,7 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/pdfium/third_party/libtiff' \
'third_party/pdfium/third_party/skia_shared' \
'third_party/perfetto' \
+ 'third_party/pffft' \
'third_party/ply' \
'third_party/polymer' \
'third_party/protobuf' \
@@ -1908,6 +1915,10 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%changelog
+* Wed Jun 5 2019 Tom Callaway <spot(a)fedoraproject.org> - 75.0.3770.80-1
+- update to 75.0.3770.80
+- disable vaapi (via conditional), too broken
+
* Fri May 31 2019 Tom Callaway <spot(a)fedoraproject.org> - 74.0.3729.169-1
- update to 74.0.3729.169
diff --git a/clean_ffmpeg.sh b/clean_ffmpeg.sh
index cc5390b..1933058 100755
--- a/clean_ffmpeg.sh
+++ b/clean_ffmpeg.sh
@@ -111,6 +111,7 @@ header_files=" libavcodec/x86/inline_asm.h \
libavcodec/mpegvideodsp.h \
libavcodec/mpegvideoencdsp.h \
libavcodec/options_table.h \
+ libavcodec/opusdsp.h \
libavcodec/opus_celt.h \
libavcodec/opus_pvq.h \
libavcodec/opus_rc.h \
diff --git a/enable-vaapi.patch b/enable-vaapi.patch
index 08c1f94..3286af7 100644
--- a/enable-vaapi.patch
+++ b/enable-vaapi.patch
@@ -1,7 +1,7 @@
-diff -up chromium-73.0.3683.75/chrome/browser/about_flags.cc.vaapi chromium-73.0.3683.75/chrome/browser/about_flags.cc
---- chromium-73.0.3683.75/chrome/browser/about_flags.cc.vaapi 2019-03-11 18:00:53.000000000 -0400
-+++ chromium-73.0.3683.75/chrome/browser/about_flags.cc 2019-03-13 09:04:44.186716761 -0400
-@@ -1606,7 +1606,7 @@ const FeatureEntry kFeatureEntries[] = {
+diff -up chromium-75.0.3770.80/chrome/browser/about_flags.cc.vaapi chromium-75.0.3770.80/chrome/browser/about_flags.cc
+--- chromium-75.0.3770.80/chrome/browser/about_flags.cc.vaapi 2019-06-04 14:55:16.000000000 -0400
++++ chromium-75.0.3770.80/chrome/browser/about_flags.cc 2019-06-05 11:26:46.472753047 -0400
+@@ -1390,7 +1390,7 @@ const FeatureEntry kFeatureEntries[] = {
"disable-accelerated-video-decode",
flag_descriptions::kAcceleratedVideoDecodeName,
flag_descriptions::kAcceleratedVideoDecodeDescription,
@@ -10,7 +10,7 @@ diff -up chromium-73.0.3683.75/chrome/browser/about_flags.cc.vaapi chromium-73.0
SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode),
},
#if defined(OS_WIN)
-@@ -2216,12 +2216,12 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -1882,12 +1882,12 @@ const FeatureEntry kFeatureEntries[] = {
FEATURE_VALUE_TYPE(service_manager::features::kXRSandbox)},
#endif // ENABLE_ISOLATED_XR_SERVICE
#endif // ENABLE_VR
@@ -26,15 +26,15 @@ diff -up chromium-73.0.3683.75/chrome/browser/about_flags.cc.vaapi chromium-73.0
{"v8-cache-options", flag_descriptions::kV8CacheOptionsName,
flag_descriptions::kV8CacheOptionsDescription, kOsAll,
MULTI_VALUE_TYPE(kV8CacheOptionsChoices)},
-diff -up chromium-73.0.3683.75/chrome/browser/flag_descriptions.cc.vaapi chromium-73.0.3683.75/chrome/browser/flag_descriptions.cc
---- chromium-73.0.3683.75/chrome/browser/flag_descriptions.cc.vaapi 2019-03-11 18:00:53.000000000 -0400
-+++ chromium-73.0.3683.75/chrome/browser/flag_descriptions.cc 2019-03-13 09:04:44.188716714 -0400
-@@ -3096,15 +3096,20 @@ const char kTextSuggestionsTouchBarDescr
+diff -up chromium-75.0.3770.80/chrome/browser/flag_descriptions.cc.vaapi chromium-75.0.3770.80/chrome/browser/flag_descriptions.cc
+--- chromium-75.0.3770.80/chrome/browser/flag_descriptions.cc.vaapi 2019-06-05 11:26:46.473753026 -0400
++++ chromium-75.0.3770.80/chrome/browser/flag_descriptions.cc 2019-06-05 11:29:28.039397479 -0400
+@@ -2941,15 +2941,20 @@ const char kMacSystemMediaPermissionsInf
#endif
-// Chrome OS -------------------------------------------------------------------
-+// Chrome OS Linux-------------------------------------------------------------------
++// Chrome OS & Linux------------------------------------------------------------
-#if defined(OS_CHROMEOS)
+#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID))
@@ -46,21 +46,21 @@ diff -up chromium-73.0.3683.75/chrome/browser/flag_descriptions.cc.vaapi chromiu
"available.";
+#endif
+
-+// Chrome OS --------------------------------------------------
++// Chrome OS -------------------------------------------------------------------
+
+#if defined(OS_CHROMEOS)
- const char kAllowTouchpadThreeFingerClickName[] = "Touchpad three-finger-click";
- const char kAllowTouchpadThreeFingerClickDescription[] =
-diff -up chromium-73.0.3683.75/chrome/browser/flag_descriptions.h.vaapi chromium-73.0.3683.75/chrome/browser/flag_descriptions.h
---- chromium-73.0.3683.75/chrome/browser/flag_descriptions.h.vaapi 2019-03-11 18:00:53.000000000 -0400
-+++ chromium-73.0.3683.75/chrome/browser/flag_descriptions.h 2019-03-13 09:04:44.190716667 -0400
-@@ -1842,13 +1842,19 @@ extern const char kPermissionPromptPersi
+ const char kAppServiceAshName[] = "App Service Ash";
+ const char kAppServiceAshDescription[] =
+diff -up chromium-75.0.3770.80/chrome/browser/flag_descriptions.h.vaapi chromium-75.0.3770.80/chrome/browser/flag_descriptions.h
+--- chromium-75.0.3770.80/chrome/browser/flag_descriptions.h.vaapi 2019-06-05 11:26:46.475752984 -0400
++++ chromium-75.0.3770.80/chrome/browser/flag_descriptions.h 2019-06-05 11:30:39.503928986 -0400
+@@ -1765,13 +1765,19 @@ extern const char kPermissionPromptPersi
#endif // defined(OS_MACOSX)
-// Chrome OS ------------------------------------------------------------------
-+// Chrome OS and Linux ------------------------------------------------------------------
++// Chrome OS & Linux ----------------------------------------------------------
-#if defined(OS_CHROMEOS)
+#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID))
@@ -68,18 +68,18 @@ diff -up chromium-73.0.3683.75/chrome/browser/flag_descriptions.h.vaapi chromium
extern const char kAcceleratedMjpegDecodeName[];
extern const char kAcceleratedMjpegDecodeDescription[];
-+#endif // defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID))
++#endif
+
-+// Chrome OS ------------------------------------------------------------------------
++// Chrome OS ------------------------------------------------------------------
+
+#if defined(OS_CHROMEOS)
+
- extern const char kAllowTouchpadThreeFingerClickName[];
- extern const char kAllowTouchpadThreeFingerClickDescription[];
+ extern const char kAppServiceAshName[];
+ extern const char kAppServiceAshDescription[];
-diff -up chromium-73.0.3683.75/gpu/config/software_rendering_list.json.vaapi chromium-73.0.3683.75/gpu/config/software_rendering_list.json
---- chromium-73.0.3683.75/gpu/config/software_rendering_list.json.vaapi 2019-03-11 18:00:59.000000000 -0400
-+++ chromium-73.0.3683.75/gpu/config/software_rendering_list.json 2019-03-13 09:04:44.196716525 -0400
+diff -up chromium-75.0.3770.80/gpu/config/software_rendering_list.json.vaapi chromium-75.0.3770.80/gpu/config/software_rendering_list.json
+--- chromium-75.0.3770.80/gpu/config/software_rendering_list.json.vaapi 2019-06-04 14:55:24.000000000 -0400
++++ chromium-75.0.3770.80/gpu/config/software_rendering_list.json 2019-06-05 11:26:46.482752839 -0400
@@ -371,11 +371,12 @@
},
{
diff --git a/sources b/sources
index 2a4c258..992e987 100644
--- a/sources
+++ b/sources
@@ -17,4 +17,4 @@ SHA512 (Tinos-Italic.ttf) = d4f4f096110ef98a781a2a0e0d319317e5f84e650fe6f4d4f6b0
SHA512 (Tinos-Regular.ttf) = 58085c5dac6d067d60ba2ab3220c4a0cc1efcf279cadfcfb8746a5e5fa1a6f6daa62750dc2051b3b2d8a51b4d2e9bb0f66594caf2253c0870ed9c7286fa45e8f
SHA512 (Ahem.ttf) = aeb64b10ab9c87860714cb60b4900254b13dc52c51319256a1a3722c882026ab7c616bf628fbc2fe14e38a6003f3a481af60b52a7ed62071d28ddaf428e4e3fd
SHA512 (node-v8.9.1-linux-x64.tar.gz) = a707fd4567041c56e7f9d415e505e3fa650627f31def7fefdd7ec50f9e7066bb33332b67f479e1159d85e1105a7e6d034aad7429f4f3d034c9161170d7e0b844
-SHA512 (chromium-74.0.3729.169-clean.tar.xz) = 09db23d3b1b8020b21fa8f2b3be2a3be09815b4572ed5ef746061b171a01f75ab62af8ca092dbfb1bfa8065e5994fca56af8d0382053a70e46cb4ef57bf88b65
+SHA512 (chromium-75.0.3770.80-clean.tar.xz) = 509093ac03016b3dcb34b715de9b206223780159ca6a17f3d8d88d2a82100923a52a77b20b03e84afa297930174096fad9e76e027e279e5bd3696e8738abf079
5 years, 6 months
[chromium-libs-media-freeworld: 195/259] 74.0.3729.169
by Nicolas Chauvet
commit f4a1a5cfc04b62df32bfacf128850833fcd70ef6
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Mon Jun 3 17:14:49 2019 -0400
74.0.3729.169
.gitignore | 1 +
chromium-71.0.3578.98-widevine-r3.patch | 4 +-
chromium-74-2f28731.patch | 324 ++++++++++
chromium-74-7685422.patch | 12 +
chromium-74-c2c467f.patch | 75 +++
chromium-74-e1b1f3a.patch | 587 ++++++++++++++++++
...mium-74.0.3729.169-glibc-2.29-clone-vfork.patch | 50 ++
chromium-widevine-other-locations.patch | 23 +
chromium.spec | 64 +-
clean_ffmpeg.sh | 1 +
quiche-00f47df.patch | 38 ++
revert-gn-4960.patch | 655 +++++++++++++++++++++
revert-gn-4980.patch | 134 +++++
sources | 2 +-
14 files changed, 1940 insertions(+), 30 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index ad17be0..e0568e7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -77,3 +77,4 @@
/chromium-73.0.3683.75-clean.tar.xz
/chromium-73.0.3683.86-clean.tar.xz
/chromium-73.0.3683.103-clean.tar.xz
+/chromium-74.0.3729.169-clean.tar.xz
diff --git a/chromium-71.0.3578.98-widevine-r3.patch b/chromium-71.0.3578.98-widevine-r3.patch
index 8d875c6..75392a7 100644
--- a/chromium-71.0.3578.98-widevine-r3.patch
+++ b/chromium-71.0.3578.98-widevine-r3.patch
@@ -6,7 +6,7 @@ diff -upr chromium-71.0.3578.80.orig/chrome/common/chrome_content_client.cc chro
// 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)
++#if !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
@@ -17,6 +17,6 @@ diff -upr chromium-71.0.3578.80.orig/third_party/widevine/cdm/widevine_cdm_versi
// - WIDEVINE_CDM_VERSION_STRING (with the version of the CDM that's available
// as a string, e.g., "1.0.123.456").
-+#define WIDEVINE_CDM_VERSION_STRING "unknown"
++#define WIDEVINE_CDM_VERSION_STRING "undefined"
+
#endif // WIDEVINE_CDM_VERSION_H_
diff --git a/chromium-74-2f28731.patch b/chromium-74-2f28731.patch
new file mode 100644
index 0000000..2019ec2
--- /dev/null
+++ b/chromium-74-2f28731.patch
@@ -0,0 +1,324 @@
+diff -up chromium-74.0.3729.169/base/values.cc.2f28731 chromium-74.0.3729.169/base/values.cc
+--- chromium-74.0.3729.169/base/values.cc.2f28731 2019-05-31 15:03:32.200591044 -0400
++++ chromium-74.0.3729.169/base/values.cc 2019-05-31 15:13:39.546036829 -0400
+@@ -12,6 +12,7 @@
+ #include <ostream>
+ #include <utility>
+
++#include "base/bit_cast.h"
+ #include "base/json/json_writer.h"
+ #include "base/logging.h"
+ #include "base/memory/ptr_util.h"
+@@ -36,6 +37,9 @@ static_assert(std::is_standard_layout<Va
+ "base::Value should be a standard-layout C++ class in order "
+ "to avoid undefined behaviour in its implementation!");
+
++static_assert(sizeof(Value::DoubleStorage) == sizeof(double),
++ "The double and DoubleStorage types should have the same size");
++
+ namespace {
+
+ const char* const kTypeNames[] = {"null", "boolean", "integer", "double",
+@@ -110,8 +114,6 @@ Value::Value(Value&& that) noexcept {
+ InternalMoveConstructFrom(std::move(that));
+ }
+
+-Value::Value() noexcept : type_(Type::NONE) {}
+-
+ Value::Value(Type type) : type_(type) {
+ // Initialize with the default value.
+ switch (type_) {
+@@ -125,7 +127,7 @@ Value::Value(Type type) : type_(type) {
+ int_value_ = 0;
+ return;
+ case Type::DOUBLE:
+- double_value_ = 0.0;
++ double_value_ = bit_cast<DoubleStorage>(0.0);
+ return;
+ case Type::STRING:
+ new (&string_value_) std::string();
+@@ -149,21 +151,16 @@ Value::Value(Type type) : type_(type) {
+ CHECK(false);
+ }
+
+-Value::Value(bool in_bool)
+- : bool_type_(Type::BOOLEAN),
+- bool_value_(in_bool) {}
+-
+-Value::Value(int in_int)
+- : int_type_(Type::INTEGER),
+- int_value_(in_int) {}
++Value::Value(bool in_bool) : type_(Type::BOOLEAN), bool_value_(in_bool) {}
++
++Value::Value(int in_int) : type_(Type::INTEGER), int_value_(in_int) {}
+
+ Value::Value(double in_double)
+- : double_type_(Type::DOUBLE),
+- double_value_(in_double) {
+- if (!std::isfinite(double_value_)) {
++ : type_(Type::DOUBLE), double_value_(bit_cast<DoubleStorage>(in_double)) {
++ if (!std::isfinite(in_double)) {
+ NOTREACHED() << "Non-finite (i.e. NaN or positive/negative infinity) "
+ << "values cannot be represented in JSON";
+- double_value_ = 0.0;
++ double_value_ = bit_cast<DoubleStorage>(0.0);
+ }
+ }
+
+@@ -172,8 +169,7 @@ Value::Value(const char* in_string) : Va
+ Value::Value(StringPiece in_string) : Value(std::string(in_string)) {}
+
+ Value::Value(std::string&& in_string) noexcept
+- : string_type_(Type::STRING),
+- string_value_(std::move(in_string)) {
++ : type_(Type::STRING), string_value_(std::move(in_string)) {
+ DCHECK(IsStringUTF8(string_value_));
+ }
+
+@@ -182,19 +178,15 @@ Value::Value(const char16* in_string16)
+ Value::Value(StringPiece16 in_string16) : Value(UTF16ToUTF8(in_string16)) {}
+
+ Value::Value(const std::vector<char>& in_blob)
+- : binary_type_(Type::BINARY),
+- binary_value_(in_blob.begin(), in_blob.end()) {}
++ : type_(Type::BINARY), binary_value_(in_blob.begin(), in_blob.end()) {}
+
+ Value::Value(base::span<const uint8_t> in_blob)
+- : binary_type_(Type::BINARY),
+- binary_value_(in_blob.begin(), in_blob.end()) {}
++ : type_(Type::BINARY), binary_value_(in_blob.begin(), in_blob.end()) {}
+
+ Value::Value(BlobStorage&& in_blob) noexcept
+- : binary_type_(Type::BINARY),
+- binary_value_(std::move(in_blob)) {}
++ : type_(Type::BINARY), binary_value_(std::move(in_blob)) {}
+
+-Value::Value(const DictStorage& in_dict)
+- : dict_type_(Type::DICTIONARY), dict_() {
++Value::Value(const DictStorage& in_dict) : type_(Type::DICTIONARY), dict_() {
+ dict_.reserve(in_dict.size());
+ for (const auto& it : in_dict) {
+ dict_.try_emplace(dict_.end(), it.first,
+@@ -203,18 +195,16 @@ Value::Value(const DictStorage& in_dict)
+ }
+
+ Value::Value(DictStorage&& in_dict) noexcept
+- : dict_type_(Type::DICTIONARY),
+- dict_(std::move(in_dict)) {}
++ : type_(Type::DICTIONARY), dict_(std::move(in_dict)) {}
+
+-Value::Value(const ListStorage& in_list) : list_type_(Type::LIST), list_() {
++Value::Value(const ListStorage& in_list) : type_(Type::LIST), list_() {
+ list_.reserve(in_list.size());
+ for (const auto& val : in_list)
+ list_.emplace_back(val.Clone());
+ }
+
+ Value::Value(ListStorage&& in_list) noexcept
+- : list_type_(Type::LIST),
+- list_(std::move(in_list)) {}
++ : type_(Type::LIST), list_(std::move(in_list)) {}
+
+ Value& Value::operator=(Value&& that) noexcept {
+ InternalCleanup();
+@@ -223,6 +213,10 @@ Value& Value::operator=(Value&& that) no
+ return *this;
+ }
+
++double Value::AsDoubleInternal() const {
++ return bit_cast<double>(double_value_);
++}
++
+ Value Value::Clone() const {
+ switch (type_) {
+ case Type::NONE:
+@@ -232,7 +226,7 @@ Value Value::Clone() const {
+ case Type::INTEGER:
+ return Value(int_value_);
+ case Type::DOUBLE:
+- return Value(double_value_);
++ return Value(AsDoubleInternal());
+ case Type::STRING:
+ return Value(string_value_);
+ case Type::BINARY:
+@@ -277,7 +271,7 @@ int Value::GetInt() const {
+
+ double Value::GetDouble() const {
+ if (is_double())
+- return double_value_;
++ return AsDoubleInternal();
+ if (is_int())
+ return int_value_;
+ CHECK(false);
+@@ -342,9 +336,10 @@ base::Optional<double> Value::FindDouble
+ const Value* result = FindKey(key);
+ if (result) {
+ if (result->is_int())
+- return base::make_optional(static_cast<double>(result->int_value_));
+- if (result->is_double())
+- return base::make_optional(result->double_value_);
++ return static_cast<double>(result->int_value_);
++ if (result->is_double()) {
++ return result->AsDoubleInternal();
++ }
+ }
+ return base::nullopt;
+ }
+@@ -548,7 +543,7 @@ bool Value::GetAsInteger(int* out_value)
+
+ bool Value::GetAsDouble(double* out_value) const {
+ if (out_value && is_double()) {
+- *out_value = double_value_;
++ *out_value = AsDoubleInternal();
+ return true;
+ }
+ if (out_value && is_int()) {
+@@ -643,7 +638,7 @@ bool operator==(const Value& lhs, const
+ case Value::Type::INTEGER:
+ return lhs.int_value_ == rhs.int_value_;
+ case Value::Type::DOUBLE:
+- return lhs.double_value_ == rhs.double_value_;
++ return lhs.AsDoubleInternal() == rhs.AsDoubleInternal();
+ case Value::Type::STRING:
+ return lhs.string_value_ == rhs.string_value_;
+ case Value::Type::BINARY:
+@@ -688,7 +683,7 @@ bool operator<(const Value& lhs, const V
+ case Value::Type::INTEGER:
+ return lhs.int_value_ < rhs.int_value_;
+ case Value::Type::DOUBLE:
+- return lhs.double_value_ < rhs.double_value_;
++ return lhs.AsDoubleInternal() < rhs.AsDoubleInternal();
+ case Value::Type::STRING:
+ return lhs.string_value_ < rhs.string_value_;
+ case Value::Type::BINARY:
+diff -up chromium-74.0.3729.169/base/values.h.2f28731 chromium-74.0.3729.169/base/values.h
+--- chromium-74.0.3729.169/base/values.h.2f28731 2019-05-31 15:13:48.418868163 -0400
++++ chromium-74.0.3729.169/base/values.h 2019-05-31 15:17:06.015112057 -0400
+@@ -77,12 +77,13 @@ class Value;
+ // base::Value dict(base::Value::Type::DICTIONARY);
+ // dict.SetKey("mykey", base::Value(foo));
+ // return dict;
+-// }
+ class BASE_EXPORT Value {
+ public:
+ using BlobStorage = std::vector<uint8_t>;
+ using DictStorage = flat_map<std::string, std::unique_ptr<Value>>;
+ using ListStorage = std::vector<Value>;
++ // See technical note below explaining why this is used.
++ using DoubleStorage = struct { alignas(4) char v[sizeof(double)]; };
+
+ enum class Type : unsigned char {
+ NONE = 0,
+@@ -111,7 +112,10 @@ class BASE_EXPORT Value {
+ static std::unique_ptr<Value> ToUniquePtrValue(Value val);
+
+ Value(Value&& that) noexcept;
+- Value() noexcept; // A null value.
++ Value() noexcept {} // A null value
++ // Fun fact: using '= default' above instead of '{}' does not work because
++ // the compiler complains that the default constructor was deleted since
++ // the inner union contains fields with non-default constructors.
+
+ // Value's copy constructor and copy assignment operator are deleted. Use this
+ // to obtain a deep copy explicitly.
+@@ -379,82 +383,29 @@ class BASE_EXPORT Value {
+ size_t EstimateMemoryUsage() const;
+
+ protected:
+- // Technical note:
+- // The naive way to implement a tagged union leads to wasted bytes
+- // in the object on CPUs like ARM ones, which impose an 8-byte alignment
+- // for double values. I.e. if one does something like:
+- //
+- // struct TaggedValue {
+- // int type_; // size = 1, align = 4
+- // union {
+- // bool bool_value_; // size = 1, align = 1
+- // int int_value_; // size = 4, align = 4
+- // double double_value_; // size = 8, align = 8
+- // std::string string_value_; // size = 12, align = 4 (32-bit)
+- // };
+- // };
+- //
+- // The end result is that the union will have an alignment of 8, and a size
+- // of 16, due to 4 extra padding bytes following |string_value_| to respect
+- // the alignment requirement.
+- //
+- // As a consequence, the struct TaggedValue will have a size of 24 bytes,
+- // due to the size of the union (16), the size of |type_| (4) and 4 bytes
+- // of padding between |type_| and the union to respect its alignment.
+- //
+- // This means 8 bytes of unused memory per instance on 32-bit ARM!
+- //
+- // To reclaim these, a union of structs is used instead, in order to ensure
+- // that |double_value_| below is always located at an offset that is a
+- // multiple of 8, relative to the start of the overall data structure.
+- //
+- // Each struct must declare its own |type_| field, which must have a different
+- // name, to appease the C++ compiler.
+- //
+- // Using this technique sizeof(base::Value) == 16 on 32-bit ARM instead
+- // of 24, without losing any information. Results are unchanged for x86,
+- // x86_64 and arm64 (16, 32 and 32 bytes respectively).
++ // Special case for doubles, which are aligned to 8 bytes on some
++ // 32-bit architectures. In this case, a simple declaration as a
++ // double member would make the whole union 8 byte-aligned, which
++ // would also force 4 bytes of wasted padding space before it in
++ // the Value layout.
++ //
++ // To override this, store the value as an array of 32-bit integers, and
++ // perform the appropriate bit casts when reading / writing to it.
++ Type type_ = Type::NONE;
++
+ union {
+- struct {
+- // TODO(crbug.com/646113): Make these private once DictionaryValue and
+- // ListValue are properly inlined.
+- Type type_ : 8;
+- };
+- struct {
+- Type bool_type_ : 8;
+- bool bool_value_;
+- };
+- struct {
+- Type int_type_ : 8;
+- int int_value_;
+- };
+- struct {
+- Type double_type_ : 8;
+- // Subtle: On architectures that require it, the compiler will ensure
+- // that |double_value_|'s offset is a multiple of 8 (e.g. 32-bit ARM).
+- // See technical note above to understand why it is important.
+- double double_value_;
+- };
+- struct {
+- Type string_type_ : 8;
+- std::string string_value_;
+- };
+- struct {
+- Type binary_type_ : 8;
+- BlobStorage binary_value_;
+- };
+- struct {
+- Type dict_type_ : 8;
+- DictStorage dict_;
+- };
+- struct {
+- Type list_type_ : 8;
+- ListStorage list_;
+- };
++ bool bool_value_;
++ int int_value_;
++ DoubleStorage double_value_;
++ std::string string_value_;
++ BlobStorage binary_value_;
++ DictStorage dict_;
++ ListStorage list_;
+ };
+
+ private:
+ friend class ValuesTest_SizeOfValue_Test;
++ double AsDoubleInternal() const;
+ void InternalMoveConstructFrom(Value&& that);
+ void InternalCleanup();
+
diff --git a/chromium-74-7685422.patch b/chromium-74-7685422.patch
new file mode 100644
index 0000000..f86da1f
--- /dev/null
+++ b/chromium-74-7685422.patch
@@ -0,0 +1,12 @@
+diff -up chromium-74.0.3729.169/base/values.h.gentoo3 chromium-74.0.3729.169/base/values.h
+--- chromium-74.0.3729.169/base/values.h.gentoo3 2019-05-31 14:02:13.019800039 -0400
++++ chromium-74.0.3729.169/base/values.h 2019-05-31 14:02:32.531380130 -0400
+@@ -84,7 +84,7 @@ class BASE_EXPORT Value {
+ using DictStorage = flat_map<std::string, std::unique_ptr<Value>>;
+ using ListStorage = std::vector<Value>;
+
+- enum class Type {
++ enum class Type : unsigned char {
+ NONE = 0,
+ BOOLEAN,
+ INTEGER,
diff --git a/chromium-74-c2c467f.patch b/chromium-74-c2c467f.patch
new file mode 100644
index 0000000..e9e5d22
--- /dev/null
+++ b/chromium-74-c2c467f.patch
@@ -0,0 +1,75 @@
+From c2c467f69fc00d353879d7add5f2c04a6acabbb1 Mon Sep 17 00:00:00 2001
+From: David 'Digit' Turner <digit(a)google.com>
+Date: Wed, 20 Mar 2019 21:41:09 +0000
+Subject: [PATCH] base: Value::FindDoubleKey() converts integers to doubles
+
+Ensure that FindDoubleKey() can return the value of an
+INTEGER key as a double. This is consistent with the behaviour
+of Value::GetDouble() which will auto-convert INTEGER values
+to doubles.
+
+BUG=646113
+R=dcheng@chromium.org,jdoerrie@chromium.org,sdefresne@chromium.org,hidehiko(a)chromium.org
+
+Change-Id: I2c08cb91b6cfd5db268a182ffffe16682d848008
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1529017
+Reviewed-by: Sylvain Defresne <sdefresne(a)chromium.org>
+Reviewed-by: Daniel Cheng <dcheng(a)chromium.org>
+Commit-Queue: David Turner <digit(a)chromium.org>
+Cr-Commit-Position: refs/heads/master@{#642680}
+---
+ base/values.cc | 10 ++++++++--
+ base/values.h | 2 ++
+ base/values_unittest.cc | 2 +-
+ 3 files changed, 11 insertions(+), 3 deletions(-)
+
+diff --git a/base/values.cc b/base/values.cc
+index 035aa2350cde..69d66ff8ab00 100644
+--- a/base/values.cc
++++ b/base/values.cc
+@@ -339,8 +339,14 @@ base::Optional<int> Value::FindIntKey(StringPiece key) const {
+ }
+
+ base::Optional<double> Value::FindDoubleKey(StringPiece key) const {
+- const Value* result = FindKeyOfType(key, Type::DOUBLE);
+- return result ? base::make_optional(result->double_value_) : base::nullopt;
++ const Value* result = FindKey(key);
++ if (result) {
++ if (result->is_int())
++ return base::make_optional(static_cast<double>(result->int_value_));
++ if (result->is_double())
++ return base::make_optional(result->double_value_);
++ }
++ return base::nullopt;
+ }
+
+ const std::string* Value::FindStringKey(StringPiece key) const {
+diff --git a/base/values.h b/base/values.h
+index e31cadd83102..6f2cd3cc3d79 100644
+--- a/base/values.h
++++ b/base/values.h
+@@ -200,6 +200,8 @@ class BASE_EXPORT Value {
+ // function's name.
+ base::Optional<bool> FindBoolKey(StringPiece key) const;
+ base::Optional<int> FindIntKey(StringPiece key) const;
++ // Note FindDoubleKey() will auto-convert INTEGER keys to their double
++ // value, for consistency with GetDouble().
+ base::Optional<double> FindDoubleKey(StringPiece key) const;
+
+ // |FindStringKey| returns |nullptr| if value is not found or not a string.
+diff --git a/base/values_unittest.cc b/base/values_unittest.cc
+index b23fd8332491..7c545c09d947 100644
+--- a/base/values_unittest.cc
++++ b/base/values_unittest.cc
+@@ -674,7 +674,7 @@ TEST(ValuesTest, FindDoubleKey) {
+ const Value dict(std::move(storage));
+ EXPECT_EQ(base::nullopt, dict.FindDoubleKey("null"));
+ EXPECT_EQ(base::nullopt, dict.FindDoubleKey("bool"));
+- EXPECT_EQ(base::nullopt, dict.FindDoubleKey("int"));
++ EXPECT_NE(base::nullopt, dict.FindDoubleKey("int"));
+ EXPECT_NE(base::nullopt, dict.FindDoubleKey("double"));
+ EXPECT_EQ(base::nullopt, dict.FindDoubleKey("string"));
+ EXPECT_EQ(base::nullopt, dict.FindDoubleKey("blob"));
+--
+2.21.0
+
diff --git a/chromium-74-e1b1f3a.patch b/chromium-74-e1b1f3a.patch
new file mode 100644
index 0000000..344b087
--- /dev/null
+++ b/chromium-74-e1b1f3a.patch
@@ -0,0 +1,587 @@
+From e1b1f3a5f273c8da533fad495b9de316e2c83c9b Mon Sep 17 00:00:00 2001
+From: jdoerrie <jdoerrie(a)chromium.org>
+Date: Sat, 16 Mar 2019 04:08:01 +0000
+Subject: [PATCH] [base] Add Dead Type to base::Value
+
+This change adds a temporary DEAD type to base::Value which should help
+to track down use-after-free bugs. Furthermore, this change also removes
+the now unneeded is_alive_ flag.
+
+Bug: 859477, 941404
+Change-Id: I9b7a2f3cbb0b22d7e3ed35b2453537419f3f7e55
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1478897
+Reviewed-by: Pavol Marko <pmarko(a)chromium.org>
+Reviewed-by: Tao Bai <michaelbai(a)chromium.org>
+Reviewed-by: Thomas Anderson <thomasanderson(a)chromium.org>
+Reviewed-by: Mike Pinkerton <pinkerton(a)chromium.org>
+Reviewed-by: Bill Budge <bbudge(a)chromium.org>
+Reviewed-by: Ken Rockot <rockot(a)google.com>
+Reviewed-by: Steven Bennetts <stevenjb(a)chromium.org>
+Reviewed-by: Daniel Cheng <dcheng(a)chromium.org>
+Reviewed-by: David Turner <digit(a)chromium.org>
+Commit-Queue: Thomas Anderson <thomasanderson(a)chromium.org>
+Cr-Commit-Position: refs/heads/master@{#641404}
+---
+ base/json/json_writer.cc | 5 ++
+ base/values.cc | 68 ++++++++++++-------
+ base/values.h | 23 ++-----
+ base/values_unittest.cc | 10 ++-
+ .../ui/cocoa/applescript/apple_event_util.mm | 10 +++
+ chromeos/network/onc/variable_expander.cc | 6 ++
+ .../core/browser/android/policy_converter.cc | 11 ++-
+ .../core/common/policy_loader_win_unittest.cc | 8 ++-
+ .../policy/core/common/policy_test_utils.cc | 5 ++
+ .../policy/core/common/registry_dict.cc | 4 ++
+ .../gin_java_script_to_java_types_coercion.cc | 8 ++-
+ ipc/ipc_message_utils.cc | 11 ++-
+ mojo/public/cpp/base/values_mojom_traits.h | 7 +-
+ .../ppb_x509_certificate_private_shared.cc | 2 +
+ 14 files changed, 127 insertions(+), 51 deletions(-)
+
+diff --git a/base/json/json_writer.cc b/base/json/json_writer.cc
+index 376a459f9a46..cd020e7fa0c0 100644
+--- a/base/json/json_writer.cc
++++ b/base/json/json_writer.cc
+@@ -179,6 +179,11 @@ bool JSONWriter::BuildJSONString(const Value& node, size_t depth) {
+ // Successful only if we're allowed to omit it.
+ DLOG_IF(ERROR, !omit_binary_values_) << "Cannot serialize binary value.";
+ return omit_binary_values_;
++
++ // TODO(crbug.com/859477): Remove after root cause is found.
++ case Value::Type::DEAD:
++ CHECK(false);
++ return false;
+ }
+
+ // TODO(crbug.com/859477): Revert to NOTREACHED() after root cause is found.
+diff --git a/base/values.cc b/base/values.cc
+index 0c002551b317..035aa2350cde 100644
+--- a/base/values.cc
++++ b/base/values.cc
+@@ -90,8 +90,6 @@ std::unique_ptr<Value> CopyWithoutEmptyChildren(const Value& node) {
+
+ } // namespace
+
+-constexpr uint16_t Value::kMagicIsAlive;
+-
+ // static
+ std::unique_ptr<Value> Value::CreateWithCopiedBuffer(const char* buffer,
+ size_t size) {
+@@ -112,9 +110,9 @@ Value::Value(Value&& that) noexcept {
+ InternalMoveConstructFrom(std::move(that));
+ }
+
+-Value::Value() noexcept : type_(Type::NONE), is_alive_(kMagicIsAlive) {}
++Value::Value() noexcept : type_(Type::NONE) {}
+
+-Value::Value(Type type) : type_(type), is_alive_(kMagicIsAlive) {
++Value::Value(Type type) : type_(type) {
+ // Initialize with the default value.
+ switch (type_) {
+ case Type::NONE:
+@@ -141,22 +139,26 @@ Value::Value(Type type) : type_(type), is_alive_(kMagicIsAlive) {
+ case Type::LIST:
+ new (&list_) ListStorage();
+ return;
++ // TODO(crbug.com/859477): Remove after root cause is found.
++ case Type::DEAD:
++ CHECK(false);
++ return;
+ }
++
++ // TODO(crbug.com/859477): Revert to NOTREACHED() after root cause is found.
++ CHECK(false);
+ }
+
+ Value::Value(bool in_bool)
+ : bool_type_(Type::BOOLEAN),
+- bool_is_alive_(kMagicIsAlive),
+ bool_value_(in_bool) {}
+
+ Value::Value(int in_int)
+ : int_type_(Type::INTEGER),
+- int_is_alive_(kMagicIsAlive),
+ int_value_(in_int) {}
+
+ Value::Value(double in_double)
+ : double_type_(Type::DOUBLE),
+- double_is_alive_(kMagicIsAlive),
+ double_value_(in_double) {
+ if (!std::isfinite(double_value_)) {
+ NOTREACHED() << "Non-finite (i.e. NaN or positive/negative infinity) "
+@@ -171,7 +173,6 @@ Value::Value(StringPiece in_string) : Value(std::string(in_string)) {}
+
+ Value::Value(std::string&& in_string) noexcept
+ : string_type_(Type::STRING),
+- string_is_alive_(kMagicIsAlive),
+ string_value_(std::move(in_string)) {
+ DCHECK(IsStringUTF8(string_value_));
+ }
+@@ -182,21 +183,18 @@ Value::Value(StringPiece16 in_string16) : Value(UTF16ToUTF8(in_string16)) {}
+
+ Value::Value(const std::vector<char>& in_blob)
+ : binary_type_(Type::BINARY),
+- binary_is_alive_(kMagicIsAlive),
+ binary_value_(in_blob.begin(), in_blob.end()) {}
+
+ Value::Value(base::span<const uint8_t> in_blob)
+ : binary_type_(Type::BINARY),
+- binary_is_alive_(kMagicIsAlive),
+ binary_value_(in_blob.begin(), in_blob.end()) {}
+
+ Value::Value(BlobStorage&& in_blob) noexcept
+ : binary_type_(Type::BINARY),
+- binary_is_alive_(kMagicIsAlive),
+ binary_value_(std::move(in_blob)) {}
+
+ Value::Value(const DictStorage& in_dict)
+- : dict_type_(Type::DICTIONARY), dict_is_alive_(kMagicIsAlive), dict_() {
++ : dict_type_(Type::DICTIONARY), dict_() {
+ dict_.reserve(in_dict.size());
+ for (const auto& it : in_dict) {
+ dict_.try_emplace(dict_.end(), it.first,
+@@ -206,11 +204,9 @@ Value::Value(const DictStorage& in_dict)
+
+ Value::Value(DictStorage&& in_dict) noexcept
+ : dict_type_(Type::DICTIONARY),
+- dict_is_alive_(kMagicIsAlive),
+ dict_(std::move(in_dict)) {}
+
+-Value::Value(const ListStorage& in_list)
+- : list_type_(Type::LIST), list_is_alive_(kMagicIsAlive), list_() {
++Value::Value(const ListStorage& in_list) : list_type_(Type::LIST), list_() {
+ list_.reserve(in_list.size());
+ for (const auto& val : in_list)
+ list_.emplace_back(val.Clone());
+@@ -218,7 +214,6 @@ Value::Value(const ListStorage& in_list)
+
+ Value::Value(ListStorage&& in_list) noexcept
+ : list_type_(Type::LIST),
+- list_is_alive_(kMagicIsAlive),
+ list_(std::move(in_list)) {}
+
+ Value& Value::operator=(Value&& that) noexcept {
+@@ -246,15 +241,21 @@ Value Value::Clone() const {
+ return Value(dict_);
+ case Type::LIST:
+ return Value(list_);
++ // TODO(crbug.com/859477): Remove after root cause is found.
++ case Type::DEAD:
++ CHECK(false);
++ return Value();
+ }
+
+- NOTREACHED();
++ // TODO(crbug.com/859477): Revert to NOTREACHED() after root cause is found.
++ CHECK(false);
+ return Value();
+ }
+
+ Value::~Value() {
+ InternalCleanup();
+- is_alive_ = 0;
++ // TODO(crbug.com/859477): Remove after root cause is found.
++ type_ = Type::DEAD;
+ }
+
+ // static
+@@ -654,9 +655,14 @@ bool operator==(const Value& lhs, const Value& rhs) {
+ });
+ case Value::Type::LIST:
+ return lhs.list_ == rhs.list_;
++ // TODO(crbug.com/859477): Remove after root cause is found.
++ case Value::Type::DEAD:
++ CHECK(false);
++ return false;
+ }
+
+- NOTREACHED();
++ // TODO(crbug.com/859477): Revert to NOTREACHED() after root cause is found.
++ CHECK(false);
+ return false;
+ }
+
+@@ -693,9 +699,14 @@ bool operator<(const Value& lhs, const Value& rhs) {
+ });
+ case Value::Type::LIST:
+ return lhs.list_ < rhs.list_;
++ // TODO(crbug.com/859477): Remove after root cause is found.
++ case Value::Type::DEAD:
++ CHECK(false);
++ return false;
+ }
+
+- NOTREACHED();
++ // TODO(crbug.com/859477): Revert to NOTREACHED() after root cause is found.
++ CHECK(false);
+ return false;
+ }
+
+@@ -733,7 +744,6 @@ size_t Value::EstimateMemoryUsage() const {
+
+ void Value::InternalMoveConstructFrom(Value&& that) {
+ type_ = that.type_;
+- is_alive_ = that.is_alive_;
+
+ switch (type_) {
+ case Type::NONE:
+@@ -759,12 +769,17 @@ void Value::InternalMoveConstructFrom(Value&& that) {
+ case Type::LIST:
+ new (&list_) ListStorage(std::move(that.list_));
+ return;
++ // TODO(crbug.com/859477): Remove after root cause is found.
++ case Type::DEAD:
++ CHECK(false);
++ return;
+ }
++
++ // TODO(crbug.com/859477): Revert to NOTREACHED() after root cause is found.
++ CHECK(false);
+ }
+
+ void Value::InternalCleanup() {
+- CHECK_EQ(is_alive_, kMagicIsAlive);
+-
+ switch (type_) {
+ case Type::NONE:
+ case Type::BOOLEAN:
+@@ -785,7 +800,14 @@ void Value::InternalCleanup() {
+ case Type::LIST:
+ list_.~ListStorage();
+ return;
++ // TODO(crbug.com/859477): Remove after root cause is found.
++ case Type::DEAD:
++ CHECK(false);
++ return;
+ }
++
++ // TODO(crbug.com/859477): Revert to NOTREACHED() after root cause is found.
++ CHECK(false);
+ }
+
+ ///////////////////// DictionaryValue ////////////////////
+diff --git a/base/values.h b/base/values.h
+index 429ef1dfdebd..e31cadd83102 100644
+--- a/base/values.h
++++ b/base/values.h
+@@ -92,7 +92,9 @@ class BASE_EXPORT Value {
+ STRING,
+ BINARY,
+ DICTIONARY,
+- LIST
++ LIST,
++ // TODO(crbug.com/859477): Remove once root cause is found.
++ DEAD
+ // Note: Do not add more types. See the file-level comment above for why.
+ };
+
+@@ -375,10 +377,6 @@ class BASE_EXPORT Value {
+ size_t EstimateMemoryUsage() const;
+
+ protected:
+- // Magic IsAlive signature to debug double frees.
+- // TODO(crbug.com/859477): Remove once root cause is found.
+- static constexpr uint16_t kMagicIsAlive = 0x2f19;
+-
+ // Technical note:
+ // The naive way to implement a tagged union leads to wasted bytes
+ // in the object on CPUs like ARM ones, which impose an 8-byte alignment
+@@ -408,8 +406,8 @@ class BASE_EXPORT Value {
+ // that |double_value_| below is always located at an offset that is a
+ // multiple of 8, relative to the start of the overall data structure.
+ //
+- // Each struct must declare its own |type_| and |is_alive_| field, which
+- // must have a different name, to appease the C++ compiler.
++ // Each struct must declare its own |type_| field, which must have a different
++ // name, to appease the C++ compiler.
+ //
+ // Using this technique sizeof(base::Value) == 16 on 32-bit ARM instead
+ // of 24, without losing any information. Results are unchanged for x86,
+@@ -419,24 +417,17 @@ class BASE_EXPORT Value {
+ // TODO(crbug.com/646113): Make these private once DictionaryValue and
+ // ListValue are properly inlined.
+ Type type_ : 8;
+-
+- // IsAlive member to debug double frees.
+- // TODO(crbug.com/859477): Remove once root cause is found.
+- uint16_t is_alive_ = kMagicIsAlive;
+ };
+ struct {
+ Type bool_type_ : 8;
+- uint16_t bool_is_alive_;
+ bool bool_value_;
+ };
+ struct {
+ Type int_type_ : 8;
+- uint16_t int_is_alive_;
+ int int_value_;
+ };
+ struct {
+ Type double_type_ : 8;
+- uint16_t double_is_alive_;
+ // Subtle: On architectures that require it, the compiler will ensure
+ // that |double_value_|'s offset is a multiple of 8 (e.g. 32-bit ARM).
+ // See technical note above to understand why it is important.
+@@ -444,22 +435,18 @@ class BASE_EXPORT Value {
+ };
+ struct {
+ Type string_type_ : 8;
+- uint16_t string_is_alive_;
+ std::string string_value_;
+ };
+ struct {
+ Type binary_type_ : 8;
+- uint16_t binary_is_alive_;
+ BlobStorage binary_value_;
+ };
+ struct {
+ Type dict_type_ : 8;
+- uint16_t dict_is_alive_;
+ DictStorage dict_;
+ };
+ struct {
+ Type list_type_ : 8;
+- uint16_t list_is_alive_;
+ ListStorage list_;
+ };
+ };
+diff --git a/base/values_unittest.cc b/base/values_unittest.cc
+index 0a641bcc7ef4..b23fd8332491 100644
+--- a/base/values_unittest.cc
++++ b/base/values_unittest.cc
+@@ -20,17 +20,20 @@
+ #include "base/strings/string16.h"
+ #include "base/strings/string_piece.h"
+ #include "base/strings/utf_string_conversions.h"
++#include "build/build_config.h"
+ #include "testing/gmock/include/gmock/gmock.h"
+ #include "testing/gtest/include/gtest/gtest.h"
+
+ namespace base {
+
++// Test is currently incorrect on Windows x86.
++#if !defined(OS_WIN) || !defined(ARCH_CPU_X86)
+ TEST(ValuesTest, SizeOfValue) {
+ // Ensure that base::Value is as small as possible, i.e. that there is
+ // no wasted space after the inner value due to alignment constraints.
+- // Distinguish between the 'header' that includes |type_| and |is_alive_|
+- // and the inner value that follows it, which can be a bool, int, double,
+- // string, blob, list or dict.
++ // Distinguish between the 'header' that includes |type_| and and the inner
++ // value that follows it, which can be a bool, int, double, string, blob, list
++ // or dict.
+ #define INNER_TYPES_LIST(X) \
+ X(bool, bool_value_) \
+ X(int, int_value_) \
+@@ -61,6 +64,7 @@ TEST(ValuesTest, SizeOfValue) {
+ LOG(INFO) << "max_inner_struct_limit=" << max_inner_struct_limit;
+ }
+ }
++#endif
+
+ TEST(ValuesTest, TestNothrow) {
+ static_assert(std::is_nothrow_move_constructible<Value>::value,
+diff --git a/chrome/browser/ui/cocoa/applescript/apple_event_util.mm b/chrome/browser/ui/cocoa/applescript/apple_event_util.mm
+index 16d685607ced..25a59338ee73 100644
+--- a/chrome/browser/ui/cocoa/applescript/apple_event_util.mm
++++ b/chrome/browser/ui/cocoa/applescript/apple_event_util.mm
+@@ -96,6 +96,16 @@ NSAppleEventDescriptor* ValueToAppleEventDescriptor(const base::Value* value) {
+ }
+ break;
+ }
++
++ // TODO(crbug.com/859477): Remove after root cause is found.
++ case base::Value::Type::DEAD:
++ CHECK(false);
++ break;
++
++ // TODO(crbug.com/859477): Remove after root cause is found.
++ default:
++ CHECK(false);
++ break;
+ }
+
+ return descriptor;
+diff --git a/chromeos/network/onc/variable_expander.cc b/chromeos/network/onc/variable_expander.cc
+index fd72752c2aa6..cd5bbb238eb3 100644
+--- a/chromeos/network/onc/variable_expander.cc
++++ b/chromeos/network/onc/variable_expander.cc
+@@ -145,6 +145,12 @@ bool VariableExpander::ExpandValue(base::Value* value) const {
+ // Nothing to do here.
+ break;
+ }
++
++ // TODO(crbug.com/859477): Remove after root cause is found.
++ case base::Value::Type::DEAD: {
++ CHECK(false);
++ break;
++ }
+ }
+ return no_error;
+ }
+diff --git a/components/policy/core/browser/android/policy_converter.cc b/components/policy/core/browser/android/policy_converter.cc
+index b711a64febc9..9d41ad0d1507 100644
+--- a/components/policy/core/browser/android/policy_converter.cc
++++ b/components/policy/core/browser/android/policy_converter.cc
+@@ -175,10 +175,17 @@ std::unique_ptr<base::Value> PolicyConverter::ConvertValueToSchema(
+ }
+ return value;
+ }
++
++ // TODO(crbug.com/859477): Remove after root cause is found.
++ case base::Value::Type::DEAD: {
++ CHECK(false);
++ return nullptr;
++ }
+ }
+
+- NOTREACHED();
+- return std::unique_ptr<base::Value>();
++ // TODO(crbug.com/859477): Revert to NOTREACHED() after root cause is found.
++ CHECK(false);
++ return nullptr;
+ }
+
+ void PolicyConverter::SetPolicyValue(const std::string& key,
+diff --git a/components/policy/core/common/policy_loader_win_unittest.cc b/components/policy/core/common/policy_loader_win_unittest.cc
+index 311e7fb122fc..0377307c5e28 100644
+--- a/components/policy/core/common/policy_loader_win_unittest.cc
++++ b/components/policy/core/common/policy_loader_win_unittest.cc
+@@ -133,8 +133,14 @@ bool InstallValue(const base::Value& value,
+
+ case base::Value::Type::BINARY:
+ return false;
++
++ // TODO(crbug.com/859477): Remove after root cause is found.
++ case base::Value::Type::DEAD:
++ CHECK(false);
++ return false;
+ }
+- NOTREACHED();
++ // TODO(crbug.com/859477): Revert to NOTREACHED() after root cause is found.
++ CHECK(false);
+ return false;
+ }
+
+diff --git a/components/policy/core/common/policy_test_utils.cc b/components/policy/core/common/policy_test_utils.cc
+index 5af98b47275c..919f004153ec 100644
+--- a/components/policy/core/common/policy_test_utils.cc
++++ b/components/policy/core/common/policy_test_utils.cc
+@@ -137,6 +137,11 @@ CFPropertyListRef ValueToProperty(const base::Value& value) {
+ // because there's no equivalent JSON type, and policy values can only
+ // take valid JSON values.
+ break;
++
++ // TODO(crbug.com/859477): Remove after root cause is found.
++ case base::Value::Type::DEAD:
++ CHECK(false);
++ break;
+ }
+
+ return NULL;
+diff --git a/components/policy/core/common/registry_dict.cc b/components/policy/core/common/registry_dict.cc
+index f3ed372bdcb3..696ba7e04abe 100644
+--- a/components/policy/core/common/registry_dict.cc
++++ b/components/policy/core/common/registry_dict.cc
+@@ -135,6 +135,10 @@ std::unique_ptr<base::Value> ConvertRegistryValue(const base::Value& value,
+ case base::Value::Type::BINARY:
+ // No conversion possible.
+ break;
++ // TODO(crbug.com/859477): Remove after root cause is found.
++ case base::Value::Type::DEAD:
++ CHECK(false);
++ return nullptr;
+ }
+
+ LOG(WARNING) << "Failed to convert " << value.type() << " to "
+diff --git a/content/browser/android/java/gin_java_script_to_java_types_coercion.cc b/content/browser/android/java/gin_java_script_to_java_types_coercion.cc
+index dabd66ba8c72..84fd5489a414 100644
+--- a/content/browser/android/java/gin_java_script_to_java_types_coercion.cc
++++ b/content/browser/android/java/gin_java_script_to_java_types_coercion.cc
+@@ -722,8 +722,14 @@ jvalue CoerceJavaScriptValueToJavaValue(JNIEnv* env,
+ case base::Value::Type::BINARY:
+ return CoerceGinJavaBridgeValueToJavaValue(
+ env, value, target_type, coerce_to_string, object_refs, error);
++ // TODO(crbug.com/859477): Remove after root cause is found.
++ case base::Value::Type::DEAD:
++ CHECK(false);
++ return jvalue();
+ }
+- NOTREACHED();
++
++ // TODO(crbug.com/859477): Revert to NOTREACHED() after root cause is found.
++ CHECK(false);
+ return jvalue();
+ }
+
+diff --git a/ipc/ipc_message_utils.cc b/ipc/ipc_message_utils.cc
+index ec04c77c6c18..df6ec39bd663 100644
+--- a/ipc/ipc_message_utils.cc
++++ b/ipc/ipc_message_utils.cc
+@@ -92,7 +92,7 @@ void WriteValue(base::Pickle* m, const base::Value* value, int recursion) {
+
+ switch (value->type()) {
+ case base::Value::Type::NONE:
+- break;
++ break;
+ case base::Value::Type::BOOLEAN: {
+ bool val;
+ result = value->GetAsBoolean(&val);
+@@ -147,6 +147,11 @@ void WriteValue(base::Pickle* m, const base::Value* value, int recursion) {
+ }
+ break;
+ }
++
++ // TODO(crbug.com/859477): Remove after root cause is found.
++ default:
++ CHECK(false);
++ break;
+ }
+ }
+
+@@ -260,7 +265,9 @@ bool ReadValue(const base::Pickle* m,
+ break;
+ }
+ default:
+- return false;
++ // TODO(crbug.com/859477): Remove after root cause is found.
++ CHECK(false);
++ return false;
+ }
+
+ return true;
+diff --git a/mojo/public/cpp/base/values_mojom_traits.h b/mojo/public/cpp/base/values_mojom_traits.h
+index cdb9bbbd94df..66752b7c90d8 100644
+--- a/mojo/public/cpp/base/values_mojom_traits.h
++++ b/mojo/public/cpp/base/values_mojom_traits.h
+@@ -86,8 +86,13 @@ struct COMPONENT_EXPORT(MOJO_BASE_SHARED_TRAITS)
+ return mojo_base::mojom::ValueDataView::Tag::DICTIONARY_VALUE;
+ case base::Value::Type::LIST:
+ return mojo_base::mojom::ValueDataView::Tag::LIST_VALUE;
++ // TODO(crbug.com/859477): Remove after root cause is found.
++ case base::Value::Type::DEAD:
++ CHECK(false);
++ return mojo_base::mojom::ValueDataView::Tag::NULL_VALUE;
+ }
+- NOTREACHED();
++ // TODO(crbug.com/859477): Revert to NOTREACHED() after root cause is found.
++ CHECK(false);
+ return mojo_base::mojom::ValueDataView::Tag::NULL_VALUE;
+ }
+
+diff --git a/ppapi/shared_impl/private/ppb_x509_certificate_private_shared.cc b/ppapi/shared_impl/private/ppb_x509_certificate_private_shared.cc
+index 6ffff36337e0..7f392d50f718 100644
+--- a/ppapi/shared_impl/private/ppb_x509_certificate_private_shared.cc
++++ b/ppapi/shared_impl/private/ppb_x509_certificate_private_shared.cc
+@@ -73,6 +73,8 @@ PP_Var PPB_X509Certificate_Fields::GetFieldAsPPVar(
+ }
+ case base::Value::Type::DICTIONARY:
+ case base::Value::Type::LIST:
++ // TODO(crbug.com/859477): Remove after root cause is found.
++ case base::Value::Type::DEAD:
+ // Not handled.
+ break;
+ }
+--
+2.21.0
+
diff --git a/chromium-74.0.3729.169-glibc-2.29-clone-vfork.patch b/chromium-74.0.3729.169-glibc-2.29-clone-vfork.patch
new file mode 100644
index 0000000..0c9a5d1
--- /dev/null
+++ b/chromium-74.0.3729.169-glibc-2.29-clone-vfork.patch
@@ -0,0 +1,50 @@
+diff -up chromium-74.0.3729.169/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc.glibc229 chromium-74.0.3729.169/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
+--- chromium-74.0.3729.169/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc.glibc229 2019-05-31 13:45:04.165403187 -0400
++++ chromium-74.0.3729.169/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc 2019-05-31 13:45:38.200830150 -0400
+@@ -162,6 +162,15 @@ ResultExpr EvaluateSyscallImpl(int fs_de
+ }
+ #endif
+
++#if defined(__NR_vfork)
++ // vfork() is almost never used as a system call, but some libc versions (e.g.
++ // older versions of bionic) might use it in a posix_spawn() implementation,
++ // which is used by system();
++ if (sysno == __NR_vfork) {
++ return Error(EPERM);
++ }
++#endif
++
+ if (sysno == __NR_futex)
+ return RestrictFutex();
+
+diff -up chromium-74.0.3729.169/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc.glibc229 chromium-74.0.3729.169/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc
+--- chromium-74.0.3729.169/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc.glibc229 2019-05-31 13:45:54.653553140 -0400
++++ chromium-74.0.3729.169/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc 2019-05-31 13:47:19.357675791 -0400
+@@ -134,7 +134,8 @@ namespace sandbox {
+ #if !defined(OS_NACL_NONSFI)
+ // Allow Glibc's and Android pthread creation flags, crash on any other
+ // thread creation attempts and EPERM attempts to use neither
+-// CLONE_VM, nor CLONE_THREAD, which includes all fork() implementations.
++// CLONE_VM nor CLONE_THREAD (all fork implementations), unless CLONE_VFORK is
++// present (as in newer versions of posix_spawn).
+ ResultExpr RestrictCloneToThreadsAndEPERMFork() {
+ const Arg<unsigned long> flags(0);
+
+@@ -153,8 +154,16 @@ ResultExpr RestrictCloneToThreadsAndEPER
+ AnyOf(flags == kAndroidCloneMask, flags == kObsoleteAndroidCloneMask,
+ flags == kGlibcPthreadFlags);
+
++ // The following two flags are the two important flags in any vfork-emulating
++ // clone call. EPERM any clone call that contains both of them.
++ const uint64_t kImportantCloneVforkFlags = CLONE_VFORK | CLONE_VM;
++
++ const BoolExpr is_fork_or_clone_vfork =
++ AnyOf((flags & (CLONE_VM | CLONE_THREAD)) == 0,
++ (flags & kImportantCloneVforkFlags) == kImportantCloneVforkFlags);
++
+ return If(IsAndroid() ? android_test : glibc_test, Allow())
+- .ElseIf((flags & (CLONE_VM | CLONE_THREAD)) == 0, Error(EPERM))
++ .ElseIf(is_fork_or_clone_vfork, Error(EPERM))
+ .Else(CrashSIGSYSClone());
+ }
+
diff --git a/chromium-widevine-other-locations.patch b/chromium-widevine-other-locations.patch
new file mode 100644
index 0000000..0460180
--- /dev/null
+++ b/chromium-widevine-other-locations.patch
@@ -0,0 +1,23 @@
+Description: try alternative locations for libwidevinecdm.so:
+ - $HOME/.local/lib/ (snap-friendly, see https://launchpad.net/bugs/1738149)
+ - /opt/google/chrome/ (installed by official google chrome package)
+Author: Olivier Tilloy <olivier.tilloy(a)canonical.com>
+
+--- a/chrome/common/chrome_paths.cc
++++ b/chrome/common/chrome_paths.cc
+@@ -377,6 +377,15 @@ bool PathProvider(int key, base::FilePat
+ // TODO(crbug.com/663554): Remove this after component updated CDM is
+ // supported on Linux and ChromeOS.
+ case chrome::FILE_WIDEVINE_CDM:
++ base::PathService::Get(base::DIR_HOME, &cur);
++ cur = cur.Append(FILE_PATH_LITERAL(".local/lib/libwidevinecdm.so"));
++ if (base::PathExists(cur)) {
++ break;
++ }
++ if (base::PathExists(base::FilePath(FILE_PATH_LITERAL("/opt/google/chrome/libwidevinecdm.so")))) {
++ cur = base::FilePath(FILE_PATH_LITERAL("/opt/google/chrome/libwidevinecdm.so"));
++ break;
++ }
+ if (!GetComponentDirectory(&cur))
+ return false;
+ cur =
diff --git a/chromium.spec b/chromium.spec
index aa1e24a..886e509 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -51,9 +51,9 @@
%global __provides_exclude_from %{chromium_path}/.*\\.so|%{chromium_path}/lib/.*\\.so|%{chromium_path}/lib/.*\\.so.*
%if 0%{?rhel} == 7
-%global privlibs libEGL|libGLESv2|libVkICD_mock_icd|libVkLayer_core_validation|libVkLayer_object_tracker|libVkLayer_parameter_validation|libVkLayer_threading|libVkLayer_unique_objects|libaccessibility|libandroid_mojo_bindings_shared|libanimation|libapdu|libaura|libaura_extra|libbase|libbase_i18n|libbindings|libbindings_base|libblink_android_mojo_bindings_shared|libblink_common|libblink_controller|libblink_core|libblink_core_mojo_bindings_shared|libblink_embedded_frame_sink_mojo_bindings_shared|libblink_modules|libblink_mojo_bindings_shared|libblink_platform|libbluetooth|libboringssl|libbrowser_ui_views|libcaptive_portal|libcapture_base|libcapture_lib|libcatalog_lib|libcbor|libcc|libcc_animation|libcc_base|libcc_debug|libcc_mojo_embedder|libcc_paint|libcdm_manager|libcertificate_matching|libchrome_features|libchromium_sqlite3|libclearkeycdm|libclient|libcloud_policy_proto_generated_compile|libcodec|libcolor_space|libcommon|libcompositor|libcontent|libcontent_common_mojo_bindings_shar
ed|libcontent_public_common_mojo_bindings_shared|libcontent_service_cpp|libcontent_service_mojom|libcontent_service_mojom_shared|libcrash_key|libcrcrypto|libdbus|libdevice_base|libdevice_event_log|libdevice_features|libdevice_gamepad|libdevice_vr|libdevice_vr_mojo_bindings|libdevice_vr_mojo_bindings_blink|libdevice_vr_mojo_bindings_shared|libdevices|libdiscardable_memory_client|libdiscardable_memory_common|libdiscardable_memory_service|libdisplay|libdisplay_types|libdisplay_util|libdomain_reliability|libembedder|libembedder_switches|libevents|libevents_base|libevents_devices_x11|libevents_ozone_layout|libevents_x|libextras|libfido|libfingerprint|libfreetype_harfbuzz|libgamepad_mojom|libgamepad_mojom_blink|libgamepad_mojom_shared|libgamepad_shared_typemap_traits|libgcm|libgeometry|libgeometry_skia|libgesture_detection|libgfx|libgfx_ipc|libgfx_ipc_buffer_types|libgfx_ipc_color|libgfx_ipc_geometry|libgfx_ipc_skia|libgfx_switches|libgfx_x11|libgin|libgl_in_process_context|libgl_init|lib
gl_wrapper|libgles2|libgles2_implementation|libgles2_utils|libgpu|libgpu_ipc_service|libgtkui|libheadless|libhost|libicui18n|libicuuc|libinterfaces_shared|libipc|libipc_mojom|libipc_mojom_shared|libkeycodes_x11|libkeyed_service_content|libkeyed_service_core|liblearning_common|liblearning_impl|libleveldatabase|liblive_tab_count_metrics|libmanager|libmedia_blink|libmedia_gpu|libmedia_mojo_services|libmedia_session_cpp|libmedia_webrtc|libmemory_instrumentation|libmessage_center|libmessage_support|libmetrics_cpp|libmidi|libmirclient.so.9|libmirclient.so.9.TOC|libmirroring_service|libmojo_base_lib|libmojo_base_mojom|libmojo_base_mojom_blink|libmojo_base_mojom_shared|libmojo_base_shared_typemap_traits|libmojo_core_embedder|libmojo_core_embedder_internal|libmojo_core_ports|libmojo_cpp_platform|libmojo_ime_lib|libmojo_mojom_bindings|libmojo_mojom_bindings_shared|libmojo_public_system|libmojo_public_system_cpp|libmojom_core_shared|libmojom_modules_shared|libmojom_platform_shared|libnative_th
eme|libnet|libnet_with_v8|libnetwork_cpp|libnetwork_cpp_base|libnetwork_service|libnetwork_session_configurator|libonc|libos_crypt|libperfetto|libplatform|libplatform_window_handler_libs|libpolicy_component|libpolicy_proto|libppapi_host|libppapi_proxy|libppapi_shared|libprefs|libprinting|libprotobuf_lite|libproxy_config|libpublic|librange|libraster|libresource_coordinator_cpp|libresource_coordinator_cpp_base|libresource_coordinator_cpp_features|libresource_coordinator_public_mojom|libresource_coordinator_public_mojom_blink|libresource_coordinator_public_mojom_shared|libsandbox|libsandbox_services|libscheduling_metrics|libseccomp_bpf|libservice|libservice_manager_cpp|libservice_manager_cpp_types|libservice_manager_mojom|libservice_manager_mojom_blink|libservice_manager_mojom_constants|libservice_manager_mojom_constants_blink|libservice_manager_mojom_constants_shared|libservice_manager_mojom_shared|libservice_manager_mojom_traits|libsessions|libshared_memory_support|libshell_dialogs|l
ibskia|libsnapshot|libspeech_recognition_error_code_mojom|libspeech_recognition_error_code_mojom_blink|libspeech_recognition_error_code_mojom_shared|libsql|libstartup_tracing|libstorage_browser|libstorage_common|libstub_window|libsuid_sandbox_client|libsurface|libtracing|libtracing_cpp|libtracing_mojom|libtracing_mojom_shared|libui_accessibility_ax_mojom|libui_accessibility_ax_mojom_blink|libui_accessibility_ax_mojom_shared|libui_base|libui_base_clipboard|libui_base_clipboard_types|libui_base_ime|libui_base_ime_linux|libui_base_ime_types|libui_base_x|libui_data_pack|libui_devtools|libui_message_center_cpp|libui_touch_selection|libui_views_mus_lib|liburl|liburl_ipc|liburl_matcher|libusb_shared|libuser_manager|libuser_prefs|libv8|libv8_libbase|libv8_libplatform|libviews|libviz_common|libviz_resource_format_utils|libviz_vulkan_context_provider|libvr_base|libvr_common|libvr_ui|libvulkan_init|libvulkan_wrapper|libvulkan_x11|libweb_dialogs|libweb_feature_mojo_bindings_mojom|libweb_feature
_mojo_bindings_mojom_blink|libweb_feature_mojo_bindings_mojom_shared|libwebdata_common|libwebgpu|libwebview|libwm|libwm_public|libwtf|libx11_events_platform|libx11_window|libzygote|libmedia|libffmpeg|libfontconfig
+%global privlibs libEGL|libGLESv2|libVkICD_mock_icd|libVkLayer_core_validation|libVkLayer_object_lifetimes|libVkLayer_stateless_validation|libVkLayer_thread_safety|libVkLayer_unique_objects|libaccessibility|libandroid_mojo_bindings_shared|libanimation|libapdu|libaura|libaura_extra|libbase|libbase_i18n|libbindings|libbindings_base|libblink_android_mojo_bindings_shared|libblink_common|libblink_controller|libblink_core|libblink_core_mojo_bindings_shared|libblink_embedded_frame_sink_mojo_bindings_shared|libblink_modules|libblink_mojo_bindings_shared|libblink_platform|libbluetooth|libboringssl|libbrowser_ui_views|libcaptive_portal|libcapture_base|libcapture_lib|libcbor|libcc|libcc_animation|libcc_base|libcc_debug|libcc_mojo_embedder|libcc_paint|libcdm_manager|libcertificate_matching|libchrome_features|libchromium_sqlite3|libclearkeycdm|libclient|libcloud_policy_proto_generated_compile|libcodec|libcolor_space|libcommon|libcompositor|libcontent|libcontent_common_mojo_bindings_shared|libcon
tent_public_common_mojo_bindings_shared|libcontent_service_cpp|libcontent_service_mojom|libcontent_service_mojom_shared|libcrash_key|libcrcrypto|libdbus|libdbus_thread_linux|libdevice_base|libdevice_event_log|libdevice_features|libdevice_gamepad|libdevice_vr|libdevice_vr_mojo_bindings|libdevice_vr_mojo_bindings_blink|libdevice_vr_mojo_bindings_shared|libdevices|libdiscardable_memory_client|libdiscardable_memory_common|libdiscardable_memory_service|libdisplay|libdisplay_types|libdisplay_util|libdomain_reliability|libembedder|libembedder_switches|libevents|libevents_base|libevents_devices_x11|libevents_ozone_layout|libevents_x|libextras|libfido|libfingerprint|libfreetype_harfbuzz|libgamepad_mojom|libgamepad_mojom_blink|libgamepad_mojom_shared|libgamepad_shared_typemap_traits|libgcm|libgeometry|libgeometry_skia|libgesture_detection|libgfx|libgfx_ipc|libgfx_ipc_buffer_types|libgfx_ipc_color|libgfx_ipc_geometry|libgfx_ipc_skia|libgfx_switches|libgfx_x11|libgin|libgl_in_process_context|li
bgl_init|libgl_wrapper|libgles2|libgles2_implementation|libgles2_utils|libgpu|libgpu_ipc_service|libgtkui|libheadless|libhost|libicui18n|libicuuc|libinterfaces_shared|libipc|libipc_mojom|libipc_mojom_shared|libkeycodes_x11|libkeyed_service_content|libkeyed_service_core|liblearning_common|liblearning_impl|libleveldatabase|liblive_tab_count_metrics|libmanager|libmedia_blink|libmedia_filters_jpeg_parser|libmedia_gpu|libmedia_mojo_services|libmedia_session_cpp|libmedia_webrtc|libmemory_instrumentation|libmessage_center|libmessage_support|libmetrics_cpp|libmidi|libmirclient.so.9|libmirroring_service|libmojo_base_lib|libmojo_base_mojom|libmojo_base_mojom_blink|libmojo_base_mojom_shared|libmojo_base_shared_typemap_traits|libmojo_core_embedder|libmojo_core_embedder_internal|libmojo_core_ports|libmojo_cpp_platform|libmojo_ime_lib|libmojo_mojom_bindings|libmojo_mojom_bindings_shared|libmojo_public_system|libmojo_public_system_cpp|libmojom_core_shared|libmojom_mhtml_load_result_shared|libmojom
_modules_shared|libmojom_platform_shared|libmpris|libnative_theme|libnet|libnet_with_v8|libnetwork_cpp|libnetwork_cpp_base|libnetwork_service|libnetwork_session_configurator|libonc|libos_crypt|libperfetto|libplatform|libplatform_window_handler_libs|libpolicy_component|libpolicy_proto|libppapi_host|libppapi_proxy|libppapi_shared|libprefs|libprinting|libprotobuf_lite|libproxy_config|libpublic|librange|libraster|libresource_coordinator_cpp_base|libresource_coordinator_cpp_features|libresource_coordinator_public_mojom|libresource_coordinator_public_mojom_blink|libresource_coordinator_public_mojom_shared|libsandbox|libsandbox_services|libscheduling_metrics|libseccomp_bpf|libservice|libservice_manager_cpp|libservice_manager_cpp_types|libservice_manager_mojom|libservice_manager_mojom_blink|libservice_manager_mojom_constants|libservice_manager_mojom_constants_blink|libservice_manager_mojom_constants_shared|libservice_manager_mojom_shared|libservice_manager_mojom_traits|libsessions|libshared
_memory_support|libshell_dialogs|libskia|libsnapshot|libspeech_recognition_error_code_mojom|libspeech_recognition_error_code_mojom_blink|libspeech_recognition_error_code_mojom_shared|libsql|libstartup_tracing|libstorage_browser|libstorage_common|libstub_window|libsuid_sandbox_client|libsurface|libtracing|libtracing_cpp|libtracing_mojom|libtracing_mojom_shared|libui_accessibility_ax_mojom|libui_accessibility_ax_mojom_blink|libui_accessibility_ax_mojom_shared|libui_base|libui_base_clipboard|libui_base_clipboard_types|libui_base_features|libui_base_ime|libui_base_ime_linux|libui_base_ime_types|libui_base_x|libui_data_pack|libui_devtools|libui_message_center_cpp|libui_touch_selection|libui_views_mus_lib|liburl|liburl_ipc|liburl_matcher|libusb_shared|libuser_manager|libuser_prefs|libv8|libv8_libbase|libv8_libplatform|libviews|libviz_common|libviz_resource_format_utils|libviz_vulkan_context_provider|libvr_base|libvr_common|libvulkan_init|libvulkan_wrapper|libvulkan_x11|libweb_dialogs|libw
eb_feature_mojo_bindings_mojom|libweb_feature_mojo_bindings_mojom_blink|libweb_feature_mojo_bindings_mojom_shared|libwebdata_common|libwebgpu|libwebview|libwm|libwm_public|libwtf|libx11_events_platform|libx11_window|libzygote|libmedia|libffmpeg|libfontconfig
%else
-%global privlibs libEGL|libGLESv2|libVkICD_mock_icd|libVkLayer_core_validation|libVkLayer_object_tracker|libVkLayer_parameter_validation|libVkLayer_threading|libVkLayer_unique_objects|libaccessibility|libandroid_mojo_bindings_shared|libanimation|libapdu|libaura|libaura_extra|libbase|libbase_i18n|libbindings|libbindings_base|libblink_android_mojo_bindings_shared|libblink_common|libblink_controller|libblink_core|libblink_core_mojo_bindings_shared|libblink_embedded_frame_sink_mojo_bindings_shared|libblink_modules|libblink_mojo_bindings_shared|libblink_platform|libbluetooth|libboringssl|libbrowser_ui_views|libcaptive_portal|libcapture_base|libcapture_lib|libcatalog_lib|libcbor|libcc|libcc_animation|libcc_base|libcc_debug|libcc_mojo_embedder|libcc_paint|libcdm_manager|libcertificate_matching|libchrome_features|libchromium_sqlite3|libclearkeycdm|libclient|libcloud_policy_proto_generated_compile|libcodec|libcolor_space|libcommon|libcompositor|libcontent|libcontent_common_mojo_bindings_shar
ed|libcontent_public_common_mojo_bindings_shared|libcontent_service_cpp|libcontent_service_mojom|libcontent_service_mojom_shared|libcrash_key|libcrcrypto|libdbus|libdevice_base|libdevice_event_log|libdevice_features|libdevice_gamepad|libdevice_vr|libdevice_vr_mojo_bindings|libdevice_vr_mojo_bindings_blink|libdevice_vr_mojo_bindings_shared|libdevices|libdiscardable_memory_client|libdiscardable_memory_common|libdiscardable_memory_service|libdisplay|libdisplay_types|libdisplay_util|libdomain_reliability|libembedder|libembedder_switches|libevents|libevents_base|libevents_devices_x11|libevents_ozone_layout|libevents_x|libextras|libfido|libfingerprint|libfreetype_harfbuzz|libgamepad_mojom|libgamepad_mojom_blink|libgamepad_mojom_shared|libgamepad_shared_typemap_traits|libgcm|libgeometry|libgeometry_skia|libgesture_detection|libgfx|libgfx_ipc|libgfx_ipc_buffer_types|libgfx_ipc_color|libgfx_ipc_geometry|libgfx_ipc_skia|libgfx_switches|libgfx_x11|libgin|libgl_in_process_context|libgl_init|lib
gl_wrapper|libgles2|libgles2_implementation|libgles2_utils|libgpu|libgpu_ipc_service|libgtkui|libheadless|libhost|libicui18n|libicuuc|libinterfaces_shared|libipc|libipc_mojom|libipc_mojom_shared|libkeycodes_x11|libkeyed_service_content|libkeyed_service_core|liblearning_common|liblearning_impl|libleveldatabase|liblive_tab_count_metrics|libmanager|libmedia_blink|libmedia_gpu|libmedia_mojo_services|libmedia_session_cpp|libmedia_webrtc|libmemory_instrumentation|libmessage_center|libmessage_support|libmetrics_cpp|libmidi|libmirclient.so.9|libmirclient.so.9.TOC|libmirroring_service|libmojo_base_lib|libmojo_base_mojom|libmojo_base_mojom_blink|libmojo_base_mojom_shared|libmojo_base_shared_typemap_traits|libmojo_core_embedder|libmojo_core_embedder_internal|libmojo_core_ports|libmojo_cpp_platform|libmojo_ime_lib|libmojo_mojom_bindings|libmojo_mojom_bindings_shared|libmojo_public_system|libmojo_public_system_cpp|libmojom_core_shared|libmojom_modules_shared|libmojom_platform_shared|libnative_th
eme|libnet|libnet_with_v8|libnetwork_cpp|libnetwork_cpp_base|libnetwork_service|libnetwork_session_configurator|libonc|libos_crypt|libperfetto|libplatform|libplatform_window_handler_libs|libpolicy_component|libpolicy_proto|libppapi_host|libppapi_proxy|libppapi_shared|libprefs|libprinting|libprotobuf_lite|libproxy_config|libpublic|librange|libraster|libresource_coordinator_cpp|libresource_coordinator_cpp_base|libresource_coordinator_cpp_features|libresource_coordinator_public_mojom|libresource_coordinator_public_mojom_blink|libresource_coordinator_public_mojom_shared|libsandbox|libsandbox_services|libscheduling_metrics|libseccomp_bpf|libservice|libservice_manager_cpp|libservice_manager_cpp_types|libservice_manager_mojom|libservice_manager_mojom_blink|libservice_manager_mojom_constants|libservice_manager_mojom_constants_blink|libservice_manager_mojom_constants_shared|libservice_manager_mojom_shared|libservice_manager_mojom_traits|libsessions|libshared_memory_support|libshell_dialogs|l
ibskia|libsnapshot|libspeech_recognition_error_code_mojom|libspeech_recognition_error_code_mojom_blink|libspeech_recognition_error_code_mojom_shared|libsql|libstartup_tracing|libstorage_browser|libstorage_common|libstub_window|libsuid_sandbox_client|libsurface|libtracing|libtracing_cpp|libtracing_mojom|libtracing_mojom_shared|libui_accessibility_ax_mojom|libui_accessibility_ax_mojom_blink|libui_accessibility_ax_mojom_shared|libui_base|libui_base_clipboard|libui_base_clipboard_types|libui_base_ime|libui_base_ime_linux|libui_base_ime_types|libui_base_x|libui_data_pack|libui_devtools|libui_message_center_cpp|libui_touch_selection|libui_views_mus_lib|liburl|liburl_ipc|liburl_matcher|libusb_shared|libuser_manager|libuser_prefs|libv8|libv8_libbase|libv8_libplatform|libviews|libviz_common|libviz_resource_format_utils|libviz_vulkan_context_provider|libvr_base|libvr_common|libvr_ui|libvulkan_init|libvulkan_wrapper|libvulkan_x11|libweb_dialogs|libweb_feature_mojo_bindings_mojom|libweb_feature
_mojo_bindings_mojom_blink|libweb_feature_mojo_bindings_mojom_shared|libwebdata_common|libwebgpu|libwebview|libwm|libwm_public|libwtf|libx11_events_platform|libx11_window|libzygote|libmedia|libffmpeg
+%global privlibs libEGL|libGLESv2|libVkICD_mock_icd|libVkLayer_core_validation|libVkLayer_object_lifetimes|libVkLayer_stateless_validation|libVkLayer_thread_safety|libVkLayer_unique_objects|libaccessibility|libandroid_mojo_bindings_shared|libanimation|libapdu|libaura|libaura_extra|libbase|libbase_i18n|libbindings|libbindings_base|libblink_android_mojo_bindings_shared|libblink_common|libblink_controller|libblink_core|libblink_core_mojo_bindings_shared|libblink_embedded_frame_sink_mojo_bindings_shared|libblink_modules|libblink_mojo_bindings_shared|libblink_platform|libbluetooth|libboringssl|libbrowser_ui_views|libcaptive_portal|libcapture_base|libcapture_lib|libcbor|libcc|libcc_animation|libcc_base|libcc_debug|libcc_mojo_embedder|libcc_paint|libcdm_manager|libcertificate_matching|libchrome_features|libchromium_sqlite3|libclearkeycdm|libclient|libcloud_policy_proto_generated_compile|libcodec|libcolor_space|libcommon|libcompositor|libcontent|libcontent_common_mojo_bindings_shared|libcon
tent_public_common_mojo_bindings_shared|libcontent_service_cpp|libcontent_service_mojom|libcontent_service_mojom_shared|libcrash_key|libcrcrypto|libdbus|libdbus_thread_linux|libdevice_base|libdevice_event_log|libdevice_features|libdevice_gamepad|libdevice_vr|libdevice_vr_mojo_bindings|libdevice_vr_mojo_bindings_blink|libdevice_vr_mojo_bindings_shared|libdevices|libdiscardable_memory_client|libdiscardable_memory_common|libdiscardable_memory_service|libdisplay|libdisplay_types|libdisplay_util|libdomain_reliability|libembedder|libembedder_switches|libevents|libevents_base|libevents_devices_x11|libevents_ozone_layout|libevents_x|libextras|libfido|libfingerprint|libfreetype_harfbuzz|libgamepad_mojom|libgamepad_mojom_blink|libgamepad_mojom_shared|libgamepad_shared_typemap_traits|libgcm|libgeometry|libgeometry_skia|libgesture_detection|libgfx|libgfx_ipc|libgfx_ipc_buffer_types|libgfx_ipc_color|libgfx_ipc_geometry|libgfx_ipc_skia|libgfx_switches|libgfx_x11|libgin|libgl_in_process_context|li
bgl_init|libgl_wrapper|libgles2|libgles2_implementation|libgles2_utils|libgpu|libgpu_ipc_service|libgtkui|libheadless|libhost|libicui18n|libicuuc|libinterfaces_shared|libipc|libipc_mojom|libipc_mojom_shared|libkeycodes_x11|libkeyed_service_content|libkeyed_service_core|liblearning_common|liblearning_impl|libleveldatabase|liblive_tab_count_metrics|libmanager|libmedia_blink|libmedia_filters_jpeg_parser|libmedia_gpu|libmedia_mojo_services|libmedia_session_cpp|libmedia_webrtc|libmemory_instrumentation|libmessage_center|libmessage_support|libmetrics_cpp|libmidi|libmirclient.so.9|libmirroring_service|libmojo_base_lib|libmojo_base_mojom|libmojo_base_mojom_blink|libmojo_base_mojom_shared|libmojo_base_shared_typemap_traits|libmojo_core_embedder|libmojo_core_embedder_internal|libmojo_core_ports|libmojo_cpp_platform|libmojo_ime_lib|libmojo_mojom_bindings|libmojo_mojom_bindings_shared|libmojo_public_system|libmojo_public_system_cpp|libmojom_core_shared|libmojom_mhtml_load_result_shared|libmojom
_modules_shared|libmojom_platform_shared|libmpris|libnative_theme|libnet|libnet_with_v8|libnetwork_cpp|libnetwork_cpp_base|libnetwork_service|libnetwork_session_configurator|libonc|libos_crypt|libperfetto|libplatform|libplatform_window_handler_libs|libpolicy_component|libpolicy_proto|libppapi_host|libppapi_proxy|libppapi_shared|libprefs|libprinting|libprotobuf_lite|libproxy_config|libpublic|librange|libraster|libresource_coordinator_cpp_base|libresource_coordinator_cpp_features|libresource_coordinator_public_mojom|libresource_coordinator_public_mojom_blink|libresource_coordinator_public_mojom_shared|libsandbox|libsandbox_services|libscheduling_metrics|libseccomp_bpf|libservice|libservice_manager_cpp|libservice_manager_cpp_types|libservice_manager_mojom|libservice_manager_mojom_blink|libservice_manager_mojom_constants|libservice_manager_mojom_constants_blink|libservice_manager_mojom_constants_shared|libservice_manager_mojom_shared|libservice_manager_mojom_traits|libsessions|libshared
_memory_support|libshell_dialogs|libskia|libsnapshot|libspeech_recognition_error_code_mojom|libspeech_recognition_error_code_mojom_blink|libspeech_recognition_error_code_mojom_shared|libsql|libstartup_tracing|libstorage_browser|libstorage_common|libstub_window|libsuid_sandbox_client|libsurface|libtracing|libtracing_cpp|libtracing_mojom|libtracing_mojom_shared|libui_accessibility_ax_mojom|libui_accessibility_ax_mojom_blink|libui_accessibility_ax_mojom_shared|libui_base|libui_base_clipboard|libui_base_clipboard_types|libui_base_features|libui_base_ime|libui_base_ime_linux|libui_base_ime_types|libui_base_x|libui_data_pack|libui_devtools|libui_message_center_cpp|libui_touch_selection|libui_views_mus_lib|liburl|liburl_ipc|liburl_matcher|libusb_shared|libuser_manager|libuser_prefs|libv8|libv8_libbase|libv8_libplatform|libviews|libviz_common|libviz_resource_format_utils|libviz_vulkan_context_provider|libvr_base|libvr_common|libvulkan_init|libvulkan_wrapper|libvulkan_x11|libweb_dialogs|libw
eb_feature_mojo_bindings_mojom|libweb_feature_mojo_bindings_mojom_blink|libweb_feature_mojo_bindings_mojom_shared|libwebdata_common|libwebgpu|libwebview|libwm|libwm_public|libwtf|libx11_events_platform|libx11_window|libzygote|libmedia|libffmpeg
%endif
%global __requires_exclude ^(%{privlibs})\\.so*
@@ -154,14 +154,14 @@ BuildRequires: libicu-devel >= 5.4
%global chromoting_client_id %nil
%endif
-%global majorversion 73
+%global majorversion 74
%if %{freeworld}
Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
%else
Name: chromium%{chromium_channel}
%endif
-Version: %{majorversion}.0.3683.103
+Version: %{majorversion}.0.3729.169
Release: 1%{?dist}
Summary: A WebKit (Blink) powered web browser
Url: http://www.chromium.org/Home
@@ -309,27 +309,30 @@ Patch122: chromium-73.0.3683.75-vaapi-i686-fpermissive.patch
Patch124: chromium-71.0.3578.98-vaapi-libva1-compatibility.patch
# drop rsp clobber, which breaks gcc9 (thanks to Jeff Law)
Patch126: chromium-71.0.3578.98-gcc9-drop-rsp-clobber.patch
-# Thank you Gentoo.
-#
-Patch128: chromium-73-gcc-0.patch
-Patch129: chromium-73-gcc-1.patch
-Patch130: chromium-73-gcc-2.patch
-Patch131: chromium-73-gcc-3.patch
-Patch132: chromium-73-gcc-4.patch
-Patch133: chromium-73-gcc-5.patch
-Patch134: chromium-73-gcc-6.patch
+# Thanks Gentoo
+Patch128: https://dev.gentoo.org/~floppym/dist/chromium-74-e1b1f3a.patch
+Patch129: https://gitweb.gentoo.org/repo/gentoo.git/plain/www-client/chromium/files...
+# Thanks Ubuntu
+# Disable these two patches when v75 lands
+Patch130: revert-gn-4980.patch
+Patch131: revert-gn-4960.patch
+# Try to load widevine from other places
+Patch132: chromium-widevine-other-locations.patch
+# Gentoo again!
+# https://chromium.googlesource.com/chromium/src/+/7685422a90e1da829cb32d68...
+Patch133: chromium-74-7685422.patch
+Patch134: chromium-74-c2c467f.patch
# Disable -fno-delete-null-pointer-checks
Patch135: chromium-73.0.3683.75-disable-fno-delete-null-pointer-checks.patch
# Add #include <cstring> to get pipewire code to build
Patch136: chromium-73.0.3683.75-pipewire-cstring-fix.patch
-# Conditionalize header-hygiene flags for clang
-Patch137: chromium-73.0.3683.75-no-header-hygiene.patch
-# Add missing #include <limits> needed to build crashpad for aarch64
-Patch138: chromium-73.0.3683.75-aarch64-crashpad-limits.patch
+# One more gentoo patch
+# https://chromium-review.googlesource.com/c/chromium/src/+/1472716
+Patch137: chromium-74-2f28731.patch
# el7 only patch
Patch139: chromium-73.0.3683.75-el7-fix-noexcept.patch
# https://bugs.chromium.org/p/chromium/issues/detail?id=949312
-Patch140: chromium-73.0.3683.103-glibc-2.29-clone-vfork.patch
+Patch140: chromium-74.0.3729.169-glibc-2.29-clone-vfork.patch
# Use chromium-latest.py to generate clean tarball from released build tarballs, found here:
# http://build.chromium.org/buildbot/official/
@@ -898,17 +901,16 @@ udev.
%endif
%patch124 -p1 -b .va1compat
%patch126 -p1 -b .gcc9
-%patch128 -p1 -b .gentoogcc0
-%patch129 -p1 -b .gentoogcc1
-%patch130 -p1 -b .gentoogcc2
-%patch131 -p1 -b .gentoogcc3
-%patch132 -p1 -b .gentoogcc4
-%patch133 -p1 -b .gentoogcc5
-%patch134 -p1 -b .gentoogcc6
+%patch128 -p1 -b .gentoo2
+%patch129 -p1 -b .gentoo3
+%patch130 -p1 -b .revert-gn-4980
+%patch131 -p1 -b .revert-gn-4960
+%patch132 -p1 -b .widevine-other-locations
+%patch133 -p1 -b .gentoo4
+%patch134 -p1 -b .gentoo5
%patch135 -p1 -b .disable-ndnpc
%patch136 -p1 -b .cstring-fix
-%patch137 -p1 -b .nohh
-%patch138 -p1 -b .aarch64-limits
+%patch137 -p1 -b .2f28731
%if 0%{?rhel} == 7
%patch139 -p1 -b .el7-noexcept
%endif
@@ -1198,8 +1200,10 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/crashpad/crashpad/third_party/zlib/' \
'third_party/crc32c' \
'third_party/cros_system_api' \
+ 'third_party/dav1d' \
'third_party/devscripts' \
'third_party/dom_distiller_js' \
+ 'third_party/emoji-segmenter' \
'third_party/expat' \
'third_party/ffmpeg' \
'third_party/fips181' \
@@ -1212,6 +1216,9 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/google_input_tools/third_party/closure_library' \
'third_party/google_input_tools/third_party/closure_library/third_party/closure' \
'third_party/googletest' \
+ 'third_party/glslang' \
+ 'third_party/grpc' \
+ 'third_party/grpc/src/third_party/nanopb' \
'third_party/harfbuzz-ng' \
'third_party/hunspell' \
'third_party/iccjpeg' \
@@ -1901,6 +1908,9 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%changelog
+* Fri May 31 2019 Tom Callaway <spot(a)fedoraproject.org> - 74.0.3729.169-1
+- update to 74.0.3729.169
+
* Thu Apr 11 2019 Tom Callaway <spot(a)fedoraproject.org> - 73.0.3683.103-1
- update to 73.0.3683.103
- add CLONE_VFORK logic to seccomp filter for linux to handle glibc 2.29 change
diff --git a/clean_ffmpeg.sh b/clean_ffmpeg.sh
index aea5295..cc5390b 100755
--- a/clean_ffmpeg.sh
+++ b/clean_ffmpeg.sh
@@ -117,6 +117,7 @@ header_files=" libavcodec/x86/inline_asm.h \
libavcodec/pcm_tablegen.h \
libavcodec/pixblockdsp.h \
libavcodec/pixels.h \
+ libavcodec/png.h \
libavcodec/put_bits.h \
libavcodec/qpeldsp.h \
libavcodec/ratecontrol.h \
diff --git a/quiche-00f47df.patch b/quiche-00f47df.patch
new file mode 100644
index 0000000..720edf9
--- /dev/null
+++ b/quiche-00f47df.patch
@@ -0,0 +1,38 @@
+From 00f47df999c9b19e80fdc01db0ae9ca1b6a12b3a Mon Sep 17 00:00:00 2001
+From: vasilvv <vasilvv(a)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(a)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/quic/core/quic_stream_send_buffer.h
++++ b/net/third_party/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.21.0
+
diff --git a/revert-gn-4960.patch b/revert-gn-4960.patch
new file mode 100644
index 0000000..bb51ada
--- /dev/null
+++ b/revert-gn-4960.patch
@@ -0,0 +1,655 @@
+Description: revert https://gn.googlesource.com/gn/+/0d038c2e0a32a528713d3dfaf1f1e0cdfe87fd46, which breaks the chromium build
+
+--- a/tools/gn/build/gen.py
++++ b/tools/gn/build/gen.py
+@@ -522,6 +522,7 @@ def WriteGNNinja(path, platform, host, o
+ 'tools/gn/setup.cc',
+ 'tools/gn/source_dir.cc',
+ 'tools/gn/source_file.cc',
++ 'tools/gn/source_file_type.cc',
+ 'tools/gn/standard_out.cc',
+ 'tools/gn/string_utils.cc',
+ 'tools/gn/substitution_list.cc',
+--- a/tools/gn/tools/gn/c_tool.h
++++ b/tools/gn/tools/gn/c_tool.h
+@@ -12,6 +12,7 @@
+ #include "tools/gn/label.h"
+ #include "tools/gn/label_ptr.h"
+ #include "tools/gn/scope.h"
++#include "tools/gn/source_file_type.h"
+ #include "tools/gn/substitution_list.h"
+ #include "tools/gn/substitution_pattern.h"
+ #include "tools/gn/tool.h"
+--- a/tools/gn/tools/gn/compile_commands_writer.cc
++++ b/tools/gn/tools/gn/compile_commands_writer.cc
+@@ -122,7 +122,7 @@ void WriteCommand(const Target* target,
+ const CompileFlags& flags,
+ std::vector<OutputFile>& tool_outputs,
+ PathOutput& path_output,
+- SourceFile::Type source_type,
++ SourceFileType source_type,
+ const char* tool_name,
+ EscapeOptions opts,
+ std::string* compile_commands) {
+@@ -144,16 +144,16 @@ void WriteCommand(const Target* target,
+ } else if (range.type == &CSubstitutionCFlags) {
+ command_out << flags.cflags;
+ } else if (range.type == &CSubstitutionCFlagsC) {
+- if (source_type == SourceFile::SOURCE_C)
++ if (source_type == SOURCE_C)
+ command_out << flags.cflags_c;
+ } else if (range.type == &CSubstitutionCFlagsCc) {
+- if (source_type == SourceFile::SOURCE_CPP)
++ if (source_type == SOURCE_CPP)
+ command_out << flags.cflags_cc;
+ } else if (range.type == &CSubstitutionCFlagsObjC) {
+- if (source_type == SourceFile::SOURCE_M)
++ if (source_type == SOURCE_M)
+ command_out << flags.cflags_objc;
+ } else if (range.type == &CSubstitutionCFlagsObjCc) {
+- if (source_type == SourceFile::SOURCE_MM)
++ if (source_type == SOURCE_MM)
+ command_out << flags.cflags_objcc;
+ } else if (range.type == &SubstitutionLabel ||
+ range.type == &SubstitutionLabelName ||
+@@ -222,11 +222,9 @@ void CompileCommandsWriter::RenderJSON(c
+ for (const auto& source : target->sources()) {
+ // If this source is not a C/C++/ObjC/ObjC++ source (not header) file,
+ // continue as it does not belong in the compilation database.
+- SourceFile::Type source_type = source.type();
+- if (source_type != SourceFile::SOURCE_CPP &&
+- source_type != SourceFile::SOURCE_C &&
+- source_type != SourceFile::SOURCE_M &&
+- source_type != SourceFile::SOURCE_MM)
++ SourceFileType source_type = GetSourceFileType(source);
++ if (source_type != SOURCE_CPP && source_type != SOURCE_C &&
++ source_type != SOURCE_M && source_type != SOURCE_MM)
+ continue;
+
+ const char* tool_name = Tool::kToolNone;
+@@ -324,4 +322,4 @@ void CompileCommandsWriter::VisitDeps(co
+ VisitDeps(pair.ptr, visited);
+ }
+ }
+-}
++}
+\ No newline at end of file
+--- a/tools/gn/tools/gn/general_tool.h
++++ b/tools/gn/tools/gn/general_tool.h
+@@ -11,6 +11,7 @@
+ #include "base/macros.h"
+ #include "tools/gn/label.h"
+ #include "tools/gn/label_ptr.h"
++#include "tools/gn/source_file_type.h"
+ #include "tools/gn/substitution_list.h"
+ #include "tools/gn/substitution_pattern.h"
+ #include "tools/gn/tool.h"
+--- a/tools/gn/tools/gn/header_checker.cc
++++ b/tools/gn/tools/gn/header_checker.cc
+@@ -18,6 +18,7 @@
+ #include "tools/gn/err.h"
+ #include "tools/gn/filesystem_utils.h"
+ #include "tools/gn/scheduler.h"
++#include "tools/gn/source_file_type.h"
+ #include "tools/gn/target.h"
+ #include "tools/gn/trace.h"
+ #include "util/worker_pool.h"
+@@ -151,10 +152,9 @@ void HeaderChecker::RunCheckOverFiles(co
+
+ for (const auto& file : files) {
+ // Only check C-like source files (RC files also have includes).
+- SourceFile::Type type = file.first.type();
+- if (type != SourceFile::SOURCE_CPP && type != SourceFile::SOURCE_H &&
+- type != SourceFile::SOURCE_C && type != SourceFile::SOURCE_M &&
+- type != SourceFile::SOURCE_MM && type != SourceFile::SOURCE_RC)
++ SourceFileType type = GetSourceFileType(file.first);
++ if (type != SOURCE_CPP && type != SOURCE_H && type != SOURCE_C &&
++ type != SOURCE_M && type != SOURCE_MM && type != SOURCE_RC)
+ continue;
+
+ if (!check_generated_) {
+--- a/tools/gn/tools/gn/ninja_binary_target_writer.cc
++++ b/tools/gn/tools/gn/ninja_binary_target_writer.cc
+@@ -23,23 +23,22 @@
+ #include "tools/gn/ninja_utils.h"
+ #include "tools/gn/scheduler.h"
+ #include "tools/gn/settings.h"
++#include "tools/gn/source_file_type.h"
+ #include "tools/gn/string_utils.h"
+ #include "tools/gn/substitution_writer.h"
+ #include "tools/gn/target.h"
+
+ bool NinjaBinaryTargetWriter::SourceFileTypeSet::CSourceUsed() {
+- return Get(SourceFile::SOURCE_CPP) || Get(SourceFile::SOURCE_H) ||
+- Get(SourceFile::SOURCE_C) || Get(SourceFile::SOURCE_M) ||
+- Get(SourceFile::SOURCE_MM) || Get(SourceFile::SOURCE_RC) ||
+- Get(SourceFile::SOURCE_S);
++ return Get(SOURCE_CPP) || Get(SOURCE_H) || Get(SOURCE_C) || Get(SOURCE_M) ||
++ Get(SOURCE_MM) || Get(SOURCE_RC) || Get(SOURCE_S);
+ }
+
+ bool NinjaBinaryTargetWriter::SourceFileTypeSet::RustSourceUsed() {
+- return Get(SourceFile::SOURCE_RS);
++ return Get(SOURCE_RS);
+ }
+
+ bool NinjaBinaryTargetWriter::SourceFileTypeSet::GoSourceUsed() {
+- return Get(SourceFile::SOURCE_GO);
++ return Get(SOURCE_GO);
+ }
+
+ NinjaBinaryTargetWriter::NinjaBinaryTargetWriter(const Target* target,
+@@ -50,6 +49,10 @@ NinjaBinaryTargetWriter::NinjaBinaryTarg
+ NinjaBinaryTargetWriter::~NinjaBinaryTargetWriter() = default;
+
+ void NinjaBinaryTargetWriter::Run() {
++ SourceFileTypeSet used_types;
++ for (const auto& source : target_->sources())
++ used_types.Set(GetSourceFileType(source));
++
+ NinjaCBinaryTargetWriter writer(target_, out_);
+ writer.Run();
+ }
+--- a/tools/gn/tools/gn/ninja_binary_target_writer.h
++++ b/tools/gn/tools/gn/ninja_binary_target_writer.h
+@@ -23,12 +23,11 @@ class NinjaBinaryTargetWriter : public N
+ class SourceFileTypeSet {
+ public:
+ SourceFileTypeSet() {
+- memset(flags_, 0,
+- sizeof(bool) * static_cast<int>(SourceFile::SOURCE_NUMTYPES));
++ memset(flags_, 0, sizeof(bool) * static_cast<int>(SOURCE_NUMTYPES));
+ }
+
+- void Set(SourceFile::Type type) { flags_[static_cast<int>(type)] = true; }
+- bool Get(SourceFile::Type type) const {
++ void Set(SourceFileType type) { flags_[static_cast<int>(type)] = true; }
++ bool Get(SourceFileType type) const {
+ return flags_[static_cast<int>(type)];
+ }
+
+@@ -37,7 +36,7 @@ class NinjaBinaryTargetWriter : public N
+ bool GoSourceUsed();
+
+ private:
+- bool flags_[static_cast<int>(SourceFile::SOURCE_NUMTYPES)];
++ bool flags_[static_cast<int>(SOURCE_NUMTYPES)];
+ };
+
+ NinjaBinaryTargetWriter(const Target* target, std::ostream& out);
+--- a/tools/gn/tools/gn/ninja_c_binary_target_writer.cc
++++ b/tools/gn/tools/gn/ninja_c_binary_target_writer.cc
+@@ -24,6 +24,7 @@
+ #include "tools/gn/ninja_utils.h"
+ #include "tools/gn/scheduler.h"
+ #include "tools/gn/settings.h"
++#include "tools/gn/source_file_type.h"
+ #include "tools/gn/string_utils.h"
+ #include "tools/gn/substitution_writer.h"
+ #include "tools/gn/target.h"
+@@ -66,27 +67,27 @@ void AddSourceSetObjectFiles(const Targe
+ if (source_set->GetOutputFilesForSource(source, &tool_name, &tool_outputs))
+ obj_files->push_back(tool_outputs[0]);
+
+- used_types.Set(source.type());
++ used_types.Set(GetSourceFileType(source));
+ }
+
+ // Add MSVC precompiled header object files. GCC .gch files are not object
+ // files so they are omitted.
+ if (source_set->config_values().has_precompiled_headers()) {
+- if (used_types.Get(SourceFile::SOURCE_C)) {
++ if (used_types.Get(SOURCE_C)) {
+ const CTool* tool = source_set->toolchain()->GetToolAsC(CTool::kCToolCc);
+ if (tool && tool->precompiled_header_type() == CTool::PCH_MSVC) {
+ GetPCHOutputFiles(source_set, CTool::kCToolCc, &tool_outputs);
+ obj_files->Append(tool_outputs.begin(), tool_outputs.end());
+ }
+ }
+- if (used_types.Get(SourceFile::SOURCE_CPP)) {
++ if (used_types.Get(SOURCE_CPP)) {
+ const CTool* tool = source_set->toolchain()->GetToolAsC(CTool::kCToolCxx);
+ if (tool && tool->precompiled_header_type() == CTool::PCH_MSVC) {
+ GetPCHOutputFiles(source_set, CTool::kCToolCxx, &tool_outputs);
+ obj_files->Append(tool_outputs.begin(), tool_outputs.end());
+ }
+ }
+- if (used_types.Get(SourceFile::SOURCE_M)) {
++ if (used_types.Get(SOURCE_M)) {
+ const CTool* tool =
+ source_set->toolchain()->GetToolAsC(CTool::kCToolObjC);
+ if (tool && tool->precompiled_header_type() == CTool::PCH_MSVC) {
+@@ -94,7 +95,7 @@ void AddSourceSetObjectFiles(const Targe
+ obj_files->Append(tool_outputs.begin(), tool_outputs.end());
+ }
+ }
+- if (used_types.Get(SourceFile::SOURCE_MM)) {
++ if (used_types.Get(SOURCE_MM)) {
+ const CTool* tool =
+ source_set->toolchain()->GetToolAsC(CTool::kCToolObjCxx);
+ if (tool && tool->precompiled_header_type() == CTool::PCH_MSVC) {
+@@ -118,7 +119,7 @@ void NinjaCBinaryTargetWriter::Run() {
+ // Figure out what source types are needed.
+ SourceFileTypeSet used_types;
+ for (const auto& source : target_->sources())
+- used_types.Set(source.type());
++ used_types.Set(GetSourceFileType(source));
+
+ WriteCompilerVars(used_types);
+
+@@ -234,34 +235,31 @@ void NinjaCBinaryTargetWriter::WriteComp
+ target_->config_values().has_precompiled_headers();
+
+ EscapeOptions opts = GetFlagOptions();
+- if (used_types.Get(SourceFile::SOURCE_S) ||
+- used_types.Get(SourceFile::SOURCE_ASM)) {
++ if (used_types.Get(SOURCE_S) || used_types.Get(SOURCE_ASM)) {
+ WriteOneFlag(target_, &CSubstitutionAsmFlags, false, Tool::kToolNone,
+ &ConfigValues::asmflags, opts, path_output_, out_);
+ }
+- if (used_types.Get(SourceFile::SOURCE_C) ||
+- used_types.Get(SourceFile::SOURCE_CPP) ||
+- used_types.Get(SourceFile::SOURCE_M) ||
+- used_types.Get(SourceFile::SOURCE_MM)) {
++ if (used_types.Get(SOURCE_C) || used_types.Get(SOURCE_CPP) ||
++ used_types.Get(SOURCE_M) || used_types.Get(SOURCE_MM)) {
+ WriteOneFlag(target_, &CSubstitutionCFlags, false, Tool::kToolNone,
+ &ConfigValues::cflags, opts, path_output_, out_);
+ }
+- if (used_types.Get(SourceFile::SOURCE_C)) {
++ if (used_types.Get(SOURCE_C)) {
+ WriteOneFlag(target_, &CSubstitutionCFlagsC, has_precompiled_headers,
+ CTool::kCToolCc, &ConfigValues::cflags_c, opts, path_output_,
+ out_);
+ }
+- if (used_types.Get(SourceFile::SOURCE_CPP)) {
++ if (used_types.Get(SOURCE_CPP)) {
+ WriteOneFlag(target_, &CSubstitutionCFlagsCc, has_precompiled_headers,
+ CTool::kCToolCxx, &ConfigValues::cflags_cc, opts, path_output_,
+ out_);
+ }
+- if (used_types.Get(SourceFile::SOURCE_M)) {
++ if (used_types.Get(SOURCE_M)) {
+ WriteOneFlag(target_, &CSubstitutionCFlagsObjC, has_precompiled_headers,
+ CTool::kCToolObjC, &ConfigValues::cflags_objc, opts,
+ path_output_, out_);
+ }
+- if (used_types.Get(SourceFile::SOURCE_MM)) {
++ if (used_types.Get(SOURCE_MM)) {
+ WriteOneFlag(target_, &CSubstitutionCFlagsObjCc, has_precompiled_headers,
+ CTool::kCToolObjCxx, &ConfigValues::cflags_objcc, opts,
+ path_output_, out_);
+@@ -321,14 +319,14 @@ void NinjaCBinaryTargetWriter::WritePCHC
+
+ const CTool* tool_c = target_->toolchain()->GetToolAsC(CTool::kCToolCc);
+ if (tool_c && tool_c->precompiled_header_type() != CTool::PCH_NONE &&
+- used_types.Get(SourceFile::SOURCE_C)) {
++ used_types.Get(SOURCE_C)) {
+ WritePCHCommand(&CSubstitutionCFlagsC, CTool::kCToolCc,
+ tool_c->precompiled_header_type(), input_dep,
+ order_only_deps, object_files, other_files);
+ }
+ const CTool* tool_cxx = target_->toolchain()->GetToolAsC(CTool::kCToolCxx);
+ if (tool_cxx && tool_cxx->precompiled_header_type() != CTool::PCH_NONE &&
+- used_types.Get(SourceFile::SOURCE_CPP)) {
++ used_types.Get(SOURCE_CPP)) {
+ WritePCHCommand(&CSubstitutionCFlagsCc, CTool::kCToolCxx,
+ tool_cxx->precompiled_header_type(), input_dep,
+ order_only_deps, object_files, other_files);
+@@ -336,7 +334,7 @@ void NinjaCBinaryTargetWriter::WritePCHC
+
+ const CTool* tool_objc = target_->toolchain()->GetToolAsC(CTool::kCToolObjC);
+ if (tool_objc && tool_objc->precompiled_header_type() == CTool::PCH_GCC &&
+- used_types.Get(SourceFile::SOURCE_M)) {
++ used_types.Get(SOURCE_M)) {
+ WritePCHCommand(&CSubstitutionCFlagsObjC, CTool::kCToolObjC,
+ tool_objc->precompiled_header_type(), input_dep,
+ order_only_deps, object_files, other_files);
+@@ -345,7 +343,7 @@ void NinjaCBinaryTargetWriter::WritePCHC
+ const CTool* tool_objcxx =
+ target_->toolchain()->GetToolAsC(CTool::kCToolObjCxx);
+ if (tool_objcxx && tool_objcxx->precompiled_header_type() == CTool::PCH_GCC &&
+- used_types.Get(SourceFile::SOURCE_MM)) {
++ used_types.Get(SOURCE_MM)) {
+ WritePCHCommand(&CSubstitutionCFlagsObjCc, CTool::kCToolObjCxx,
+ tool_objcxx->precompiled_header_type(), input_dep,
+ order_only_deps, object_files, other_files);
+@@ -478,7 +476,7 @@ void NinjaCBinaryTargetWriter::WriteSour
+ deps.resize(0);
+ const char* tool_name = Tool::kToolNone;
+ if (!target_->GetOutputFilesForSource(source, &tool_name, &tool_outputs)) {
+- if (source.type() == SourceFile::SOURCE_DEF)
++ if (GetSourceFileType(source) == SOURCE_DEF)
+ other_files->push_back(source);
+ continue; // No output for this source.
+ }
+@@ -599,7 +597,7 @@ void NinjaCBinaryTargetWriter::WriteLink
+ const SourceFile* optional_def_file = nullptr;
+ if (!other_files.empty()) {
+ for (const SourceFile& src_file : other_files) {
+- if (src_file.type() == SourceFile::SOURCE_DEF) {
++ if (GetSourceFileType(src_file) == SOURCE_DEF) {
+ optional_def_file = &src_file;
+ implicit_deps.push_back(
+ OutputFile(settings_->build_settings(), src_file));
+--- a/tools/gn/tools/gn/source_file.cc
++++ b/tools/gn/tools/gn/source_file.cc
+@@ -21,48 +21,18 @@ void AssertValueSourceFileString(const s
+ DCHECK(!EndsWithSlash(s)) << s;
+ }
+
+-SourceFile::Type GetSourceFileType(const std::string& file) {
+- base::StringPiece extension = FindExtension(&file);
+- if (extension == "cc" || extension == "cpp" || extension == "cxx")
+- return SourceFile::SOURCE_CPP;
+- if (extension == "h" || extension == "hpp" || extension == "hxx" ||
+- extension == "hh" || extension == "inc")
+- return SourceFile::SOURCE_H;
+- if (extension == "c")
+- return SourceFile::SOURCE_C;
+- if (extension == "m")
+- return SourceFile::SOURCE_M;
+- if (extension == "mm")
+- return SourceFile::SOURCE_MM;
+- if (extension == "rc")
+- return SourceFile::SOURCE_RC;
+- if (extension == "S" || extension == "s" || extension == "asm")
+- return SourceFile::SOURCE_S;
+- if (extension == "o" || extension == "obj")
+- return SourceFile::SOURCE_O;
+- if (extension == "def")
+- return SourceFile::SOURCE_DEF;
+- if (extension == "rs")
+- return SourceFile::SOURCE_RS;
+- if (extension == "go")
+- return SourceFile::SOURCE_GO;
+-
+- return SourceFile::SOURCE_UNKNOWN;
+-}
+-
+ } // namespace
+
+-SourceFile::SourceFile() : type_(SOURCE_UNKNOWN) {}
++SourceFile::SourceFile() = default;
+
+ SourceFile::SourceFile(const base::StringPiece& p)
+- : value_(p.data(), p.size()), type_(GetSourceFileType(value_)) {
++ : value_(p.data(), p.size()) {
+ DCHECK(!value_.empty());
+ AssertValueSourceFileString(value_);
+ NormalizePath(&value_);
+ }
+
+-SourceFile::SourceFile(SwapIn, std::string* value)
+- : type_(GetSourceFileType(*value)) {
++SourceFile::SourceFile(SwapIn, std::string* value) {
+ value_.swap(*value);
+ DCHECK(!value_.empty());
+ AssertValueSourceFileString(value_);
+--- a/tools/gn/tools/gn/source_file.h
++++ b/tools/gn/tools/gn/source_file.h
+@@ -20,28 +20,6 @@ class SourceDir;
+ // ends in one.
+ class SourceFile {
+ public:
+- // This should be sequential integers starting from 0 so they can be used as
+- // array indices.
+- enum Type {
+- SOURCE_UNKNOWN = 0,
+- SOURCE_ASM,
+- SOURCE_C,
+- SOURCE_CPP,
+- SOURCE_H,
+- SOURCE_M,
+- SOURCE_MM,
+- SOURCE_S,
+- SOURCE_RC,
+- SOURCE_O, // Object files can be inputs, too. Also counts .obj.
+- SOURCE_DEF,
+-
+- SOURCE_RS,
+- SOURCE_GO,
+-
+- // Must be last.
+- SOURCE_NUMTYPES,
+- };
+-
+ enum SwapIn { SWAP_IN };
+
+ SourceFile();
+@@ -58,7 +36,6 @@ class SourceFile {
+
+ bool is_null() const { return value_.empty(); }
+ const std::string& value() const { return value_; }
+- Type type() const { return type_; }
+
+ // Returns everything after the last slash.
+ std::string GetName() const;
+@@ -103,7 +80,6 @@ class SourceFile {
+ friend class SourceDir;
+
+ std::string value_;
+- Type type_;
+
+ // Copy & assign supported.
+ };
+--- /dev/null
++++ b/tools/gn/tools/gn/source_file_type.cc
+@@ -0,0 +1,37 @@
++// Copyright 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "tools/gn/source_file_type.h"
++
++#include "tools/gn/filesystem_utils.h"
++#include "tools/gn/source_file.h"
++
++SourceFileType GetSourceFileType(const SourceFile& file) {
++ base::StringPiece extension = FindExtension(&file.value());
++ if (extension == "cc" || extension == "cpp" || extension == "cxx")
++ return SOURCE_CPP;
++ if (extension == "h" || extension == "hpp" || extension == "hxx" ||
++ extension == "hh")
++ return SOURCE_H;
++ if (extension == "c")
++ return SOURCE_C;
++ if (extension == "m")
++ return SOURCE_M;
++ if (extension == "mm")
++ return SOURCE_MM;
++ if (extension == "rc")
++ return SOURCE_RC;
++ if (extension == "S" || extension == "s" || extension == "asm")
++ return SOURCE_S;
++ if (extension == "o" || extension == "obj")
++ return SOURCE_O;
++ if (extension == "def")
++ return SOURCE_DEF;
++ if (extension == "rs")
++ return SOURCE_RS;
++ if (extension == "go")
++ return SOURCE_GO;
++
++ return SOURCE_UNKNOWN;
++}
+--- /dev/null
++++ b/tools/gn/tools/gn/source_file_type.h
+@@ -0,0 +1,34 @@
++// Copyright 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#ifndef TOOLS_GN_SOURCE_FILE_TYPE_H_
++#define TOOLS_GN_SOURCE_FILE_TYPE_H_
++
++class SourceFile;
++
++// This should be sequential integers starting from 0 so they can be used as
++// array indices.
++enum SourceFileType {
++ SOURCE_UNKNOWN = 0,
++ SOURCE_ASM,
++ SOURCE_C,
++ SOURCE_CPP,
++ SOURCE_H,
++ SOURCE_M,
++ SOURCE_MM,
++ SOURCE_S,
++ SOURCE_RC,
++ SOURCE_O, // Object files can be inputs, too. Also counts .obj.
++ SOURCE_DEF,
++
++ SOURCE_RS,
++ SOURCE_GO,
++
++ // Must be last.
++ SOURCE_NUMTYPES,
++};
++
++SourceFileType GetSourceFileType(const SourceFile& file);
++
++#endif // TOOLS_GN_SOURCE_FILE_TYPE_H_
+--- a/tools/gn/tools/gn/target.cc
++++ b/tools/gn/tools/gn/target.cc
+@@ -16,6 +16,7 @@
+ #include "tools/gn/filesystem_utils.h"
+ #include "tools/gn/functions.h"
+ #include "tools/gn/scheduler.h"
++#include "tools/gn/source_file_type.h"
+ #include "tools/gn/substitution_writer.h"
+ #include "tools/gn/tool.h"
+ #include "tools/gn/toolchain.h"
+@@ -486,10 +487,10 @@ bool Target::GetOutputFilesForSource(con
+ outputs->clear();
+ *computed_tool_type = Tool::kToolNone;
+
+- SourceFile::Type file_type = source.type();
+- if (file_type == SourceFile::SOURCE_UNKNOWN)
++ SourceFileType file_type = GetSourceFileType(source);
++ if (file_type == SOURCE_UNKNOWN)
+ return false;
+- if (file_type == SourceFile::SOURCE_O) {
++ if (file_type == SOURCE_O) {
+ // Object files just get passed to the output and not compiled.
+ outputs->push_back(OutputFile(settings()->build_settings(), source));
+ return true;
+--- a/tools/gn/tools/gn/tool.cc
++++ b/tools/gn/tools/gn/tool.cc
+@@ -261,27 +261,27 @@ std::unique_ptr<Tool> Tool::CreateTool(c
+ }
+
+ // static
+-const char* Tool::GetToolTypeForSourceType(SourceFile::Type type) {
++const char* Tool::GetToolTypeForSourceType(SourceFileType type) {
+ switch (type) {
+- case SourceFile::SOURCE_C:
++ case SOURCE_C:
+ return CTool::kCToolCc;
+- case SourceFile::SOURCE_CPP:
++ case SOURCE_CPP:
+ return CTool::kCToolCxx;
+- case SourceFile::SOURCE_M:
++ case SOURCE_M:
+ return CTool::kCToolObjC;
+- case SourceFile::SOURCE_MM:
++ case SOURCE_MM:
+ return CTool::kCToolObjCxx;
+- case SourceFile::SOURCE_ASM:
+- case SourceFile::SOURCE_S:
++ case SOURCE_ASM:
++ case SOURCE_S:
+ return CTool::kCToolAsm;
+- case SourceFile::SOURCE_RC:
++ case SOURCE_RC:
+ return CTool::kCToolRc;
+- case SourceFile::SOURCE_UNKNOWN:
+- case SourceFile::SOURCE_H:
+- case SourceFile::SOURCE_O:
+- case SourceFile::SOURCE_DEF:
+- case SourceFile::SOURCE_GO:
+- case SourceFile::SOURCE_RS:
++ case SOURCE_UNKNOWN:
++ case SOURCE_H:
++ case SOURCE_O:
++ case SOURCE_DEF:
++ case SOURCE_GO:
++ case SOURCE_RS:
+ return kToolNone;
+ default:
+ NOTREACHED();
+--- a/tools/gn/tools/gn/tool.h
++++ b/tools/gn/tools/gn/tool.h
+@@ -12,7 +12,7 @@
+ #include "tools/gn/label.h"
+ #include "tools/gn/label_ptr.h"
+ #include "tools/gn/scope.h"
+-#include "tools/gn/source_file.h"
++#include "tools/gn/source_file_type.h"
+ #include "tools/gn/substitution_list.h"
+ #include "tools/gn/substitution_pattern.h"
+
+@@ -171,7 +171,7 @@ class Tool {
+ Toolchain* toolchain,
+ Err* err);
+
+- static const char* GetToolTypeForSourceType(SourceFile::Type type);
++ static const char* GetToolTypeForSourceType(SourceFileType type);
+ static const char* GetToolTypeForTargetFinalOutput(const Target* target);
+
+ protected:
+--- a/tools/gn/tools/gn/toolchain.cc
++++ b/tools/gn/tools/gn/toolchain.cc
+@@ -88,16 +88,16 @@ void Toolchain::ToolchainSetupComplete()
+ setup_complete_ = true;
+ }
+
+-const Tool* Toolchain::GetToolForSourceType(SourceFile::Type type) const {
++const Tool* Toolchain::GetToolForSourceType(SourceFileType type) const {
+ return GetTool(Tool::GetToolTypeForSourceType(type));
+ }
+
+-const CTool* Toolchain::GetToolForSourceTypeAsC(SourceFile::Type type) const {
++const CTool* Toolchain::GetToolForSourceTypeAsC(SourceFileType type) const {
+ return GetToolAsC(Tool::GetToolTypeForSourceType(type));
+ }
+
+ const GeneralTool* Toolchain::GetToolForSourceTypeAsGeneral(
+- SourceFile::Type type) const {
++ SourceFileType type) const {
+ return GetToolAsGeneral(Tool::GetToolTypeForSourceType(type));
+ }
+
+--- a/tools/gn/tools/gn/toolchain.h
++++ b/tools/gn/tools/gn/toolchain.h
+@@ -12,6 +12,7 @@
+ #include "tools/gn/item.h"
+ #include "tools/gn/label_ptr.h"
+ #include "tools/gn/scope.h"
++#include "tools/gn/source_file_type.h"
+ #include "tools/gn/substitution_type.h"
+ #include "tools/gn/tool.h"
+ #include "tools/gn/value.h"
+@@ -87,9 +88,9 @@ class Toolchain : public Item {
+ }
+
+ // Returns the tool for compiling the given source file type.
+- const Tool* GetToolForSourceType(SourceFile::Type type) const;
+- const CTool* GetToolForSourceTypeAsC(SourceFile::Type type) const;
+- const GeneralTool* GetToolForSourceTypeAsGeneral(SourceFile::Type type) const;
++ const Tool* GetToolForSourceType(SourceFileType type) const;
++ const CTool* GetToolForSourceTypeAsC(SourceFileType type) const;
++ const GeneralTool* GetToolForSourceTypeAsGeneral(SourceFileType type) const;
+
+ // Returns the tool that produces the final output for the given target type.
+ // This isn't necessarily the tool you would expect. For copy target, this
+--- a/tools/gn/tools/gn/visual_studio_writer.cc
++++ b/tools/gn/tools/gn/visual_studio_writer.cc
+@@ -24,6 +24,7 @@
+ #include "tools/gn/label_pattern.h"
+ #include "tools/gn/parse_tree.h"
+ #include "tools/gn/path_output.h"
++#include "tools/gn/source_file_type.h"
+ #include "tools/gn/standard_out.h"
+ #include "tools/gn/target.h"
+ #include "tools/gn/variables.h"
diff --git a/revert-gn-4980.patch b/revert-gn-4980.patch
new file mode 100644
index 0000000..fe550e9
--- /dev/null
+++ b/revert-gn-4980.patch
@@ -0,0 +1,134 @@
+Description: revert https://gn.googlesource.com/gn/+/8730b0feb6b991fa47368566501ab9ccfb453c92, which breaks the chromium build
+
+--- a/tools/gn/tools/gn/binary_target_generator.cc
++++ b/tools/gn/tools/gn/binary_target_generator.cc
+@@ -68,38 +68,6 @@ void BinaryTargetGenerator::DoRun() {
+ return;
+ }
+
+-bool BinaryTargetGenerator::FillSources() {
+- bool ret = TargetGenerator::FillSources();
+- for (std::size_t i = 0; i < target_->sources().size(); ++i) {
+- const auto& source = target_->sources()[i];
+- switch (source.type()) {
+- case SourceFile::SOURCE_CPP:
+- case SourceFile::SOURCE_H:
+- case SourceFile::SOURCE_C:
+- case SourceFile::SOURCE_M:
+- case SourceFile::SOURCE_MM:
+- case SourceFile::SOURCE_S:
+- case SourceFile::SOURCE_ASM:
+- case SourceFile::SOURCE_O:
+- // These are allowed.
+- break;
+- case SourceFile::SOURCE_RC:
+- case SourceFile::SOURCE_DEF:
+- case SourceFile::SOURCE_RS:
+- case SourceFile::SOURCE_GO:
+- case SourceFile::SOURCE_UNKNOWN:
+- case SourceFile::SOURCE_NUMTYPES:
+- *err_ =
+- Err(scope_->GetValue(variables::kSources, true)->list_value()[i],
+- std::string("Only source, header, and object files belong in "
+- "the sources of a ") +
+- Target::GetStringForOutputType(target_->output_type()) +
+- ". " + source.value() + " is not one of the valid types.");
+- }
+- }
+- return ret;
+-}
+-
+ bool BinaryTargetGenerator::FillCompleteStaticLib() {
+ if (target_->output_type() == Target::STATIC_LIBRARY) {
+ const Value* value = scope_->GetValue(variables::kCompleteStaticLib, true);
+--- a/tools/gn/tools/gn/binary_target_generator.h
++++ b/tools/gn/tools/gn/binary_target_generator.h
+@@ -22,7 +22,6 @@ class BinaryTargetGenerator : public Tar
+
+ protected:
+ void DoRun() override;
+- bool FillSources() override;
+
+ private:
+ bool FillCompleteStaticLib();
+--- a/tools/gn/tools/gn/source_dir.cc
++++ b/tools/gn/tools/gn/source_dir.cc
+@@ -98,10 +98,10 @@ SourceFile SourceDir::ResolveRelativeFil
+ return ret;
+
+ const std::string& input_string = p.string_value();
+- if (!ValidateResolveInput<std::string>(true, p, input_string, err))
++ if (!ValidateResolveInput<std::string>(true, p, input_string, err)) {
+ return ret;
+-
+- ret.SetValue(ResolveRelative(input_string, value_, true, source_root));
++ }
++ ret.value_ = ResolveRelative(input_string, value_, true, source_root);
+ return ret;
+ }
+
+--- a/tools/gn/tools/gn/source_file.cc
++++ b/tools/gn/tools/gn/source_file.cc
+@@ -55,19 +55,18 @@ SourceFile::Type GetSourceFileType(const
+ SourceFile::SourceFile() : type_(SOURCE_UNKNOWN) {}
+
+ SourceFile::SourceFile(const base::StringPiece& p)
+- : value_(p.data(), p.size()) {
++ : value_(p.data(), p.size()), type_(GetSourceFileType(value_)) {
+ DCHECK(!value_.empty());
+ AssertValueSourceFileString(value_);
+ NormalizePath(&value_);
+- type_ = GetSourceFileType(value_);
+ }
+
+-SourceFile::SourceFile(SwapIn, std::string* value) {
++SourceFile::SourceFile(SwapIn, std::string* value)
++ : type_(GetSourceFileType(*value)) {
+ value_.swap(*value);
+ DCHECK(!value_.empty());
+ AssertValueSourceFileString(value_);
+ NormalizePath(&value_);
+- type_ = GetSourceFileType(value_);
+ }
+
+ SourceFile::~SourceFile() = default;
+@@ -93,8 +92,3 @@ SourceDir SourceFile::GetDir() const {
+ base::FilePath SourceFile::Resolve(const base::FilePath& source_root) const {
+ return ResolvePath(value_, true, source_root);
+ }
+-
+-void SourceFile::SetValue(const std::string& value) {
+- value_ = value;
+- type_ = GetSourceFileType(value_);
+-}
+--- a/tools/gn/tools/gn/source_file.h
++++ b/tools/gn/tools/gn/source_file.h
+@@ -97,16 +97,11 @@ class SourceFile {
+ return value_ < other.value_;
+ }
+
+- void swap(SourceFile& other) {
+- value_.swap(other.value_);
+- std::swap(type_, other.type_);
+- }
++ void swap(SourceFile& other) { value_.swap(other.value_); }
+
+ private:
+ friend class SourceDir;
+
+- void SetValue(const std::string& value);
+-
+ std::string value_;
+ Type type_;
+
+--- a/tools/gn/tools/gn/target_generator.h
++++ b/tools/gn/tools/gn/target_generator.h
+@@ -47,7 +47,7 @@ class TargetGenerator {
+
+ const BuildSettings* GetBuildSettings() const;
+
+- virtual bool FillSources();
++ bool FillSources();
+ bool FillPublic();
+ bool FillConfigs();
+ bool FillOutputs(bool allow_substitutions);
diff --git a/sources b/sources
index ad9a0ee..2a4c258 100644
--- a/sources
+++ b/sources
@@ -17,4 +17,4 @@ SHA512 (Tinos-Italic.ttf) = d4f4f096110ef98a781a2a0e0d319317e5f84e650fe6f4d4f6b0
SHA512 (Tinos-Regular.ttf) = 58085c5dac6d067d60ba2ab3220c4a0cc1efcf279cadfcfb8746a5e5fa1a6f6daa62750dc2051b3b2d8a51b4d2e9bb0f66594caf2253c0870ed9c7286fa45e8f
SHA512 (Ahem.ttf) = aeb64b10ab9c87860714cb60b4900254b13dc52c51319256a1a3722c882026ab7c616bf628fbc2fe14e38a6003f3a481af60b52a7ed62071d28ddaf428e4e3fd
SHA512 (node-v8.9.1-linux-x64.tar.gz) = a707fd4567041c56e7f9d415e505e3fa650627f31def7fefdd7ec50f9e7066bb33332b67f479e1159d85e1105a7e6d034aad7429f4f3d034c9161170d7e0b844
-SHA512 (chromium-73.0.3683.103-clean.tar.xz) = 73d43cc50586f4313994711ec45ddfe6b5780d13dff9004522c596035d2b75b197de0cdeab70c4c69da18846a3cd1ec6b5a264a8015eb46e4ce42db7b5ca793a
+SHA512 (chromium-74.0.3729.169-clean.tar.xz) = 09db23d3b1b8020b21fa8f2b3be2a3be09815b4572ed5ef746061b171a01f75ab62af8ca092dbfb1bfa8065e5994fca56af8d0382053a70e46cb4ef57bf88b65
5 years, 6 months
[chromium-libs-media-freeworld: 194/259] improved seccomp glibc 2.29 patch
by Nicolas Chauvet
commit 41b87b039adf11906a2fceaaa66bf1651bb595ef
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Tue Apr 16 11:54:46 2019 -0400
improved seccomp glibc 2.29 patch
...mium-73.0.3683.103-glibc-2.29-clone-vfork.patch | 29 ++++++++++++++++++++++
chromium-73.0.3683.86-glibc-2.29-clone-vfork.patch | 13 ----------
chromium.spec | 6 ++---
3 files changed, 32 insertions(+), 16 deletions(-)
---
diff --git a/chromium-73.0.3683.103-glibc-2.29-clone-vfork.patch b/chromium-73.0.3683.103-glibc-2.29-clone-vfork.patch
new file mode 100644
index 0000000..8ff952b
--- /dev/null
+++ b/chromium-73.0.3683.103-glibc-2.29-clone-vfork.patch
@@ -0,0 +1,29 @@
+diff -up chromium-73.0.3683.103/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc.glibc229 chromium-73.0.3683.103/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc
+--- chromium-73.0.3683.103/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc.glibc229 2019-04-16 11:49:35.353081246 -0400
++++ chromium-73.0.3683.103/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc 2019-04-16 11:51:22.105794620 -0400
+@@ -134,7 +134,8 @@ namespace sandbox {
+ #if !defined(OS_NACL_NONSFI)
+ // Allow Glibc's and Android pthread creation flags, crash on any other
+ // thread creation attempts and EPERM attempts to use neither
+-// CLONE_VM, nor CLONE_THREAD, which includes all fork() implementations.
++// CLONE_VM nor CLONE_THREAD (all fork implementations), unless CLONE_VFORK is
++// present (as in posix_spawn).
+ ResultExpr RestrictCloneToThreadsAndEPERMFork() {
+ const Arg<unsigned long> flags(0);
+
+@@ -153,8 +154,14 @@ ResultExpr RestrictCloneToThreadsAndEPER
+ AnyOf(flags == kAndroidCloneMask, flags == kObsoleteAndroidCloneMask,
+ flags == kGlibcPthreadFlags);
+
++ const uint64_t kImportantSpawnFlags = CLONE_VFORK | CLONE_VM;
++
++ const BoolExpr isForkOrSpawn =
++ AnyOf((flags & (CLONE_VM | CLONE_THREAD)) == 0,
++ (flags & kImportantSpawnFlags) == kImportantSpawnFlags);
++
+ return If(IsAndroid() ? android_test : glibc_test, Allow())
+- .ElseIf((flags & (CLONE_VM | CLONE_THREAD)) == 0, Error(EPERM))
++ .ElseIf(isForkOrSpawn, Error(EPERM))
+ .Else(CrashSIGSYSClone());
+ }
+
diff --git a/chromium.spec b/chromium.spec
index dbc5a56..aa1e24a 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -329,7 +329,7 @@ Patch138: chromium-73.0.3683.75-aarch64-crashpad-limits.patch
# el7 only patch
Patch139: chromium-73.0.3683.75-el7-fix-noexcept.patch
# https://bugs.chromium.org/p/chromium/issues/detail?id=949312
-Patch140: chromium-73.0.3683.86-glibc-2.29-clone-vfork.patch
+Patch140: chromium-73.0.3683.103-glibc-2.29-clone-vfork.patch
# Use chromium-latest.py to generate clean tarball from released build tarballs, found here:
# http://build.chromium.org/buildbot/official/
@@ -912,7 +912,7 @@ udev.
%if 0%{?rhel} == 7
%patch139 -p1 -b .el7-noexcept
%endif
-%patch140 -p1 -b .clonevfork
+%patch140 -p1 -b .glibc229
# Change shebang in all relevant files in this directory and all subdirectories
# See `man find` for how the `-exec command {} +` syntax works
@@ -1903,7 +1903,7 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%changelog
* Thu Apr 11 2019 Tom Callaway <spot(a)fedoraproject.org> - 73.0.3683.103-1
- update to 73.0.3683.103
-- add CLONE_VFORK to seccomp filter for linux to handle glibc 2.29 change
+- add CLONE_VFORK logic to seccomp filter for linux to handle glibc 2.29 change
* Wed Mar 27 2019 Tom Callaway <spot(a)fedoraproject.org> - 73.0.3683.86-2
- remove lang macro from en-US.pak* because Chromium crashes if it is not present
5 years, 6 months
[chromium-libs-media-freeworld: 193/259] update to 73.0.3683.103, add CLONE_VFORK to seccomp filter for linux to handle glibc 2.29 change
by Nicolas Chauvet
commit ae0be165a7b409c3090360955fcd1b4ae6cd5987
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Thu Apr 11 11:15:59 2019 -0400
update to 73.0.3683.103, add CLONE_VFORK to seccomp filter for linux to handle glibc 2.29 change
.gitignore | 1 +
chromium-73.0.3683.86-glibc-2.29-clone-vfork.patch | 13 +++++++++++++
chromium.spec | 11 +++++++++--
sources | 2 +-
4 files changed, 24 insertions(+), 3 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index c2058f9..ad17be0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -76,3 +76,4 @@
/chromium-72.0.3626.121-clean.tar.xz
/chromium-73.0.3683.75-clean.tar.xz
/chromium-73.0.3683.86-clean.tar.xz
+/chromium-73.0.3683.103-clean.tar.xz
diff --git a/chromium-73.0.3683.86-glibc-2.29-clone-vfork.patch b/chromium-73.0.3683.86-glibc-2.29-clone-vfork.patch
new file mode 100644
index 0000000..752090a
--- /dev/null
+++ b/chromium-73.0.3683.86-glibc-2.29-clone-vfork.patch
@@ -0,0 +1,13 @@
+diff -up chromium-73.0.3683.86/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc.clonevfork chromium-73.0.3683.86/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc
+--- chromium-73.0.3683.86/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc.clonevfork 2019-04-11 10:22:21.250929060 -0400
++++ chromium-73.0.3683.86/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc 2019-04-11 10:23:58.832770803 -0400
+@@ -146,7 +146,8 @@ ResultExpr RestrictCloneToThreadsAndEPER
+
+ const uint64_t kGlibcPthreadFlags =
+ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_THREAD |
+- CLONE_SYSVSEM | CLONE_SETTLS | CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID;
++ CLONE_SYSVSEM | CLONE_SETTLS | CLONE_PARENT_SETTID |
++ CLONE_CHILD_CLEARTID | CLONE_VFORK;
+ const BoolExpr glibc_test = flags == kGlibcPthreadFlags;
+
+ const BoolExpr android_test =
diff --git a/chromium.spec b/chromium.spec
index 25c9b0c..dbc5a56 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -161,8 +161,8 @@ Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
%else
Name: chromium%{chromium_channel}
%endif
-Version: %{majorversion}.0.3683.86
-Release: 2%{?dist}
+Version: %{majorversion}.0.3683.103
+Release: 1%{?dist}
Summary: A WebKit (Blink) powered web browser
Url: http://www.chromium.org/Home
License: BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and OpenSSL and (MPLv1.1 or GPLv2 or LGPLv2)
@@ -328,6 +328,8 @@ Patch137: chromium-73.0.3683.75-no-header-hygiene.patch
Patch138: chromium-73.0.3683.75-aarch64-crashpad-limits.patch
# el7 only patch
Patch139: chromium-73.0.3683.75-el7-fix-noexcept.patch
+# https://bugs.chromium.org/p/chromium/issues/detail?id=949312
+Patch140: chromium-73.0.3683.86-glibc-2.29-clone-vfork.patch
# Use chromium-latest.py to generate clean tarball from released build tarballs, found here:
# http://build.chromium.org/buildbot/official/
@@ -910,6 +912,7 @@ udev.
%if 0%{?rhel} == 7
%patch139 -p1 -b .el7-noexcept
%endif
+%patch140 -p1 -b .clonevfork
# Change shebang in all relevant files in this directory and all subdirectories
# See `man find` for how the `-exec command {} +` syntax works
@@ -1898,6 +1901,10 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%changelog
+* Thu Apr 11 2019 Tom Callaway <spot(a)fedoraproject.org> - 73.0.3683.103-1
+- update to 73.0.3683.103
+- add CLONE_VFORK to seccomp filter for linux to handle glibc 2.29 change
+
* Wed Mar 27 2019 Tom Callaway <spot(a)fedoraproject.org> - 73.0.3683.86-2
- remove lang macro from en-US.pak* because Chromium crashes if it is not present
(bz1692660)
diff --git a/sources b/sources
index 43b333f..ad9a0ee 100644
--- a/sources
+++ b/sources
@@ -17,4 +17,4 @@ SHA512 (Tinos-Italic.ttf) = d4f4f096110ef98a781a2a0e0d319317e5f84e650fe6f4d4f6b0
SHA512 (Tinos-Regular.ttf) = 58085c5dac6d067d60ba2ab3220c4a0cc1efcf279cadfcfb8746a5e5fa1a6f6daa62750dc2051b3b2d8a51b4d2e9bb0f66594caf2253c0870ed9c7286fa45e8f
SHA512 (Ahem.ttf) = aeb64b10ab9c87860714cb60b4900254b13dc52c51319256a1a3722c882026ab7c616bf628fbc2fe14e38a6003f3a481af60b52a7ed62071d28ddaf428e4e3fd
SHA512 (node-v8.9.1-linux-x64.tar.gz) = a707fd4567041c56e7f9d415e505e3fa650627f31def7fefdd7ec50f9e7066bb33332b67f479e1159d85e1105a7e6d034aad7429f4f3d034c9161170d7e0b844
-SHA512 (chromium-73.0.3683.86-clean.tar.xz) = 0bdd96420814dbd9b14385abc529ef69f8565a9277e118bade44c43bc0d8024b496db23b1385684744b5931565b6a1baf8cb13bfa7e609a20408238c302bf3c2
+SHA512 (chromium-73.0.3683.103-clean.tar.xz) = 73d43cc50586f4313994711ec45ddfe6b5780d13dff9004522c596035d2b75b197de0cdeab70c4c69da18846a3cd1ec6b5a264a8015eb46e4ce42db7b5ca793a
5 years, 6 months
[chromium-libs-media-freeworld: 192/259] remove lang macro from en-US.pak* because Chromium crashes if it is not present (bz1692660)
by Nicolas Chauvet
commit c0e09c73fbbdcd6d593592d49883cee1d0fa07ef
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Wed Mar 27 16:04:13 2019 -0400
remove lang macro from en-US.pak* because Chromium crashes if it is not present (bz1692660)
chromium.spec | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
---
diff --git a/chromium.spec b/chromium.spec
index 3a7343c..25c9b0c 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -162,7 +162,7 @@ Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
Name: chromium%{chromium_channel}
%endif
Version: %{majorversion}.0.3683.86
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: A WebKit (Blink) powered web browser
Url: http://www.chromium.org/Home
License: BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and OpenSSL and (MPLv1.1 or GPLv2 or LGPLv2)
@@ -1793,7 +1793,10 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%lang(de) %{chromium_path}/locales/de.pak*
%lang(el) %{chromium_path}/locales/el.pak*
%lang(en_GB) %{chromium_path}/locales/en-GB.pak*
-%lang(en_US) %{chromium_path}/locales/en-US.pak*
+# Chromium _ALWAYS_ needs en-US.pak as a fallback
+# This means we cannot apply the lang code here.
+# Otherwise, it is filtered out on install.
+%{chromium_path}/locales/en-US.pak*
%lang(es) %{chromium_path}/locales/es.pak*
%lang(es) %{chromium_path}/locales/es-419.pak*
%lang(et) %{chromium_path}/locales/et.pak*
@@ -1895,6 +1898,10 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%changelog
+* Wed Mar 27 2019 Tom Callaway <spot(a)fedoraproject.org> - 73.0.3683.86-2
+- remove lang macro from en-US.pak* because Chromium crashes if it is not present
+ (bz1692660)
+
* Fri Mar 22 2019 Tom Callaway <spot(a)fedoraproject.org> - 73.0.3683.86-1
- update to 73.0.3683.86
5 years, 6 months
[chromium-libs-media-freeworld: 191/259] update to 73.0.3683.86
by Nicolas Chauvet
commit f9dc161c1c22a54fe63406ce6d49ee8242d07c72
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Fri Mar 22 16:24:13 2019 -0400
update to 73.0.3683.86
.gitignore | 1 +
chromium.spec | 7 +++++--
sources | 2 +-
3 files changed, 7 insertions(+), 3 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index c78bbdf..c2058f9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -75,3 +75,4 @@
/node-v8.9.1-linux-x64.tar.gz
/chromium-72.0.3626.121-clean.tar.xz
/chromium-73.0.3683.75-clean.tar.xz
+/chromium-73.0.3683.86-clean.tar.xz
diff --git a/chromium.spec b/chromium.spec
index 5ba0e47..3a7343c 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -161,8 +161,8 @@ Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
%else
Name: chromium%{chromium_channel}
%endif
-Version: %{majorversion}.0.3683.75
-Release: 2%{?dist}
+Version: %{majorversion}.0.3683.86
+Release: 1%{?dist}
Summary: A WebKit (Blink) powered web browser
Url: http://www.chromium.org/Home
License: BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and OpenSSL and (MPLv1.1 or GPLv2 or LGPLv2)
@@ -1895,6 +1895,9 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%changelog
+* Fri Mar 22 2019 Tom Callaway <spot(a)fedoraproject.org> - 73.0.3683.86-1
+- update to 73.0.3683.86
+
* Tue Mar 19 2019 Tom Callaway <spot(a)fedoraproject.org> - 73.0.3683.75-2
- do not include pyproto/protoc files in package
diff --git a/sources b/sources
index fcfd066..43b333f 100644
--- a/sources
+++ b/sources
@@ -17,4 +17,4 @@ SHA512 (Tinos-Italic.ttf) = d4f4f096110ef98a781a2a0e0d319317e5f84e650fe6f4d4f6b0
SHA512 (Tinos-Regular.ttf) = 58085c5dac6d067d60ba2ab3220c4a0cc1efcf279cadfcfb8746a5e5fa1a6f6daa62750dc2051b3b2d8a51b4d2e9bb0f66594caf2253c0870ed9c7286fa45e8f
SHA512 (Ahem.ttf) = aeb64b10ab9c87860714cb60b4900254b13dc52c51319256a1a3722c882026ab7c616bf628fbc2fe14e38a6003f3a481af60b52a7ed62071d28ddaf428e4e3fd
SHA512 (node-v8.9.1-linux-x64.tar.gz) = a707fd4567041c56e7f9d415e505e3fa650627f31def7fefdd7ec50f9e7066bb33332b67f479e1159d85e1105a7e6d034aad7429f4f3d034c9161170d7e0b844
-SHA512 (chromium-73.0.3683.75-clean.tar.xz) = f240e8d58f8093db409e4a90a6c2c8dbbef3e5c0ba1d9acd8fd907be4e34042c76329881a4880bf52cc91b8e4949704d041279f91d76fd614c7d2d7020436fe6
+SHA512 (chromium-73.0.3683.86-clean.tar.xz) = 0bdd96420814dbd9b14385abc529ef69f8565a9277e118bade44c43bc0d8024b496db23b1385684744b5931565b6a1baf8cb13bfa7e609a20408238c302bf3c2
5 years, 6 months
[chromium-libs-media-freeworld: 190/259] update noexcept patch
by Nicolas Chauvet
commit 6bc005ac5fd7cf4c83284e4b7277cfb53cd5bd22
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Wed Mar 20 09:47:29 2019 -0400
update noexcept patch
chromium-73.0.3683.75-el7-fix-noexcept.patch | 20 +++++++++++++-------
1 file changed, 13 insertions(+), 7 deletions(-)
---
diff --git a/chromium-73.0.3683.75-el7-fix-noexcept.patch b/chromium-73.0.3683.75-el7-fix-noexcept.patch
index 6d9b286..3fc69ba 100644
--- a/chromium-73.0.3683.75-el7-fix-noexcept.patch
+++ b/chromium-73.0.3683.75-el7-fix-noexcept.patch
@@ -1,7 +1,7 @@
diff -up chromium-73.0.3683.75/chrome/common/media_router/media_sink.cc.el7-noexcept chromium-73.0.3683.75/chrome/common/media_router/media_sink.cc
---- chromium-73.0.3683.75/chrome/common/media_router/media_sink.cc.el7-noexcept 2019-03-19 11:03:09.820613771 -0400
-+++ chromium-73.0.3683.75/chrome/common/media_router/media_sink.cc 2019-03-19 11:08:05.915213225 -0400
-@@ -19,7 +19,7 @@ MediaSink::MediaSink(const MediaSink::Id
+--- chromium-73.0.3683.75/chrome/common/media_router/media_sink.cc.el7-noexcept 2019-03-11 18:00:54.000000000 -0400
++++ chromium-73.0.3683.75/chrome/common/media_router/media_sink.cc 2019-03-20 09:45:29.400426336 -0400
+@@ -19,12 +19,12 @@ MediaSink::MediaSink(const MediaSink::Id
provider_id_(provider_id) {}
MediaSink::MediaSink(const MediaSink& other) = default;
@@ -10,9 +10,15 @@ diff -up chromium-73.0.3683.75/chrome/common/media_router/media_sink.cc.el7-noex
MediaSink::MediaSink() = default;
MediaSink::~MediaSink() = default;
+ MediaSink& MediaSink::operator=(const MediaSink& other) = default;
+-MediaSink& MediaSink::operator=(MediaSink&& other) noexcept = default;
++MediaSink& MediaSink::operator=(MediaSink&& other) = default;
+
+ bool MediaSink::IsMaybeCloudSink() const {
+ switch (icon_type_) {
diff -up chromium-73.0.3683.75/components/policy/core/common/policy_map.cc.el7-noexcept chromium-73.0.3683.75/components/policy/core/common/policy_map.cc
--- chromium-73.0.3683.75/components/policy/core/common/policy_map.cc.el7-noexcept 2019-03-11 18:00:56.000000000 -0400
-+++ chromium-73.0.3683.75/components/policy/core/common/policy_map.cc 2019-03-19 11:03:09.823613699 -0400
++++ chromium-73.0.3683.75/components/policy/core/common/policy_map.cc 2019-03-19 11:11:38.310689134 -0400
@@ -25,7 +25,7 @@ PolicyMap::Entry::Entry() = default;
PolicyMap::Entry::~Entry() = default;
@@ -24,7 +30,7 @@ diff -up chromium-73.0.3683.75/components/policy/core/common/policy_map.cc.el7-n
Entry copy;
diff -up chromium-73.0.3683.75/components/signin/core/browser/account_info.cc.el7-noexcept chromium-73.0.3683.75/components/signin/core/browser/account_info.cc
--- chromium-73.0.3683.75/components/signin/core/browser/account_info.cc.el7-noexcept 2019-03-11 18:00:57.000000000 -0400
-+++ chromium-73.0.3683.75/components/signin/core/browser/account_info.cc 2019-03-19 11:03:09.872612537 -0400
++++ chromium-73.0.3683.75/components/signin/core/browser/account_info.cc 2019-03-19 11:11:38.311689112 -0400
@@ -50,7 +50,7 @@ AccountInfo::AccountInfo(AccountInfo&& o
AccountInfo& AccountInfo::operator=(const AccountInfo& other) = default;
@@ -35,8 +41,8 @@ diff -up chromium-73.0.3683.75/components/signin/core/browser/account_info.cc.el
bool AccountInfo::IsEmpty() const {
return account_id.empty() && email.empty() && gaia.empty() &&
diff -up chromium-73.0.3683.75/gpu/config/gpu_info.cc.el7-noexcept chromium-73.0.3683.75/gpu/config/gpu_info.cc
---- chromium-73.0.3683.75/gpu/config/gpu_info.cc.el7-noexcept 2019-03-11 18:00:59.000000000 -0400
-+++ chromium-73.0.3683.75/gpu/config/gpu_info.cc 2019-03-19 11:03:10.238603858 -0400
+--- chromium-73.0.3683.75/gpu/config/gpu_info.cc.el7-noexcept 2019-03-19 11:12:36.992435015 -0400
++++ chromium-73.0.3683.75/gpu/config/gpu_info.cc 2019-03-19 11:12:37.061433540 -0400
@@ -118,7 +118,7 @@ GPUInfo::GPUDevice& GPUInfo::GPUDevice::
const GPUInfo::GPUDevice& other) = default;
5 years, 6 months
[chromium-libs-media-freeworld: 189/259] disable vaapi on epel7
by Nicolas Chauvet
commit a01021d41d2d88e2c7866005b08578d1b678644f
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Tue Mar 19 15:18:34 2019 -0400
disable vaapi on epel7
chromium.spec | 2 ++
1 file changed, 2 insertions(+)
---
diff --git a/chromium.spec b/chromium.spec
index ca804ac..5ba0e47 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -1103,7 +1103,9 @@ CHROMIUM_BROWSER_GN_DEFINES+=' is_component_ffmpeg=false is_component_build=fals
CHROMIUM_BROWSER_GN_DEFINES+=' remove_webcore_debug_symbols=true enable_hangout_services_extension=true'
CHROMIUM_BROWSER_GN_DEFINES+=' use_aura=true'
CHROMIUM_BROWSER_GN_DEFINES+=' enable_widevine=true'
+%if 0%{?fedora} >= 28
CHROMIUM_BROWSER_GN_DEFINES+=' use_vaapi=true'
+%endif
%if 0%{?fedora}
CHROMIUM_BROWSER_GN_DEFINES+=' rtc_use_pipewire=true rtc_link_pipewire=true'
%endif
5 years, 6 months
[chromium-libs-media-freeworld: 188/259] fix merge
by Nicolas Chauvet
commit 9d8ad7c073d11c3603a9d1472e799ae072f745be
Merge: 1b1fef9 24a7923
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Tue Mar 19 11:13:56 2019 -0400
fix merge
.gitignore | 2 +
...mium-70.0.3538.110-vaapi-i686-fpermissive.patch | 24 --
chromium-71.0.3578.98-gcc9-drop-rsp-clobber.patch | 12 +
chromium-71.0.3578.98-widevine-r3.patch | 25 +-
chromium-72.0.3626.121-fedora-user-agent.patch | 12 +
chromium-72.0.3626.121-fix-va-check.patch | 29 +++
chromium-72.0.3626.121-gcc5-r3.patch | 36 +++
chromium-72.0.3626.121-norar.patch | 79 ++++++
chromium-72.0.3626.121-notest.patch | 11 +
chromium-73-gcc-0.patch | 108 +++++++++
chromium-73-gcc-1.patch | 99 ++++++++
chromium-73-gcc-2.patch | 51 ++++
chromium-73-gcc-3.patch | 69 ++++++
chromium-73-gcc-4.patch | 59 +++++
chromium-73-gcc-5.patch | 65 +++++
chromium-73-gcc-6.patch | 88 +++++++
...mium-73.0.3683.75-aarch64-crashpad-limits.patch | 11 +
...75-disable-fno-delete-null-pointer-checks.patch | 48 ++++
chromium-73.0.3683.75-el7-fix-noexcept.patch | 48 ++++
chromium-73.0.3683.75-no-header-hygiene.patch | 17 ++
chromium-73.0.3683.75-norar.patch | 81 +++++++
chromium-73.0.3683.75-pipewire-cstring-fix.patch | 11 +
chromium-73.0.3683.75-vaapi-i686-fpermissive.patch | 23 ++
chromium.spec | 183 +++++++++-----
enable-vaapi.patch | 270 +++------------------
sources | 2 +-
26 files changed, 1136 insertions(+), 327 deletions(-)
---
diff --cc .gitignore
index 8f49a5f,8c7b0a6..c78bbdf
--- a/.gitignore
+++ b/.gitignore
@@@ -72,4 -72,5 +72,6 @@@
/chromium-70.0.3538.77-clean.tar.xz
/chromium-70.0.3538.110-clean.tar.xz
/chromium-71.0.3578.98-clean.tar.xz
+/node-v8.9.1-linux-x64.tar.gz
+ /chromium-72.0.3626.121-clean.tar.xz
+ /chromium-73.0.3683.75-clean.tar.xz
diff --cc chromium-73.0.3683.75-el7-fix-noexcept.patch
index 0000000,0000000..6d9b286
new file mode 100644
--- /dev/null
+++ b/chromium-73.0.3683.75-el7-fix-noexcept.patch
@@@ -1,0 -1,0 +1,48 @@@
++diff -up chromium-73.0.3683.75/chrome/common/media_router/media_sink.cc.el7-noexcept chromium-73.0.3683.75/chrome/common/media_router/media_sink.cc
++--- chromium-73.0.3683.75/chrome/common/media_router/media_sink.cc.el7-noexcept 2019-03-19 11:03:09.820613771 -0400
+++++ chromium-73.0.3683.75/chrome/common/media_router/media_sink.cc 2019-03-19 11:08:05.915213225 -0400
++@@ -19,7 +19,7 @@ MediaSink::MediaSink(const MediaSink::Id
++ provider_id_(provider_id) {}
++
++ MediaSink::MediaSink(const MediaSink& other) = default;
++-MediaSink::MediaSink(MediaSink&& other) noexcept = default;
+++MediaSink::MediaSink(MediaSink&& other) = default;
++ MediaSink::MediaSink() = default;
++ MediaSink::~MediaSink() = default;
++
++diff -up chromium-73.0.3683.75/components/policy/core/common/policy_map.cc.el7-noexcept chromium-73.0.3683.75/components/policy/core/common/policy_map.cc
++--- chromium-73.0.3683.75/components/policy/core/common/policy_map.cc.el7-noexcept 2019-03-11 18:00:56.000000000 -0400
+++++ chromium-73.0.3683.75/components/policy/core/common/policy_map.cc 2019-03-19 11:03:09.823613699 -0400
++@@ -25,7 +25,7 @@ PolicyMap::Entry::Entry() = default;
++ PolicyMap::Entry::~Entry() = default;
++
++ PolicyMap::Entry::Entry(Entry&&) noexcept = default;
++-PolicyMap::Entry& PolicyMap::Entry::operator=(Entry&&) noexcept = default;
+++PolicyMap::Entry& PolicyMap::Entry::operator=(Entry&&) = default;
++
++ PolicyMap::Entry PolicyMap::Entry::DeepCopy() const {
++ Entry copy;
++diff -up chromium-73.0.3683.75/components/signin/core/browser/account_info.cc.el7-noexcept chromium-73.0.3683.75/components/signin/core/browser/account_info.cc
++--- chromium-73.0.3683.75/components/signin/core/browser/account_info.cc.el7-noexcept 2019-03-11 18:00:57.000000000 -0400
+++++ chromium-73.0.3683.75/components/signin/core/browser/account_info.cc 2019-03-19 11:03:09.872612537 -0400
++@@ -50,7 +50,7 @@ AccountInfo::AccountInfo(AccountInfo&& o
++
++ AccountInfo& AccountInfo::operator=(const AccountInfo& other) = default;
++
++-AccountInfo& AccountInfo::operator=(AccountInfo&& other) noexcept = default;
+++AccountInfo& AccountInfo::operator=(AccountInfo&& other) = default;
++
++ bool AccountInfo::IsEmpty() const {
++ return account_id.empty() && email.empty() && gaia.empty() &&
++diff -up chromium-73.0.3683.75/gpu/config/gpu_info.cc.el7-noexcept chromium-73.0.3683.75/gpu/config/gpu_info.cc
++--- chromium-73.0.3683.75/gpu/config/gpu_info.cc.el7-noexcept 2019-03-11 18:00:59.000000000 -0400
+++++ chromium-73.0.3683.75/gpu/config/gpu_info.cc 2019-03-19 11:03:10.238603858 -0400
++@@ -118,7 +118,7 @@ GPUInfo::GPUDevice& GPUInfo::GPUDevice::
++ const GPUInfo::GPUDevice& other) = default;
++
++ GPUInfo::GPUDevice& GPUInfo::GPUDevice::operator=(
++- GPUInfo::GPUDevice&& other) noexcept = default;
+++ GPUInfo::GPUDevice&& other) = default;
++
++ GPUInfo::GPUInfo()
++ : optimus(false),
diff --cc chromium.spec
index 093f861,2b4ea21..ca804ac
--- a/chromium.spec
+++ b/chromium.spec
@@@ -296,22 -302,28 +304,30 @@@ Patch119: chromium-70.0.3538.77-aarch64
# Enable VAAPI support on Linux
# NOTE: This patch will never land upstream
Patch121: enable-vaapi.patch
- Patch122: chromium-70.0.3538.110-vaapi-i686-fpermissive.patch
- # Since the newer versions of VA-API are ABI compatible, relax the version checks for VA-API, by using VA_CHECK_VERSION().
- # This will help in updating the libva to the latest releases,while still supporting the old versions, till the new version of
- # libva is merged and picked by the builds. Thus ensuring that hardware accleration is not broken while updating the libva.
- # Taken and rebased from https://chromium-review.googlesource.com/c/chromium/src/+/1352519
- # The patch might land somewhere in the future and will be removed.
- Patch123: relax-libva-version.patch
+ Patch122: chromium-73.0.3683.75-vaapi-i686-fpermissive.patch
# Fix compatibility with VA-API library (libva) version 1
Patch124: chromium-71.0.3578.98-vaapi-libva1-compatibility.patch
- # From gentoo
- Patch125: https://gitweb.gentoo.org/repo/gentoo.git/plain/www-client/chromium/files...
- # For el7: error: function 'gpu::GPUInfo::GPUDevice& gpu::GPUInfo::GPUDevice::operator=(gpu::GPUInfo::GPUDevice&&)' defaulted on its redeclaration with an exception-specification that differs from the implicit exception-specification ''
- Patch126: chromium-71.0.3578.98-el7-fix-noexcept.patch
-
+ # drop rsp clobber, which breaks gcc9 (thanks to Jeff Law)
+ Patch126: chromium-71.0.3578.98-gcc9-drop-rsp-clobber.patch
+ # Thank you Gentoo.
+ #
+ Patch128: chromium-73-gcc-0.patch
+ Patch129: chromium-73-gcc-1.patch
+ Patch130: chromium-73-gcc-2.patch
+ Patch131: chromium-73-gcc-3.patch
+ Patch132: chromium-73-gcc-4.patch
+ Patch133: chromium-73-gcc-5.patch
+ Patch134: chromium-73-gcc-6.patch
+ # Disable -fno-delete-null-pointer-checks
+ Patch135: chromium-73.0.3683.75-disable-fno-delete-null-pointer-checks.patch
+ # Add #include <cstring> to get pipewire code to build
+ Patch136: chromium-73.0.3683.75-pipewire-cstring-fix.patch
+ # Conditionalize header-hygiene flags for clang
+ Patch137: chromium-73.0.3683.75-no-header-hygiene.patch
+ # Add missing #include <limits> needed to build crashpad for aarch64
+ Patch138: chromium-73.0.3683.75-aarch64-crashpad-limits.patch
++# el7 only patch
++Patch139: chromium-73.0.3683.75-el7-fix-noexcept.patch
# Use chromium-latest.py to generate clean tarball from released build tarballs, found here:
# http://build.chromium.org/buildbot/official/
@@@ -550,9 -565,11 +576,11 @@@ BuildRequires: google-noto-sans-khmer-f
%endif
# using the built from source version on aarch64
BuildRequires: ninja-build
+ # Yes, java is needed as well..
+ BuildRequires: java-1.8.0-openjdk-headless
%if 0%{?rhel} == 7
-BuildRequires: devtoolset-7-toolchain, devtoolset-7-libatomic-devel
+BuildRequires: devtoolset-%{dts_version}-toolchain, devtoolset-%{dts_version}-libatomic-devel
%endif
# There is a hardcoded check for nss 3.26 in the chromium code (crypto/nss_util.cc)
@@@ -870,12 -883,19 +894,22 @@@ udev
%ifarch i686
%patch122 -p1 -b .i686permissive
%endif
- %patch123 -p1 -b .relaxva
%patch124 -p1 -b .va1compat
- %patch125 -p1 -b .gcc-overloaded
+ %patch126 -p1 -b .gcc9
+ %patch128 -p1 -b .gentoogcc0
+ %patch129 -p1 -b .gentoogcc1
+ %patch130 -p1 -b .gentoogcc2
+ %patch131 -p1 -b .gentoogcc3
+ %patch132 -p1 -b .gentoogcc4
+ %patch133 -p1 -b .gentoogcc5
+ %patch134 -p1 -b .gentoogcc6
+ %patch135 -p1 -b .disable-ndnpc
+ %patch136 -p1 -b .cstring-fix
+ %patch137 -p1 -b .nohh
+ %patch138 -p1 -b .aarch64-limits
+%if 0%{?rhel} == 7
- %patch126 -p1 -b .fix-noexcept
++%patch139 -p1 -b .el7-noexcept
+%endif
# Change shebang in all relevant files in this directory and all subdirectories
# See `man find` for how the `-exec command {} +` syntax works
diff --cc sources
index f0cf139,65231ba..fcfd066
--- a/sources
+++ b/sources
@@@ -16,5 -16,4 +16,5 @@@ SHA512 (Tinos-Bold.ttf) = 54aeca804c06a
SHA512 (Tinos-Italic.ttf) = d4f4f096110ef98a781a2a0e0d319317e5f84e650fe6f4d4f6b0e22a16414278217f37497b904a18540273c0e2d79d4f1faabde3b0eb5446283b318c73bafb38
SHA512 (Tinos-Regular.ttf) = 58085c5dac6d067d60ba2ab3220c4a0cc1efcf279cadfcfb8746a5e5fa1a6f6daa62750dc2051b3b2d8a51b4d2e9bb0f66594caf2253c0870ed9c7286fa45e8f
SHA512 (Ahem.ttf) = aeb64b10ab9c87860714cb60b4900254b13dc52c51319256a1a3722c882026ab7c616bf628fbc2fe14e38a6003f3a481af60b52a7ed62071d28ddaf428e4e3fd
- SHA512 (chromium-71.0.3578.98-clean.tar.xz) = 8e92cefb1079944a742cd99ef4b50baa71a4517420b7e30bd9cba556df9a032f1dd08acd421e0ad28b40c4d93367529029edebd8c2e6c25ccec2ab231c81828c
+SHA512 (node-v8.9.1-linux-x64.tar.gz) = a707fd4567041c56e7f9d415e505e3fa650627f31def7fefdd7ec50f9e7066bb33332b67f479e1159d85e1105a7e6d034aad7429f4f3d034c9161170d7e0b844
+ SHA512 (chromium-73.0.3683.75-clean.tar.xz) = f240e8d58f8093db409e4a90a6c2c8dbbef3e5c0ba1d9acd8fd907be4e34042c76329881a4880bf52cc91b8e4949704d041279f91d76fd614c7d2d7020436fe6
5 years, 6 months
[chromium-libs-media-freeworld: 187/259] do not package pyproto/protoc
by Nicolas Chauvet
commit 24a79238b2f82f88931be9a6909027f99e688af1
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Tue Mar 19 09:31:47 2019 -0400
do not package pyproto/protoc
chromium.spec | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
---
diff --git a/chromium.spec b/chromium.spec
index ddc465b..2b4ea21 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -160,7 +160,7 @@ Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
Name: chromium%{chromium_channel}
%endif
Version: %{majorversion}.0.3683.75
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: A WebKit (Blink) powered web browser
Url: http://www.chromium.org/Home
License: BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and OpenSSL and (MPLv1.1 or GPLv2 or LGPLv2)
@@ -1500,7 +1500,10 @@ cp -a *.pak locales resources icudtl.dat %{buildroot}%{chromium_path}
cp -a nacl_helper* *.nexe pnacl tls_edit %{buildroot}%{chromium_path}
chmod -x %{buildroot}%{chromium_path}/nacl_helper_bootstrap* *.nexe
%endif
+# Reasonably sure we don't need this anymore. Chrome doesn't include it.
+%if 0
cp -a protoc pyproto %{buildroot}%{chromium_path}
+%endif
%ifarch x86_64 i686 aarch64
cp -a swiftshader %{buildroot}%{chromium_path}
%endif
@@ -1732,7 +1735,9 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%{chromium_path}/tls_edit
%endif
%dir %{chromium_path}/PepperFlash/
+%if 0
%{chromium_path}/protoc
+%endif
# %%{chromium_path}/remoting_locales/
# %%{chromium_path}/pseudo_locales/
# %%{chromium_path}/plugins/
@@ -1750,7 +1755,9 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%{chromium_path}/headless_lib.pak
%endif
# %%{chromium_path}/mus_app_resources_*.pak
+%if 0
%{chromium_path}/pyproto/
+%endif
%{chromium_path}/resources/
%dir %{chromium_path}/locales/
%lang(am) %{chromium_path}/locales/am.pak*
@@ -1865,6 +1872,9 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%changelog
+* Tue Mar 19 2019 Tom Callaway <spot(a)fedoraproject.org> - 73.0.3683.75-2
+- do not include pyproto/protoc files in package
+
* Tue Mar 12 2019 Tom Callaway <spot(a)fedoraproject.org> - 73.0.3683.75-1
- update to 73.0.3683.75
5 years, 6 months