commit 29aa9da06f1bef43aa62660954446d8a03d9a141
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Sat Aug 5 17:16:08 2017 -0400
60.0.3112.90 + headless + fixes for freeworld
.gitignore | 1 +
chromium-60.0.3112.78-enable-mp3.patch | 479 ++++++++++++++++++
chromium-60.0.3112.78-fix-gn-bootstrap.patch | 11 +
chromium-60.0.3112.78-gcc7.patch | 80 +++
chromium-60.0.3112.78-gn-system.patch | 221 ++++++++
chromium-60.0.3112.78-gtk2fix.patch | 612 +++++++++++++++++++++++
chromium-60.0.3112.78-jpeg-nomangle.patch | 14 +
chromium-60.0.3112.78-last-commit-position.patch | 28 ++
chromium-60.0.3112.78-no-libpng-prefix.patch | 17 +
chromium-60.0.3112.78-no-zlib-mangle.patch | 13 +
chromium.spec | 236 ++++++---
sources | 5 +-
12 files changed, 1640 insertions(+), 77 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index ce8a184..19bd92f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -25,3 +25,4 @@
/chromium-59.0.3071.109-clean.tar.xz
/chromium-59.0.3071.115-clean.tar.xz
/chromium-59.0.3071.109-freetype.tar.bz2
+/chromium-60.0.3112.90-clean.tar.xz
diff --git a/chromium-60.0.3112.78-enable-mp3.patch
b/chromium-60.0.3112.78-enable-mp3.patch
new file mode 100644
index 0000000..3dfdab2
--- /dev/null
+++ b/chromium-60.0.3112.78-enable-mp3.patch
@@ -0,0 +1,479 @@
+diff -up chromium-60.0.3112.78/components/neterror/resources/sounds/button-press.mp3
chromium-60.0.3112.78/components/neterror/resources/sounds/button-press
+diff -up chromium-60.0.3112.78/components/neterror/resources/sounds/hit.mp3
chromium-60.0.3112.78/components/neterror/resources/sounds/hit
+diff -up chromium-60.0.3112.78/components/neterror/resources/sounds/score-reached.mp3
chromium-60.0.3112.78/components/neterror/resources/sounds/score-reached
+diff -up chromium-60.0.3112.78/media/base/mime_util_internal.cc.mp3
chromium-60.0.3112.78/media/base/mime_util_internal.cc
+--- chromium-60.0.3112.78/media/base/mime_util_internal.cc.mp3 2017-07-25
15:04:57.000000000 -0400
++++ chromium-60.0.3112.78/media/base/mime_util_internal.cc 2017-07-31 10:57:55.054231795
-0400
+@@ -278,10 +278,10 @@ void MimeUtil::AddSupportedMediaFormats(
+ CodecSet webm_codecs(webm_audio_codecs);
+ webm_codecs.insert(webm_video_codecs.begin(), webm_video_codecs.end());
+
+-#if BUILDFLAG(USE_PROPRIETARY_CODECS)
+ CodecSet mp3_codecs;
+ mp3_codecs.insert(MP3);
+
++#if BUILDFLAG(USE_PROPRIETARY_CODECS)
+ CodecSet aac;
+ aac.insert(MPEG2_AAC);
+ aac.insert(MPEG4_AAC);
+@@ -325,10 +325,10 @@ void MimeUtil::AddSupportedMediaFormats(
+ AddContainerWithCodecs("application/ogg", ogg_codecs, false);
+ AddContainerWithCodecs("audio/flac", implicit_codec, false);
+
+-#if BUILDFLAG(USE_PROPRIETARY_CODECS)
+ AddContainerWithCodecs("audio/mpeg", mp3_codecs, true); // Allow
"mp3".
+ AddContainerWithCodecs("audio/mp3", implicit_codec, true);
+ AddContainerWithCodecs("audio/x-mp3", implicit_codec, true);
++#if BUILDFLAG(USE_PROPRIETARY_CODECS)
+ AddContainerWithCodecs("audio/aac", implicit_codec, true); // AAC / ADTS.
+ AddContainerWithCodecs("audio/mp4", mp4_audio_codecs, true);
+ DCHECK(!mp4_video_codecs.empty());
+@@ -928,7 +928,6 @@ bool MimeUtil::IsCodecProprietary(Codec
+ case INVALID_CODEC:
+ case AC3:
+ case EAC3:
+- case MP3:
+ case MPEG2_AAC:
+ case MPEG4_AAC:
+ case H264:
+@@ -936,6 +935,7 @@ bool MimeUtil::IsCodecProprietary(Codec
+ case DOLBY_VISION:
+ return true;
+
++ case MP3:
+ case PCM:
+ case VORBIS:
+ case OPUS:
+diff -up chromium-60.0.3112.78/media/BUILD.gn.mp3 chromium-60.0.3112.78/media/BUILD.gn
+diff -up chromium-60.0.3112.78/media/formats/BUILD.gn.mp3
chromium-60.0.3112.78/media/formats/BUILD.gn
+--- chromium-60.0.3112.78/media/formats/BUILD.gn.mp3 2017-07-31 11:00:08.486638957 -0400
++++ chromium-60.0.3112.78/media/formats/BUILD.gn 2017-07-31 11:01:17.867290730 -0400
+@@ -12,6 +12,14 @@ source_set("formats") {
+ "ac3/ac3_util.h",
+ "common/offset_byte_queue.cc",
+ "common/offset_byte_queue.h",
++ "mpeg/adts_constants.cc",
++ "mpeg/adts_constants.h",
++ "mpeg/adts_stream_parser.cc",
++ "mpeg/adts_stream_parser.h",
++ "mpeg/mpeg1_audio_stream_parser.cc",
++ "mpeg/mpeg1_audio_stream_parser.h",
++ "mpeg/mpeg_audio_stream_parser_base.cc",
++ "mpeg/mpeg_audio_stream_parser_base.h",
+ "webm/webm_audio_client.cc",
+ "webm/webm_audio_client.h",
+ "webm/webm_cluster_parser.cc",
+@@ -76,14 +84,6 @@ source_set("formats") {
+ "mp4/sample_to_group_iterator.h",
+ "mp4/track_run_iterator.cc",
+ "mp4/track_run_iterator.h",
+- "mpeg/adts_constants.cc",
+- "mpeg/adts_constants.h",
+- "mpeg/adts_stream_parser.cc",
+- "mpeg/adts_stream_parser.h",
+- "mpeg/mpeg1_audio_stream_parser.cc",
+- "mpeg/mpeg1_audio_stream_parser.h",
+- "mpeg/mpeg_audio_stream_parser_base.cc",
+- "mpeg/mpeg_audio_stream_parser_base.h",
+ ]
+ }
+
+diff -up
chromium-60.0.3112.78/third_party/catapult/third_party/gsutil/gslib/tests/test_data/test.mp3
chromium-60.0.3112.78/third_party/catapult/third_party/gsutil/gslib/tests/test_data/test
+diff -up
chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/config.h.mp3
chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/config.h
+---
chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/config.h.mp3 2017-07-31
10:18:49.000000000 -0400
++++
chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/config.h 2017-07-31
10:57:55.056231757 -0400
+@@ -1,7 +1,7 @@
+ /* Automatically generated by configure - do not modify! */
+ #ifndef FFMPEG_CONFIG_H
+ #define FFMPEG_CONFIG_H
+-#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc
--disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages
--disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft
--enable-rdft --enable-static --enable-libopus --disable-bzlib --disable-error-resilience
--disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl
--disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va
--disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox
--disable-nvenc --disable-cuda --disable-cuvid
--enable-decoder='vorbis,libopus,flac'
--enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le'
--enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw'
--enable-demuxer='ogg,matroska,wav,flac'
--enable-parser='opus,vorbis,flac'
--extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include
--optflags='\"-O2\"' --enable
-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-cross-compile
--cross-prefix=/usr/bin/aarch64-linux-gnu- --target-os=linux --arch=aarch64 --enable-armv8
--extra-cflags='-march=armv8-a' --enable-pic"
++#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc
--disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages
--disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft
--enable-rdft --enable-static --enable-libopus --disable-bzlib --disable-error-resilience
--disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl
--disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va
--disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox
--disable-nvenc --disable-cuda --disable-cuvid
--enable-decoder='vorbis,libopus,flac'
--enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le'
--enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw'
--enable-demuxer='ogg,matroska,wav,flac'
--enable-parser='opus,vorbis,flac'
--extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include
--optflags='\"-O2\"' --enable
-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-cross-compile
--cross-prefix=/usr/bin/aarch64-linux-gnu- --target-os=linux --arch=aarch64 --enable-armv8
--extra-cflags='-march=armv8-a' --enable-pic --enable-decoder='mp3'
--enable-demuxer='mp3' --enable-parser='mpegaudio'"
+ #define FFMPEG_LICENSE "LGPL version 2.1 or later"
+ #define CONFIG_THIS_YEAR 2017
+ #define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
+@@ -550,7 +550,7 @@
+ #define CONFIG_FFPROBE 0
+ #define CONFIG_FFSERVER 0
+ #define CONFIG_FFMPEG 0
+-#define CONFIG_DCT 0
++#define CONFIG_DCT 1
+ #define CONFIG_DWT 0
+ #define CONFIG_ERROR_RESILIENCE 0
+ #define CONFIG_FAAN 1
+@@ -617,8 +617,8 @@
+ #define CONFIG_LZF 0
+ #define CONFIG_ME_CMP 0
+ #define CONFIG_MPEG_ER 0
+-#define CONFIG_MPEGAUDIO 0
+-#define CONFIG_MPEGAUDIODSP 0
++#define CONFIG_MPEGAUDIO 1
++#define CONFIG_MPEGAUDIODSP 1
+ #define CONFIG_MPEGVIDEO 0
+ #define CONFIG_MPEGVIDEOENC 0
+ #define CONFIG_MSS34DSP 0
+@@ -957,7 +957,7 @@
+ #define CONFIG_MP1FLOAT_DECODER 0
+ #define CONFIG_MP2_DECODER 0
+ #define CONFIG_MP2FLOAT_DECODER 0
+-#define CONFIG_MP3_DECODER 0
++#define CONFIG_MP3_DECODER 1
+ #define CONFIG_MP3FLOAT_DECODER 0
+ #define CONFIG_MP3ADU_DECODER 0
+ #define CONFIG_MP3ADUFLOAT_DECODER 0
+@@ -1263,7 +1263,7 @@
+ #define CONFIG_MM_DEMUXER 0
+ #define CONFIG_MMF_DEMUXER 0
+ #define CONFIG_MOV_DEMUXER 0
+-#define CONFIG_MP3_DEMUXER 0
++#define CONFIG_MP3_DEMUXER 1
+ #define CONFIG_MPC_DEMUXER 0
+ #define CONFIG_MPC8_DEMUXER 0
+ #define CONFIG_MPEGPS_DEMUXER 0
+@@ -2196,7 +2196,7 @@
+ #define CONFIG_MJPEG_PARSER 0
+ #define CONFIG_MLP_PARSER 0
+ #define CONFIG_MPEG4VIDEO_PARSER 0
+-#define CONFIG_MPEGAUDIO_PARSER 0
++#define CONFIG_MPEGAUDIO_PARSER 1
+ #define CONFIG_MPEGVIDEO_PARSER 0
+ #define CONFIG_OPUS_PARSER 1
+ #define CONFIG_PNG_PARSER 0
+diff -up
chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/arm/config.h.mp3
chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/arm/config.h
+---
chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/arm/config.h.mp3 2017-07-31
10:18:49.000000000 -0400
++++
chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/arm/config.h 2017-07-31
10:57:55.057231738 -0400
+@@ -1,7 +1,7 @@
+ /* Automatically generated by configure - do not modify! */
+ #ifndef FFMPEG_CONFIG_H
+ #define FFMPEG_CONFIG_H
+-#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc
--disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages
--disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft
--enable-rdft --enable-static --enable-libopus --disable-bzlib --disable-error-resilience
--disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl
--disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va
--disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox
--disable-nvenc --disable-cuda --disable-cuvid
--enable-decoder='vorbis,libopus,flac'
--enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le'
--enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw'
--enable-demuxer='ogg,matroska,wav,flac'
--enable-parser='opus,vorbis,flac'
--extra-cflags=-I/home/tguilbert/chrome_root/src/third_party/opus/src/include
--optflags='\"-O2\"' --enable-decoder='theora,vp
8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2
--enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile
--target-os=linux --cross-prefix=armv7a-cros-linux-gnueabi-
--extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard'
--disable-neon --extra-cflags='-mfpu=vfpv3-d16' --enable-pic"
++#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc
--disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages
--disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft
--enable-rdft --enable-static --enable-libopus --disable-bzlib --disable-error-resilience
--disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl
--disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va
--disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox
--disable-nvenc --disable-cuda --disable-cuvid
--enable-decoder='vorbis,libopus,flac'
--enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le'
--enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw'
--enable-demuxer='ogg,matroska,wav,flac'
--enable-parser='opus,vorbis,flac'
--extra-cflags=-I/home/tguilbert/chrome_root/src/third_party/opus/src/include
--optflags='\"-O2\"' --enable-decoder='theora,vp
8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2
--enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile
--target-os=linux --cross-prefix=armv7a-cros-linux-gnueabi-
--extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard'
--disable-neon --extra-cflags='-mfpu=vfpv3-d16' --enable-pic
--enable-decoder='mp3' --enable-demuxer='mp3'
--enable-parser='mpegaudio'"
+ #define FFMPEG_LICENSE "LGPL version 2.1 or later"
+ #define CONFIG_THIS_YEAR 2017
+ #define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
+@@ -550,7 +550,7 @@
+ #define CONFIG_FFPROBE 0
+ #define CONFIG_FFSERVER 0
+ #define CONFIG_FFMPEG 0
+-#define CONFIG_DCT 0
++#define CONFIG_DCT 1
+ #define CONFIG_DWT 0
+ #define CONFIG_ERROR_RESILIENCE 0
+ #define CONFIG_FAAN 1
+@@ -617,8 +617,8 @@
+ #define CONFIG_LZF 0
+ #define CONFIG_ME_CMP 0
+ #define CONFIG_MPEG_ER 0
+-#define CONFIG_MPEGAUDIO 0
+-#define CONFIG_MPEGAUDIODSP 0
++#define CONFIG_MPEGAUDIO 1
++#define CONFIG_MPEGAUDIODSP 1
+ #define CONFIG_MPEGVIDEO 0
+ #define CONFIG_MPEGVIDEOENC 0
+ #define CONFIG_MSS34DSP 0
+@@ -957,7 +957,7 @@
+ #define CONFIG_MP1FLOAT_DECODER 0
+ #define CONFIG_MP2_DECODER 0
+ #define CONFIG_MP2FLOAT_DECODER 0
+-#define CONFIG_MP3_DECODER 0
++#define CONFIG_MP3_DECODER 1
+ #define CONFIG_MP3FLOAT_DECODER 0
+ #define CONFIG_MP3ADU_DECODER 0
+ #define CONFIG_MP3ADUFLOAT_DECODER 0
+@@ -1263,7 +1263,7 @@
+ #define CONFIG_MM_DEMUXER 0
+ #define CONFIG_MMF_DEMUXER 0
+ #define CONFIG_MOV_DEMUXER 0
+-#define CONFIG_MP3_DEMUXER 0
++#define CONFIG_MP3_DEMUXER 1
+ #define CONFIG_MPC_DEMUXER 0
+ #define CONFIG_MPC8_DEMUXER 0
+ #define CONFIG_MPEGPS_DEMUXER 0
+@@ -2196,7 +2196,7 @@
+ #define CONFIG_MJPEG_PARSER 0
+ #define CONFIG_MLP_PARSER 0
+ #define CONFIG_MPEG4VIDEO_PARSER 0
+-#define CONFIG_MPEGAUDIO_PARSER 0
++#define CONFIG_MPEGAUDIO_PARSER 1
+ #define CONFIG_MPEGVIDEO_PARSER 0
+ #define CONFIG_OPUS_PARSER 1
+ #define CONFIG_PNG_PARSER 0
+diff -up
chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/config.h.mp3
chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/config.h
+---
chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/config.h.mp3 2017-07-31
10:18:49.000000000 -0400
++++
chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/config.h 2017-07-31
10:57:55.106230806 -0400
+@@ -1,7 +1,7 @@
+ /* Automatically generated by configure - do not modify! */
+ #ifndef FFMPEG_CONFIG_H
+ #define FFMPEG_CONFIG_H
+-#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc
--disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages
--disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft
--enable-rdft --enable-static --enable-libopus --disable-bzlib --disable-error-resilience
--disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl
--disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va
--disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox
--disable-nvenc --disable-cuda --disable-cuvid
--enable-decoder='vorbis,libopus,flac'
--enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le'
--enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw'
--enable-demuxer='ogg,matroska,wav,flac'
--enable-parser='opus,vorbis,flac'
--extra-cflags=-I/home/tguilbert/chrome_root/src/third_party/opus/src/include
--optflags='\"-O2\"' --enable-decoder='theora,vp
8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2
--enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile
--target-os=linux --cross-prefix=armv7a-cros-linux-gnueabi-
--extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard'
--enable-neon --extra-cflags='-mfpu=neon' --enable-pic"
++#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc
--disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages
--disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft
--enable-rdft --enable-static --enable-libopus --disable-bzlib --disable-error-resilience
--disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl
--disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va
--disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox
--disable-nvenc --disable-cuda --disable-cuvid
--enable-decoder='vorbis,libopus,flac'
--enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le'
--enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw'
--enable-demuxer='ogg,matroska,wav,flac'
--enable-parser='opus,vorbis,flac'
--extra-cflags=-I/home/tguilbert/chrome_root/src/third_party/opus/src/include
--optflags='\"-O2\"' --enable-decoder='theora,vp
8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2
--enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile
--target-os=linux --cross-prefix=armv7a-cros-linux-gnueabi-
--extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard'
--enable-neon --extra-cflags='-mfpu=neon' --enable-pic
--enable-decoder='mp3' --enable-demuxer='mp3'
--enable-parser='mpegaudio'"
+ #define FFMPEG_LICENSE "LGPL version 2.1 or later"
+ #define CONFIG_THIS_YEAR 2017
+ #define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
+@@ -550,7 +550,7 @@
+ #define CONFIG_FFPROBE 0
+ #define CONFIG_FFSERVER 0
+ #define CONFIG_FFMPEG 0
+-#define CONFIG_DCT 0
++#define CONFIG_DCT 1
+ #define CONFIG_DWT 0
+ #define CONFIG_ERROR_RESILIENCE 0
+ #define CONFIG_FAAN 1
+@@ -617,8 +617,8 @@
+ #define CONFIG_LZF 0
+ #define CONFIG_ME_CMP 0
+ #define CONFIG_MPEG_ER 0
+-#define CONFIG_MPEGAUDIO 0
+-#define CONFIG_MPEGAUDIODSP 0
++#define CONFIG_MPEGAUDIO 1
++#define CONFIG_MPEGAUDIODSP 1
+ #define CONFIG_MPEGVIDEO 0
+ #define CONFIG_MPEGVIDEOENC 0
+ #define CONFIG_MSS34DSP 0
+@@ -957,7 +957,7 @@
+ #define CONFIG_MP1FLOAT_DECODER 0
+ #define CONFIG_MP2_DECODER 0
+ #define CONFIG_MP2FLOAT_DECODER 0
+-#define CONFIG_MP3_DECODER 0
++#define CONFIG_MP3_DECODER 1
+ #define CONFIG_MP3FLOAT_DECODER 0
+ #define CONFIG_MP3ADU_DECODER 0
+ #define CONFIG_MP3ADUFLOAT_DECODER 0
+@@ -1263,7 +1263,7 @@
+ #define CONFIG_MM_DEMUXER 0
+ #define CONFIG_MMF_DEMUXER 0
+ #define CONFIG_MOV_DEMUXER 0
+-#define CONFIG_MP3_DEMUXER 0
++#define CONFIG_MP3_DEMUXER 1
+ #define CONFIG_MPC_DEMUXER 0
+ #define CONFIG_MPC8_DEMUXER 0
+ #define CONFIG_MPEGPS_DEMUXER 0
+@@ -2196,7 +2196,7 @@
+ #define CONFIG_MJPEG_PARSER 0
+ #define CONFIG_MLP_PARSER 0
+ #define CONFIG_MPEG4VIDEO_PARSER 0
+-#define CONFIG_MPEGAUDIO_PARSER 0
++#define CONFIG_MPEGAUDIO_PARSER 1
+ #define CONFIG_MPEGVIDEO_PARSER 0
+ #define CONFIG_OPUS_PARSER 1
+ #define CONFIG_PNG_PARSER 0
+diff -up
chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/config.h.mp3
chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/config.h
+---
chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/config.h.mp3 2017-07-31
10:18:49.000000000 -0400
++++
chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/config.h 2017-07-31
10:57:55.107230787 -0400
+@@ -1,7 +1,7 @@
+ /* Automatically generated by configure - do not modify! */
+ #ifndef FFMPEG_CONFIG_H
+ #define FFMPEG_CONFIG_H
+-#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc
--disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages
--disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft
--enable-rdft --enable-static --enable-libopus --disable-bzlib --disable-error-resilience
--disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl
--disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va
--disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox
--disable-nvenc --disable-cuda --disable-cuvid
--enable-decoder='vorbis,libopus,flac'
--enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le'
--enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw'
--enable-demuxer='ogg,matroska,wav,flac'
--enable-parser='opus,vorbis,flac'
--extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include
--optflags='\"-O2\"' --enable
-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=i686
--extra-cflags='\"-m32\"' --extra-ldflags='\"-m32\"'
--enable-yasm --enable-pic"
++#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc
--disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages
--disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft
--enable-rdft --enable-static --enable-libopus --disable-bzlib --disable-error-resilience
--disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl
--disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va
--disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox
--disable-nvenc --disable-cuda --disable-cuvid
--enable-decoder='vorbis,libopus,flac'
--enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le'
--enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw'
--enable-demuxer='ogg,matroska,wav,flac'
--enable-parser='opus,vorbis,flac'
--extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include
--optflags='\"-O2\"' --enable
-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=i686
--extra-cflags='\"-m32\"' --extra-ldflags='\"-m32\"'
--enable-yasm --enable-pic --enable-decoder='mp3' --enable-demuxer='mp3'
--enable-parser='mpegaudio'"
+ #define FFMPEG_LICENSE "LGPL version 2.1 or later"
+ #define CONFIG_THIS_YEAR 2017
+ #define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
+@@ -550,7 +550,7 @@
+ #define CONFIG_FFPROBE 0
+ #define CONFIG_FFSERVER 0
+ #define CONFIG_FFMPEG 0
+-#define CONFIG_DCT 0
++#define CONFIG_DCT 1
+ #define CONFIG_DWT 0
+ #define CONFIG_ERROR_RESILIENCE 0
+ #define CONFIG_FAAN 1
+@@ -617,8 +617,8 @@
+ #define CONFIG_LZF 0
+ #define CONFIG_ME_CMP 0
+ #define CONFIG_MPEG_ER 0
+-#define CONFIG_MPEGAUDIO 0
+-#define CONFIG_MPEGAUDIODSP 0
++#define CONFIG_MPEGAUDIO 1
++#define CONFIG_MPEGAUDIODSP 1
+ #define CONFIG_MPEGVIDEO 0
+ #define CONFIG_MPEGVIDEOENC 0
+ #define CONFIG_MSS34DSP 0
+@@ -957,7 +957,7 @@
+ #define CONFIG_MP1FLOAT_DECODER 0
+ #define CONFIG_MP2_DECODER 0
+ #define CONFIG_MP2FLOAT_DECODER 0
+-#define CONFIG_MP3_DECODER 0
++#define CONFIG_MP3_DECODER 1
+ #define CONFIG_MP3FLOAT_DECODER 0
+ #define CONFIG_MP3ADU_DECODER 0
+ #define CONFIG_MP3ADUFLOAT_DECODER 0
+@@ -1263,7 +1263,7 @@
+ #define CONFIG_MM_DEMUXER 0
+ #define CONFIG_MMF_DEMUXER 0
+ #define CONFIG_MOV_DEMUXER 0
+-#define CONFIG_MP3_DEMUXER 0
++#define CONFIG_MP3_DEMUXER 1
+ #define CONFIG_MPC_DEMUXER 0
+ #define CONFIG_MPC8_DEMUXER 0
+ #define CONFIG_MPEGPS_DEMUXER 0
+@@ -2196,7 +2196,7 @@
+ #define CONFIG_MJPEG_PARSER 0
+ #define CONFIG_MLP_PARSER 0
+ #define CONFIG_MPEG4VIDEO_PARSER 0
+-#define CONFIG_MPEGAUDIO_PARSER 0
++#define CONFIG_MPEGAUDIO_PARSER 1
+ #define CONFIG_MPEGVIDEO_PARSER 0
+ #define CONFIG_OPUS_PARSER 1
+ #define CONFIG_PNG_PARSER 0
+diff -up
chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config.h.mp3
chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config.h
+---
chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config.h.mp3 2017-07-31
10:18:49.000000000 -0400
++++
chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config.h 2017-07-31
10:57:55.108230768 -0400
+@@ -1,7 +1,7 @@
+ /* Automatically generated by configure - do not modify! */
+ #ifndef FFMPEG_CONFIG_H
+ #define FFMPEG_CONFIG_H
+-#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc
--disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages
--disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft
--enable-rdft --enable-static --enable-libopus --disable-bzlib --disable-error-resilience
--disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl
--disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va
--disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox
--disable-nvenc --disable-cuda --disable-cuvid
--enable-decoder='vorbis,libopus,flac'
--enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le'
--enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw'
--enable-demuxer='ogg,matroska,wav,flac'
--enable-parser='opus,vorbis,flac'
--extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include
--optflags='\"-O2\"' --enable
-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-pic
--enable-lto"
++#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc
--disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages
--disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft
--enable-rdft --enable-static --enable-libopus --disable-bzlib --disable-error-resilience
--disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl
--disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va
--disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox
--disable-nvenc --disable-cuda --disable-cuvid
--enable-decoder='vorbis,libopus,flac'
--enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le'
--enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw'
--enable-demuxer='ogg,matroska,wav,flac'
--enable-parser='opus,vorbis,flac'
--extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include
--optflags='\"-O2\"' --enable
-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-pic --enable-lto
--enable-decoder='mp3' --enable-demuxer='mp3'
--enable-parser='mpegaudio'"
+ #define FFMPEG_LICENSE "LGPL version 2.1 or later"
+ #define CONFIG_THIS_YEAR 2017
+ #define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
+@@ -550,7 +550,7 @@
+ #define CONFIG_FFPROBE 0
+ #define CONFIG_FFSERVER 0
+ #define CONFIG_FFMPEG 0
+-#define CONFIG_DCT 0
++#define CONFIG_DCT 1
+ #define CONFIG_DWT 0
+ #define CONFIG_ERROR_RESILIENCE 0
+ #define CONFIG_FAAN 1
+@@ -617,8 +617,8 @@
+ #define CONFIG_LZF 0
+ #define CONFIG_ME_CMP 0
+ #define CONFIG_MPEG_ER 0
+-#define CONFIG_MPEGAUDIO 0
+-#define CONFIG_MPEGAUDIODSP 0
++#define CONFIG_MPEGAUDIO 1
++#define CONFIG_MPEGAUDIODSP 1
+ #define CONFIG_MPEGVIDEO 0
+ #define CONFIG_MPEGVIDEOENC 0
+ #define CONFIG_MSS34DSP 0
+@@ -957,7 +957,7 @@
+ #define CONFIG_MP1FLOAT_DECODER 0
+ #define CONFIG_MP2_DECODER 0
+ #define CONFIG_MP2FLOAT_DECODER 0
+-#define CONFIG_MP3_DECODER 0
++#define CONFIG_MP3_DECODER 1
+ #define CONFIG_MP3FLOAT_DECODER 0
+ #define CONFIG_MP3ADU_DECODER 0
+ #define CONFIG_MP3ADUFLOAT_DECODER 0
+@@ -1263,7 +1263,7 @@
+ #define CONFIG_MM_DEMUXER 0
+ #define CONFIG_MMF_DEMUXER 0
+ #define CONFIG_MOV_DEMUXER 0
+-#define CONFIG_MP3_DEMUXER 0
++#define CONFIG_MP3_DEMUXER 1
+ #define CONFIG_MPC_DEMUXER 0
+ #define CONFIG_MPC8_DEMUXER 0
+ #define CONFIG_MPEGPS_DEMUXER 0
+@@ -2196,7 +2196,7 @@
+ #define CONFIG_MJPEG_PARSER 0
+ #define CONFIG_MLP_PARSER 0
+ #define CONFIG_MPEG4VIDEO_PARSER 0
+-#define CONFIG_MPEGAUDIO_PARSER 0
++#define CONFIG_MPEGAUDIO_PARSER 1
+ #define CONFIG_MPEGVIDEO_PARSER 0
+ #define CONFIG_OPUS_PARSER 1
+ #define CONFIG_PNG_PARSER 0
+diff -up chromium-60.0.3112.78/third_party/ffmpeg/ffmpeg_generated.gni.mp3
chromium-60.0.3112.78/third_party/ffmpeg/ffmpeg_generated.gni
+--- chromium-60.0.3112.78/third_party/ffmpeg/ffmpeg_generated.gni.mp3 2017-07-31
10:18:46.000000000 -0400
++++ chromium-60.0.3112.78/third_party/ffmpeg/ffmpeg_generated.gni 2017-07-31
10:57:55.109230749 -0400
+@@ -177,19 +177,12 @@ if ((is_linux && current_cpu == "arm" &&
+ ]
+ }
+
+-if ((current_cpu == "x64" && ffmpeg_branding == "Chrome") ||
(is_android && current_cpu == "arm" && arm_use_neon &&
ffmpeg_branding == "Chrome") || (is_android && current_cpu ==
"arm64" && ffmpeg_branding == "Chrome") || (is_android
&& current_cpu == "mips64el" && ffmpeg_branding ==
"Chrome") || (is_android && current_cpu == "mipsel" &&
ffmpeg_branding == "Chrome") || (is_android && current_cpu ==
"x86" && ffmpeg_branding == "Chrome") || (is_linux &&
current_cpu == "arm" && arm_use_neon && ffmpeg_branding ==
"Chrome") || (is_linux && current_cpu == "arm" &&
arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux &&
current_cpu == "arm" && ffmpeg_branding == "Chrome") ||
(is_linux && current_cpu == "arm" && ffmpeg_branding ==
"ChromeOS") || (is_linux && current_cpu == "arm64" &&
ffmpeg_branding == "Chrome") || (is_linux && current_cpu ==
"arm64" && ffmpeg_branding == "ChromeOS") || (is_linux
&& current_cpu == "mipsel" && ffmpeg_branding ==
"Chrome") || (is_linux && current_cpu =
= "mipsel" && ffmpeg_branding == "ChromeOS") || (is_linux
&& current_cpu == "x64" && ffmpeg_branding ==
"ChromeOS") || (is_linux && current_cpu == "x86" &&
ffmpeg_branding == "Chrome") || (is_linux && current_cpu ==
"x86" && ffmpeg_branding == "ChromeOS") || (is_win &&
ffmpeg_branding == "Chrome")) {
++if ((current_cpu == "x64") || (is_android && current_cpu ==
"arm" && arm_use_neon) || (is_android && current_cpu ==
"arm64") || (is_android && current_cpu == "mips64el") ||
(is_android && current_cpu == "mipsel") || (is_android &&
current_cpu == "x86") || (is_linux && current_cpu == "arm"
&& arm_use_neon) || (is_linux && current_cpu == "arm" &&
arm_use_neon) || (is_linux && current_cpu == "arm") || (is_linux
&& current_cpu == "arm64") || (is_linux && current_cpu ==
"mipsel") || (is_linux && current_cpu == "x64") || (is_linux
&& current_cpu == "x86") || (is_win))
++{
+ ffmpeg_c_sources += [
+- "libavcodec/aac_ac3_parser.c",
+- "libavcodec/aac_parser.c",
+- "libavcodec/aacadtsdec.c",
+- "libavcodec/aacps_float.c",
+- "libavcodec/aacpsdsp_float.c",
+- "libavcodec/aacsbr.c",
+- "libavcodec/aactab.c",
+- "libavcodec/ac3tab.c",
+- "libavcodec/autorename_libavcodec_aacdec.c",
+ "libavcodec/autorename_libavcodec_mpegaudiodsp.c",
+ "libavcodec/autorename_libavcodec_sbrdsp.c",
++ "libavcodec/ac3tab.c",
+ "libavcodec/cbrt_data.c",
+ "libavcodec/dct.c",
+ "libavcodec/dct32_fixed.c",
+@@ -205,7 +198,6 @@ if ((current_cpu == "x64" && ffmpeg_bran
+ "libavcodec/mpegaudiodsp_float.c",
+ "libavcodec/sinewin.c",
+ "libavcodec/sinewin_fixed.c",
+- "libavformat/aacdec.c",
+ "libavformat/apetag.c",
+ "libavformat/img2.c",
+ "libavformat/mov.c",
+@@ -214,6 +206,21 @@ if ((current_cpu == "x64" && ffmpeg_bran
+ ]
+ }
+
++if ((current_cpu == "x64" && ffmpeg_branding == "Chrome") ||
(is_android && current_cpu == "arm" && arm_use_neon &&
ffmpeg_branding == "Chrome") || (is_android && current_cpu ==
"arm64" && ffmpeg_branding == "Chrome") || (is_android
&& current_cpu == "mips64el" && ffmpeg_branding ==
"Chrome") || (is_android && current_cpu == "mipsel" &&
ffmpeg_branding == "Chrome") || (is_android && current_cpu ==
"x86" && ffmpeg_branding == "Chrome") || (is_linux &&
current_cpu == "arm" && arm_use_neon && ffmpeg_branding ==
"Chrome") || (is_linux && current_cpu == "arm" &&
arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux &&
current_cpu == "arm" && ffmpeg_branding == "Chrome") ||
(is_linux && current_cpu == "arm" && ffmpeg_branding ==
"ChromeOS") || (is_linux && current_cpu == "arm64" &&
ffmpeg_branding == "Chrome") || (is_linux && current_cpu ==
"arm64" && ffmpeg_branding == "ChromeOS") || (is_linux
&& current_cpu == "mipsel" && ffmpeg_branding ==
"Chrome") || (is_linux && current_cpu =
= "mipsel" && ffmpeg_branding == "ChromeOS") || (is_linux
&& current_cpu == "x64" && ffmpeg_branding ==
"ChromeOS") || (is_linux && current_cpu == "x86" &&
ffmpeg_branding == "Chrome") || (is_linux && current_cpu ==
"x86" && ffmpeg_branding == "ChromeOS") || (is_win &&
ffmpeg_branding == "Chrome"))
++{
++ ffmpeg_c_sources += [
++ "libavcodec/aac_ac3_parser.c",
++ "libavcodec/aac_parser.c",
++ "libavcodec/aacadtsdec.c",
++ "libavcodec/aacps_float.c",
++ "libavcodec/aacpsdsp_float.c",
++ "libavcodec/aacsbr.c",
++ "libavcodec/aactab.c",
++ "libavcodec/autorename_libavcodec_aacdec.c",
++ "libavformat/aacdec.c",
++ ]
++}
++
+ if ((is_android && current_cpu == "x64") || (is_android &&
current_cpu == "x86") || (is_linux && current_cpu == "x64") ||
(is_linux && current_cpu == "x86") || (is_mac) || (is_win)) {
+ ffmpeg_c_sources += [
+ "libavcodec/x86/autorename_libavcodec_x86_vorbisdsp_init.c",
+@@ -315,21 +322,31 @@ if ((is_linux && current_cpu == "x64") |
+ if ((current_cpu == "x64" && ffmpeg_branding == "Chrome") ||
(is_android && current_cpu == "x86" && ffmpeg_branding ==
"Chrome") || (is_linux && current_cpu == "x64" &&
ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu ==
"x86" && ffmpeg_branding == "Chrome") || (is_linux &&
current_cpu == "x86" && ffmpeg_branding == "ChromeOS") ||
(is_win && ffmpeg_branding == "Chrome")) {
+ ffmpeg_c_sources += [
+ "libavcodec/x86/aacpsdsp_init.c",
++ ]
++}
++
++if ((current_cpu == "x64") || (is_android && current_cpu ==
"x86") || (is_linux && current_cpu == "x64") || (is_linux
&& current_cpu == "x86") || (is_win)) {
++ ffmpeg_c_sources += [
+ "libavcodec/x86/dct_init.c",
+ "libavcodec/x86/mpegaudiodsp.c",
+ "libavcodec/x86/sbrdsp_init.c",
+ ]
+ }
+
+-if ((current_cpu == "x64" && ffmpeg_branding == "Chrome") ||
(is_linux && current_cpu == "x64" && ffmpeg_branding ==
"ChromeOS") || (is_linux && current_cpu == "x86" &&
ffmpeg_branding == "Chrome") || (is_linux && current_cpu ==
"x86" && ffmpeg_branding == "ChromeOS") || (is_win &&
ffmpeg_branding == "Chrome")) {
++if ((current_cpu == "x64") || (is_android && current_cpu ==
"x86") || (is_linux && current_cpu == "x64") || (is_linux
&& current_cpu == "x86") || (is_win)) {
+ ffmpeg_yasm_sources += [
+- "libavcodec/x86/aacpsdsp.asm",
+ "libavcodec/x86/dct32.asm",
+ "libavcodec/x86/imdct36.asm",
+ "libavcodec/x86/sbrdsp.asm",
+ ]
+ }
+
++if ((current_cpu == "x64" && ffmpeg_branding == "Chrome") ||
(is_linux && current_cpu == "x64" && ffmpeg_branding ==
"ChromeOS") || (is_linux && current_cpu == "x86" &&
ffmpeg_branding == "Chrome") || (is_linux && current_cpu ==
"x86" && ffmpeg_branding == "ChromeOS") || (is_win &&
ffmpeg_branding == "Chrome")) {
++ ffmpeg_yasm_sources += [
++ "libavcodec/x86/aacpsdsp.asm",
++ ]
++}
++
+ if ((is_linux && current_cpu == "arm" && arm_use_neon) ||
(is_linux && current_cpu == "arm")) {
+ ffmpeg_c_sources += [
+ "libavcodec/arm/h264pred_init_arm.c",
+diff -up chromium-60.0.3112.78/third_party/ffmpeg/libavcodec/sbrdsp.c.mp3
chromium-60.0.3112.78/third_party/ffmpeg/libavcodec/sbrdsp.c
+--- chromium-60.0.3112.78/third_party/ffmpeg/libavcodec/sbrdsp.c.mp3 2017-07-31
10:18:48.000000000 -0400
++++ chromium-60.0.3112.78/third_party/ffmpeg/libavcodec/sbrdsp.c 2017-07-31
10:57:55.110230730 -0400
+@@ -23,6 +23,7 @@
+ #define USE_FIXED 0
+
+ #include "aac.h"
++#include "aacsbrdata.h"
+ #include "config.h"
+ #include "libavutil/attributes.h"
+ #include "libavutil/intfloat.h"
+diff -up
chromium-60.0.3112.78/third_party/webrtc/examples/objc/AppRTCMobile/ios/resources/mozart.mp3
chromium-60.0.3112.78/third_party/webrtc/examples/objc/AppRTCMobile/ios/resources/mozart
+diff -up chromium-60.0.3112.78/tools/android/audio_focus_grabber/java/res/raw/ping.mp3
chromium-60.0.3112.78/tools/android/audio_focus_grabber/java/res/raw/ping
diff --git a/chromium-60.0.3112.78-fix-gn-bootstrap.patch
b/chromium-60.0.3112.78-fix-gn-bootstrap.patch
new file mode 100644
index 0000000..b67d18f
--- /dev/null
+++ b/chromium-60.0.3112.78-fix-gn-bootstrap.patch
@@ -0,0 +1,11 @@
+diff -up chromium-60.0.3112.78/tools/gn/bootstrap/bootstrap.py.fixme
chromium-60.0.3112.78/tools/gn/bootstrap/bootstrap.py
+--- chromium-60.0.3112.78/tools/gn/bootstrap/bootstrap.py.fixme 2017-07-31
11:47:11.660774702 -0400
++++ chromium-60.0.3112.78/tools/gn/bootstrap/bootstrap.py 2017-07-31 11:47:32.859362600
-0400
+@@ -487,6 +487,7 @@ def write_gn_ninja(path, root_gen_dir, o
+ 'base/sys_info.cc',
+ 'base/task_runner.cc',
+ 'base/task_scheduler/delayed_task_manager.cc',
++ 'base/task_scheduler/environment_config.cc',
+ 'base/task_scheduler/post_task.cc',
+ 'base/task_scheduler/priority_queue.cc',
+ 'base/task_scheduler/scheduler_lock_impl.cc',
diff --git a/chromium-60.0.3112.78-gcc7.patch b/chromium-60.0.3112.78-gcc7.patch
new file mode 100644
index 0000000..ae8f5c8
--- /dev/null
+++ b/chromium-60.0.3112.78-gcc7.patch
@@ -0,0 +1,80 @@
+diff -up
chromium-60.0.3112.78/third_party/WebKit/Source/platform/graphics/gpu/SharedGpuContext.h.gcc7
chromium-60.0.3112.78/third_party/WebKit/Source/platform/graphics/gpu/SharedGpuContext.h
+---
chromium-60.0.3112.78/third_party/WebKit/Source/platform/graphics/gpu/SharedGpuContext.h.gcc7 2017-07-25
15:05:15.000000000 -0400
++++
chromium-60.0.3112.78/third_party/WebKit/Source/platform/graphics/gpu/SharedGpuContext.h 2017-07-31
10:51:08.530131802 -0400
+@@ -8,6 +8,7 @@
+ #include "platform/PlatformExport.h"
+ #include "platform/wtf/ThreadSpecific.h"
+
++#include <functional>
+ #include <memory>
+
+ namespace gpu {
+diff -up chromium-60.0.3112.78/v8/src/objects-body-descriptors.h.gcc7
chromium-60.0.3112.78/v8/src/objects-body-descriptors.h
+--- chromium-60.0.3112.78/v8/src/objects-body-descriptors.h.gcc7 2017-07-31
10:51:08.531131782 -0400
++++ chromium-60.0.3112.78/v8/src/objects-body-descriptors.h 2017-07-31 10:55:08.989458924
-0400
+@@ -99,7 +99,7 @@ class FixedBodyDescriptor final : public
+
+ template <typename StaticVisitor>
+ static inline void IterateBody(HeapObject* obj, int object_size) {
+- IterateBody(obj);
++ IterateBody<StaticVisitor>(obj);
+ }
+
+ static inline int SizeOf(Map* map, HeapObject* object) { return kSize; }
+diff -up chromium-60.0.3112.78/v8/src/objects/hash-table.h.gcc7
chromium-60.0.3112.78/v8/src/objects/hash-table.h
+--- chromium-60.0.3112.78/v8/src/objects/hash-table.h.gcc7 2017-07-25 15:06:36.000000000
-0400
++++ chromium-60.0.3112.78/v8/src/objects/hash-table.h 2017-07-31 10:51:08.531131782
-0400
+@@ -138,22 +138,8 @@ class HashTable : public HashTableBase {
+ public:
+ typedef Shape ShapeT;
+
+- // Wrapper methods
+- inline uint32_t Hash(Key key) {
+- if (Shape::UsesSeed) {
+- return Shape::SeededHash(key, GetHeap()->HashSeed());
+- } else {
+- return Shape::Hash(key);
+- }
+- }
+-
+- inline uint32_t HashForObject(Key key, Object* object) {
+- if (Shape::UsesSeed) {
+- return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object);
+- } else {
+- return Shape::HashForObject(key, object);
+- }
+- }
++ inline uint32_t Hash(Key key);
++ inline uint32_t HashForObject(Key key, Object* object);
+
+ // Returns a new HashTable object.
+ MUST_USE_RESULT static Handle<Derived> New(
+diff -up chromium-60.0.3112.78/v8/src/objects-inl.h.gcc7
chromium-60.0.3112.78/v8/src/objects-inl.h
+--- chromium-60.0.3112.78/v8/src/objects-inl.h.gcc7 2017-07-25 15:06:36.000000000 -0400
++++ chromium-60.0.3112.78/v8/src/objects-inl.h 2017-07-31 10:51:08.533131742 -0400
+@@ -47,6 +47,25 @@
+ namespace v8 {
+ namespace internal {
+
++template <typename Derived, typename Shape, typename Key>
++uint32_t HashTable<Derived, Shape, Key>::Hash(Key key) {
++ if (Shape::UsesSeed) {
++ return Shape::SeededHash(key, GetHeap()->HashSeed());
++ } else {
++ return Shape::Hash(key);
++ }
++}
++
++template <typename Derived, typename Shape, typename Key>
++uint32_t HashTable<Derived, Shape, Key>::HashForObject(Key key,
++ Object* object) {
++ if (Shape::UsesSeed) {
++ return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object);
++ } else {
++ return Shape::HashForObject(key, object);
++ }
++}
++
+ PropertyDetails::PropertyDetails(Smi* smi) {
+ value_ = smi->value();
+ }
diff --git a/chromium-60.0.3112.78-gn-system.patch
b/chromium-60.0.3112.78-gn-system.patch
new file mode 100644
index 0000000..60489bb
--- /dev/null
+++ b/chromium-60.0.3112.78-gn-system.patch
@@ -0,0 +1,221 @@
+diff -up chromium-60.0.3112.78/build/linux/unbundle/libjpeg.gn.gnsystem
chromium-60.0.3112.78/build/linux/unbundle/libjpeg.gn
+--- chromium-60.0.3112.78/build/linux/unbundle/libjpeg.gn.gnsystem 2017-07-25
15:04:48.000000000 -0400
++++ chromium-60.0.3112.78/build/linux/unbundle/libjpeg.gn 2017-07-31 10:38:25.879951641
-0400
+@@ -16,6 +16,10 @@ source_set("libjpeg") {
+ libs = [ "jpeg" ]
+ }
+
++config("system_libjpeg") {
++ defines = [ "USE_SYSTEM_LIBJPEG=1" ]
++}
++
+ source_set("simd") {
+ }
+
+diff -up chromium-60.0.3112.78/build/linux/unbundle/libusb.gn.gnsystem
chromium-60.0.3112.78/build/linux/unbundle/libusb.gn
+--- chromium-60.0.3112.78/build/linux/unbundle/libusb.gn.gnsystem 2017-07-31
10:38:25.880951622 -0400
++++ chromium-60.0.3112.78/build/linux/unbundle/libusb.gn 2017-07-31 10:38:25.879951641
-0400
+@@ -0,0 +1,24 @@
++# Copyright 2016 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.
++
++import("//build/config/linux/pkg_config.gni")
++import("//build/shim_headers.gni")
++
++pkg_config("system_libusb") {
++ packages = [ "libusb-1.0" ]
++}
++
++shim_headers("libusb_shim") {
++ root_path = "src/libusb"
++ headers = [
++ "libusb.h",
++ ]
++}
++
++source_set("libusb") {
++ deps = [
++ ":libusb_shim",
++ ]
++ public_configs = [ ":system_libusb" ]
++}
+diff -up chromium-60.0.3112.78/build/linux/unbundle/opus.gn.gnsystem
chromium-60.0.3112.78/build/linux/unbundle/opus.gn
+--- chromium-60.0.3112.78/build/linux/unbundle/opus.gn.gnsystem 2017-07-25
15:04:48.000000000 -0400
++++ chromium-60.0.3112.78/build/linux/unbundle/opus.gn 2017-07-31 10:38:25.880951622
-0400
+@@ -1,3 +1,164 @@
++# Copyright 2016 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.
++
++import("//build/config/linux/pkg_config.gni")
++import("//build/shim_headers.gni")
++import("//testing/test.gni")
++
++pkg_config("system_opus") {
++ packages = [ "opus" ]
++}
++
++shim_headers("opus_shim") {
++ root_path = "src/include"
++ headers = [
++ "opus_custom.h",
++ "opus_defines.h",
++ "opus_multistream.h",
++ "opus_types.h",
++ "opus.h",
++ ]
++}
++
++source_set("opus") {
++ deps = [
++ ":opus_shim",
++ ]
++ public_configs = [ ":system_opus" ]
++}
++
++config("opus_test_config") {
++ include_dirs = [
++ "src/celt",
++ "src/silk",
++ ]
++
++ if (is_win) {
++ defines = [ "inline=__inline" ]
++ }
++ if (is_android) {
++ libs = [ "log" ]
++ }
++ if (is_clang) {
++ cflags = [ "-Wno-absolute-value" ]
++ }
++}
++
++executable("opus_compare") {
++ sources = [
++ "src/src/opus_compare.c",
++ ]
++
++ configs -= [ "//build/config/compiler:chromium_code" ]
++ configs += [
++ "//build/config/compiler:no_chromium_code",
++ ":opus_test_config",
++ ]
++
++ deps = [
++ ":opus",
++ "//build/config/sanitizers:deps",
++ "//build/win:default_exe_manifest",
++ ]
++}
++
++executable("opus_demo") {
++ sources = [
++ "src/src/opus_demo.c",
++ ]
++
++ configs -= [ "//build/config/compiler:chromium_code" ]
++ configs += [
++ "//build/config/compiler:no_chromium_code",
++ ":opus_test_config",
++ ]
++
++ deps = [
++ ":opus",
++ "//build/config/sanitizers:deps",
++ "//build/win:default_exe_manifest",
++ ]
++}
++
++test("test_opus_api") {
++ sources = [
++ "src/tests/test_opus_api.c",
++ ]
++
++ configs -= [ "//build/config/compiler:chromium_code" ]
++ configs += [
++ "//build/config/compiler:no_chromium_code",
++ ":opus_test_config",
++ ]
++
++ deps = [
++ ":opus",
++ ]
++}
++
++test("test_opus_encode") {
++ sources = [
++ "src/tests/test_opus_encode.c",
++ ]
++
++ configs -= [ "//build/config/compiler:chromium_code" ]
++ configs += [
++ "//build/config/compiler:no_chromium_code",
++ ":opus_test_config",
++ ]
++
++ deps = [
++ ":opus",
++ ]
++}
++
++# GN orders flags on a target before flags from configs. The default config
++# adds -Wall, and this flag have to be after -Wall -- so they need to
++# come from a config and can't be on the target directly.
++config("test_opus_decode_config") {
++ # test_opus_decode passes a null pointer to opus_decode() for an argument
++ # marked as requiring a non-null value by the nonnull function attribute,
++ # and expects opus_decode() to fail. Disable the -Wnonnull option to avoid
++ # a compilation error if -Werror is specified.
++ if (is_posix) {
++ cflags = [ "-Wno-nonnull" ]
++ }
++}
++
++test("test_opus_decode") {
++ sources = [
++ "src/tests/test_opus_decode.c",
++ ]
++
++ configs -= [ "//build/config/compiler:chromium_code" ]
++ configs += [
++ "//build/config/compiler:no_chromium_code",
++ ":opus_test_config",
++ ":test_opus_decode_config",
++ ]
++
++ deps = [
++ ":opus",
++ ]
++}
++
++test("test_opus_padding") {
++ sources = [
++ "src/tests/test_opus_padding.c",
++ ]
++
++ configs -= [ "//build/config/compiler:chromium_code" ]
++ configs += [
++ "//build/config/compiler:no_chromium_code",
++ ":opus_test_config",
++ ]
++
++ deps = [
++ ":opus",
++ ]
++}
++
+ # Copyright 2017 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.
+diff -up chromium-60.0.3112.78/build/linux/unbundle/replace_gn_files.py.gnsystem
chromium-60.0.3112.78/build/linux/unbundle/replace_gn_files.py
+--- chromium-60.0.3112.78/build/linux/unbundle/replace_gn_files.py.gnsystem 2017-07-31
10:38:25.880951622 -0400
++++ chromium-60.0.3112.78/build/linux/unbundle/replace_gn_files.py 2017-07-31
10:39:58.067159914 -0400
+@@ -26,6 +26,7 @@ REPLACEMENTS = {
+ 'libevent': 'base/third_party/libevent/BUILD.gn',
+ 'libjpeg': 'build/secondary/third_party/libjpeg_turbo/BUILD.gn',
+ 'libpng': 'third_party/libpng/BUILD.gn',
++ 'libusb': 'third_party/libusb/BUILD.gn',
+ 'libvpx': 'third_party/libvpx/BUILD.gn',
+ 'libwebp': 'third_party/libwebp/BUILD.gn',
+ 'libxml': 'third_party/libxml/BUILD.gn',
diff --git a/chromium-60.0.3112.78-gtk2fix.patch b/chromium-60.0.3112.78-gtk2fix.patch
new file mode 100644
index 0000000..ecf042d
--- /dev/null
+++ b/chromium-60.0.3112.78-gtk2fix.patch
@@ -0,0 +1,612 @@
+diff -up chromium-60.0.3112.78/chrome/browser/ui/libgtkui/gtk_ui.cc.gtk2fix
chromium-60.0.3112.78/chrome/browser/ui/libgtkui/gtk_ui.cc
+--- chromium-60.0.3112.78/chrome/browser/ui/libgtkui/gtk_ui.cc.gtk2fix 2017-08-03
10:26:36.816787227 -0400
++++ chromium-60.0.3112.78/chrome/browser/ui/libgtkui/gtk_ui.cc 2017-08-03
10:56:53.345661368 -0400
+@@ -60,6 +60,7 @@
+ #include "ui/views/controls/button/blue_button.h"
+ #include "ui/views/controls/button/label_button.h"
+ #include "ui/views/controls/button/label_button_border.h"
++#include "ui/views/linux_ui/device_scale_factor_observer.h"
+ #include "ui/views/linux_ui/window_button_order_observer.h"
+ #include "ui/views/resources/grit/views_resources.h"
+
+@@ -315,17 +316,6 @@ gfx::FontRenderParams GetGtkFontRenderPa
+ return params;
+ }
+
+-float GetRawDeviceScaleFactor() {
+- if (display::Display::HasForceDeviceScaleFactor())
+- return display::Display::GetForcedDeviceScaleFactor();
+-
+- GdkScreen* screen = gdk_screen_get_default();
+- gint scale = gdk_screen_get_monitor_scale_factor(
+- screen, gdk_screen_get_primary_monitor(screen));
+- gdouble resolution = gdk_screen_get_resolution(screen);
+- return resolution <= 0 ? scale : resolution * scale / kDefaultDPI;
+-}
+-
+ views::LinuxUI::NonClientMiddleClickAction GetDefaultMiddleClickAction() {
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ switch (base::nix::GetDesktopEnvironment(env.get())) {
+@@ -414,19 +404,17 @@ GtkUi::GtkUi() : middle_click_action_(Ge
+ #if GTK_MAJOR_VERSION == 2
+ native_theme_ = NativeThemeGtk2::instance();
+ fake_window_ = chrome_gtk_frame_new();
+- gtk_widget_realize(fake_window_); // Is this necessary?
+ #elif GTK_MAJOR_VERSION == 3
+ native_theme_ = NativeThemeGtk3::instance();
+- (void)fake_window_; // Silence the unused warning.
++ fake_window_ = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ #else
+ #error "Unsupported GTK version"
+ #endif
++ gtk_widget_realize(fake_window_);
+ }
+
+ GtkUi::~GtkUi() {
+-#if GTK_MAJOR_VERSION == 2
+ gtk_widget_destroy(fake_window_);
+-#endif
+ }
+
+ void OnThemeChanged(GObject* obj, GParamSpec* param, GtkUi* gtkui) {
+@@ -440,6 +428,17 @@ void GtkUi::Initialize() {
+ g_signal_connect_after(settings, "notify::gtk-icon-theme-name",
+ G_CALLBACK(OnThemeChanged), this);
+
++ GdkScreen* screen = gdk_screen_get_default();
++ // Listen for DPI changes.
++ g_signal_connect_after(screen, "notify::resolution",
++ G_CALLBACK(OnDeviceScaleFactorMaybeChangedThunk),
++ this);
++ // Listen for scale factor changes. We would prefer to listen on
++ // |screen|, but there is no scale-factor property, so use an
++ // unmapped window instead.
++ g_signal_connect(fake_window_, "notify::scale-factor",
++ G_CALLBACK(OnDeviceScaleFactorMaybeChangedThunk), this);
++
+ LoadGtkValues();
+
+ #if BUILDFLAG(ENABLE_BASIC_PRINTING)
+@@ -701,12 +700,12 @@ void GtkUi::AddWindowButtonOrderObserver
+ observer->OnWindowButtonOrderingChange(leading_buttons_, trailing_buttons_);
+ }
+
+- observer_list_.AddObserver(observer);
++ window_button_order_observer_list_.AddObserver(observer);
+ }
+
+ void GtkUi::RemoveWindowButtonOrderObserver(
+ views::WindowButtonOrderObserver* observer) {
+- observer_list_.RemoveObserver(observer);
++ window_button_order_observer_list_.RemoveObserver(observer);
+ }
+
+ void GtkUi::SetWindowButtonOrdering(
+@@ -715,8 +714,10 @@ void GtkUi::SetWindowButtonOrdering(
+ leading_buttons_ = leading_buttons;
+ trailing_buttons_ = trailing_buttons;
+
+- for (views::WindowButtonOrderObserver& observer : observer_list_)
++ for (views::WindowButtonOrderObserver& observer :
++ window_button_order_observer_list_) {
+ observer.OnWindowButtonOrderingChange(leading_buttons_, trailing_buttons_);
++ }
+ }
+
+ void GtkUi::SetNonClientMiddleClickAction(NonClientMiddleClickAction action) {
+@@ -768,6 +769,16 @@ void GtkUi::NotifyWindowManagerStartupCo
+ gdk_notify_startup_complete();
+ }
+
++void GtkUi::AddDeviceScaleFactorObserver(
++ views::DeviceScaleFactorObserver* observer) {
++ device_scale_factor_observer_list_.AddObserver(observer);
++}
++
++void GtkUi::RemoveDeviceScaleFactorObserver(
++ views::DeviceScaleFactorObserver* observer) {
++ device_scale_factor_observer_list_.RemoveObserver(observer);
++}
++
+ bool GtkUi::MatchEvent(const ui::Event& event,
+ std::vector<ui::TextEditCommandAuraLinux>* commands) {
+ // Ensure that we have a keyboard handler.
+@@ -777,6 +788,10 @@ bool GtkUi::MatchEvent(const ui::Event&
+ return key_bindings_handler_->MatchEvent(event, commands);
+ }
+
++void GtkUi::OnDeviceScaleFactorMaybeChanged(void*, GParamSpec*) {
++ UpdateDeviceScaleFactor();
++}
++
+ void GtkUi::SetScrollbarColors() {
+ thumb_active_color_ = SkColorSetRGB(244, 244, 244);
+ thumb_inactive_color_ = SkColorSetRGB(234, 234, 234);
+@@ -1037,14 +1052,38 @@ void GtkUi::ResetStyle() {
+ native_theme_->NotifyObservers();
+ }
+
+-void GtkUi::UpdateDeviceScaleFactor() {
+- // Note: Linux chrome currently does not support dynamic DPI
+- // changes. This is to allow flags to override the DPI settings
+- // during startup.
+- float scale = GetRawDeviceScaleFactor();
++float GtkUi::GetRawDeviceScaleFactor() {
++ if (display::Display::HasForceDeviceScaleFactor())
++ return display::Display::GetForcedDeviceScaleFactor();
++
++#if GTK_MAJOR_VERSION == 2
++ GtkSettings* gtk_settings = gtk_settings_get_default();
++ gint gtk_dpi = -1;
++ g_object_get(gtk_settings, "gtk-xft-dpi", >k_dpi, nullptr);
++ const float scale_factor = gtk_dpi / (1024 * kDefaultDPI);
++#else
++ GdkScreen* screen = gdk_screen_get_default();
++ gint scale = gtk_widget_get_scale_factor(fake_window_);
++ DCHECK_GT(scale, 0);
++ gdouble resolution = gdk_screen_get_resolution(screen);
++ const float scale_factor =
++ resolution <= 0 ? scale : resolution * scale / kDefaultDPI;
++#endif
++
+ // Blacklist scaling factors <120% (
crbug.com/484400) and round
+ // to 1 decimal to prevent rendering problems (
crbug.com/485183).
+- device_scale_factor_ = scale < 1.2f ? 1.0f : roundf(scale * 10) / 10;
++ return scale_factor < 1.2f ? 1.0f : roundf(scale_factor * 10) / 10;
++}
++
++void GtkUi::UpdateDeviceScaleFactor() {
++ float old_device_scale_factor = device_scale_factor_;
++ device_scale_factor_ = GetRawDeviceScaleFactor();
++ if (device_scale_factor_ != old_device_scale_factor) {
++ for (views::DeviceScaleFactorObserver& observer :
++ device_scale_factor_observer_list_) {
++ observer.OnDeviceScaleFactorChanged();
++ }
++ }
+ UpdateDefaultFont();
+ }
+
+diff -up chromium-60.0.3112.78/chrome/browser/ui/libgtkui/gtk_ui.h.gtk2fix
chromium-60.0.3112.78/chrome/browser/ui/libgtkui/gtk_ui.h
+--- chromium-60.0.3112.78/chrome/browser/ui/libgtkui/gtk_ui.h.gtk2fix 2017-08-03
10:35:28.031517634 -0400
++++ chromium-60.0.3112.78/chrome/browser/ui/libgtkui/gtk_ui.h 2017-08-03
10:37:29.300173415 -0400
+@@ -18,12 +18,14 @@
+ #include "ui/views/linux_ui/linux_ui.h"
+ #include "ui/views/window/frame_buttons.h"
+
++typedef struct _GParamSpec GParamSpec;
+ typedef struct _GtkStyle GtkStyle;
+ typedef struct _GtkWidget GtkWidget;
+
+ namespace libgtkui {
+ class Gtk2KeyBindingsHandler;
+ class GConfListener;
++class DeviceScaleFactorObserver;
+
+ // Interface to GTK2 desktop features.
+ //
+@@ -97,6 +99,10 @@ class GtkUi : public views::LinuxUI {
+ bool UnityIsRunning() override;
+ NonClientMiddleClickAction GetNonClientMiddleClickAction() override;
+ void NotifyWindowManagerStartupComplete() override;
++ void AddDeviceScaleFactorObserver(
++ views::DeviceScaleFactorObserver* observer) override;
++ void RemoveDeviceScaleFactorObserver(
++ views::DeviceScaleFactorObserver* observer) override;
+
+ // ui::TextEditKeybindingDelegate:
+ bool MatchEvent(const ui::Event& event,
+@@ -110,6 +116,12 @@ class GtkUi : public views::LinuxUI {
+ typedef std::map<int, SkColor> ColorMap;
+ typedef std::map<int, color_utils::HSL> TintMap;
+
++ CHROMEG_CALLBACK_1(GtkUi,
++ void,
++ OnDeviceScaleFactorMaybeChanged,
++ void*,
++ GParamSpec*);
++
+ // This method returns the colors webkit will use for the scrollbars. When no
+ // colors are specified by the GTK+ theme, this function averages of the
+ // thumb part and of the track colors.
+@@ -129,9 +141,12 @@ class GtkUi : public views::LinuxUI {
+ bool GetChromeStyleColor(const char* sytle_property,
+ SkColor* ret_color) const;
+
++ float GetRawDeviceScaleFactor();
++
+ ui::NativeTheme* native_theme_;
+
+- // A GtkWindow object with the class "ChromeGtkFrame".
++ // On Gtk2, A GtkWindow object with the class "ChromeGtkFrame". On
++ // Gtk3, a regular GtkWindow.
+ GtkWidget* fake_window_;
+
+ // Colors calculated by LoadGtkValues() that are given to the
+@@ -171,7 +186,12 @@ class GtkUi : public views::LinuxUI {
+ std::unique_ptr<Gtk2KeyBindingsHandler> key_bindings_handler_;
+
+ // Objects to notify when the window frame button order changes.
+- base::ObserverList<views::WindowButtonOrderObserver> observer_list_;
++ base::ObserverList<views::WindowButtonOrderObserver>
++ window_button_order_observer_list_;
++
++ // Objects to notify when the device scale factor changes.
++ base::ObserverList<views::DeviceScaleFactorObserver>
++ device_scale_factor_observer_list_;
+
+ // Whether we should lower the window on a middle click to the non client
+ // area.
+diff -up chromium-60.0.3112.78/ui/views/linux_ui/device_scale_factor_observer.h.gtk2fix
chromium-60.0.3112.78/ui/views/linux_ui/device_scale_factor_observer.h
+---
chromium-60.0.3112.78/ui/views/linux_ui/device_scale_factor_observer.h.gtk2fix 2017-08-03
10:39:23.600963296 -0400
++++ chromium-60.0.3112.78/ui/views/linux_ui/device_scale_factor_observer.h 2017-08-03
10:39:39.024664885 -0400
+@@ -0,0 +1,19 @@
++// Copyright 2017 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 UI_VIEWS_LINUX_UI_DEVICE_SCALE_FACTOR_OBSERVER_H_
++#define UI_VIEWS_LINUX_UI_DEVICE_SCALE_FACTOR_OBSERVER_H_
++
++namespace views {
++
++class DeviceScaleFactorObserver {
++ public:
++ virtual ~DeviceScaleFactorObserver() {}
++
++ virtual void OnDeviceScaleFactorChanged() = 0;
++};
++
++} // namespace views
++
++#endif // UI_VIEWS_LINUX_UI_DEVICE_SCALE_FACTOR_OBSERVER_H_
+diff -up chromium-60.0.3112.78/ui/views/linux_ui/linux_ui.h.gtk2fix
chromium-60.0.3112.78/ui/views/linux_ui/linux_ui.h
+--- chromium-60.0.3112.78/ui/views/linux_ui/linux_ui.h.gtk2fix 2017-08-03
10:39:48.866474799 -0400
++++ chromium-60.0.3112.78/ui/views/linux_ui/linux_ui.h 2017-08-03 10:41:05.598991893
-0400
+@@ -38,6 +38,7 @@ class NativeTheme;
+
+ namespace views {
+ class Border;
++class DeviceScaleFactorObserver;
+ class LabelButton;
+ class LabelButtonBorder;
+ class WindowButtonOrderObserver;
+@@ -157,6 +158,16 @@ class VIEWS_EXPORT LinuxUI : public ui::
+
+ // Determines the device scale factor of the primary screen.
+ virtual float GetDeviceScaleFactor() const = 0;
++
++ // Registers |observer| to be notified about changes to the device
++ // scale factor.
++ virtual void AddDeviceScaleFactorObserver(
++ DeviceScaleFactorObserver* observer) = 0;
++
++ // Unregisters |observer| from receiving changes to the device scale
++ // factor.
++ virtual void RemoveDeviceScaleFactorObserver(
++ DeviceScaleFactorObserver* observer) = 0;
+ };
+
+ } // namespace views
+diff -up chromium-60.0.3112.78/ui/views/test/desktop_screen_x11_test_api.cc.gtk2fix
chromium-60.0.3112.78/ui/views/test/desktop_screen_x11_test_api.cc
+--- chromium-60.0.3112.78/ui/views/test/desktop_screen_x11_test_api.cc.gtk2fix 2017-08-03
10:41:28.014558483 -0400
++++ chromium-60.0.3112.78/ui/views/test/desktop_screen_x11_test_api.cc 2017-08-03
10:41:49.326146074 -0400
+@@ -13,7 +13,7 @@ namespace test {
+ void DesktopScreenX11TestApi::UpdateDisplays() {
+ DesktopScreenX11* screen =
+ static_cast<DesktopScreenX11*>(display::Screen::GetScreen());
+- screen->ConfigureTimerFired();
++ screen->UpdateDisplays();
+ }
+
+ } // namespace test
+diff -up chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_screen_x11.cc.gtk2fix
chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_screen_x11.cc
+---
chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_screen_x11.cc.gtk2fix 2017-08-03
10:41:59.219954866 -0400
++++ chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_screen_x11.cc 2017-08-03
10:47:16.589818323 -0400
+@@ -11,6 +11,7 @@
+ #undef RootWindow
+
+ #include "base/logging.h"
++#include "base/threading/thread_task_runner_handle.h"
+ #include "base/trace_event/trace_event.h"
+ #include "ui/aura/window.h"
+ #include "ui/aura/window_event_dispatcher.h"
+@@ -40,10 +41,6 @@ const char* const kAtomsToCache[] = {
+ nullptr
+ };
+
+-// The delay to perform configuration after RRNotify. See the comment
+-// in |Dispatch()|.
+-const int64_t kConfigureDelayMs = 500;
+-
+ double GetDeviceScaleFactor() {
+ float device_scale_factor = 1.0f;
+ if (views::LinuxUI::instance()) {
+@@ -95,7 +92,10 @@ DesktopScreenX11::DesktopScreenX11()
+ has_xrandr_(false),
+ xrandr_event_base_(0),
+ primary_display_index_(0),
++ weak_factory_(this),
+ atom_cache_(xdisplay_, kAtomsToCache) {
++ if (views::LinuxUI::instance())
++ views::LinuxUI::instance()->AddDeviceScaleFactorObserver(this);
+ // We only support 1.3+. There were library changes before this and we should
+ // use the new interface instead of the 1.2 one.
+ int randr_version_major = 0;
+@@ -124,6 +124,8 @@ DesktopScreenX11::DesktopScreenX11()
+ }
+
+ DesktopScreenX11::~DesktopScreenX11() {
++ if (views::LinuxUI::instance())
++ views::LinuxUI::instance()->AddDeviceScaleFactorObserver(this);
+ if (has_xrandr_ && ui::PlatformEventSource::GetInstance())
+ ui::PlatformEventSource::GetInstance()->RemovePlatformEventDispatcher(this);
+ }
+@@ -251,18 +253,7 @@ uint32_t DesktopScreenX11::DispatchEvent
+ } else if (event->type - xrandr_event_base_ == RRNotify ||
+ (event->type == PropertyNotify &&
+ event->xproperty.atom ==
atom_cache_.GetAtom("_NET_WORKAREA"))) {
+- // There's some sort of observer dispatch going on here, but I don't think
+- // it's the screen's?
+- if (configure_timer_.get() && configure_timer_->IsRunning()) {
+- configure_timer_->Reset();
+- } else {
+- configure_timer_.reset(new base::OneShotTimer());
+- configure_timer_->Start(
+- FROM_HERE,
+- base::TimeDelta::FromMilliseconds(kConfigureDelayMs),
+- this,
+- &DesktopScreenX11::ConfigureTimerFired);
+- }
++ RestartDelayedConfigurationTask();
+ } else {
+ NOTREACHED();
+ }
+@@ -270,11 +261,15 @@ uint32_t DesktopScreenX11::DispatchEvent
+ return ui::POST_DISPATCH_NONE;
+ }
+
++void DesktopScreenX11::OnDeviceScaleFactorChanged() {
++ RestartDelayedConfigurationTask();
++}
++
+ // static
+ void DesktopScreenX11::UpdateDeviceScaleFactorForTest() {
+ DesktopScreenX11* screen =
+ static_cast<DesktopScreenX11*>(display::Screen::GetScreen());
+- screen->ConfigureTimerFired();
++ screen->UpdateDisplays();
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+@@ -288,7 +283,11 @@ DesktopScreenX11::DesktopScreenX11(
+ xrandr_event_base_(0),
+ displays_(test_displays),
+ primary_display_index_(0),
+- atom_cache_(xdisplay_, kAtomsToCache) {}
++ weak_factory_(this),
++ atom_cache_(xdisplay_, kAtomsToCache) {
++ if (views::LinuxUI::instance())
++ views::LinuxUI::instance()->AddDeviceScaleFactorObserver(this);
++}
+
+ std::vector<display::Display> DesktopScreenX11::BuildDisplaysFromXRandRInfo() {
+ std::vector<display::Display> displays;
+@@ -390,7 +389,14 @@ std::vector<display::Display> DesktopScr
+ return displays;
+ }
+
+-void DesktopScreenX11::ConfigureTimerFired() {
++void DesktopScreenX11::RestartDelayedConfigurationTask() {
++ delayed_configuration_task_.Reset(base::Bind(
++ &DesktopScreenX11::UpdateDisplays, weak_factory_.GetWeakPtr()));
++ base::ThreadTaskRunnerHandle::Get()->PostTask(
++ FROM_HERE, delayed_configuration_task_.callback());
++}
++
++void DesktopScreenX11::UpdateDisplays() {
+ std::vector<display::Display> old_displays = displays_;
+ SetDisplaysInternal(BuildDisplaysFromXRandRInfo());
+ change_notifier_.NotifyDisplaysChanged(old_displays, displays_);
+diff -up chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_screen_x11.h.gtk2fix
chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_screen_x11.h
+---
chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_screen_x11.h.gtk2fix 2017-08-03
10:47:28.734583288 -0400
++++ chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_screen_x11.h 2017-08-03
10:49:54.850756813 -0400
+@@ -9,11 +9,12 @@
+
+ #include <memory>
+
++#include "base/cancelable_callback.h"
+ #include "base/macros.h"
+-#include "base/timer/timer.h"
+ #include "ui/display/display_change_notifier.h"
+ #include "ui/display/screen.h"
+ #include "ui/events/platform/platform_event_dispatcher.h"
++#include "ui/views/linux_ui/device_scale_factor_observer.h"
+ #include "ui/gfx/x/x11_atom_cache.h"
+ #include "ui/views/views_export.h"
+
+@@ -30,7 +31,8 @@ class DesktopScreenX11TestApi;
+
+ // Our singleton screen implementation that talks to xrandr.
+ class VIEWS_EXPORT DesktopScreenX11 : public display::Screen,
+- public ui::PlatformEventDispatcher {
++ public ui::PlatformEventDispatcher,
++ public views::DeviceScaleFactorObserver {
+ public:
+ DesktopScreenX11();
+
+@@ -56,6 +58,9 @@ class VIEWS_EXPORT DesktopScreenX11 : pu
+ bool CanDispatchEvent(const ui::PlatformEvent& event) override;
+ uint32_t DispatchEvent(const ui::PlatformEvent& event) override;
+
++ // views::DeviceScaleFactorObserver:
++ void OnDeviceScaleFactorChanged() override;
++
+ static void UpdateDeviceScaleFactorForTest();
+
+ private:
+@@ -69,10 +74,15 @@ class VIEWS_EXPORT DesktopScreenX11 : pu
+ // the X server.
+ std::vector<display::Display> BuildDisplaysFromXRandRInfo();
+
+- // We delay updating the display so we can coalesce events.
+- void ConfigureTimerFired();
++ // Removes |delayed_configuration_task_| from the task queue (if
++ // it's in the queue) and adds it back at the end of the queue.
++ void RestartDelayedConfigurationTask();
++
++ // Updates |displays_| with the latest XRandR info.
++ void UpdateDisplays();
+
+- // Updates |displays_| and sets FontRenderParams's scale factor.
++ // Updates |displays_| from |displays| and sets FontRenderParams's scale
++ // factor.
+ void SetDisplaysInternal(const std::vector<display::Display>& displays);
+
+ Display* xdisplay_;
+@@ -91,12 +101,14 @@ class VIEWS_EXPORT DesktopScreenX11 : pu
+ // The index into displays_ that represents the primary display.
+ size_t primary_display_index_;
+
+- // The timer to delay configuring outputs. See also the comments in
+- // Dispatch().
+- std::unique_ptr<base::OneShotTimer> configure_timer_;
++ // The task to delay configuring outputs. We delay updating the
++ // display so we can coalesce events.
++ base::CancelableCallback<void()> delayed_configuration_task_;
+
+ display::DisplayChangeNotifier change_notifier_;
+
++ base::WeakPtrFactory<DesktopScreenX11> weak_factory_;
++
+ ui::X11AtomCache atom_cache_;
+
+ DISALLOW_COPY_AND_ASSIGN(DesktopScreenX11);
+diff -up
chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc.gtk2fix
chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
+---
chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc.gtk2fix 2017-08-03
10:50:14.858370042 -0400
++++
chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc 2017-08-03
10:52:58.367207187 -0400
+@@ -212,13 +212,16 @@ DesktopWindowTreeHostX11::DesktopWindowT
+ has_pointer_focus_(false),
+ modal_dialog_counter_(0),
+ close_widget_factory_(this),
+- weak_factory_(this) {}
++ weak_factory_(this) {
++ display::Screen::GetScreen()->AddObserver(this);
++}
+
+ DesktopWindowTreeHostX11::~DesktopWindowTreeHostX11() {
+ window()->ClearProperty(kHostForRootWindow);
+ aura::client::SetWindowMoveClient(window(), NULL);
+ desktop_native_widget_aura_->OnDesktopWindowTreeHostDestroyed(this);
+ DestroyDispatcher();
++ display::Screen::GetScreen()->RemoveObserver(this);
+ }
+
+ // static
+@@ -1360,6 +1363,30 @@ void DesktopWindowTreeHostX11::OnCursorV
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
++// DesktopWindowTreeHostX11, display::DisplayObserver implementation:
++
++void DesktopWindowTreeHostX11::OnDisplayAdded(
++ const display::Display& new_display) {}
++
++void DesktopWindowTreeHostX11::OnDisplayRemoved(
++ const display::Display& old_display) {}
++
++void DesktopWindowTreeHostX11::OnDisplayMetricsChanged(
++ const display::Display& display,
++ uint32_t changed_metrics) {
++ if ((changed_metrics & DISPLAY_METRIC_DEVICE_SCALE_FACTOR) &&
++ display::Screen::GetScreen()->GetDisplayNearestWindow(window()).id() ==
++ display.id()) {
++ // When the scale factor changes, also pretend that a resize
++ // occured so that the window layout will be refreshed and a
++ // compositor redraw will be scheduled. This is weird, but works.
++ // TODO(thomasanderson): Figure out a more direct way of doing
++ // this.
++ RestartDelayedResizeTask();
++ }
++}
++
++////////////////////////////////////////////////////////////////////////////////
+ // DesktopWindowTreeHostX11, private:
+
+ void DesktopWindowTreeHostX11::InitX11Window(
+@@ -2079,13 +2106,8 @@ uint32_t DesktopWindowTreeHostX11::Dispa
+ if (origin_changed)
+ OnHostMovedInPixels(bounds_in_pixels_.origin());
+
+- if (size_changed) {
+- delayed_resize_task_.Reset(base::Bind(
+- &DesktopWindowTreeHostX11::DelayedResize,
+- close_widget_factory_.GetWeakPtr(), bounds_in_pixels.size()));
+- base::ThreadTaskRunnerHandle::Get()->PostTask(
+- FROM_HERE, delayed_resize_task_.callback());
+- }
++ if (size_changed)
++ RestartDelayedResizeTask();
+ break;
+ }
+ case GenericEvent: {
+@@ -2358,6 +2380,14 @@ void DesktopWindowTreeHostX11::EnableEve
+ targeter_for_modal_.reset();
+ }
+
++void DesktopWindowTreeHostX11::RestartDelayedResizeTask() {
++ delayed_resize_task_.Reset(
++ base::Bind(&DesktopWindowTreeHostX11::DelayedResize,
++ close_widget_factory_.GetWeakPtr(), bounds_in_pixels_.size()));
++ base::ThreadTaskRunnerHandle::Get()->PostTask(
++ FROM_HERE, delayed_resize_task_.callback());
++}
++
+ ////////////////////////////////////////////////////////////////////////////////
+ // DesktopWindowTreeHost, public:
+
+diff -up
chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h.gtk2fix
chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h
+---
chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h.gtk2fix 2017-08-03
10:54:34.484348046 -0400
++++
chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h 2017-08-03
10:54:43.564172318 -0400
+@@ -18,6 +18,7 @@
+ #include "ui/aura/scoped_window_targeter.h"
+ #include "ui/aura/window_tree_host.h"
+ #include "ui/base/cursor/cursor_loader_x11.h"
++#include "ui/display/display_observer.h"
+ #include "ui/events/platform/platform_event_dispatcher.h"
+ #include "ui/gfx/geometry/insets.h"
+ #include "ui/gfx/geometry/rect.h"
+@@ -45,7 +46,8 @@ class X11DesktopWindowMoveClient;
+ class VIEWS_EXPORT DesktopWindowTreeHostX11
+ : public DesktopWindowTreeHost,
+ public aura::WindowTreeHost,
+- public ui::PlatformEventDispatcher {
++ public ui::PlatformEventDispatcher,
++ public display::DisplayObserver {
+ public:
+ DesktopWindowTreeHostX11(
+ internal::NativeWidgetDelegate* native_widget_delegate,
+@@ -170,6 +172,12 @@ class VIEWS_EXPORT DesktopWindowTreeHost
+ const gfx::Point& location_in_pixels) override;
+ void OnCursorVisibilityChangedNative(bool show) override;
+
++ // Overridden from display::DisplayObserver:
++ void OnDisplayAdded(const display::Display& new_display) override;
++ void OnDisplayRemoved(const display::Display& old_display) override;
++ void OnDisplayMetricsChanged(const display::Display& display,
++ uint32_t changed_metrics) override;
++
+ private:
+ friend class DesktopWindowTreeHostX11HighDPITest;
+ // Initializes our X11 surface to draw on. This method performs all
+@@ -278,6 +286,10 @@ class VIEWS_EXPORT DesktopWindowTreeHost
+ // Enables event listening after closing |dialog|.
+ void EnableEventListening();
+
++ // Removes |delayed_resize_task_| from the task queue (if it's in
++ // the queue) and adds it back at the end of the queue.
++ void RestartDelayedResizeTask();
++
+ // X11 things
+ // The display and the native X window hosting the root window.
+ XDisplay* xdisplay_;
diff --git a/chromium-60.0.3112.78-jpeg-nomangle.patch
b/chromium-60.0.3112.78-jpeg-nomangle.patch
new file mode 100644
index 0000000..0b758a4
--- /dev/null
+++ b/chromium-60.0.3112.78-jpeg-nomangle.patch
@@ -0,0 +1,14 @@
+diff -up chromium-60.0.3112.78/third_party/libjpeg_turbo/jpeglib.h.nomangle
chromium-60.0.3112.78/third_party/libjpeg_turbo/jpeglib.h
+--- chromium-60.0.3112.78/third_party/libjpeg_turbo/jpeglib.h.nomangle 2017-08-01
15:29:00.870759406 -0400
++++ chromium-60.0.3112.78/third_party/libjpeg_turbo/jpeglib.h 2017-08-01
15:29:09.326593414 -0400
+@@ -18,10 +18,6 @@
+ #ifndef JPEGLIB_H
+ #define JPEGLIB_H
+
+-/* Begin chromium edits */
+-#include "jpeglibmangler.h"
+-/* End chromium edits */
+-
+ /*
+ * First we include the configuration files that record how this
+ * installation of the JPEG library is set up. jconfig.h can be
diff --git a/chromium-60.0.3112.78-last-commit-position.patch
b/chromium-60.0.3112.78-last-commit-position.patch
new file mode 100644
index 0000000..7c26d9f
--- /dev/null
+++ b/chromium-60.0.3112.78-last-commit-position.patch
@@ -0,0 +1,28 @@
+diff -up chromium-60.0.3112.78/tools/gn/BUILD.gn.lastcommit
chromium-60.0.3112.78/tools/gn/BUILD.gn
+--- chromium-60.0.3112.78/tools/gn/BUILD.gn.lastcommit 2017-07-31 10:42:38.568041044
-0400
++++ chromium-60.0.3112.78/tools/gn/BUILD.gn 2017-07-31 10:47:50.760974587 -0400
+@@ -268,7 +268,6 @@ executable("gn") {
+
+ deps = [
+ ":gn_lib",
+- ":last_commit_position",
+ "//base",
+ "//build/config:exe_and_shlib_deps",
+ "//build/win:default_exe_manifest",
+diff -up chromium-60.0.3112.78/tools/gn/gn_main.cc.lastcommit
chromium-60.0.3112.78/tools/gn/gn_main.cc
+--- chromium-60.0.3112.78/tools/gn/gn_main.cc.lastcommit 2017-07-25 15:05:19.000000000
-0400
++++ chromium-60.0.3112.78/tools/gn/gn_main.cc 2017-07-31 10:42:38.568041044 -0400
+@@ -12,13 +12,7 @@
+ #include "tools/gn/standard_out.h"
+ #include "tools/gn/switches.h"
+
+-// Only the GN-generated build makes this header for now.
+-// TODO(brettw) consider adding this if we need it in GYP.
+-#if defined(GN_BUILD)
+-#include "tools/gn/last_commit_position.h"
+-#else
+ #define LAST_COMMIT_POSITION "UNKNOWN"
+-#endif
+
+ namespace {
+
diff --git a/chromium-60.0.3112.78-no-libpng-prefix.patch
b/chromium-60.0.3112.78-no-libpng-prefix.patch
new file mode 100644
index 0000000..0dbdcf9
--- /dev/null
+++ b/chromium-60.0.3112.78-no-libpng-prefix.patch
@@ -0,0 +1,17 @@
+diff -up chromium-60.0.3112.78/third_party/libpng/pnglibconf.h.noprefix
chromium-60.0.3112.78/third_party/libpng/pnglibconf.h
+--- chromium-60.0.3112.78/third_party/libpng/pnglibconf.h.noprefix 2017-08-01
14:42:54.321986758 -0400
++++ chromium-60.0.3112.78/third_party/libpng/pnglibconf.h 2017-08-01 14:43:01.493845832
-0400
+@@ -225,13 +225,4 @@
+ #define PNG_USER_CHUNK_MALLOC_MAX 4000000L
+ /* end of chromium settings */
+
+-/* chromium prefixing */
+-/*
+- * This is necessary to build multiple copies of libpng. We need this while pdfium
builds
+- * its own copy of libpng.
+- */
+-#define PNG_PREFIX
+-#include "pngprefix.h"
+-/* end of chromium prefixing */
+-
+ #endif /* PNGLCONF_H */
diff --git a/chromium-60.0.3112.78-no-zlib-mangle.patch
b/chromium-60.0.3112.78-no-zlib-mangle.patch
new file mode 100644
index 0000000..4b90360
--- /dev/null
+++ b/chromium-60.0.3112.78-no-zlib-mangle.patch
@@ -0,0 +1,13 @@
+diff -up chromium-60.0.3112.78/third_party/zlib/zconf.h.nozmangle
chromium-60.0.3112.78/third_party/zlib/zconf.h
+--- chromium-60.0.3112.78/third_party/zlib/zconf.h.nozmangle 2017-08-04
10:45:17.509152089 -0400
++++ chromium-60.0.3112.78/third_party/zlib/zconf.h 2017-08-04 10:45:30.451902380 -0400
+@@ -8,9 +8,6 @@
+ #ifndef ZCONF_H
+ #define ZCONF_H
+
+-/* This include does prefixing as below, but with an updated set of names */
+-#include "names.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.spec b/chromium.spec
index e5043e4..5ec59ba 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -8,6 +8,7 @@
# Leave this alone, please.
%global target out/Release
+%global headlesstarget out/Headless
# Debuginfo packages aren't very useful here. If you need to debug
# you should do a proper debug build (not implemented in this spec yet)
@@ -25,7 +26,7 @@
# Requires is trickier.
%global __provides_exclude_from %{chromium_path}/.*\\.so|%{chromium_path}/lib/.*\\.so
-%global privlibs
libEGL|libGLESv2|libaccessibility|libanimation|libaura|libaura_extra|libbase|libbase_i18n|libbindings|libblink_core|libblink_modules|libblink_platform|libblink_web|libbluetooth|libboringssl|libbrowser_ui_views|libcaptive_portal|libcapture_base|libcapture_lib|libcc|libcc_animation|libcc_base|libcc_blink|libcc_debug|libcc_ipc|libcc_paint|libcc_surfaces|libchromium_sqlite3|libclearkeycdm|libcloud_policy_proto_generated_compile|libcodec|libcolor_space|libcommon|libcompositor|libcontent|libcpp|libcrcrypto|libdbus|libdevice_base|libdevice_battery|libdevice_event_log|libdevice_gamepad|libdevice_vibration|libdevice_vr|libdevices|libdiscardable_memory_client|libdiscardable_memory_common|libdiscardable_memory_service|libdisplay|libdisplay_compositor|libdisplay_types|libdisplay_util|libdomain_reliability|libembedder|libevents|libevents_base|libevents_devices_x11|libevents_ozone_layout|libevents_x|libffmpeg|libfingerprint|libgcm|libgeneric_sensor|libgeolocation|libgeometry|libg
eometry_skia|libgesture_detection|libgfx|libgfx_ipc|libgfx_ipc_color|libgfx_ipc_geometry|libgfx_ipc_skia|libgfx_x11|libgin|libgin_features|libgl_in_process_context|libgl_init|libgl_wrapper|libgles2_c_lib|libgles2_implementation|libgles2_utils|libgpu|libgtk2ui|libicui18n|libicuuc|libipc|libjs|libkeyboard|libkeyboard_with_content|libkeycodes_x11|libkeyed_service_content|libkeyed_service_core|libmanager|libmedia|libmedia_blink|libmedia_gpu|libmedia_mojo_services|libmessage_center|libmidi|libmojo_common_lib|libmojo_ime_lib|libmojo_public_system|libmojo_public_system_cpp|libmojo_system_impl|libnative_theme|libnet|libnet_with_v8|libonc|libosmesa|libplatform|libplatform_wtf|libpolicy_component|libpolicy_proto|libpower_save_blocker|libppapi_host|libppapi_proxy|libppapi_shared|libprefs|libprinting|libprotobuf_globals|libproxy_config|librange|libsandbox_services|libseccomp_bpf|libsensors|libsessions|libshared_memory_support|libshell_dialogs|libskia|libsnapshot|libsql|libstartup_tracing|libsto
rage_browser|libstorage_common|libstub_window|libsuid_sandbox_client|libsurface|libtracing|libui_base|libui_base_ime|libui_base_x|libui_data_pack|libui_touch_selection|libui_views_mus_lib|liburl|liburl_ipc|liburl_matcher|libuser_manager|libuser_prefs|libv8|libv8_libbase|libv8_libplatform|libviews|libweb_dialogs|libwebdata_common|libwebview|libwidevinecdm|libwidevinecdmadapter|libwm|libwtf|libx11_events_platform|libx11_window
+%global privlibs
libaccessibility|libanimation|libaura_extra|libaura|libbase_i18n|libbase|libbindings|libblink_android_mojo_bindings_shared|libblink_core|libblink_modules|libblink_mojo_bindings_shared|libblink_offscreen_canvas_mojo_bindings_shared|libblink_platform|libblink_web|libbluetooth|libboringssl|libbrowser_ui_views|libcaptive_portal|libcapture_base|libcapture_lib|libcc_animation|libcc_base|libcc_blink|libcc_debug|libcc_ipc|libcc_paint|libcc|libcc_surfaces|libcdm_manager|libchromium_sqlite3|libclearkeycdm|libcloud_policy_proto_generated_compile|libcodec|libcolor_space|libcommon|libcompositor|libcontent_common_mojo_bindings_shared|libcontent|libcpp|libcrcrypto|libdbus|libdevice_base|libdevice_event_log|libdevice_gamepad|libdevices|libdevice_vr_mojo_bindings_blink|libdevice_vr_mojo_bindings_shared|libdevice_vr_mojo_bindings|libdiscardable_memory_client|libdiscardable_memory_common|libdiscardable_memory_service|libdisplay_compositor|libdisplay|libdisplay_types|libdisplay_util|li
bdomain_reliability|libEGL|libembedder|libevents_base|libevents_devices_x11|libevents_ozone_layout|libevents|libevents_x|libffmpeg|libfingerprint|libframe_sinks|libgcm|libgeneric_sensor_public_interfaces_shared|libgeneric_sensor|libgeolocation|libgeometry_skia|libgeometry|libgesture_detection|libgfx_ipc_color|libgfx_ipc_geometry|libgfx_ipc_skia|libgfx_ipc|libgfx|libgfx_x11|libgin_features|libgin|libgles2_c_lib|libgles2_implementation|libgles2_utils|libGLESv2|libgl_init|libgl_in_process_context|libgl_wrapper|libgpu|libgtk2ui|libheadless|libicui18n|libicuuc|libipc_mojom_shared|libipc_mojom|libipc|libjs|libkeyboard|libkeyboard_with_content|libkeycodes_x11|libkeyed_service_content|libkeyed_service_core|libmanager|libmedia_blink|libmedia_gpu|libmedia_mojo_services|libmedia|libmessage_center|libmidi|libmirclient.9|libmojo_common_lib|libmojo_ime_lib|libmojo_public_system_cpp|libmojo_public_system|libmojo_system_impl|libnative_theme|libnet|libnet_with_v8|libonc|libosmesa|libplatform|libpoli
cy_component|libpolicy_proto|libpower_save_blocker|libppapi_host|libppapi_proxy|libppapi_shared|libprefs|libprinting|libprotobuf_lite|libproxy_config|libpublic|librange|libresource_coordinator_cpp|libresource_coordinator_public_interfaces_internal_shared|libsandbox_services|libseccomp_bpf|libsensors|libservice_manager_cpp|libservice_manager_cpp_types|libservice_manager_mojom_blink|libservice_manager_mojom_constants_blink|libservice_manager_mojom_constants_shared|libservice_manager_mojom_constants|libservice_manager_mojom_shared|libservice_manager_mojom|libsessions|libshared_memory_support|libshell_dialogs|libskia|libsnapshot|libsql|libstartup_tracing|libstorage_browser|libstorage_common|libstub_window|libsuid_sandbox_client|libsurface|libtracing|libui_base_ime|libui_base|libui_base_x|libui_data_pack|libui_touch_selection|libui_views_mus_lib|liburl_ipc|liburl_matcher|liburl|libuser_manager|libuser_prefs|libv8_libbase|libv8_libplatform|libv8|libviews|libVkLayer_core_validation|libVkLa
yer_object_tracker|libVkLayer_parameter_validation|libVkLayer_swapchain|libVkLayer_threading|libVkLayer_unique_objects|libwebdata_common|libweb_dialogs|libwebview|libwidevinecdmadapter|libwidevinecdm|libwm|libwtf|libx11_events_platform|libx11_window
%global __requires_exclude ^(%{privlibs})\\.so
# Try to not use the Xvfb as it is slow..
@@ -40,14 +41,8 @@
#
https://www.chromium.org/developers/testing/addresssanitizer
%global asan 0
-# Only flip this on if stuff is really broken re: nacl.
-# chromium-native_client doesn't build on Fedora 23 because
-# clang is too old and buggy.
-%if 0%{?fedora} <= 23
+# nacl/pnacl are soon to be dead. We're just killing them off early.
%global killnacl 1
-%else
-%global killnacl 0
-%endif
%if 0%{?killnacl}
%global nacl 0
@@ -111,11 +106,15 @@ BuildRequires: libicu-devel >= 5.4
%global default_client_secret miEreAep8nuvTdvLums6qyLK
%global chromoting_client_id
449907151817-8vnlfih032ni8c4jjps9int9t86k546t.apps.googleusercontent.com
-%global majorversion 59
+%global majorversion 60
+%if %{freeworld}
+Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
+%else
Name: chromium%{chromium_channel}
-Version: %{majorversion}.0.3071.115
-Release: 3%{?dist}
+%endif
+Version: %{majorversion}.0.3112.90
+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)
@@ -149,10 +148,10 @@ Patch18: chromium-52.0.2743.82-master-prefs-path.patch
#
https://bugzilla.redhat.com/show_bug.cgi?id=1361157
Patch19: chromium-52.0.2743.116-unset-madv_free.patch
# Use gn system files
-Patch20: chromium-54.0.2840.59-gn-system.patch
+Patch20: chromium-60.0.3112.78-gn-system.patch
# Fix last commit position issue
#
https://groups.google.com/a/chromium.org/forum/#!topic/gn-dev/7nlJv486bD4
-Patch21: chromium-53.0.2785.92-last-commit-position.patch
+Patch21: chromium-60.0.3112.78-last-commit-position.patch
# Fix issue where timespec is not defined when sys/stat.h is included.
Patch22: chromium-53.0.2785.92-boringssl-time-fix.patch
# I wouldn't have to do this if there was a standard way to append extra compiler
flags
@@ -168,24 +167,35 @@ Patch27: chromium-59.0.3071.86-setopaque.patch
Patch31: chromium-56.0.2924.87-fpermissive.patch
# Fix issue with compilation on gcc7
# Thanks to Ben Noordhuis
-Patch33: chromium-59.0.3071.86-gcc7.patch
+Patch33: chromium-60.0.3112.78-gcc7.patch
# Enable mp3 support
-Patch34: chromium-59.0.3071.86-enable-mp3.patch
+Patch34: chromium-60.0.3112.78-enable-mp3.patch
# Revert
https://chromium.googlesource.com/chromium/src/+/b794998819088f76b4cf44c8...
#
https://bugs.chromium.org/p/chromium/issues/detail?id=712737
#
https://bugzilla.redhat.com/show_bug.cgi?id=1446851
Patch36: chromium-58.0.3029.96-revert-b794998819088f76b4cf44c8db6940240c563cf4.patch
# Correctly compile the stdatomic.h in ffmpeg with gcc 4.8
Patch37: chromium-59.0.3071.86-ffmpeg-stdatomic.patch
-# RHEL is too old to have this header in kernel-headers
-# and some Fedora versions do not contain what Chromium expects to find
-# so just use the hardcoded values instead
-Patch38: chromium-59.0.3071.86-dma-buf-header-hack.patch
# Nacl can't die soon enough
Patch39: chromium-59.0.3071.86-system-clang.patch
# Change struct ucontext to ucontext_t in breakpad
#
https://patchwork.openembedded.org/patch/141358/
Patch40: chromium-59.0.3071.115-ucontext-fix.patch
+# Fix gn bootstrap. Not convinced anyone at Google ever tries to build Chromium from
source.
+Patch41: chromium-60.0.3112.78-fix-gn-bootstrap.patch
+# Do not prefix libpng functions
+Patch42: chromium-60.0.3112.78-no-libpng-prefix.patch
+# Do not mangle libjpeg
+Patch43: chromium-60.0.3112.78-jpeg-nomangle.patch
+# Fix gtk2 build by applying these changes
+#
https://chromium.googlesource.com/chromium/src.git/+/804fd4ab5e41584d61c4...
+#
https://chromium.googlesource.com/chromium/src.git/+/4313334bead373b139ee...
+#
https://chromium.googlesource.com/chromium/src.git/+/ca407201886875966db9...
+# This probably will not be needed with 61+
+Patch44: chromium-60.0.3112.78-gtk2fix.patch
+# Do not mangle zlib
+Patch45: chromium-60.0.3112.78-no-zlib-mangle.patch
+
### Chromium Tests Patches ###
Patch100: chromium-46.0.2490.86-use_system_opus.patch
@@ -220,9 +230,6 @@ Source9: chromium-browser.xml
Source10:
https://dl.google.com/dl/edgedl/chrome/policy/policy_templates.zip
Source11: chrome-remote-desktop@.service
Source13: master_preferences
-# Upstream did not include third_party/freetype source code in the tarball for
59.0.3071.115
-# So we copy it from the previous build. :/
-Source14: chromium-59.0.3071.109-freetype.tar.bz2
# We can assume gcc and binutils.
BuildRequires: gcc-c++
@@ -241,7 +248,7 @@ BuildRequires: glib2-devel
BuildRequires: gnome-keyring-devel
BuildRequires: gtk2-devel
# Yes. This too.
-BuildRequires: gtk3-devel
+# BuildRequires: gtk3-devel
BuildRequires: glibc-devel
BuildRequires: gperf
BuildRequires: libatomic
@@ -253,7 +260,6 @@ BuildRequires: libusb-devel
BuildRequires: libXdamage-devel
BuildRequires: libXScrnSaver-devel
BuildRequires: libXtst-devel
-BuildRequires: mesa-libGL-devel
BuildRequires: nodejs
BuildRequires: nss-devel
BuildRequires: pciutils-devel
@@ -296,6 +302,7 @@ BuildRequires: bzip2-devel
BuildRequires: dbus-glib-devel
BuildRequires: elfutils-libelf-devel
BuildRequires: flac-devel
+BuildRequires: freetype-devel
BuildRequires: hwdata
BuildRequires: kernel-headers
BuildRequires: libevent-devel
@@ -308,7 +315,7 @@ BuildRequires: libffi-devel
BuildRequires: libicu-devel = 54.1
%endif
BuildRequires: libjpeg-devel
-# BuildRequires: libpng-devel
+BuildRequires: libpng-devel
%if 0
# see
https://code.google.com/p/chromium/issues/detail?id=501318
BuildRequires: libsrtp-devel >= 1.4.4
@@ -323,7 +330,7 @@ BuildRequires: libusbx-devel >= 1.0.21-0.1.git448584a
# We don't use libvpx anymore because Chromium loves to
# use bleeding edge revisions here that break other things
# ... so we just use the bundled libvpx.
-# Same is true for libwebp.
+BuildRequires: libwebp-devel
BuildRequires: libxslt-devel
# Same here, it seems.
# BuildRequires: libyuv-devel
@@ -351,6 +358,7 @@ BuildRequires: re2-devel >= 20160401
%endif
BuildRequires: speech-dispatcher-devel
BuildRequires: yasm
+BuildRequires: zlib-devel
BuildRequires: pkgconfig(gnome-keyring-1)
# remote desktop needs this
BuildRequires: pam-devel
@@ -426,15 +434,15 @@ Provides: bundled(libaddressinput) = 0
Provides: bundled(libdrm) = 2.4.70
Provides: bundled(libevent) = 1.4.15
Provides: bundled(libjingle) = 9564
-Provides: bundled(libjpeg-turbo) = 1.4.90
+# Provides: bundled(libjpeg-turbo) = 1.4.90
Provides: bundled(libphonenumber) = a4da30df63a097d67e3c429ead6790ad91d36cf4
-Provides: bundled(libpng) = 1.6.22
+# Provides: bundled(libpng) = 1.6.22
Provides: bundled(libsrtp) = 2cbd85085037dc7bf2eda48d4cf62e2829056e2d
%if %{bundlelibusbx}
Provides: bundled(libusbx) = 1.0.17
%endif
Provides: bundled(libvpx) = 1.6.0
-Provides: bundled(libwebp) = 0.6.0
+# Provides: bundled(libwebp) = 0.6.0
%if %{bundlelibxml}
# Well, it's actually newer than 2.9.4 and has code in it that has been reverted
upstream... but eh.
Provides: bundled(libxml) = 2.9.4
@@ -470,8 +478,7 @@ Provides: bundled(webrtc) = 90usrsctp
Provides: bundled(woff2) = 445f541996fe8376f3976d35692fd2b9a6eedf2d
Provides: bundled(xdg-mime)
Provides: bundled(xdg-user-dirs)
-Provides: bundled(x86inc) = 0
-Provides: bundled(zlib) = 1.2.11
+# Provides: bundled(zlib) = 1.2.11
# For selinux scriptlet
Requires(post): /usr/sbin/semanage
@@ -480,9 +487,16 @@ Requires(post): /usr/sbin/restorecon
%description
Chromium is an open-source web browser, powered by WebKit (Blink).
+%package common
+Summary: Files needed for both the headless_shell and full Chromium
+
+%description common
+%{summary}.
+
%if 0%{?shared}
%package libs
Summary: Shared libraries used by chromium (and chrome-remote-desktop)
+Requires: chromium-common%{_isa} = %{version}-%{release}
Requires: chromium-libs-media%{_isa} >= %{majorversion}
Requires(post): %{_sbindir}/update-alternatives
Requires(preun): %{_sbindir}/update-alternatives
@@ -491,14 +505,14 @@ Requires(preun): %{_sbindir}/update-alternatives
Shared libraries used by chromium (and chrome-remote-desktop).
%if %{freeworld}
-%package libs-media-freeworld
+%package -n chromium-libs-media-freeworld
Summary: Chromium media libraries built with all possible codecs
Provides: chromium-libs-media = %{version}-%{release}
Provides: chromium-libs-media%{_isa} = %{version}-%{release}
Requires(post): %{_sbindir}/update-alternatives
Requires(preun): %{_sbindir}/update-alternatives
-%description libs-media-freeworld
+%description -n chromium-libs-media-freeworld
Chromium media libraries built with all possible codecs. Chromium is an
open-source web browser, powered by WebKit (Blink). This package replaces
the default chromium-libs-media package, which is limited in what it
@@ -521,6 +535,7 @@ Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
Requires: xorg-x11-server-Xvfb
+Requires: python2-psutil
%if 0%{?shared}
Requires: chromium-libs%{_isa} = %{version}-%{release}
%endif
@@ -546,13 +561,22 @@ JavaScript execution, and more. ChromeDriver is a standalone server
which
implements WebDriver's wire protocol for Chromium. It is being developed by
members of the Chromium and WebDriver teams.
+%package headless
+Summary: A minimal headless shell built from Chromium
+Requires: chromium-common%{_isa} = %{version}-%{release}
+
+%description headless
+A minimal headless client built from Chromium. headless_shell is built
+without support for alsa, cups, dbus, gconf, gio, kerberos, pulseaudio, or
+udev.
+
%prep
%setup -q -T -c -n %{name}-policies -a 10
%setup -q -T -c -n depot_tools -a 2
%if 0%{tests}
-%setup -q -n chromium-%{version} -b 1 -a 14
+%setup -q -n chromium-%{version} -b 1
%else
-%setup -q -n chromium-%{version} -a 14
+%setup -q -n chromium-%{version}
%endif
### Chromium Fedora Patches ###
@@ -577,12 +601,20 @@ members of the Chromium and WebDriver teams.
%patch27 -p1 -b .setopaque
%patch31 -p1 -b .permissive
%patch33 -p1 -b .gcc7
+%if %{freeworld}
+# Do not apply mp3 change
+%else
%patch34 -p1 -b .mp3
+%endif
%patch36 -p1 -b .revert
%patch37 -p1 -b .ffmpeg-stdatomic
-%patch38 -p1 -b .headerhack
%patch39 -p1 -b .system-clang
%patch40 -p1 -b .ucontextfix
+%patch41 -p1 -b .fixgnbootstrap
+%patch42 -p1 -b .noprefix
+%patch43 -p1 -b .nomangle
+%patch44 -p1 -b .gtk2fix
+%patch45 -p1 -b .nozmangle
### Chromium Tests Patches ###
%patch100 -p1 -b .use_system_opus
@@ -693,20 +725,26 @@ ln -s /usr/bin/clang clang
popd
%endif
-CHROMIUM_BROWSER_GN_DEFINES=""
-CHROMIUM_BROWSER_GN_DEFINES+=' is_debug=false'
+# Core defines are flags that are true for both the browser and headless.
+CHROMIUM_CORE_GN_DEFINES=""
+CHROMIUM_CORE_GN_DEFINES+=' is_debug=false'
%ifarch x86_64
-CHROMIUM_BROWSER_GN_DEFINES+=' system_libdir="lib64"'
-%endif
-CHROMIUM_BROWSER_GN_DEFINES+=' google_api_key="%{api_key}"
google_default_client_id="%{default_client_id}"
google_default_client_secret="%{default_client_secret}"'
-CHROMIUM_BROWSER_GN_DEFINES+=' is_clang=false use_sysroot=false use_gio=true
use_pulseaudio=true icu_use_data_file=true'
-%if 0%{?nonacl}
-CHROMIUM_BROWSER_GN_DEFINES+=' enable_nacl=false'
+CHROMIUM_CORE_GN_DEFINES+=' system_libdir="lib64"'
%endif
+CHROMIUM_CORE_GN_DEFINES+=' google_api_key="%{api_key}"
google_default_client_id="%{default_client_id}"
google_default_client_secret="%{default_client_secret}"'
+CHROMIUM_CORE_GN_DEFINES+=' is_clang=false use_sysroot=false use_gold=false
fieldtrial_testing_like_official_build=true'
%if %{freeworld}
-CHROMIUM_BROWSER_GN_DEFINES+=' ffmpeg_branding="ChromeOS"
proprietary_codecs=true'
+CHROMIUM_CORE_GN_DEFINES+=' ffmpeg_branding="ChromeOS"
proprietary_codecs=true'
%else
-CHROMIUM_BROWSER_GN_DEFINES+=' ffmpeg_branding="Chromium"
proprietary_codecs=false'
+CHROMIUM_CORE_GN_DEFINES+=' ffmpeg_branding="Chromium"
proprietary_codecs=false'
+%endif
+CHROMIUM_CORE_GN_DEFINES+=' treat_warnings_as_errors=false'
+export CHROMIUM_CORE_GN_DEFINES
+
+CHROMIUM_BROWSER_GN_DEFINES=""
+CHROMIUM_BROWSER_GN_DEFINES+=' use_gio=true use_pulseaudio=true
icu_use_data_file=true'
+%if 0%{?nonacl}
+CHROMIUM_BROWSER_GN_DEFINES+=' enable_nacl=false'
%endif
%if 0%{?shared}
CHROMIUM_BROWSER_GN_DEFINES+=' is_component_ffmpeg=true is_component_build=true'
@@ -716,16 +754,21 @@ 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+=' enable_hotwording=false use_aura=true'
CHROMIUM_BROWSER_GN_DEFINES+=' enable_webrtc=true enable_widevine=true'
-CHROMIUM_BROWSER_GN_DEFINES+=' use_gold=false
fieldtrial_testing_like_official_build=true'
%if 0%{gtk3}
CHROMIUM_BROWSER_GN_DEFINES+=' use_gtk3=true'
%else
CHROMIUM_BROWSER_GN_DEFINES+=' use_gtk3=false'
%endif
-# CHROMIUM_BROWSER_GN_DEFINES+=' use_system_libjpeg=true'
-CHROMIUM_BROWSER_GN_DEFINES+=' treat_warnings_as_errors=false'
export CHROMIUM_BROWSER_GN_DEFINES
+CHROMIUM_HEADLESS_GN_DEFINES=""
+CHROMIUM_HEADLESS_GN_DEFINES+=' use_ozone=true ozone_auto_platforms=false
ozone_platform="headless" ozone_platform_headless=true'
+CHROMIUM_HEADLESS_GN_DEFINES+=' headless_use_embedded_resources=true
icu_use_data_file=false v8_use_external_startup_data=false'
+CHROMIUM_HEADLESS_GN_DEFINES+=' enable_nacl=false enable_print_preview=false
enable_remoting=false use_alsa=false use_ash=false'
+CHROMIUM_HEADLESS_GN_DEFINES+=' use_cups=false use_dbus=false use_gconf=false
use_gio=false use_kerberos=false use_libpci=false'
+CHROMIUM_HEADLESS_GN_DEFINES+=' use_pulseaudio=false use_udev=false'
+export CHROMIUM_HEADLESS_GN_DEFINES
+
mkdir -p third_party/node/linux/node-linux-x64/bin
ln -s %{_bindir}/node third_party/node/linux/node-linux-x64/bin/node
@@ -739,6 +782,8 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/ffmpeg' \
'third_party/adobe' \
'third_party/flac' \
+ 'third_party/googletest' \
+ 'third_party/glslang-angle' \
'third_party/harfbuzz-ng' \
'third_party/icu' \
'base/third_party/libevent' \
@@ -761,7 +806,6 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/swiftshader/third_party/subzero' \
'third_party/swiftshader/third_party/LLVM' \
'third_party/swiftshader/third_party/llvm-subzero' \
- 'third_party/swiftshader/third_party/pnacl-subzero' \
'third_party/usb_ids' \
'third_party/xdg-utils' \
'third_party/yasm' \
@@ -800,6 +844,7 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/catapult/tracing/third_party/gl-matrix' \
'third_party/catapult/tracing/third_party/jszip' \
'third_party/catapult/tracing/third_party/mannwhitneyu' \
+ 'third_party/catapult/tracing/third_party/oboe' \
'third_party/catapult/third_party/polymer' \
'third_party/catapult/third_party/py_vulcanize' \
'third_party/catapult/third_party/py_vulcanize/third_party/rcssmin' \
@@ -870,16 +915,19 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/sfntly' \
'third_party/sinonjs' \
'third_party/skia' \
+ 'third_party/skia/third_party/vulkan' \
'third_party/smhasher' \
+ 'third_party/spirv-headers' \
+ 'third_party/spirv-tools-angle' \
'third_party/sqlite' \
'third_party/tcmalloc' \
'third_party/usrsctp' \
+ 'third_party/vulkan-validation-layers' \
'third_party/web-animations-js' \
'third_party/webdriver' \
'third_party/webrtc' \
'third_party/widevine' \
'third_party/woff2' \
- 'third_party/x86inc' \
'third_party/zlib/google' \
'url/third_party/mozilla' \
'v8/third_party/inspector_protocol' \
@@ -898,6 +946,7 @@ export PATH=$PATH:%{_builddir}/depot_tools
build/linux/unbundle/replace_gn_files.py --system-libraries \
flac \
+ freetype \
%if 0%{?bundleharfbuzz}
%else
harfbuzz-ng \
@@ -906,13 +955,14 @@ build/linux/unbundle/replace_gn_files.py --system-libraries \
%else
icu \
%endif
-%if 0
- libevent \
-%endif
+ libdrm \
+ libjpeg \
+ libpng \
%if %{bundlelibusbx}
%else
libusb \
%endif
+ libwebp \
%if %{bundlelibxml}
%else
libxml \
@@ -926,16 +976,25 @@ build/linux/unbundle/replace_gn_files.py --system-libraries \
%else
re2 \
%endif
- yasm
+ yasm \
+ zlib
-tools/gn/bootstrap/bootstrap.py -v --gn-gen-args
"$CHROMIUM_BROWSER_GN_DEFINES"
-%{target}/gn gen --args="$CHROMIUM_BROWSER_GN_DEFINES" %{target}
+tools/gn/bootstrap/bootstrap.py -v --gn-gen-args "$CHROMIUM_CORE_GN_DEFINES
$CHROMIUM_BROWSER_GN_DEFINES"
+%{target}/gn gen --args="$CHROMIUM_CORE_GN_DEFINES
$CHROMIUM_BROWSER_GN_DEFINES" %{target}
+
+%if %{freeworld}
+# do not need to do headless gen
+%else
+%{target}/gn gen --args="$CHROMIUM_CORE_GN_DEFINES
$CHROMIUM_HEADLESS_GN_DEFINES" %{headlesstarget}
+%endif
%if %{bundlelibusbx}
# no hackity hack hack
%else
# hackity hack hack
rm -rf third_party/libusb/src/libusb/libusb.h
+# we _shouldn't need to do this, but it looks like we do.
+cp -a %{_includedir}/libusb-1.0/libusb.h third_party/libusb/src/libusb/libusb.h
%endif
# make up a version for widevine
@@ -1019,12 +1078,13 @@ export CHROMIUM_BROWSER_UNIT_TESTS="\
export CHROMIUM_BROWSER_UNIT_TESTS=
%endif
-
-%global target out/Release
-
+# Now do the full browser
%if 0%{freeworld}
../depot_tools/ninja -C %{target} -vvv media $CHROMIUM_BROWSER_UNIT_TESTS
%else
+# Do headless first.
+../depot_tools/ninja -C %{headlesstarget} -vvv headless_shell
+
../depot_tools/ninja -C %{target} -vvv chrome chrome_sandbox chromedriver
widevinecdmadapter clearkeycdm policy_templates $CHROMIUM_BROWSER_UNIT_TESTS
# remote client
@@ -1055,6 +1115,10 @@ mkdir -p %{buildroot}%{chromium_path}
pushd %{target}
cp -a libffmpeg.so* %{buildroot}%{chromium_path}
cp -a libmedia.so* %{buildroot}%{chromium_path}
+mv %{buildroot}%{chromium_path}/libffmpeg.so{,.%{lsuffix}}
+mv %{buildroot}%{chromium_path}/libffmpeg.so.TOC{,.%{lsuffix}}
+mv %{buildroot}%{chromium_path}/libmedia.so{,.%{lsuffix}}
+mv %{buildroot}%{chromium_path}/libmedia.so.TOC{,.%{lsuffix}}
popd
%else
mkdir -p %{buildroot}%{_bindir}
@@ -1154,6 +1218,10 @@ cp -a remoting_client_plugin_newlib.* %{buildroot}%{chromium_path}
%endif
popd
+pushd %{headlesstarget}
+cp -a headless_lib.pak headless_shell %{buildroot}%{chromium_path}
+popd
+
cp -a remoting/host/linux/linux_me2me_host.py
%{buildroot}%{crd_path}/chrome-remote-desktop
cp -a remoting/host/installer/linux/is-remoting-session %{buildroot}%{crd_path}/
@@ -1547,10 +1615,10 @@ if [ $1 = 0 ]; then
fi
%if %{freeworld}
-%posttrans libs-media-freeworld
+%posttrans -n chromium-libs-media-freeworld
%{_sbindir}/update-alternatives --install \
%{_libdir}/chromium-browser/libffmpeg.so libffmpeg.so \
- %{_libdir}/chromium-browser/libffmpeg.so.freeworld 5 \
+ %{_libdir}/chromium-browser/libffmpeg.so.freeworld 20 \
--slave %{_libdir}/chromium-browser/libffmpeg.so.TOC libffmpeg.so.TOC \
%{_libdir}/chromium-browser/libffmpeg.so.TOC.freeworld \
--slave %{_libdir}/chromium-browser/libmedia.so libmedia.so \
@@ -1558,7 +1626,7 @@ fi
--slave %{_libdir}/chromium-browser/libmedia.so.TOC libmedia.so.TOC \
%{_libdir}/chromium-browser/libmedia.so.TOC.freeworld
-%preun libs-media-freeworld
+%preun -n chromium-libs-media-freeworld
if [ $1 = 0 ]; then
%{_sbindir}/alternatives --remove libffmpeg.so \
%{_libdir}/chromium-browser/libffmpeg.so.freeworld
@@ -1600,6 +1668,7 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%files
%doc AUTHORS
+%doc chrome_policy_list.html *.json
%license LICENSE
%config %{_sysconfdir}/%{name}/
%dir %{_sysconfdir}/%{name}/native-messaging-hosts
@@ -1608,7 +1677,10 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%{_bindir}/%{chromium_browser_channel}
%dir %{chromium_path}
%{chromium_path}/*.bin
-%{chromium_path}/*.pak
+%{chromium_path}/chrome_*.pak
+%{chromium_path}/keyboard_resources.pak
+%{chromium_path}/resources.pak
+%{chromium_path}/views_mus_resources.pak
%{chromium_path}/icudtl.dat
%{chromium_path}/%{chromium_browser_channel}
%{chromium_path}/%{chromium_browser_channel}.sh
@@ -1623,8 +1695,19 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
# %%{chromium_path}/remoting_locales/
# %%{chromium_path}/pseudo_locales/
# %%{chromium_path}/plugins/
-%{chromium_path}/pyproto/
%attr(4755, root, root) %{chromium_path}/chrome-sandbox
+%{_mandir}/man1/%{chromium_browser_channel}.*
+%{_datadir}/icons/hicolor/*/apps/%{chromium_browser_channel}.png
+%{_datadir}/applications/*.desktop
+%{_datadir}/appdata/*.appdata.xml
+%{_datadir}/gnome-control-center/default-apps/chromium-browser.xml
+
+%files common
+%{chromium_path}/headless_lib.pak
+%{chromium_path}/libosmesa.so
+%{chromium_path}/mus_app_resources_*.pak
+%{chromium_path}/pyproto/
+%{chromium_path}/resources/
%dir %{chromium_path}/locales/
%lang(am) %{chromium_path}/locales/am.pak
%lang(ar) %{chromium_path}/locales/ar.pak
@@ -1679,18 +1762,13 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%lang(vi) %{chromium_path}/locales/vi.pak
%lang(zh_CN) %{chromium_path}/locales/zh-CN.pak
%lang(zh_TW) %{chromium_path}/locales/zh-TW.pak
-# %%{chromium_path}/locales/fake-bidi.pak
-%{chromium_path}/resources/
-%{_mandir}/man1/%{chromium_browser_channel}.*
-%{_datadir}/icons/hicolor/*/apps/%{chromium_browser_channel}.png
-%{_datadir}/applications/*.desktop
-%{_datadir}/appdata/*.appdata.xml
-%{_datadir}/gnome-control-center/default-apps/chromium-browser.xml
-%doc chrome_policy_list.html *.json
+%files headless
+%{chromium_path}/headless_shell
%if 0%{?shared}
%files libs
+%exclude %{chromium_path}/libosmesa.so
%exclude %{chromium_path}/libffmpeg.so*
%exclude %{chromium_path}/libmedia.so*
%exclude %{chromium_path}/libwidevinecdm.so
@@ -1729,7 +1807,7 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%if 0%{?shared}
%if %{freeworld}
-%files libs-media-freeworld
+%files -n chromium-libs-media-freeworld
%else
%files libs-media
%endif
@@ -1741,6 +1819,16 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%changelog
+* Fri Aug 4 2017 Tom Callaway <spot(a)fedoraproject.org> 60.0.3112.90-1
+- update to 60.0.3112.90
+
+* Mon Jul 31 2017 Tom Callaway <spot(a)fedoraproject.org> 60.0.3112.78-1
+- update to 60.0.3112.78
+
+* Fri Jul 21 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.115-4
+- put common files in -common subpackage
+- build headless_shell for -headless subpackage
+
* Fri Jul 21 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.115-3
- use posttrans to ensure that old libs are gone before trying to make alternative
symlinks
diff --git a/sources b/sources
index db65c06..24b41df 100644
--- a/sources
+++ b/sources
@@ -1,4 +1,3 @@
SHA512 (depot_tools.git-master.tar.gz) =
d3d6a1873b2b0296a8cd99e0d8d2e629a17b1808934b4972556168f8b4ccea60577ebaeab4445baf15afb1b04080808db59a832a5b61d247bd48da14fa6acf03
-SHA512 (policy_templates.zip) =
a997bd5d410cf8f0f104fb5b69b60699c9e60eb3f99b42e0aff167843f3a45923a9a99c881cac9cd4472a60ca9c7d1ba897e15d485fbfd66c996419e7fadd3f8
-SHA512 (chromium-59.0.3071.115-clean.tar.xz) =
001e6d9b4cae244767de7e85575d4071421d588422ca434461939e9652549bcd43c56fe0c510ab0d7d0a050e97d98f4086b8bf102dbadd7f83dc8827b9ea7ed1
-SHA512 (chromium-59.0.3071.109-freetype.tar.bz2) =
62a698c0229c0eb5ed4d31efd211db70f1183f4f86558bd68a6110214b2f0a61eecdde27efcab359ecee684b3df819b37a75505c1b9ea6bec407d289d6e78a66
+SHA512 (chromium-60.0.3112.90-clean.tar.xz) =
3b1579037b3debc0f714e5de3e02bd5fc1c8aa7482479ffc20b824653b11191ed558cef147633b30da16ffd8c26d5eacb95b93610041a44a6ea84606702f7ac1
+SHA512 (policy_templates.zip) =
4d2a7162adb3ca224f3e1bf1d2936ae395603e8ffa3fda7753e666a16c42c7ba54c7acfcfdc742e22978ace37e471ed099d222063708d4d8a299da3daf135f15