commit 6c64dee99bd1148c6519679eea0395e02fce44839b2723522f61c12e85777e03 Author: Raymond Wooninck Date: Wed Aug 17 07:21:58 2011 +0000 Accepting request 79098 from home:rwooninck:chromium Move chromium to it's own place OBS-URL: https://build.opensuse.org/request/show/79098 OBS-URL: https://build.opensuse.org/package/show/network:chromium/chromium?expand=0&rev=1 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..06089e5 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,25 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text +## Specific LFS patterns +chromium-symbolic.svg filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/Cr122-ffmpeg-new-channel-layout.patch b/Cr122-ffmpeg-new-channel-layout.patch new file mode 100644 index 0000000..b7dc4d8 --- /dev/null +++ b/Cr122-ffmpeg-new-channel-layout.patch @@ -0,0 +1,350 @@ +From 84d1d7adcd1697348e3f821811179c525d3b5717 Mon Sep 17 00:00:00 2001 +From: Dale Curtis +Date: Tue, 28 Nov 2023 00:41:42 +0000 +Subject: [PATCH] Roll src/third_party/ffmpeg/ c1d0dc413..866768f35 (492 + commits) + +https://chromium.googlesource.com/chromium/third_party/ffmpeg.git/+log/c1d0dc4135ec..866768f35c22 + +$ git log c1d0dc413..866768f35 --date=short --no-merges --format='%ad %ae %s' +2023-11-22 dalecurtis README.chromium file +2023-11-22 dalecurtis Chromium patches file +2023-11-22 dalecurtis GN Configuration +2023-11-21 dalecurtis Switch to remoteexec for robosushi +2023-11-12 mypopydev vulkan_decode: fix the print format of VkDeviceSize +2023-08-28 mypopydev avdevice/decklink_dec: add explicit specifier +2023-11-20 jamrial avcodec: bump version after EVC additions +2023-09-19 d.kozinski avcodec/evc_decoder: Provided support for EVC decoder +2023-09-19 d.kozinski avcodec/evc_encoder: Provided support for EVC encoder +2023-10-17 michael avcodec/h264dec: Support skipping frames that used gray gap frames +2023-10-17 michael avcodec/h264: Avoid using gray gap frames as references +2023-10-17 michael avcodec/h264: keep track of which frames used gray references +2023-10-02 michael avcodec/h264dec: More elaborate documentation for frame_recovered +2023-10-02 michael avcodec/h264: Use FRAME_RECOVERED_HEURISTIC instead of IDR/SEI +2023-10-02 michael avcodec/h264: Seperate SEI and IDR recovery handling +2023-11-19 onemda avfilter/af_afir: remove flag that is not needed +2023-11-19 onemda avfilter/af_afir: no need to dynamically add outpad +2023-11-19 onemda avfilter/af_afir: refactor crossfade code +2023-11-19 onemda avfilter/af_afir: add timeline support +2023-11-16 remi riscv: set fast half-precision conversion +2023-11-19 onemda avfilter/af_afir: remove IR response video rendering support +2023-11-19 onemda doc/filters: add one more example for afir filter usage +2023-11-14 anton tools/general_assembly: update to conform to new rules +2023-11-14 anton tools/general_assembly: make the script executable +2023-11-18 onemda avfilter/avf_showvolume: improve step for vertical orientation +2023-11-18 onemda avfilter/avf_showvolume: draw channel names directly into output frame +2023-11-15 remi lavc/llviddsp: R-V V add_bytes +2023-11-15 remi lavc/flacdsp: R-V V LPC16 function +2023-11-15 remi lavc/flacdsp: R-V V LPC32 +2023-11-15 remi checkasm/flacdsp: add LPC test +2023-11-15 remi riscv: fix builds without Zbb support +2023-11-18 mypopydev lavfi/Makefile: fix vf_cropdetect missed edge_common +2023-11-10 ffmpeg-devel apply spelling fixes +2023-11-18 onemda avfilter/af_afir: add irnorm and irlink options +2023-11-14 remi lavc/flacdsp: R-V V decorrelate_indep 16-bit packed +2023-11-14 remi lavc/flacdsp: R-V V decorrelate_indep 32-bit packed +2023-11-13 remi lavc/flacdsp: R-V V decorrelate_ms packed +2023-08-16 remi lavc/flacdsp: R-V V packed decorrelate_{l,r}s +2023-11-13 remi checkasm/flacdsp: fix ls/rs/ms tests +2023-11-08 onemda avfilter/af_adynamicequalizer: add adaptive detection mode +2023-11-06 onemda avfilter/af_adynamicequalizer: do gain calculations in log domain +2023-11-03 sunyuechi af_afir: RISC-V V fcmul_add +2023-11-12 remi lavc/llauddsp: R-V V scalarproduct_and_madd_int32 +2023-11-12 remi lavc/llauddsp: R-V V scalarproduct_and_madd_int16 +2023-11-12 remi checkasm: add lossless audio DSP +2023-11-15 jamrial x86/flacds: clear the high bits from pred_order in lpc_32 functions +2023-11-13 jianhui.j.dai-at-intel.com avcodec/cbs_vp8: Add support for VP8 codec bitstream +2023-11-13 jianhui.j.dai-at-intel.com avcodec/vp8: Export `vp8_token_update_probs` variable +2023-11-12 remi lavc/huffyuvdsp: basic R-V V add_hfyu_left_pred_bgr32 +2023-11-12 remi checkasm/huffyuvdsp: test for add_hfyu_left_pred_bgr32 +(...) +2022-08-04 andreas.rheinhardt avcodec/cbs: Use RefStruct-API for unit content +2022-08-04 andreas.rheinhardt avcodec/refstruct: Allow checking for exclusive ownership +2022-08-04 andreas.rheinhardt avcodec/dovi_rpu: Use RefStruct API for Vdr data +2022-08-04 andreas.rheinhardt avcodec/wavpack: Use RefStruct API for DSD context +2023-07-17 andreas.rheinhardt avcodec/vp8: Use RefStruct API for seg_map +2022-08-04 andreas.rheinhardt avcodec/hevc_ps: Use RefStruct API for parameter sets +2022-08-04 andreas.rheinhardt avcodec/h264_ps: Use RefStruct API for SPS/PPS +2022-08-04 andreas.rheinhardt avcodec/get_buffer: Use RefStruct API for FramePool +2022-08-04 andreas.rheinhardt avcodec/refstruct: Add simple API for refcounted objects +2023-10-03 remi lavu/fixed_dsp: R-V V scalarproduct +2023-10-07 onemda avformat/wavdec: w64: do not error out for broken files if data start is found +2023-10-06 onemda avcodec/mlpenc: rename some variables related to thd +2023-10-03 andreas.rheinhardt avcodec/mpegvideo: Move allocating new_picture to the encoder +2023-07-17 jamrial fftools/ffplay: stop injecting stream side data in packets +2023-07-17 jamrial fftools/ffmpeg: stop injecting stream side data in packets +2023-07-17 jamrial avcodec/decode: propagate global side data to frames +2023-07-17 jamrial avcodec/hevcdec: check for DOVI configuration record in AVCodecContext side data +2023-07-16 jamrial fftools/ffprobe: stop using AVStream.side_data +2023-07-16 jamrial fftools/ffplay: stop using AVStream.side_data +2023-07-16 jamrial fftools/ffmpeg: stop using AVStream.side_data +2023-09-26 jamrial avcodec/packet: add some documentation for AVPacketSideData +2023-07-16 jamrial avformat/avformat: use the side data from AVStream.codecpar +2023-07-16 jamrial avcodec/codec_par: add side data to AVCodecParameters +2023-07-16 jamrial avcodec/packet: add generic side data helpers +2023-10-06 andreas.rheinhardt avfilter/vulkan_filter: Remove unused label +2023-10-06 onemda avcodec/mlpdec: set extended_substream_info from header +2023-08-26 stefasab doc/encoders/libopus: clarify lowdelay and cutoff options +2023-08-26 stefasab doc/encoders/libxvid: fix references for me_quality option +2023-08-26 stefasab doc/encoders/libx264: clarify meaning of level option +2023-08-26 stefasab lavc: clarify meaning of avctx.level option +2023-10-03 leo.izen avcodec/jpegxl_parser: fix various memory issues +2023-10-03 leo.izen avcodec/jpegxl_parser: add some icc profile checks +2023-09-01 stefasab ffprobe: introduce section type, use for the compact output +2023-09-01 stefasab ffprobe: correct section name for side data piece +2023-08-31 stefasab ffprobe: factorize side data printing to dedicated function +2023-10-03 onemda avcodec/mlpenc: restructure code and resolve several bugs +2023-10-05 dev hwcontext_vulkan: properly support STORAGE usage for mutliplane images +2023-09-30 ben vulkan_hevc: handle non-contiguous SPS/PPS/VPS ids +2023-10-03 ffmpeg-devel avcodec/svt-av1: Set force_key_frames only when gop_size == 1 +2023-10-03 andreas.rheinhardt avcodec/h261dec, mpeg12dec, vc1dec: Remove setting write-only flags +2023-10-03 andreas.rheinhardt avcodec/rv10: Replace switch by LUT +2023-10-03 andreas.rheinhardt avcodec/rv10: Remove dead code +2023-10-02 andreas.rheinhardt avcodec/h263dec, mpeg4videodec: Parse extradata during init +2023-10-01 andreas.rheinhardt avcodec/mpegvideo_dec: Always initialize IDCTDSPContext during init +2023-10-01 andreas.rheinhardt avcodec/mpegvideo_dec: Don't zero context on init failure +2023-10-01 andreas.rheinhardt avcodec/mpeg12dec: Don't initialize IDCT more than once +2023-10-02 remi lavc/ac3: add R-V Zbb extract_exponents +2023-10-04 jamrial avcodec/hcadec: add a flush callback +2023-10-01 remi swscale/rgb2rgb: R-V V deinterleaveBytes +2023-10-01 remi swscale/rgb2rgb: fix extra iteration in R-V V interleave + +Created with: + roll-dep src/third_party/ffmpeg + +R=jrummell + +Bug: 1504603 +Change-Id: Ia40313bc2abcb0594543019bc8d1c22fbf7bde82 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5055586 +Reviewed-by: John Rummell +Auto-Submit: Dale Curtis +Commit-Queue: Dale Curtis +Cr-Commit-Position: refs/heads/main@{#1229653} +--- + DEPS | 2 +- + media/ffmpeg/ffmpeg_common.cc | 169 +++++++++--------- + .../filters/audio_video_metadata_extractor.cc | 17 +- + media/filters/ffmpeg_demuxer_unittest.cc | 4 +- + third_party/ffmpeg | 2 +- + 5 files changed, 97 insertions(+), 97 deletions(-) + +diff --git a/media/ffmpeg/ffmpeg_common.cc b/media/ffmpeg/ffmpeg_common.cc +index 3c97e4a6cf4c7..a55e4ab51d5b3 100644 +--- a/media/ffmpeg/ffmpeg_common.cc ++++ b/media/ffmpeg/ffmpeg_common.cc +@@ -653,15 +653,6 @@ bool AVStreamToVideoDecoderConfig(const AVStream* stream, + profile = ProfileIDToVideoCodecProfile(codec_context->profile); + } + +- void* display_matrix = +- av_stream_get_side_data(stream, AV_PKT_DATA_DISPLAYMATRIX, nullptr); +- +- VideoTransformation video_transformation = VideoTransformation(); +- if (display_matrix) { +- video_transformation = VideoTransformation::FromFFmpegDisplayMatrix( +- static_cast(display_matrix)); +- } +- + if (!color_space.IsSpecified()) { + // VP9 frames may have color information, but that information cannot + // express new color spaces, like HDR. For that reason, color space +@@ -718,91 +709,92 @@ + codec_context->extradata + codec_context->extradata_size); + } + +- if (stream->nb_side_data) { +- for (int i = 0; i < stream->nb_side_data; ++i) { +- AVPacketSideData side_data = stream->side_data[i]; +- switch (side_data.type) { +- case AV_PKT_DATA_MASTERING_DISPLAY_METADATA: { +- AVMasteringDisplayMetadata* mdcv = +- reinterpret_cast(side_data.data); +- gfx::HdrMetadataSmpteSt2086 smpte_st_2086; +- if (mdcv->has_primaries) { +- smpte_st_2086.primaries = { +- static_cast(av_q2d(mdcv->display_primaries[0][0])), +- static_cast(av_q2d(mdcv->display_primaries[0][1])), +- static_cast(av_q2d(mdcv->display_primaries[1][0])), +- static_cast(av_q2d(mdcv->display_primaries[1][1])), +- static_cast(av_q2d(mdcv->display_primaries[2][0])), +- static_cast(av_q2d(mdcv->display_primaries[2][1])), +- static_cast(av_q2d(mdcv->white_point[0])), +- static_cast(av_q2d(mdcv->white_point[1])), +- }; +- } +- if (mdcv->has_luminance) { +- smpte_st_2086.luminance_max = av_q2d(mdcv->max_luminance); +- smpte_st_2086.luminance_min = av_q2d(mdcv->min_luminance); +- } +- +- // TODO(crbug.com/40268540): Consider rejecting metadata that +- // does not specify all values. +- if (mdcv->has_primaries || mdcv->has_luminance) { +- hdr_metadata.smpte_st_2086 = smpte_st_2086; +- } +- break; ++ VideoTransformation video_transformation = VideoTransformation(); ++ for (int i = 0; i < stream->codecpar->nb_coded_side_data; ++i) { ++ const auto& side_data = stream->codecpar->coded_side_data[i]; ++ switch (side_data.type) { ++ case AV_PKT_DATA_DISPLAYMATRIX: { ++ CHECK_EQ(side_data.size, sizeof(int32_t) * 3 * 3); ++ video_transformation = VideoTransformation::FromFFmpegDisplayMatrix( ++ reinterpret_cast(side_data.data)); ++ break; ++ } ++ case AV_PKT_DATA_MASTERING_DISPLAY_METADATA: { ++ AVMasteringDisplayMetadata* mdcv = ++ reinterpret_cast(side_data.data); ++ gfx::HdrMetadataSmpteSt2086 smpte_st_2086; ++ if (mdcv->has_primaries) { ++ smpte_st_2086.primaries = { ++ static_cast(av_q2d(mdcv->display_primaries[0][0])), ++ static_cast(av_q2d(mdcv->display_primaries[0][1])), ++ static_cast(av_q2d(mdcv->display_primaries[1][0])), ++ static_cast(av_q2d(mdcv->display_primaries[1][1])), ++ static_cast(av_q2d(mdcv->display_primaries[2][0])), ++ static_cast(av_q2d(mdcv->display_primaries[2][1])), ++ static_cast(av_q2d(mdcv->white_point[0])), ++ static_cast(av_q2d(mdcv->white_point[1])), ++ }; + } +- case AV_PKT_DATA_CONTENT_LIGHT_LEVEL: { +- AVContentLightMetadata* clli = +- reinterpret_cast(side_data.data); +- hdr_metadata.cta_861_3 = +- gfx::HdrMetadataCta861_3(clli->MaxCLL, clli->MaxFALL); +- break; ++ if (mdcv->has_luminance) { ++ smpte_st_2086.luminance_max = av_q2d(mdcv->max_luminance); ++ smpte_st_2086.luminance_min = av_q2d(mdcv->min_luminance); ++ } ++ ++ // TODO(crbug.com/40268540): Consider rejecting metadata that ++ // does not specify all values. ++ if (mdcv->has_primaries || mdcv->has_luminance) { ++ hdr_metadata.smpte_st_2086 = smpte_st_2086; + } ++ break; ++ } ++ case AV_PKT_DATA_CONTENT_LIGHT_LEVEL: { ++ AVContentLightMetadata* clli = ++ reinterpret_cast(side_data.data); ++ hdr_metadata.cta_861_3 = ++ gfx::HdrMetadataCta861_3(clli->MaxCLL, clli->MaxFALL); ++ break; ++ } + #if BUILDFLAG(ENABLE_PLATFORM_DOLBY_VISION) +- case AV_PKT_DATA_DOVI_CONF: { +- AVDOVIDecoderConfigurationRecord* dovi = +- reinterpret_cast( +- side_data.data); +- VideoType type; +- type.codec = VideoCodec::kDolbyVision; +- type.level = dovi->dv_level; +- type.color_space = color_space; +- type.hdr_metadata_type = gfx::HdrMetadataType::kNone; +- switch (dovi->dv_profile) { +- case 0: +- type.profile = VideoCodecProfile::DOLBYVISION_PROFILE0; +- break; +- case 4: +- type.profile = VideoCodecProfile::DOLBYVISION_PROFILE4; +- break; +- case 5: +- type.profile = VideoCodecProfile::DOLBYVISION_PROFILE5; +- break; +- case 7: +- type.profile = VideoCodecProfile::DOLBYVISION_PROFILE7; +- break; +- case 8: +- type.profile = VideoCodecProfile::DOLBYVISION_PROFILE8; +- break; +- case 9: +- type.profile = VideoCodecProfile::DOLBYVISION_PROFILE9; +- break; +- default: +- type.profile = VideoCodecProfile::VIDEO_CODEC_PROFILE_UNKNOWN; +- break; +- } +- // Treat dolby vision contents as dolby vision codec only if the +- // device support clear DV decoding, otherwise use the original +- // HEVC or AVC codec and profile. +- if (media::IsDecoderSupportedVideoType(type)) { +- codec = type.codec; +- profile = type.profile; +- } +- break; ++ case AV_PKT_DATA_DOVI_CONF: { ++ AVDOVIDecoderConfigurationRecord* dovi = ++ reinterpret_cast(side_data.data); ++ VideoType type; ++ type.codec = VideoCodec::kDolbyVision; ++ type.level = dovi->dv_level; ++ type.color_space = color_space; ++ type.hdr_metadata_type = gfx::HdrMetadataType::kNone; ++ switch (dovi->dv_profile) { ++ case 0: ++ type.profile = VideoCodecProfile::DOLBYVISION_PROFILE0; ++ break; ++ case 5: ++ type.profile = VideoCodecProfile::DOLBYVISION_PROFILE5; ++ break; ++ case 7: ++ type.profile = VideoCodecProfile::DOLBYVISION_PROFILE7; ++ break; ++ case 8: ++ type.profile = VideoCodecProfile::DOLBYVISION_PROFILE8; ++ break; ++ case 9: ++ type.profile = VideoCodecProfile::DOLBYVISION_PROFILE9; ++ break; ++ default: ++ type.profile = VideoCodecProfile::VIDEO_CODEC_PROFILE_UNKNOWN; ++ break; + } ++ // Treat dolby vision contents as dolby vision codec only if the ++ // device support clear DV decoding, otherwise use the original ++ // HEVC or AVC codec and profile. ++ if (media::IsDecoderSupportedVideoType(type)) { ++ codec = type.codec; ++ profile = type.profile; ++ } ++ break; ++ } + #endif // BUILDFLAG(ENABLE_PLATFORM_DOLBY_VISION) + default: + break; +- } + } + } + +diff --git a/media/filters/audio_video_metadata_extractor.cc b/media/filters/audio_video_metadata_extractor.cc +index cb002490a6322..e841b4ad13383 100644 +--- a/media/filters/audio_video_metadata_extractor.cc ++++ b/media/filters/audio_video_metadata_extractor.cc +@@ -113,13 +113,16 @@ bool AudioVideoMetadataExtractor::Extract(DataSource* source, + if (!stream) + continue; + +- void* display_matrix = +- av_stream_get_side_data(stream, AV_PKT_DATA_DISPLAYMATRIX, nullptr); +- if (display_matrix) { +- rotation_ = VideoTransformation::FromFFmpegDisplayMatrix( +- static_cast(display_matrix)) +- .rotation; +- info.tags["rotate"] = base::NumberToString(rotation_); ++ for (int j = 0; j < stream->codecpar->nb_coded_side_data; j++) { ++ const AVPacketSideData& sd = stream->codecpar->coded_side_data[j]; ++ if (sd.type == AV_PKT_DATA_DISPLAYMATRIX) { ++ CHECK_EQ(sd.size, sizeof(int32_t) * 3 * 3); ++ rotation_ = VideoTransformation::FromFFmpegDisplayMatrix( ++ reinterpret_cast(sd.data)) ++ .rotation; ++ info.tags["rotate"] = base::NumberToString(rotation_); ++ break; ++ } + } + + // Extract dictionary from streams also. Needed for containers that attach diff --git a/INSTALL.sh b/INSTALL.sh new file mode 100644 index 0000000..31c861b --- /dev/null +++ b/INSTALL.sh @@ -0,0 +1,181 @@ +#!/bin/bash +set -x +while getopts s:o:l:i: option +do +case "${option}" in +s) STAGEDIR=${OPTARG};; +o) OUTPUTDIR=${OPTARG};; +l) LIBDIR=${OPTARG};; +i) ICUDATAFILE=${OPTARG};; +esac +done +SHLIB_PERMS="755" +PROGNAME="chrome" +PACKAGE="chromium-browser" +MAINTMAIL="chromium-dev@chromium.org" +PROJECT_LICENSE="BSD-3-Clause and LGPL-2.1+ and Apache-2.0 and IJG and MIT and GPL-2.0+ and ISC and OpenSSL and (MPL-1.1 or GPL-2.0 or LGPL-2.0)" +SHORTDESC="The web browser from Chromium project" +FULLDESC=" Chromium is an open-source browser project that aims to build a safer, faster,\ + and more stable way to experience the web.\ +

\ +

\ + We invite you to join our effort to build a powerful platform for developing a\ + new generation of web applications.\ +

\ +

\ + Chromium supports Vorbis, Theora, WebM and HTML5 audio and video standards, but\ + does not include the non-free AAC, H.264, MP3 or Adobe Flash code that is found\ + in Chrome." +PRODUCTURL="https://www.chromium.org/Home" +DEVELOPER_NAME="The Chromium Authors" +BUGTRACKERURL="https://www.chromium.org/for-testers/bug-reporting-guidelines" +HELPURL="https://chromium.googlesource.com/chromium/src/+/main/docs/linux/debugging.md" +MENUNAME="Chromium Web Browser" +CHANNEL="stable" +INSTALLDIR="${LIBDIR}/chromium" + +install -m 755 -d \ + "${STAGEDIR}/${INSTALLDIR}" \ + "${STAGEDIR}/usr/bin" \ + "${STAGEDIR}/usr/share/applications" \ + "${STAGEDIR}/usr/share/metainfo" \ + "${STAGEDIR}/usr/share/man/man1" + +# app +buildfile="${OUTPUTDIR}/${PROGNAME}" +install -m 755 "${buildfile}" "${STAGEDIR}/${INSTALLDIR}/${PROGNAME}" + +# crashpad +buildfile="${OUTPUTDIR}/chrome_crashpad_handler" +install -m 755 "${buildfile}" "${STAGEDIR}/${INSTALLDIR}/chrome_crashpad_handler" + +# resources +install -m 644 "${OUTPUTDIR}/resources.pak" "${STAGEDIR}/${INSTALLDIR}/" +install -m 644 "${OUTPUTDIR}/chrome_100_percent.pak" "${STAGEDIR}/${INSTALLDIR}/" +install -m 644 "${OUTPUTDIR}/chrome_200_percent.pak" "${STAGEDIR}/${INSTALLDIR}/" + +# ICU data file; Necessary when the GN icu_use_data_file flag is true. +if [ "x$ICUDATAFILE" == "xtrue" ]; then + install -m 644 "${OUTPUTDIR}/icudtl.dat" "${STAGEDIR}/${INSTALLDIR}/" +fi + +# V8 snapshot files; Necessary when the GN v8_use_external_startup_data flag + # is true. + # Use v8_context_snapshot.bin instead of snapshot_blob.bin if it is available. + # TODO(crbug.com/764576): Unship snapshot_blob.bin on ChromeOS and drop this branch +install -m 644 "${OUTPUTDIR}/v8_context_snapshot.bin" "${STAGEDIR}/${INSTALLDIR}/" + +# l10n paks +install -m 755 -d "${STAGEDIR}/${INSTALLDIR}/locales/" +find "${OUTPUTDIR}/locales" -type f -name '*.pak' -print -exec \ + cp -a {} "${STAGEDIR}/${INSTALLDIR}/locales/" \; +find "${STAGEDIR}/${INSTALLDIR}/locales" -type f -print -exec chmod 644 {} \; + +# ANGLE +if [ -f "${OUTPUTDIR}/libEGL.so" ]; then + for file in libEGL.so libGLESv2.so; + do + buildfile="${OUTPUTDIR}/${file}" + install -m ${SHLIB_PERMS} "${buildfile}" "${STAGEDIR}/${INSTALLDIR}/${file}" + done +fi + +# ANGLE's libvulkan library +if [ -f "${OUTPUTDIR}/libvulkan.so.1" ]; then + file="libvulkan.so.1" + buildfile="${OUTPUTDIR}/${file}" + install -m 755 "${buildfile}" "${STAGEDIR}/${INSTALLDIR}/${file}" +fi + +# SwiftShader ES +if [ -f "${OUTPUTDIR}/swiftshader/libEGL.so" ]; then + install -m 755 -d "${STAGEDIR}/${INSTALLDIR}/swiftshader/" + for file in libEGL.so libGLESv2.so; + do + buildfile="${OUTPUTDIR}/swiftshader/${file}" + install -m ${SHLIB_PERMS} "${buildfile}" "${STAGEDIR}/${INSTALLDIR}/swiftshader/${file}" + done +fi + +# SwiftShader VK +if [ -f "${OUTPUTDIR}/libvk_swiftshader.so" ]; then + install -m 755 -d "${STAGEDIR}/${INSTALLDIR}/" + file="libvk_swiftshader.so" + buildfile="${OUTPUTDIR}/${file}" + install -m ${SHLIB_PERMS} "${buildfile}" "${STAGEDIR}/${INSTALLDIR}/${file}" +fi +sed -e 's|${ICD_LIBRARY_PATH}|./libvk_swiftshader.so|g' third_party/swiftshader/src/Vulkan/vk_swiftshader_icd.json.tmpl > ${OUTPUTDIR}/vk_swiftshader_icd.json +# Install the ICD json file to point ANGLE to libvk_swiftshader.so +install -m 644 "${OUTPUTDIR}/vk_swiftshader_icd.json" "${STAGEDIR}/${INSTALLDIR}/" + +# QT shim +if [ -f "${OUTPUTDIR}/libqt5_shim.so" ]; then + file="libqt5_shim.so" + buildfile="${OUTPUTDIR}/${file}" + install -m ${SHLIB_PERMS} "${buildfile}" "${STAGEDIR}/${INSTALLDIR}/${file}" +fi +if [ -f "${OUTPUTDIR}/libqt6_shim.so" ]; then + file="libqt6_shim.so" + buildfile="${OUTPUTDIR}/${file}" + install -m ${SHLIB_PERMS} "${buildfile}" "${STAGEDIR}/${INSTALLDIR}/${file}" +fi + +# default apps +if [ -d "${OUTPUTDIR}/default_apps" ]; then + cp -a "${OUTPUTDIR}/default_apps" "${STAGEDIR}/${INSTALLDIR}/" + find "${STAGEDIR}/${INSTALLDIR}/default_apps" -type d -exec chmod 755 '{}' \; + find "${STAGEDIR}/${INSTALLDIR}/default_apps" -type f -exec chmod 644 '{}' \; +fi + +# launcher script and symlink +sed \ + -e "s#@@PROGNAME@@#${PROGNAME}#g" \ + -e "s#@@CHANNEL@@#${CHANNEL}#g" \ + "chrome/installer/linux/common/wrapper" > "${STAGEDIR}/${INSTALLDIR}/chrome-wrapper" +chmod 755 "${STAGEDIR}/${INSTALLDIR}/chrome-wrapper" +ln -s "${INSTALLDIR}/chrome-wrapper" "${STAGEDIR}/usr/bin/${PACKAGE}" + +# app icons +for size in 16 32; +do + icon="chrome/app/theme/default_100_percent/chromium/product_logo_${size}.png" + installpath="${STAGEDIR}/usr/share/icons/hicolor/${size}x${size}/apps/chromium-browser.png" + install -D -m 644 ${icon} ${installpath} +done +for size in 24 48 64 128 256; +do + icon="chrome/app/theme/chromium/product_logo_${size}.png" + installpath="${STAGEDIR}/usr/share/icons/hicolor/${size}x${size}/apps/chromium-browser.png" + install -D -m 644 ${icon} ${installpath} +done + +# desktop integration +## AppData +sed \ + -e "s#@@PACKAGE@@#${PACKAGE}#g" \ + -e "s#@@MAINTMAIL@@#${MAINTMAIL}#g" \ + -e "s#@@PROJECT_LICENSE@@#${PROJECT_LICENSE}#g" \ + -e "s#@@MENUNAME@@#${MENUNAME}#g" \ + -e "s#@@SHORTDESC@@#${SHORTDESC}#g" \ + -e "s#@@FULLDESC@@#${FULLDESC}#g" \ + -e "s#@@PRODUCTURL@@#${PRODUCTURL}#g" \ + -e "s#@@DEVELOPER_NAME@@#${DEVELOPER_NAME}#g" \ + -e "s#@@BUGTRACKERURL@@#${BUGTRACKERURL}#g" \ + -e "s#@@HELPURL@@#${HELPURL}#g" \ + "chrome/installer/linux/common/appdata.xml.template" > "${STAGEDIR}/usr/share/metainfo/${PACKAGE}.appdata.xml" + +## Desktop file +sed \ + -e "s#@@MENUNAME@@#${MENUNAME}#g" \ + -e "s#@@USR_BIN_SYMLINK_NAME@@#${PACKAGE}#g" \ + -e "s#@@PACKAGE@@#${PACKAGE}#g" \ + "chrome/installer/linux/common/desktop.template" > "${STAGEDIR}/usr/share/applications/${PACKAGE}.desktop" +chmod 644 "${STAGEDIR}/usr/share/applications/${PACKAGE}.desktop" + +# documentation +sed \ + -e "s#@@MENUNAME@@#${MENUNAME}#g" \ + -e "s#@@PACKAGE@@#${PACKAGE}#g" \ + "chrome/app/resources/manpage.1.in" > "${STAGEDIR}/usr/share/man/man1/${PACKAGE}.1" +gzip -9n "${STAGEDIR}/usr/share/man/man1/${PACKAGE}.1" +chmod 644 "${STAGEDIR}/usr/share/man/man1/${PACKAGE}.1.gz" diff --git a/README.SUSE b/README.SUSE new file mode 100644 index 0000000..7fd2b87 --- /dev/null +++ b/README.SUSE @@ -0,0 +1,9 @@ +README for SUSE packagers +========================= +Patches for chromium can typically be found in the following places: + +Stephan Hartmann - https://github.com/stha09/chromium-patches/releases +Gentoo - https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/chromium/files +Fedora - https://src.fedoraproject.org/rpms/chromium/tree/rawhide +Arch - https://github.com/archlinux/svntogit-packages/tree/packages/chromium/trunk +Arch: https://gitlab.com/Matt.Jolly/chromium-patches/ diff --git a/_constraints b/_constraints new file mode 100644 index 0000000..1c5642b --- /dev/null +++ b/_constraints @@ -0,0 +1,24 @@ + + + + + 30 + + + 14 + + + + + aarch64 + + + + asimdrdm + + + 11 + + + + diff --git a/buildfix.patch b/buildfix.patch new file mode 100644 index 0000000..5a2b245 --- /dev/null +++ b/buildfix.patch @@ -0,0 +1,18 @@ +--- chromium/src/third_party/WebKit/Source/WebCore/platform/ScrollAnimatorNone.cpp ++++ chromium/src/third_party/WebKit/Source/WebCore/platform/ScrollAnimatorNone.cpp +@@ -96,6 +96,7 @@ + t -= 2.625 / 2.75; + return 7.5625 * t * t + .984375; + } ++ return t; + } + + double ScrollAnimatorNone::PerAxisData::attackCurve(Curve curve, double deltaTime, double curveT, double startPosition, double attackPosition) +@@ -124,6 +125,7 @@ + case Bounce: + return t; + } ++ return t; + } + + ScrollAnimatorNone::PerAxisData::PerAxisData(ScrollAnimatorNone* parent, float* currentPosition) diff --git a/chrome-wrapper b/chrome-wrapper new file mode 100644 index 0000000..fe7a2e2 --- /dev/null +++ b/chrome-wrapper @@ -0,0 +1,51 @@ +#!/bin/sh + +# Copyright (c) 2010 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. + +# Running Chromium via this script makes it possible to set Chromium as the +# default browser directly out of a compile, without needing to package it. + +DESKTOP="chromium-devel" +TITLE="Chromium" + +# Checks a file to see if it's a 32 or 64-bit. +check_executable() { + out=$(file $(readlink -f $1) 2> /dev/null) + echo $out | grep -qs "ELF 32-bit LSB" + if [ $? = 0 ]; then + echo 32 + return + fi + echo $out | grep -qs "ELF 64-bit LSB" + if [ $? = 0 ]; then + echo 64 + return + fi + echo neither +} + +# Let the wrapped binary know that it has been run through the wrapper. +export CHROME_WRAPPER="`readlink -f "$0"`" + +HERE="`dirname "$CHROME_WRAPPER"`" + +# We include some xdg utilities next to the binary, and we want to prefer them +# over the system versions because we know they work correctly for us. But if +# our path already exists, we leave it where it is, to allow overriding this. +# (Once distributions have picked up the updated xdg-mime, we can go back to +# appending $HERE rather than prepending.) +case ":$PATH:" in + *:$HERE:*) + # $PATH already contains $HERE, leave it where it is. + ;; + *) + # Prepend $HERE to $PATH. + export PATH="$HERE:$PATH" + ;; +esac + +export LD_LIBRARY_PATH="$HERE:$HERE/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" + +exec "$HERE/chrome" "$@" diff --git a/chromium-102-regex_pattern-array.patch b/chromium-102-regex_pattern-array.patch new file mode 100644 index 0000000..e2b5e83 --- /dev/null +++ b/chromium-102-regex_pattern-array.patch @@ -0,0 +1,16 @@ +Index: chromium-123.0.6312.46/components/autofill/core/browser/BUILD.gn +=================================================================== +--- chromium-123.0.6312.46.orig/components/autofill/core/browser/BUILD.gn ++++ chromium-123.0.6312.46/components/autofill/core/browser/BUILD.gn +@@ -64,6 +64,11 @@ + } + + static_library("browser") { ++ if (is_clang) { ++ cflags = [ ++ "-fbracket-depth=1000", ++ ] ++ } + sources = [ + "autofill_browser_util.cc", + "autofill_browser_util.h", diff --git a/chromium-106-ffmpeg-duration.patch b/chromium-106-ffmpeg-duration.patch new file mode 100644 index 0000000..8bdb934 --- /dev/null +++ b/chromium-106-ffmpeg-duration.patch @@ -0,0 +1,17 @@ +Index: chromium-106.0.5249.91/media/filters/audio_file_reader.cc +=================================================================== +--- chromium-106.0.5249.91.orig/media/filters/audio_file_reader.cc ++++ chromium-106.0.5249.91/media/filters/audio_file_reader.cc +@@ -243,10 +243,10 @@ bool AudioFileReader::OnNewFrame( + // silence from being output. In the case where we are also discarding some + // portion of the packet (as indicated by a negative pts), we further want to + // adjust the duration downward by however much exists before zero. +- if (audio_codec_ == AudioCodec::kAAC && frame->duration) { ++ if (audio_codec_ == AudioCodec::kAAC && frame->pkt_duration) { + const base::TimeDelta pkt_duration = ConvertFromTimeBase( + glue_->format_context()->streams[stream_index_]->time_base, +- frame->duration + std::min(static_cast(0), frame->pts)); ++ frame->pkt_duration + std::min(static_cast(0), frame->pts)); + const base::TimeDelta frame_duration = + base::Seconds(frames_read / static_cast(sample_rate_)); + diff --git a/chromium-117-string-convert.patch b/chromium-117-string-convert.patch new file mode 100644 index 0000000..ccf82b9 --- /dev/null +++ b/chromium-117-string-convert.patch @@ -0,0 +1,21 @@ +diff -up chromium-117.0.5938.62/net/dns/host_resolver_cache.cc.me chromium-117.0.5938.62/net/dns/host_resolver_cache.cc +diff -up chromium-117.0.5938.62/net/dns/host_resolver_cache.h.me chromium-117.0.5938.62/net/dns/host_resolver_cache.h +--- chromium-117.0.5938.62/net/dns/host_resolver_cache.h.me 2023-09-14 15:21:24.632965004 +0200 ++++ chromium-117.0.5938.62/net/dns/host_resolver_cache.h 2023-09-15 09:15:48.511300845 +0200 +@@ -143,12 +143,14 @@ class NET_EXPORT HostResolverCache final + } + + bool operator()(const Key& lhs, const KeyRef& rhs) const { ++ const std::string rhs_domain_name{rhs.domain_name}; + return std::tie(lhs.domain_name, lhs.network_anonymization_key) < +- std::tie(rhs.domain_name, *rhs.network_anonymization_key); ++ std::tie(rhs_domain_name, *rhs.network_anonymization_key); + } + + bool operator()(const KeyRef& lhs, const Key& rhs) const { +- return std::tie(lhs.domain_name, *lhs.network_anonymization_key) < ++ const std::string lhs_domain_name{lhs.domain_name}; ++ return std::tie(lhs_domain_name, *lhs.network_anonymization_key) < + std::tie(rhs.domain_name, rhs.network_anonymization_key); + } + }; diff --git a/chromium-121-rust-clang_lib.patch b/chromium-121-rust-clang_lib.patch new file mode 100644 index 0000000..e919275 --- /dev/null +++ b/chromium-121-rust-clang_lib.patch @@ -0,0 +1,41 @@ +diff -up chromium-121.0.6167.57/build/config/clang/BUILD.gn.rust-clang_lib chromium-121.0.6167.57/build/config/clang/BUILD.gn +--- chromium-121.0.6167.57/build/config/clang/BUILD.gn.rust-clang_lib 2024-01-10 16:43:01.000000000 +0100 ++++ chromium-121.0.6167.57/build/config/clang/BUILD.gn 2024-01-20 19:51:38.481992799 +0100 +@@ -112,6 +112,7 @@ template("clang_lib") { + _prefix = "lib" + _suffix = "" + _ext = "a" ++ _libprefix = "" + if (is_win) { + _dir = "windows" + _prefix = "" +@@ -127,7 +128,19 @@ template("clang_lib") { + } + } else if (is_apple) { + _dir = "darwin" +- } else if (is_linux || is_chromeos) { ++ } else if (is_linux) { ++ _libprefix = "64" ++ _dir = "linux" ++ if (current_cpu == "x64") { ++ _suffix ="-x86_64" ++ } else if (current_cpu == "arm64") { ++ _suffix = "-aarch64" ++ } else if (current_cpu == "riscv64") { ++ _suffix = "-riscv64" ++ } else { ++ assert(false) # Unhandled cpu type ++ } ++ } else if (is_chromeos) { + if (current_cpu == "x64") { + _dir = "x86_64-unknown-linux-gnu" + } else if (current_cpu == "x86") { +@@ -166,7 +193,7 @@ template("clang_lib") { + assert(false) # Unhandled target platform + } + +- _clang_lib_dir = "$clang_base_path/lib/clang/$clang_version/lib" ++ _clang_lib_dir = "$clang_base_path/lib${_libprefix}/clang/$clang_version/lib" + _lib_file = "${_prefix}clang_rt.${_libname}${_suffix}.${_ext}" + libs = [ "$_clang_lib_dir/$_dir/$_lib_file" ] + } diff --git a/chromium-123-missing-QtGui.patch b/chromium-123-missing-QtGui.patch new file mode 100644 index 0000000..46917c5 --- /dev/null +++ b/chromium-123-missing-QtGui.patch @@ -0,0 +1,12 @@ +diff --git a/ui/qt/BUILD.gn b/ui/qt/BUILD.gn.new +index 2da7845..02ae3c8 100644 +--- a/ui/qt/BUILD.gn ++++ b/ui/qt/BUILD.gn +@@ -61,6 +61,7 @@ template("qt_shim") { + packages = [ + "Qt" + invoker.qt_version + "Core", + "Qt" + invoker.qt_version + "Widgets", ++ "Qt" + invoker.qt_version + "Gui", + ] + } + diff --git a/chromium-124-system-libxml.patch b/chromium-124-system-libxml.patch new file mode 100644 index 0000000..eff9de1 --- /dev/null +++ b/chromium-124-system-libxml.patch @@ -0,0 +1,24 @@ +diff -up chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor.h.me chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor.h +--- chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor.h.me 2024-02-06 08:22:36.013021582 +0100 ++++ chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor.h 2024-02-06 08:23:08.281607499 +0100 +@@ -77,7 +77,7 @@ class XSLTProcessor final : public Scrip + + void reset(); + +- static void ParseErrorFunc(void* user_data, const xmlError*); ++ static void ParseErrorFunc(void* user_data, xmlError*); + static void GenericErrorFunc(void* user_data, const char* msg, ...); + + // Only for libXSLT callbacks +diff -up chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc.me chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc +--- chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc.me 2024-02-06 08:14:32.368066214 +0100 ++++ chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc 2024-02-06 08:23:08.282607518 +0100 +@@ -66,7 +66,7 @@ void XSLTProcessor::GenericErrorFunc(voi + // It would be nice to do something with this error message. + } + +-void XSLTProcessor::ParseErrorFunc(void* user_data, const xmlError* error) { ++void XSLTProcessor::ParseErrorFunc(void* user_data, xmlError* error) { + FrameConsole* console = static_cast(user_data); + if (!console) + return; diff --git a/chromium-125-compiler.patch b/chromium-125-compiler.patch new file mode 100644 index 0000000..36a36a1 --- /dev/null +++ b/chromium-125-compiler.patch @@ -0,0 +1,285 @@ +From 307a0f63dd9b118f4b8470ed3d7567e81fdb7a6d Mon Sep 17 00:00:00 2001 +From: Mike Gilbert +Date: Tue, 15 Nov 2022 10:27:58 +0000 +Subject: [PATCH] Disable various compiler configs + +--- + build/config/compiler/BUILD.gn | 134 +++++---------------------------- + 1 file changed, 17 insertions(+), 117 deletions(-) + +Index: chromium-126.0.6478.8/build/config/compiler/BUILD.gn +=================================================================== +--- chromium-126.0.6478.8.orig/build/config/compiler/BUILD.gn ++++ chromium-126.0.6478.8/build/config/compiler/BUILD.gn +@@ -305,9 +305,7 @@ config("compiler") { + + configs += [ + # See the definitions below. +- ":clang_revision", + ":rustc_revision", +- ":compiler_cpu_abi", + ":compiler_codegen", + ":compiler_deterministic", + ] +@@ -566,63 +566,6 @@ + ldflags += [ "-Wl,-z,keep-text-section-prefix" ] + } + +- if (is_clang && !is_nacl) { +- cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ] +- if (save_reproducers_on_lld_crash && use_lld) { +- ldflags += [ +- "-fcrash-diagnostics=all", +- "-fcrash-diagnostics-dir=" + clang_diagnostic_dir, +- ] +- } +- +- # TODO(hans): Remove this once Clang generates better optimized debug info +- # by default. https://crbug.com/765793 +- cflags += [ +- "-mllvm", +- "-instcombine-lower-dbg-declare=0", +- ] +- if (!is_debug && use_thin_lto && is_a_target_toolchain) { +- if (is_win) { +- ldflags += [ "-mllvm:-instcombine-lower-dbg-declare=0" ] +- } else { +- ldflags += [ "-Wl,-mllvm,-instcombine-lower-dbg-declare=0" ] +- } +- } +- +- # TODO(crbug.com/40283598): This causes binary size growth and potentially +- # other problems. +- # TODO(crbug.com/40284925): This isn't supported by Cronet's mainline llvm version. +- if (default_toolchain != "//build/toolchain/cros:target" && +- !llvm_android_mainline) { +- cflags += [ +- "-mllvm", +- "-split-threshold-for-reg-with-hint=0", +- ] +- if (use_thin_lto && is_a_target_toolchain) { +- if (is_win) { +- ldflags += [ "-mllvm:-split-threshold-for-reg-with-hint=0" ] +- } else { +- ldflags += [ "-Wl,-mllvm,-split-threshold-for-reg-with-hint=0" ] +- } +- } +- } +- +- # TODO(crbug.com/40192287): Investigate why/if this should be needed. +- if (is_win) { +- cflags += [ "/clang:-ffp-contract=off" ] +- } else { +- cflags += [ "-ffp-contract=off" ] +- } +- +- # Enable ELF CREL (see crbug.com/357878242) for all platforms that use ELF +- # (excluding toolchains that use an older version of LLVM). +- # TODO(crbug.com/376278218): This causes segfault on Linux ARM builds. +- if (is_linux && !llvm_android_mainline && current_cpu != "arm" && +- default_toolchain != "//build/toolchain/cros:target") { +- cflags += [ "-Wa,--crel,--allow-experimental-crel" ] +- } +- } +- + # C11/C++11 compiler flags setup. + # --------------------------- + if (is_linux || is_chromeos || is_android || (is_nacl && is_clang) || +@@ -1538,52 +1489,6 @@ config("compiler_deterministic") { + } + } + +- # Makes builds independent of absolute file path. +- if (is_clang && strip_absolute_paths_from_debug_symbols) { +- # If debug option is given, clang includes $cwd in debug info by default. +- # For such build, this flag generates reproducible obj files even we use +- # different build directory like "out/feature_a" and "out/feature_b" if +- # we build same files with same compile flag. +- # Other paths are already given in relative, no need to normalize them. +- if (is_nacl) { +- # TODO(https://crbug.com/1231236): Use -ffile-compilation-dir= here. +- cflags += [ +- "-Xclang", +- "-fdebug-compilation-dir", +- "-Xclang", +- ".", +- ] +- } else { +- # -ffile-compilation-dir is an alias for both -fdebug-compilation-dir= +- # and -fcoverage-compilation-dir=. +- cflags += [ "-ffile-compilation-dir=." ] +- +- # Convert absolute paths to relative paths. Expands to, for example: +- # -file-prefix-map /path/to/chromium/src=../.. +- swiftflags += [ +- "-file-prefix-map", +- rebase_path("//.", "") + "=" + rebase_path("//.", root_build_dir), +- ] +- } +- if (!is_win) { +- # We don't use clang -cc1as on Windows (yet? https://crbug.com/762167) +- asmflags = [ "-Wa,-fdebug-compilation-dir,." ] +- } +- +- if (is_win && use_lld) { +- if (symbol_level == 2 || (is_clang && using_sanitizer)) { +- # Absolutize source file paths for PDB. Pass the real build directory +- # if the pdb contains source-level debug information and if linker +- # reproducibility is not critical. +- ldflags += [ "/PDBSourcePath:" + rebase_path(root_build_dir) ] +- } else { +- # Use a fake fixed base directory for paths in the pdb to make the pdb +- # output fully deterministic and independent of the build directory. +- ldflags += [ "/PDBSourcePath:o:\fake\prefix" ] +- } +- } +- } +- + # Tells the compiler not to use absolute paths when passing the default + # paths to the tools it invokes. We don't want this because we don't + # really need it and it can mess up the RBE cache entries. +@@ -1602,28 +1507,6 @@ config("compiler_deterministic") { + } + } + +-config("clang_revision") { +- if (is_clang && clang_base_path == default_clang_base_path && +- current_os != "zos") { +- update_args = [ +- "--print-revision", +- "--verify-version=$clang_version", +- ] +- if (llvm_force_head_revision) { +- update_args += [ "--llvm-force-head-revision" ] +- } +- clang_revision = exec_script("//tools/clang/scripts/update.py", +- update_args, +- "trim string") +- +- # This is here so that all files get recompiled after a clang roll and +- # when turning clang on or off. (defines are passed via the command line, +- # and build system rebuild things when their commandline changes). Nothing +- # should ever read this define. +- defines = [ "CR_CLANG_REVISION=\"$clang_revision\"" ] +- } +-} +- + config("rustc_revision") { + if (rustc_revision != "") { + # Similar to the above config, this is here so that all files get recompiled +@@ -1983,10 +1871,6 @@ config("chromium_code") { + } + } else { + cflags = [ "-Wall" ] +- if (is_clang) { +- # Enable extra warnings for chromium_code when we control the compiler. +- cflags += [ "-Wextra" ] +- } + + # In Chromium code, we define __STDC_foo_MACROS in order to get the + # C99 macros on Mac and Linux. +@@ -1995,24 +1879,6 @@ config("chromium_code") { + "__STDC_FORMAT_MACROS", + ] + +- if (!is_debug && !using_sanitizer && current_cpu != "s390x" && +- current_cpu != "s390" && current_cpu != "ppc64" && +- current_cpu != "mips" && current_cpu != "mips64" && +- current_cpu != "riscv64" && current_cpu != "loong64") { +- # Non-chromium code is not guaranteed to compile cleanly with +- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are +- # disabled, so only do that for Release build. +- fortify_level = "2" +- +- # ChromeOS's toolchain supports a high-quality _FORTIFY_SOURCE=3 +- # implementation with a few custom glibc patches. Use that if it's +- # available. +- if (is_chromeos_device && !lacros_use_chromium_toolchain) { +- fortify_level = "3" +- } +- defines += [ "_FORTIFY_SOURCE=" + fortify_level ] +- } +- + if (is_apple) { + cflags_objc = [ "-Wimplicit-retain-self" ] + cflags_objcc = [ "-Wimplicit-retain-self" ] +@@ -2442,7 +2325,8 @@ config("default_stack_frames") { + # [0]: https://pinpoint-dot-chromeperf.appspot.com/job/147634a8be0000 + # [1]: https://pinpoint-dot-chromeperf.appspot.com/job/132bc772be0000 + # [2]: https://crrev.com/c/5447532 +-config("optimize") { ++config("optimize") { } ++config("xoptimize") { + if (is_win) { + # clang-cl's /O2 corresponds to clang's -O3, and really want -O2 for + # consistency with the other platforms. +@@ -2450,7 +2317,8 @@ config("optimize") { + } + + # Turn off optimizations. +-config("no_optimize") { ++config("no_optimize") { } ++config("xno_optimize") { + if (is_win) { + cflags = [ + "/Od", # Disable optimization. +@@ -2490,7 +2358,8 @@ config("no_optimize") { + # Turns up the optimization level. Used to explicitly enable -O2 instead of + # -Os for select targets on platforms that use optimize_for_size. No-op + # elsewhere. +-config("optimize_max") { ++config("optimize_max") { } ++config("xoptimize_max") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2523,7 +2392,8 @@ config("optimize_max") { + # + # TODO(crbug.com/41259697) - rework how all of these configs are related + # so that we don't need this disclaimer. +-config("optimize_speed") { ++config("optimize_speed") { } ++config("xoptimize_speed") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2552,7 +2422,8 @@ config("optimize_speed") { + } + } + +-config("optimize_fuzzing") { ++config("optimize_fuzzing") { } ++config("xoptimize_fuzzing") { + cflags = [ "-O1" ] + common_optimize_on_cflags + rustflags = [ "-Copt-level=1" ] + ldflags = common_optimize_on_ldflags +@@ -2685,7 +2556,8 @@ config("win_pdbaltpath") { + } + + # Full symbols. +-config("symbols") { ++config("symbols") { } ++config("xsymbols") { + rustflags = [] + configs = [] + if (is_win) { +@@ -2835,7 +2707,8 @@ config("symbols") { + # Minimal symbols. + # This config guarantees to hold symbol for stack trace which are shown to user + # when crash happens in unittests running on buildbot. +-config("minimal_symbols") { ++config("minimal_symbols") { } ++config("xminimal_symbols") { + rustflags = [] + if (is_win) { + # Functions, files, and line tables only. +@@ -2920,7 +2793,8 @@ config("minimal_symbols") { + # This configuration contains function names only. That is, the compiler is + # told to not generate debug information and the linker then just puts function + # names in the final debug information. +-config("no_symbols") { ++config("no_symbols") { } ++config("xno_symbols") { + if (is_win) { + ldflags = [ "/DEBUG" ] + diff --git a/chromium-125-ffmpeg-5.x-reordered_opaque.patch b/chromium-125-ffmpeg-5.x-reordered_opaque.patch new file mode 100644 index 0000000..43f12c2 --- /dev/null +++ b/chromium-125-ffmpeg-5.x-reordered_opaque.patch @@ -0,0 +1,105 @@ +commit 62274859104bd828373ae406aa9309e610449ac5 +Author: Ted Meyer +Date: Fri Mar 22 19:56:55 2024 +0000 + + Replace deprecated use of AVCodecContext::reordered_opaque + + We can use the AV_CODEC_FLAG_COPY_OPAQUE flag on the codec context + now to trigger timestamp propagation. + + Bug: 330573128 + Change-Id: I6bc57241a35ab5283742aad8d42acb4dc5e85858 + Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5384308 + Commit-Queue: Ted (Chromium) Meyer + Reviewed-by: Dan Sanders + Cr-Commit-Position: refs/heads/main@{#1277051} + +diff --git a/media/filters/ffmpeg_video_decoder.cc b/media/filters/ffmpeg_video_decoder.cc +index bd75477feeabb..8a658a58caac5 100644 +--- a/media/filters/ffmpeg_video_decoder.cc ++++ b/media/filters/ffmpeg_video_decoder.cc +@@ -134,7 +134,7 @@ bool FFmpegVideoDecoder::IsCodecSupported(VideoCodec codec) { + } + + FFmpegVideoDecoder::FFmpegVideoDecoder(MediaLog* media_log) +- : media_log_(media_log) { ++ : media_log_(media_log), timestamp_map_(128) { + DVLOG(1) << __func__; + DETACH_FROM_SEQUENCE(sequence_checker_); + } +@@ -363,8 +363,10 @@ bool FFmpegVideoDecoder::FFmpegDecode(const DecoderBuffer& buffer) { + DCHECK(packet->data); + DCHECK_GT(packet->size, 0); + +- // Let FFmpeg handle presentation timestamp reordering. +- codec_context_->reordered_opaque = buffer.timestamp().InMicroseconds(); ++ const int64_t timestamp = buffer.timestamp().InMicroseconds(); ++ const TimestampId timestamp_id = timestamp_id_generator_.GenerateNextId(); ++ timestamp_map_.Put(std::make_pair(timestamp_id, timestamp)); ++ packet->opaque = reinterpret_cast(timestamp_id.GetUnsafeValue()); + } + FFmpegDecodingLoop::DecodeStatus decode_status = decoding_loop_->DecodePacket( + packet, base::BindRepeating(&FFmpegVideoDecoder::OnNewFrame, +@@ -423,7 +425,12 @@ bool FFmpegVideoDecoder::OnNewFrame(AVFrame* frame) { + } + gfx::Size natural_size = aspect_ratio.GetNaturalSize(visible_rect); + +- const auto pts = base::Microseconds(frame->reordered_opaque); ++ const auto ts_id = TimestampId(reinterpret_cast(frame->opaque)); ++ const auto ts_lookup = timestamp_map_.Get(ts_id); ++ if (ts_lookup == timestamp_map_.end()) { ++ return false; ++ } ++ const auto pts = base::Microseconds(std::get<1>(*ts_lookup)); + auto video_frame = VideoFrame::WrapExternalDataWithLayout( + opaque->layout, visible_rect, natural_size, opaque->data, opaque->size, + pts); +@@ -482,8 +482,10 @@ bool FFmpegVideoDecoder::ConfigureDecoder(const VideoDecoderConfig& config, + codec_context_->thread_count = GetFFmpegVideoDecoderThreadCount(config); + codec_context_->thread_type = + FF_THREAD_SLICE | (low_delay ? 0 : FF_THREAD_FRAME); ++ + codec_context_->opaque = this; + codec_context_->get_buffer2 = GetVideoBufferImpl; ++ codec_context_->flags |= AV_CODEC_FLAG_COPY_OPAQUE; + + if (decode_nalus_) { + codec_context_->flags2 |= AV_CODEC_FLAG2_CHUNKS; +diff --git a/media/filters/ffmpeg_video_decoder.h b/media/filters/ffmpeg_video_decoder.h +index d02cb89c3ddf7..0a2de1c623fff 100644 +--- a/media/filters/ffmpeg_video_decoder.h ++++ b/media/filters/ffmpeg_video_decoder.h +@@ -7,10 +7,12 @@ + + #include + ++#include "base/containers/lru_cache.h" + #include "base/functional/callback.h" + #include "base/memory/raw_ptr.h" + #include "base/memory/scoped_refptr.h" + #include "base/sequence_checker.h" ++#include "base/types/id_type.h" + #include "media/base/frame_buffer_pool.h" + #include "media/base/supported_video_decoder_config.h" + #include "media/base/video_decoder.h" +@@ -87,6 +89,20 @@ class MEDIA_EXPORT FFmpegVideoDecoder : public VideoDecoder { + // FFmpeg structures owned by this object. + std::unique_ptr codec_context_; + ++ // The gist here is that timestamps need to be 64 bits to store microsecond ++ // precision. A 32 bit integer would overflow at ~35 minutes at this level of ++ // precision. We can't cast the timestamp to the void ptr object used by the ++ // opaque field in ffmpeg then, because it would lose data on a 32 bit build. ++ // However, we don't actually have 2^31 timestamped frames in a single ++ // playback, so it's fine to use the 32 bit value as a key in a map which ++ // contains the actual timestamps. Additionally, we've in the past set 128 ++ // outstanding frames for re-ordering as a limit for cross-thread decoding ++ // tasks, so we'll do that here too with the LRU cache. ++ using TimestampId = base::IdType; ++ ++ TimestampId::Generator timestamp_id_generator_; ++ base::LRUCache timestamp_map_; ++ + VideoDecoderConfig config_; + + scoped_refptr frame_pool_; diff --git a/chromium-126-quiche-interator.patch b/chromium-126-quiche-interator.patch new file mode 100644 index 0000000..60a9e98 --- /dev/null +++ b/chromium-126-quiche-interator.patch @@ -0,0 +1,12 @@ +diff -up chromium-126.0.6478.26/net/third_party/quiche/src/quiche/quic/core/quic_interval_deque.h.me chromium-126.0.6478.26/net/third_party/quiche/src/quiche/quic/core/quic_interval_deque.h +--- chromium-126.0.6478.26/net/third_party/quiche/src/quiche/quic/core/quic_interval_deque.h.me 2024-06-03 15:01:54.724207324 +0200 ++++ chromium-126.0.6478.26/net/third_party/quiche/src/quiche/quic/core/quic_interval_deque.h 2024-06-03 14:58:16.244189794 +0200 +@@ -144,7 +144,7 @@ class QUICHE_NO_EXPORT QuicIntervalDeque + // for efficient std::lower_bound() calls. + class QUICHE_NO_EXPORT Iterator { + public: +- using iterator_category = std::random_access_iterator_tag; ++ using iterator_category = std::forward_iterator_tag; + using value_type = T; + using difference_type = std::ptrdiff_t; + using pointer = T*; diff --git a/chromium-127-bindgen.patch b/chromium-127-bindgen.patch new file mode 100644 index 0000000..884e367 --- /dev/null +++ b/chromium-127-bindgen.patch @@ -0,0 +1,21 @@ +author: Andres Salomon +description: fix bindgen-related stuff + +Also, the call to bindgen sets the path for libclang to +rust_bindgen_root, which is wrong. We're already passing +clang_base_path with the path to libclang, there's no reason that +we'd expect libclang to be in the same directory as bindgen. That +fix should probably go upstream. + + +--- a/build/rust/rust_bindgen.gni ++++ b/build/rust/rust_bindgen.gni +@@ -18,7 +18,7 @@ if (host_os == "win") { + + # On Windows, the libclang.dll is beside the bindgen.exe, otherwise it is in + # ../lib. +-_libclang_path = rust_bindgen_root ++_libclang_path = clang_base_path + if (host_os == "win") { + _libclang_path += "/bin" + } else { diff --git a/chromium-127-constexpr.patch b/chromium-127-constexpr.patch new file mode 100644 index 0000000..8f2eae9 --- /dev/null +++ b/chromium-127-constexpr.patch @@ -0,0 +1,108 @@ +author: Andres Salomon + +../../services/network/shared_dictionary/simple_url_pattern_matcher.cc:31:34: error: constexpr variable 'kDefaultOptions' must be initialized by a constant expression + 31 | constexpr liburlpattern::Options kDefaultOptions = {.delimiter_list = "", + | ^ ~~~~~~~~~~~~~~~~~~~~~~ + 32 | .prefix_list = "", + | ~~~~~~~~~~~~~~~~~~ + 33 | .sensitive = true, + | ~~~~~~~~~~~~~~~~~~ + 34 | .strict = true}; + | ~~~~~~~~~~~~~~~ + +--- a/services/network/shared_dictionary/simple_url_pattern_matcher.cc ++++ b/services/network/shared_dictionary/simple_url_pattern_matcher.cc +@@ -28,17 +28,17 @@ namespace network { + namespace { + + // https://urlpattern.spec.whatwg.org/#default-options +-constexpr liburlpattern::Options kDefaultOptions = {.delimiter_list = "", ++const liburlpattern::Options kDefaultOptions = {.delimiter_list = "", + .prefix_list = "", + .sensitive = true, + .strict = true}; + // https://urlpattern.spec.whatwg.org/#hostname-options +-constexpr liburlpattern::Options kHostnameOptions = {.delimiter_list = ".", ++const liburlpattern::Options kHostnameOptions = {.delimiter_list = ".", + .prefix_list = "", + .sensitive = true, + .strict = true}; + // https://urlpattern.spec.whatwg.org/#pathname-options +-constexpr liburlpattern::Options kPathnameOptions = {.delimiter_list = "/", ++const liburlpattern::Options kPathnameOptions = {.delimiter_list = "/", + .prefix_list = "/", + .sensitive = true, + .strict = true}; +--- a/components/autofill/core/browser/data_model/addresses/autofill_i18n_api.h ++++ b/components/autofill/core/browser/data_model/addresses/autofill_i18n_api.h +@@ -16,8 +16,8 @@ namespace autofill::i18n_model_definitio + // Country code that represents autofill's legacy address hierarchy model as + // stored `kAutofillModelRules`. As a workaround for GCC we declare the + // std::string constexpr first. +-constexpr inline std::string kLegacyHierarchyCountryCodeString{"XX"}; +-constexpr AddressCountryCode kLegacyHierarchyCountryCode = ++[[clang::no_destroy]] const inline std::string kLegacyHierarchyCountryCodeString{"XX"}; ++[[clang::no_destroy]] const AddressCountryCode kLegacyHierarchyCountryCode = + AddressCountryCode(kLegacyHierarchyCountryCodeString); + + // Creates an instance of the address hierarchy model corresponding to the +--- a/components/omnibox/browser/on_device_tail_model_service.cc ++++ b/components/omnibox/browser/on_device_tail_model_service.cc +@@ -26,7 +26,7 @@ + + namespace { + // Constants for TFlite model validation. +-constexpr std::string kTestPrefix = "google m"; ++const std::string kTestPrefix = "google m"; + constexpr std::string_view kModelValidationSwitchName = + "omnibox-on-device-tail-model-validation"; + +--- a/chrome/browser/ui/lens/lens_overlay_url_builder.cc ++++ b/chrome/browser/ui/lens/lens_overlay_url_builder.cc +@@ -80,7 +80,7 @@ + inline constexpr char kSecActQueryParamKey[] = "sec_act"; + + // The list of query parameters to ignore when comparing search URLs. +-inline constexpr std::string kIgnoredSearchUrlQueryParameters[] = { ++inline const std::string kIgnoredSearchUrlQueryParameters[] = { + kViewportWidthQueryParamKey, kViewportHeightQueryParamKey, + kXSRFTokenQueryParamKey, kSecActQueryParamKey, + kModeParameterKey, kToolbeltModeParameterKey}; +--- a/content/public/test/prefetch_test_util.h ++++ b/content/public/test/prefetch_test_util.h +@@ -15,7 +15,7 @@ namespace content::test { + + using PrefetchContainerIdForTesting = + base::StrongAlias; +-inline constexpr PrefetchContainerIdForTesting ++inline const PrefetchContainerIdForTesting + InvalidPrefetchContainerIdForTesting = PrefetchContainerIdForTesting(""); + + class TestPrefetchWatcherImpl; +--- a/components/history_embeddings/ml_answerer.cc ++++ b/components/history_embeddings/ml_answerer.cc +@@ -24,7 +24,7 @@ using optimization_guide::proto::Passage + + namespace { + +-static constexpr std::string kPassageIdToken = "ID"; ++static const std::string kPassageIdToken = "ID"; + // Estimated token count of the preamble text in prompt. + static constexpr size_t kPreambleTokenBufferSize = 100u; + // Estimated token count of overhead text per passage. +--- a/components/compose/core/browser/config.cc ++++ b/components/compose/core/browser/config.cc +@@ -46,11 +46,11 @@ + } + + constexpr auto DEFAULT_COMPOSE_ENABLED_COUNTRIES = +- base::MakeFixedFlatSet({"bd", "ca", "gh", "in", "ke", "my", ++ base::MakeFixedFlatSet({"bd", "ca", "gh", "in", "ke", "my", + "ng", "ph", "pk", "sg", "tz", "ug", + "us", "zm", "zw"}); + constexpr auto DEFAULT_PROACTIVE_NUDGE_ENABLED_COUNTRIES = +- base::MakeFixedFlatSet({"us"}); ++ base::MakeFixedFlatSet({"us"}); + + } // namespace + diff --git a/chromium-127-rust-clanglib.patch b/chromium-127-rust-clanglib.patch new file mode 100644 index 0000000..6e9143f --- /dev/null +++ b/chromium-127-rust-clanglib.patch @@ -0,0 +1,57 @@ +diff -up chromium-127.0.6533.72/build/rust/rust_bindgen.gni.me chromium-127.0.6533.72/build/rust/rust_bindgen.gni +--- chromium-127.0.6533.72/build/rust/rust_bindgen.gni.me 2024-07-25 16:11:18.754551595 +0200 ++++ chromium-127.0.6533.72/build/rust/rust_bindgen.gni 2024-07-25 16:11:33.997837660 +0200 +@@ -22,7 +22,7 @@ _libclang_path = rust_bindgen_root + if (host_os == "win") { + _libclang_path += "/bin" + } else { +- _libclang_path += "/lib" ++ _libclang_path += "/lib64" + } + + # Template to build Rust/C bindings with bindgen. +@@ -105,6 +105,14 @@ + # it's declared. + deps = [ ":${_rust_bindgen_generator_name}_static_fns" ] + } ++ ++ # Default configs include "-fvisibility=hidden", and for some reason this ++ # causes bindgen not to emit function bindings. Override it. ++ args = [] ++ if (!is_win) { ++ args += [ "-fvisibility=default" ] ++ } ++ + if (defined(cpp) && cpp) { + # This cfg is used to control the bindings public export. + rustflags = [ +--- chromium-132.0.6811.2/build/rust/rust_bindgen_generator.gni 2024/11/07 11:34:54 1.1 ++++ chromium-132.0.6811.2/build/rust/rust_bindgen_generator.gni 2024/11/07 11:35:41 +@@ -22,7 +22,7 @@ + if (host_os == "win") { + _libclang_path += "/bin" + } else { +- _libclang_path += "/lib" ++ _libclang_path += "/lib64" + } + + # Template to build Rust/C bindings with bindgen. +@@ -266,6 +266,8 @@ + # causes bindgen not to emit function bindings. Override it. + if (!is_win) { + args += [ "-fvisibility=default" ] ++ args += [ "-I/usr/include/c++/v1" ] ++ args += [ "-I/usr/lib64/clang/" + clang_version + "/include" ] + } + + if (is_win) { +--- chromium-132.0.6811.2/build/config/gcc/BUILD.gn 2024/11/07 14:13:22 1.1 ++++ chromium-132.0.6811.2/build/config/gcc/BUILD.gn 2024/11/07 14:13:45 +@@ -32,7 +32,6 @@ + # See http://gcc.gnu.org/wiki/Visibility + config("symbol_visibility_hidden") { + cflags = [ "-fvisibility=hidden" ] +- rustflags = [ "-Zdefault-visibility=hidden" ] + + # Visibility attribute is not supported on AIX. + if (current_os != "aix") { diff --git a/chromium-129-revert-AVFMT_FLAG_NOH264PARSE.patch b/chromium-129-revert-AVFMT_FLAG_NOH264PARSE.patch new file mode 100644 index 0000000..0e418c9 --- /dev/null +++ b/chromium-129-revert-AVFMT_FLAG_NOH264PARSE.patch @@ -0,0 +1,12 @@ +--- chromium-133.0.6943.16/media/filters/ffmpeg_glue.cc 2025/01/20 15:06:56 1.1 ++++ chromium-133.0.6943.16/media/filters/ffmpeg_glue.cc 2025/01/20 15:07:32 +@@ -111,7 +111,8 @@ + + // We don't allow H.264 parsing during demuxing since we have our own parser + // and the ffmpeg one increases memory usage unnecessarily. +- format_context_->flags |= AVFMT_FLAG_NOH264PARSE; ++ // TODO(crbug.com/355485812): Re-enable this flag. ++ // format_context_->flags |= AVFMT_FLAG_NOH264PARSE; + + // Ensures format parsing errors will bail out. From an audit on 11/2017, all + // instances were real failures. Solves bugs like http://crbug.com/710791. diff --git a/chromium-131-clang-stack-protector.patch b/chromium-131-clang-stack-protector.patch new file mode 100644 index 0000000..31fc199 --- /dev/null +++ b/chromium-131-clang-stack-protector.patch @@ -0,0 +1,19 @@ +--- chromium-131.0.6778.69/base/compiler_specific.h 2024/11/18 15:29:10 1.1 ++++ chromium-131.0.6778.69/base/compiler_specific.h 2024/11/18 16:16:01 +@@ -424,10 +424,12 @@ + // // Stack canary checks will not be performed in this body. + // } + // ``` +-#if __has_cpp_attribute(gnu::no_stack_protector) +-#define NO_STACK_PROTECTOR [[gnu::no_stack_protector]] +-#elif __has_cpp_attribute(gnu::optimize) +-#define NO_STACK_PROTECTOR [[gnu::optimize("-fno-stack-protector")]] ++#if defined(COMPILER_GCC) || defined(__clang__) ++#if HAS_ATTRIBUTE(__no_stack_protector__) ++#define NO_STACK_PROTECTOR __attribute__((__no_stack_protector__)) ++#else ++#define NO_STACK_PROTECTOR __attribute__((__optimize__("-fno-stack-protector"))) ++#endif + #else + #define NO_STACK_PROTECTOR + #endif diff --git a/chromium-131-fix-qt-ui.pach b/chromium-131-fix-qt-ui.pach new file mode 100644 index 0000000..6be3739 --- /dev/null +++ b/chromium-131-fix-qt-ui.pach @@ -0,0 +1,18 @@ +From b9075d0e1f687f9a5cf80a7778bde99cece9fdf7 Mon Sep 17 00:00:00 2001 +From: Than Ngo +Date: Sat, 23 Nov 2024 12:33:22 +0100 +Subject: [PATCH] Enable qt-ui + + +diff -up chromium-131.0.6778.85/ui/qt/qt_shim.cc.me chromium-131.0.6778.85/ui/qt/qt_shim.cc +--- chromium-131.0.6778.85/ui/qt/qt_shim.cc.me 2024-11-23 10:04:16.789121846 +0100 ++++ chromium-131.0.6778.85/ui/qt/qt_shim.cc 2024-11-23 11:40:02.905064702 +0100 +@@ -265,7 +265,7 @@ FontRenderParams QtShim::GetFontRenderPa + FontDescription QtShim::GetFontDescription() const { + QFont font = app_.font(); + return { +- .family = String(font.family().toStdString().c_str()), ++ .family = String(font.family().toUtf8().constData()), + .size_pixels = font.pixelSize(), + .size_points = font.pointSize(), + .is_italic = IsStyleItalic(font.style()), diff --git a/chromium-132-pdfium-explicit-template.patch b/chromium-132-pdfium-explicit-template.patch new file mode 100644 index 0000000..81dd0ed --- /dev/null +++ b/chromium-132-pdfium-explicit-template.patch @@ -0,0 +1,11 @@ +--- chromium-132.0.6834.15/pdf/pdfium/pdfium_api_wrappers.cc 2024/12/03 16:47:07 1.1 ++++ chromium-132.0.6834.15/pdf/pdfium/pdfium_api_wrappers.cc 2024/12/03 16:48:54 +@@ -147,7 +147,7 @@ + + // Number of characters, including the NUL. + const size_t expected_size = base::checked_cast(buflen_bytes / 2); +- PDFiumAPIStringBufferAdapter adapter(&name, expected_size, ++ PDFiumAPIStringBufferAdapter adapter(&name, expected_size, + /*check_expected_size=*/true); + unsigned long actual_buflen_bytes = 0; // NOLINT(runtime/int) + bool result = diff --git a/chromium-133-bring_back_and_disable_allowlist.patch b/chromium-133-bring_back_and_disable_allowlist.patch new file mode 100644 index 0000000..0933a07 --- /dev/null +++ b/chromium-133-bring_back_and_disable_allowlist.patch @@ -0,0 +1,60 @@ +--- chromium-133.0.6943.98/media/base/media_switches.h 2025/02/18 15:56:48 1.1 ++++ chromium-133.0.6943.98/media/base/media_switches.h 2025/02/18 15:57:20 +@@ -516,6 +516,8 @@ + + MEDIA_EXPORT BASE_DECLARE_FEATURE(kUseWindowBoundsForPip); + ++MEDIA_EXPORT BASE_DECLARE_FEATURE(kFFmpegAllowLists); ++ + MEDIA_EXPORT BASE_DECLARE_FEATURE(kMediaLogToConsole); + + MEDIA_EXPORT BASE_DECLARE_FEATURE(kLibvpxUseChromeThreads); +--- chromium-133.0.6943.98/media/base/media_switches.cc 2025/02/18 15:56:07 1.1 ++++ chromium-133.0.6943.98/media/base/media_switches.cc 2025/02/18 15:56:48 +@@ -1657,6 +1657,11 @@ + "UseWindowBoundsForPip", + base::FEATURE_ENABLED_BY_DEFAULT); + ++// Enables FFmpeg allow lists for supported codecs / containers. ++BASE_FEATURE(kFFmpegAllowLists, ++ "FFmpegAllowLists", ++ base::FEATURE_DISABLED_BY_DEFAULT); ++ + #if BUILDFLAG(IS_WIN) + // Enables audio offload when supported by endpoints. + BASE_FEATURE(kAudioOffload, "AudioOffload", base::FEATURE_DISABLED_BY_DEFAULT); +--- chromium-133.0.6943.98/media/ffmpeg/ffmpeg_common.cc 2025/02/18 16:03:18 1.1 ++++ chromium-133.0.6943.98/media/ffmpeg/ffmpeg_common.cc 2025/02/18 16:04:02 +@@ -19,6 +19,7 @@ + #include "media/base/audio_decoder_config.h" + #include "media/base/decoder_buffer.h" + #include "media/base/encryption_scheme.h" ++#include "media/base/media_switches.h" + #include "media/base/media_util.h" + #include "media/base/supported_types.h" + #include "media/base/video_aspect_ratio.h" +@@ -76,7 +76,8 @@ + void ApplyCodecContextSecuritySettings(AVCodecContext* codec_context) { + // Future versions of ffmpeg may copy the allow list from the format + // context. +- if (!codec_context->codec_whitelist) { ++ if (base::FeatureList::IsEnabled(kFFmpegAllowLists) && ++ !codec_context->codec_whitelist) { + // Note: FFmpeg will try to free this string, so we must duplicate it. + codec_context->codec_whitelist = + av_strdup(codec_context->codec_type == AVMEDIA_TYPE_AUDIO +--- chromium-133.0.6943.98/media/filters/ffmpeg_glue.cc 2025/02/18 16:06:06 1.1 ++++ chromium-133.0.6943.98/media/filters/ffmpeg_glue.cc 2025/02/18 16:07:06 +@@ -131,8 +131,10 @@ + // memory usage. + // + // Note: FFmpeg will try to free these strings, so we must duplicate them. +- format_context_->codec_whitelist = av_strdup(GetAllowedAudioDecoders()); +- format_context_->format_whitelist = av_strdup(GetAllowedDemuxers()); ++ if (base::FeatureList::IsEnabled(kFFmpegAllowLists)) { ++ format_context_->codec_whitelist = av_strdup(GetAllowedAudioDecoders()); ++ format_context_->format_whitelist = av_strdup(GetAllowedDemuxers()); ++ } + } + + bool FFmpegGlue::OpenContext(bool is_local_file) { diff --git a/chromium-134-revert-rust-adler2.patch b/chromium-134-revert-rust-adler2.patch new file mode 100644 index 0000000..7650bb5 --- /dev/null +++ b/chromium-134-revert-rust-adler2.patch @@ -0,0 +1,57 @@ +diff --git a/build/rust/std/BUILD.gn b/build/rust/std/BUILD.gn +index 68b085be200fa..6b996aa1fe386 100644 +--- a/build/rust/std/BUILD.gn ++++ b/build/rust/std/BUILD.gn +@@ -89,7 +89,7 @@ if (toolchain_has_rust) { + # These are no longer present in the Windows toolchain. + stdlib_files += [ + "addr2line", +- "adler", ++ "adler2", + "gimli", + "libc", + "memchr", +diff --git a/build/rust/std/rules/BUILD.gn b/build/rust/std/rules/BUILD.gn +index 6b59b0894d365..e44d638832b6f 100644 +--- a/build/rust/std/rules/BUILD.gn ++++ b/build/rust/std/rules/BUILD.gn +@@ -65,22 +70,22 @@ cargo_crate("addr2line") { + output_dir = + "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" + } +-cargo_crate("adler") { ++cargo_crate("adler2") { + crate_type = "rlib" +- crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/adler-1.0.2/src/lib.rs" ++ crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/adler2-2.0.0/src/lib.rs" + sources = [ +- "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/adler-1.0.2/src/algo.rs", +- "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/adler-1.0.2/src/lib.rs", ++ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/adler2-2.0.0/src/algo.rs", ++ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/adler2-2.0.0/src/lib.rs", + ] + inputs = [] + no_std = true + + # Unit tests skipped. Generate with --with-tests to include them. + build_native_rust_unit_tests = false +- edition = "2015" +- cargo_pkg_version = "1.0.2" +- cargo_pkg_authors = "Jonas Schievink " +- cargo_pkg_name = "adler" ++ edition = "2021" ++ cargo_pkg_version = "2.0.0" ++ cargo_pkg_authors = "Jonas Schievink , oyvindln " ++ cargo_pkg_name = "adler2" + cargo_pkg_description = + "A simple clean-room implementation of the Adler-32 checksum" + library_configs -= [ +@@ -1618,7 +1624,7 @@ cargo_crate("miniz_oxide") { + ] + executable_configs += [ "//build/config/compiler:no_chromium_code" ] + deps = [ +- ":adler", ++ ":adler2", + ":compiler_builtins", + ":rustc_std_workspace_alloc", + ":rustc_std_workspace_core", diff --git a/chromium-134-type-mismatch-error.patch b/chromium-134-type-mismatch-error.patch new file mode 100644 index 0000000..aabf83f --- /dev/null +++ b/chromium-134-type-mismatch-error.patch @@ -0,0 +1,13 @@ +diff -up chromium-134.0.6998.23/base/containers/to_value_list.h.me chromium-134.0.6998.23/base/containers/to_value_list.h +--- chromium-134.0.6998.23/base/containers/to_value_list.h.me 2025-02-23 22:39:33.369668072 +0100 ++++ chromium-134.0.6998.23/base/containers/to_value_list.h 2025-02-23 22:42:42.653990901 +0100 +@@ -36,8 +36,7 @@ Value::List ToValueList(Range&& range, P + auto container = Value::List::with_capacity(std::ranges::size(range)); + std::ranges::for_each( + std::forward(range), +- [&](T&& value) { container.Append(std::forward(value)); }, +- std::move(proj)); ++ [&](auto&& value) { container.Append(std::invoke(proj, std::forward(value))); }); + return container; + } + diff --git a/chromium-135.0.7049.52.tar.xz b/chromium-135.0.7049.52.tar.xz new file mode 100644 index 0000000..47c4691 --- /dev/null +++ b/chromium-135.0.7049.52.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:620ed41ac1c1bd465c775376deaafd43fd0f6cdd2be1971ed87511683728f5a7 +size 7017155948 diff --git a/chromium-6.0.406.0-system-gyp-v8.patch b/chromium-6.0.406.0-system-gyp-v8.patch new file mode 100644 index 0000000..b75304a --- /dev/null +++ b/chromium-6.0.406.0-system-gyp-v8.patch @@ -0,0 +1,249 @@ +--- chromium/src/build/all.gyp 2010-11-25 19:17:16.000000000 +0100 ++++ new/src/build/all.gyp 2010-11-25 21:05:09.413000018 +0100 +@@ -59,7 +59,7 @@ + 'conditions': [ + ['javascript_engine=="v8"', { + 'dependencies': [ +- '../v8/tools/gyp/v8.gyp:*', ++ 'linux/system.gyp:v8', + ], + }], + ['OS=="mac" or OS=="linux"', { +@@ -149,167 +149,6 @@ + }], + ], + }, # target_name: All +- { +- 'target_name': 'chromium_builder_tests', +- 'type': 'none', +- 'dependencies': [ +- '../base/base.gyp:base_unittests', +- '../chrome/chrome.gyp:browser_tests', +- '../chrome/chrome.gyp:interactive_ui_tests', +- '../chrome/chrome.gyp:nacl_ui_tests', +- '../chrome/chrome.gyp:nacl_sandbox_tests', +- '../chrome/chrome.gyp:safe_browsing_tests', +- '../chrome/chrome.gyp:sync_integration_tests', +- '../chrome/chrome.gyp:sync_unit_tests', +- '../chrome/chrome.gyp:ui_tests', +- '../chrome/chrome.gyp:unit_tests', +- '../content/content.gyp:content_unittests', +- '../crypto/crypto.gyp:crypto_unittests', +- '../ui/ui.gyp:gfx_unittests', +- '../gpu/gpu.gyp:gpu_unittests', +- '../gpu/gles2_conform_support/gles2_conform_support.gyp:gles2_conform_support', +- '../ipc/ipc.gyp:ipc_tests', +- '../jingle/jingle.gyp:jingle_unittests', +- '../media/media.gyp:media_unittests', +- '../net/net.gyp:net_unittests', +- '../printing/printing.gyp:printing_unittests', +- '../remoting/remoting.gyp:remoting_unittests', +- '../sql/sql.gyp:sql_unittests', +- '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_unittests', +- '../third_party/libphonenumber/libphonenumber.gyp:libphonenumber_unittests', +- 'temp_gyp/googleurl.gyp:googleurl_unittests', +- ], +- 'conditions': [ +- ['OS=="win"', { +- 'dependencies': [ +- '../chrome/chrome.gyp:installer_util_unittests', +- '../chrome/chrome.gyp:mini_installer_test', +- # mini_installer_tests depends on mini_installer. This should be +- # defined in installer.gyp. +- '../chrome/installer/mini_installer.gyp:mini_installer', +- '../chrome_frame/chrome_frame.gyp:chrome_frame_net_tests', +- '../chrome_frame/chrome_frame.gyp:chrome_frame_perftests', +- '../chrome_frame/chrome_frame.gyp:chrome_frame_reliability_tests', +- '../chrome_frame/chrome_frame.gyp:chrome_frame_tests', +- '../chrome_frame/chrome_frame.gyp:chrome_frame_unittests', +- '../chrome_frame/chrome_frame.gyp:npchrome_frame', +- '../courgette/courgette.gyp:courgette_unittests', +- '../sandbox/sandbox.gyp:sbox_integration_tests', +- '../sandbox/sandbox.gyp:sbox_unittests', +- '../sandbox/sandbox.gyp:sbox_validation_tests', +- '../views/views.gyp:views_unittests', +- '../third_party/WebKit/Source/WebKit/chromium/WebKit.gyp:copy_TestNetscapePlugIn', +- # TODO(nsylvain) ui_tests.exe depends on test_shell_common. +- # This should: +- # 1) not be the case. OR. +- # 2) be expressed in the ui tests dependencies. +- '../webkit/webkit.gyp:test_shell_common', +- ], +- }], +- ], +- }, # target_name: chromium_builder_tests +- { +- 'target_name': 'chromium_2010_builder_tests', +- 'type': 'none', +- 'dependencies': [ +- '../chrome/chrome.gyp:chrome', +- '../base/base.gyp:base_unittests', +- '../chrome/chrome.gyp:browser_tests', +- '../chrome/chrome.gyp:interactive_ui_tests', +- # TODO(bradnelson): fix and enable. +- #'../chrome/chrome.gyp:nacl_ui_tests', +- #'../chrome/chrome.gyp:nacl_sandbox_tests', +- '../chrome/chrome.gyp:safe_browsing_tests', +- '../chrome/chrome.gyp:sync_integration_tests', +- '../chrome/chrome.gyp:sync_unit_tests', +- '../chrome/chrome.gyp:ui_tests', +- '../chrome/chrome.gyp:unit_tests', +- '../content/content.gyp:content_unittests', +- '../crypto/crypto.gyp:crypto_unittests', +- '../ui/ui.gyp:gfx_unittests', +- '../gpu/gpu.gyp:gpu_unittests', +- '../ipc/ipc.gyp:ipc_tests', +- '../jingle/jingle.gyp:jingle_unittests', +- '../media/media.gyp:media_unittests', +- '../net/net.gyp:net_unittests', +- '../printing/printing.gyp:printing_unittests', +- '../remoting/remoting.gyp:remoting_unittests', +- '../sql/sql.gyp:sql_unittests', +- '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_unittests', +- '../third_party/libphonenumber/libphonenumber.gyp:libphonenumber_unittests', +- 'temp_gyp/googleurl.gyp:googleurl_unittests', +- ], +- 'conditions': [ +- ['OS=="win"', { +- 'dependencies': [ +- '../chrome/chrome.gyp:installer_util_unittests', +- # TODO(bradnelson): fix and enable. +- #'../chrome/chrome.gyp:mini_installer_test', +- # mini_installer_tests depends on mini_installer. This should be +- # defined in installer.gyp. +- #'../chrome/installer/mini_installer.gyp:mini_installer', +- #'../chrome_frame/chrome_frame.gyp:chrome_frame_net_tests', +- #'../chrome_frame/chrome_frame.gyp:chrome_frame_perftests', +- #'../chrome_frame/chrome_frame.gyp:chrome_frame_reliability_tests', +- #'../chrome_frame/chrome_frame.gyp:chrome_frame_tests', +- #'../chrome_frame/chrome_frame.gyp:chrome_frame_unittests', +- #'../chrome_frame/chrome_frame.gyp:npchrome_frame', +- '../courgette/courgette.gyp:courgette_unittests', +- '../sandbox/sandbox.gyp:sbox_integration_tests', +- '../sandbox/sandbox.gyp:sbox_unittests', +- '../sandbox/sandbox.gyp:sbox_validation_tests', +- '../views/views.gyp:views_unittests', +- '../third_party/WebKit/Source/WebKit/chromium/WebKit.gyp:copy_TestNetscapePlugIn', +- # TODO(nsylvain) ui_tests.exe depends on test_shell_common. +- # This should: +- # 1) not be the case. OR. +- # 2) be expressed in the ui tests dependencies. +- '../webkit/webkit.gyp:test_shell_common', +- ], +- }], +- ], +- }, # target_name: chromium_2010_builder_tests +- { +- 'target_name': 'chromium_builder_nacl_win_integration', +- 'type': 'none', +- 'dependencies': [ +- 'chromium_builder_qa', # needed for pyauto +- 'chromium_builder_tests', +- ], +- }, # target_name: chromium_builder_nacl_win_integration +- { +- 'target_name': 'chromium_builder_perf', +- 'type': 'none', +- 'dependencies': [ +- 'chromium_builder_qa', # needed for pyauto +- '../chrome/chrome.gyp:performance_ui_tests', +- '../chrome/chrome.gyp:plugin_tests', +- '../chrome/chrome.gyp:sync_performance_tests', +- '../chrome/chrome.gyp:ui_tests', +- ], +- }, # target_name: chromium_builder_perf +- { +- 'target_name': 'chromium_gpu_builder', +- 'type': 'none', +- 'dependencies': [ +- '../chrome/chrome.gyp:gpu_tests', +- '../third_party/WebKit/Source/WebKit/chromium/WebKit.gyp:DumpRenderTree', +- ], +- }, # target_name: chromium_gpu_builder +- { +- 'target_name': 'chromium_builder_qa', +- 'type': 'none', +- 'dependencies': [ +- '../chrome/chrome.gyp:chromedriver', +- ], +- 'conditions': [ +- ['OS=="mac" or OS=="win" or (os_posix==1 and target_arch==python_arch)', { +- 'dependencies': [ +- '../chrome/chrome.gyp:pyautolib', +- ], +- }], +- ], +- }, # target_name: chromium_builder_qa + ], + 'conditions': [ + ['OS=="mac"', { +--- chromium/src/build/linux/system.gyp 2010-11-20 23:07:46.000000000 +0100 ++++ new/src/build/linux/system.gyp 2010-11-25 21:05:09.418000018 +0100 +@@ -340,6 +340,19 @@ + }]] + }, + { ++ 'target_name': 'v8', ++ 'type': 'settings', ++ 'conditions': [ ++ ['_toolset=="target"', { ++ 'link_settings': { ++ 'libraries': [ ++ '-lv8', ++ '-lvpx', ++ ], ++ }, ++ }]] ++ }, ++ { + 'target_name': 'gnome_keyring', + 'type': 'settings', + 'conditions': [ +--- chromium/src/net/net.gyp 2010-11-25 19:17:15.000000000 +0100 ++++ new/src/net/net.gyp 2010-11-25 21:05:09.427000018 +0100 +@@ -717,7 +717,7 @@ + 'conditions': [ + ['javascript_engine=="v8"', { + 'dependencies': [ +- '../v8/tools/gyp/v8.gyp:v8', ++ '../build/linux/system.gyp:v8', + ], + }], + ['chromeos==1', { +--- chromium/src/third_party/WebKit/Source/WebCore/WebCore.gyp/WebCore.gyp 2010-11-20 23:09:21.000000000 +0100 ++++ new/src/third_party/WebKit/Source/WebCore/WebCore.gyp/WebCore.gyp 2010-11-25 21:05:09.435000018 +0100 +@@ -789,7 +789,7 @@ + 'conditions': [ + ['javascript_engine=="v8"', { + 'dependencies': [ +- '<(chromium_src_dir)/v8/tools/gyp/v8.gyp:v8', ++ '<(chromium_src_dir)/build/linux/system.gyp:v8', + ], + 'conditions': [ + ['inside_chromium_build==1 and OS=="win" and component=="shared_library"', { +@@ -904,10 +904,10 @@ + 'conditions': [ + ['javascript_engine=="v8"', { + 'dependencies': [ +- '<(chromium_src_dir)/v8/tools/gyp/v8.gyp:v8', ++ '<(chromium_src_dir)/build/linux/system.gyp:v8', + ], + 'export_dependent_settings': [ +- '<(chromium_src_dir)/v8/tools/gyp/v8.gyp:v8', ++ '<(chromium_src_dir)/build/linux/system.gyp:v8', + ], + 'conditions': [ + ['inside_chromium_build==1 and OS=="win" and component=="shared_library"', { +@@ -1438,10 +1438,10 @@ + 'conditions': [ + ['javascript_engine=="v8"', { + 'dependencies': [ +- '<(chromium_src_dir)/v8/tools/gyp/v8.gyp:v8', ++ '<(chromium_src_dir)/build/linux/system.gyp:v8', + ], + 'export_dependent_settings': [ +- '<(chromium_src_dir)/v8/tools/gyp/v8.gyp:v8', ++ '<(chromium_src_dir)/build/linux/system.gyp:v8', + ], + }], + ['OS=="mac"', { diff --git a/chromium-6.0.425.0-ffmpeg-no-pkgconfig.patch b/chromium-6.0.425.0-ffmpeg-no-pkgconfig.patch new file mode 100644 index 0000000..8150e6f --- /dev/null +++ b/chromium-6.0.425.0-ffmpeg-no-pkgconfig.patch @@ -0,0 +1,23 @@ +diff -up chromium-6.0.425.0-20100603svn48830/third_party/ffmpeg/ffmpeg.gyp.BAD chromium-6.0.425.0-20100603svn48830/third_party/ffmpeg/ffmpeg.gyp +--- chromium-6.0.425.0-20100603svn48830/src/third_party/ffmpeg/ffmpeg.gyp.BAD 2010-06-03 13:48:45.196313786 -0400 ++++ chromium-6.0.425.0-20100603svn48830/src/third_party/ffmpeg/ffmpeg.gyp 2010-06-03 13:50:10.580325776 -0400 +@@ -818,12 +818,14 @@ + + # Add pkg-config result to include path when use_system_ffmpeg!=0 + ['use_system_ffmpeg!=0', { +- 'cflags': [ +- ' + + using std::string; + diff --git a/chromium-7.0.510.0-system-ffmpeg.patch b/chromium-7.0.510.0-system-ffmpeg.patch new file mode 100644 index 0000000..948b41c --- /dev/null +++ b/chromium-7.0.510.0-system-ffmpeg.patch @@ -0,0 +1,35 @@ +diff -up chromium-7.0.510.0/media/filters/ffmpeg_glue.cc.system-ffmpeg chromium-7.0.510.0/media/filters/ffmpeg_glue.cc +--- chromium-7.0.510.0/src/media/filters/ffmpeg_glue.cc.system-ffmpeg 2010-08-31 04:22:39.000000000 -0400 ++++ chromium-7.0.510.0/src/media/filters/ffmpeg_glue.cc 2010-09-01 10:50:30.259172512 -0400 +@@ -119,14 +119,14 @@ namespace media { + static const char kProtocol[] = "http"; + + // Fill out our FFmpeg protocol definition. +-static URLProtocol kFFmpegURLProtocol = { +- kProtocol, +- &OpenContext, +- &ReadContext, +- &WriteContext, +- &SeekContext, +- &CloseContext, +-}; ++// static URLProtocol kFFmpegURLProtocol = { ++// kProtocol, ++// &OpenContext, ++// &ReadContext, ++// &WriteContext, ++// &SeekContext, ++// &CloseContext, ++//}; + + FFmpegGlue::FFmpegGlue() { + // Before doing anything disable logging as it interferes with layout tests. +@@ -134,7 +134,7 @@ FFmpegGlue::FFmpegGlue() { + + // Register our protocol glue code with FFmpeg. + avcodec_init(); +- av_register_protocol2(&kFFmpegURLProtocol, sizeof(kFFmpegURLProtocol)); ++ // av_register_protocol2(&kFFmpegURLProtocol, sizeof(kFFmpegURLProtocol)); + av_lockmgr_register(&LockManagerOperation); + + // Now register the rest of FFmpeg. diff --git a/chromium-7.0.542.0-codechanges-system-minizip-v8.patch b/chromium-7.0.542.0-codechanges-system-minizip-v8.patch new file mode 100644 index 0000000..de8fd57 --- /dev/null +++ b/chromium-7.0.542.0-codechanges-system-minizip-v8.patch @@ -0,0 +1,314 @@ +diff -up chromium-7.0.542.0/chrome/browser/browser_about_handler.cc.system-code chromium-7.0.542.0/chrome/browser/browser_about_handler.cc +--- chromium-7.0.542.0/src/chrome/browser/browser_about_handler.cc.system-code 2010-10-04 05:42:38.000000000 -0400 ++++ chromium-7.0.542.0/src/chrome/browser/browser_about_handler.cc 2010-10-04 13:50:45.322377060 -0400 +@@ -63,7 +63,7 @@ + #include "webkit/plugins/webplugininfo.h" + + #ifdef CHROME_V8 +-#include "v8/include/v8.h" ++#include + #endif + + #if defined(OS_WIN) +diff -up chromium-7.0.542.0/chrome/browser/ui/webui/options/about_page_handler.cc.system-code chromium-7.0.542.0/chrome/browser/dom_ui/options/about_page_handler.cc +--- chromium-7.0.542.0/src/chrome/browser/ui/webui/options/chromeos/about_page_handler.cc.system-code 2010-10-04 14:20:06.569129133 -0400 ++++ chromium-7.0.542.0/src/chrome/browser/ui/webui/options/chromeos/about_page_handler.cc 2010-10-04 14:20:21.197112798 -0400 +@@ -28,7 +28,7 @@ + #include "webkit/glue/webkit_glue.h" + + #if defined(CHROME_V8) +-#include "v8/include/v8.h" ++#include + #endif + + #include "chrome/browser/chromeos/cros/cros_library.h" +diff -up chromium-7.0.542.0/chrome/browser/memory_purger.cc.system-code chromium-7.0.542.0/chrome/browser/memory_purger.cc +--- chromium-7.0.542.0/src/chrome/browser/memory_purger.cc.system-code 2010-10-04 05:42:38.000000000 -0400 ++++ chromium-7.0.542.0/src/chrome/browser/memory_purger.cc 2010-10-04 14:16:54.837353728 -0400 +@@ -23,7 +23,7 @@ + #include "net/url_request/url_request_context.h" + #include "net/url_request/url_request_context_getter.h" + #include "third_party/tcmalloc/chromium/src/google/malloc_extension.h" +-#include "v8/include/v8.h" ++#include + + // PurgeMemoryHelper ----------------------------------------------------------- + +diff -up chromium-7.0.542.0/chrome/renderer/automation/dom_automation_v8_extension.h.system-code chromium-7.0.542.0/chrome/renderer/automation/dom_automation_v8_extension.h +--- chromium-7.0.542.0/src/chrome/renderer/automation/dom_automation_v8_extension.h.system-code 2010-10-04 05:42:44.000000000 -0400 ++++ chromium-7.0.542.0/src/chrome/renderer/automation/dom_automation_v8_extension.h 2010-10-04 14:16:54.839353510 -0400 +@@ -6,7 +6,7 @@ + #define CHROME_RENDERER_AUTOMATION_DOM_AUTOMATION_V8_EXTENSION_H_ + #pragma once + +-#include "v8/include/v8.h" ++#include + + class DomAutomationV8Extension { + public: +diff -up chromium-7.0.542.0/chrome/renderer/extensions/bindings_utils.h.system-code chromium-7.0.542.0/chrome/renderer/extensions/bindings_utils.h +--- chromium-7.0.542.0/src/chrome/renderer/extensions/bindings_utils.h.system-code 2010-10-04 05:42:44.000000000 -0400 ++++ chromium-7.0.542.0/src/chrome/renderer/extensions/bindings_utils.h 2010-10-04 14:16:54.840353450 -0400 +@@ -10,7 +10,7 @@ + #include "base/memory/singleton.h" + #include "base/string_piece.h" + #include "ui/base/resource/resource_bundle.h" +-#include "v8/include/v8.h" ++#include + + #include + #include +diff -up chromium-7.0.542.0/chrome/renderer/extensions/chrome_app_bindings.cc.system-code chromium-7.0.542.0/chrome/renderer/extensions/chrome_app_bindings.cc +--- chromium-7.0.542.0/src/chrome/renderer/extensions/chrome_app_bindings.cc.system-code 2010-10-04 05:42:44.000000000 -0400 ++++ chromium-7.0.542.0/src/chrome/renderer/extensions/chrome_app_bindings.cc 2010-10-04 14:16:54.841498794 -0400 +@@ -19,7 +19,7 @@ + #include "content/renderer/v8_value_converter.h" + #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h" + #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" +-#include "v8/include/v8.h" ++#include + + using WebKit::WebFrame; + +diff -up chromium-7.0.542.0/chrome/renderer/extensions/event_bindings.h.system-code chromium-7.0.542.0/chrome/renderer/extensions/event_bindings.h +--- chromium-7.0.542.0/src/chrome/renderer/extensions/event_bindings.h.system-code 2010-10-04 05:42:44.000000000 -0400 ++++ chromium-7.0.542.0/src/chrome/renderer/extensions/event_bindings.h 2010-10-04 14:16:54.841498794 -0400 +@@ -8,7 +8,7 @@ + + #include + +-#include "v8/include/v8.h" ++#include + + class ExtensionDispatcher; + class GURL; +diff -up chromium-7.0.542.0/chrome/renderer/extensions/extension_process_bindings.h.system-code chromium-7.0.542.0/chrome/renderer/extensions/extension_process_bindings.h +--- chromium-7.0.542.0/src/chrome/renderer/extensions/extension_process_bindings.h.system-code 2010-10-04 05:42:44.000000000 -0400 ++++ chromium-7.0.542.0/src/chrome/renderer/extensions/extension_process_bindings.h 2010-10-04 14:16:54.842499822 -0400 +@@ -12,7 +12,7 @@ + #include + #include + +-#include "v8/include/v8.h" ++#include + + class ExtensionDispatcher; + class GURL; +diff -up chromium-7.0.542.0/chrome/renderer/extensions/js_only_v8_extensions.h.system-code chromium-7.0.542.0/chrome/renderer/extensions/js_only_v8_extensions.h +--- chromium-7.0.542.0/src/chrome/renderer/extensions/js_only_v8_extensions.h.system-code 2010-10-04 05:42:44.000000000 -0400 ++++ chromium-7.0.542.0/src/chrome/renderer/extensions/js_only_v8_extensions.h 2010-10-04 14:16:54.843500372 -0400 +@@ -6,7 +6,7 @@ + #define CHROME_RENDERER_EXTENSIONS_JS_ONLY_V8_EXTENSIONS_H_ + #pragma once + +-#include "v8/include/v8.h" ++#include + + // This file contains various V8 Extensions that are JavaScript only, and + // don't have any C++ native functions. +diff -up chromium-7.0.542.0/chrome/renderer/extensions/renderer_extension_bindings.h.system-code chromium-7.0.542.0/chrome/renderer/extensions/renderer_extension_bindings.h +--- chromium-7.0.542.0/src/chrome/renderer/extensions/renderer_extension_bindings.h.system-code 2010-10-04 05:42:44.000000000 -0400 ++++ chromium-7.0.542.0/src/chrome/renderer/extensions/renderer_extension_bindings.h 2010-10-04 14:16:54.844504849 -0400 +@@ -6,7 +6,7 @@ + #define CHROME_RENDERER_EXTENSIONS_RENDERER_EXTENSION_BINDINGS_H_ + #pragma once + +-#include "v8/include/v8.h" ++#include + + #include + +diff -up chromium-7.0.542.0/chrome/renderer/external_extension.cc.system-code chromium-7.0.542.0/chrome/renderer/external_extension.cc +--- chromium-7.0.542.0/src/chrome/renderer/external_extension.cc.system-code 2010-10-04 05:42:44.000000000 -0400 ++++ chromium-7.0.542.0/src/chrome/renderer/external_extension.cc 2010-10-04 14:16:54.845500082 -0400 +@@ -12,7 +12,7 @@ + #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h" + #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" + #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" +-#include "v8/include/v8.h" ++#include + + using WebKit::WebFrame; + using WebKit::WebView; +diff -up chromium-7.0.542.0/chrome/renderer/loadtimes_extension_bindings.cc.system-code chromium-7.0.542.0/chrome/renderer/loadtimes_extension_bindings.cc +--- chromium-7.0.542.0/src/chrome/renderer/loadtimes_extension_bindings.cc.system-code 2010-10-04 05:42:44.000000000 -0400 ++++ chromium-7.0.542.0/src/chrome/renderer/loadtimes_extension_bindings.cc 2010-10-04 14:16:54.846500790 -0400 +@@ -9,7 +9,7 @@ + #include "base/time.h" + #include "content/renderer/navigation_state.h" + #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" +-#include "v8/include/v8.h" ++#include + + using WebKit::WebDataSource; + using WebKit::WebFrame; +diff -up chromium-7.0.542.0/content/renderer/render_thread.cc.system-code chromium-7.0.542.0/chrome/renderer/render_thread.cc +--- chromium-7.0.542.0/src/content/renderer/render_thread.cc.system-code 2010-10-04 05:42:44.000000000 -0400 ++++ chromium-7.0.542.0/src/content/renderer/render_thread.cc 2010-10-04 14:16:54.848500089 -0400 +@@ -59,7 +59,7 @@ + #include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageEventDispatcher.h" + #include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" + #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" +-#include "v8/include/v8.h" ++#include + #include "webkit/extensions/v8/benchmarking_extension.h" + #include "webkit/extensions/v8/playback_extension.h" + #include "webkit/glue/webkit_glue.h" +diff -up chromium-7.0.542.0/chrome/renderer/search_extension.cc.system-code chromium-7.0.542.0/chrome/renderer/search_extension.cc +--- chromium-7.0.542.0/src/chrome/renderer/search_extension.cc.system-code 2010-10-04 05:42:44.000000000 -0400 ++++ chromium-7.0.542.0/src/chrome/renderer/search_extension.cc 2010-10-04 14:16:54.849503141 -0400 +@@ -12,7 +12,7 @@ + #include "chrome/renderer/searchbox.h" + #include "content/renderer/render_view.h" + #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" +-#include "v8/include/v8.h" ++#include + + using WebKit::WebFrame; + using WebKit::WebView; +diff -up chromium-7.0.542.0/chrome/renderer/translate_helper.cc.system-code chromium-7.0.542.0/chrome/renderer/translate_helper.cc +--- chromium-7.0.542.0/src/chrome/renderer/translate_helper.cc.system-code 2010-10-04 05:42:44.000000000 -0400 ++++ chromium-7.0.542.0/src/chrome/renderer/translate_helper.cc 2010-10-04 14:16:54.850500334 -0400 +@@ -18,7 +18,7 @@ + #include "third_party/WebKit/Source/WebKit/chromium/public/WebScriptSource.h" + #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" + #include "third_party/cld/encodings/compact_lang_det/win/cld_unicodetext.h" +-#include "v8/include/v8.h" ++#include + #include "webkit/glue/dom_operations.h" + + using WebKit::WebDocument; +diff -up chromium-7.0.542.0/chrome/test/v8_unit_test.h.system-code chromium-7.0.542.0/chrome/test/v8_unit_test.h +--- chromium-7.0.542.0/src/chrome/test/base/v8_unit_test.h.system-code 2010-10-04 05:42:17.000000000 -0400 ++++ chromium-7.0.542.0/src/chrome/test/base/v8_unit_test.h 2010-10-04 14:16:54.851503148 -0400 +@@ -9,7 +9,7 @@ + #include + + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/v8.h" ++#include + + namespace base { + class StringPiece; +diff -up chromium-7.0.542.0/net/proxy/proxy_resolver_v8.cc.system-code chromium-7.0.542.0/net/proxy/proxy_resolver_v8.cc +--- chromium-7.0.542.0/src/net/proxy/proxy_resolver_v8.cc.system-code 2010-10-04 05:40:28.000000000 -0400 ++++ chromium-7.0.542.0/src/net/proxy/proxy_resolver_v8.cc 2010-10-04 14:16:54.852507424 -0400 +@@ -22,7 +22,7 @@ + #include "net/proxy/proxy_resolver_js_bindings.h" + #include "net/proxy/proxy_resolver_request_context.h" + #include "net/proxy/proxy_resolver_script.h" +-#include "v8/include/v8.h" ++#include + + // Notes on the javascript environment: + // +diff -up chromium-7.0.542.0/webkit/extensions/v8/benchmarking_extension.h.system-code chromium-7.0.542.0/webkit/extensions/v8/benchmarking_extension.h +--- chromium-7.0.542.0/src/webkit/extensions/v8/benchmarking_extension.h.system-code 2010-10-04 05:39:56.000000000 -0400 ++++ chromium-7.0.542.0/src/webkit/extensions/v8/benchmarking_extension.h 2010-10-04 14:16:54.854152851 -0400 +@@ -9,7 +9,7 @@ + #ifndef WEBKIT_EXTENSIONS_V8_BENCHMARKING_EXTENSION_H_ + #define WEBKIT_EXTENSIONS_V8_BENCHMARKING_EXTENSION_H_ + +-#include "v8/include/v8.h" ++#include + + namespace extensions_v8 { + +diff -up chromium-7.0.542.0/webkit/extensions/v8/gc_extension.h.system-code chromium-7.0.542.0/webkit/extensions/v8/gc_extension.h +--- chromium-7.0.542.0/src/webkit/extensions/v8/gc_extension.h.system-code 2010-10-04 05:39:56.000000000 -0400 ++++ chromium-7.0.542.0/src/webkit/extensions/v8/gc_extension.h 2010-10-04 14:16:54.855479939 -0400 +@@ -8,7 +8,7 @@ + #ifndef WEBKIT_EXTENSIONS_V8_GC_EXTENSION_H_ + #define WEBKIT_EXTENSIONS_V8_GC_EXTENSION_H_ + +-#include "v8/include/v8.h" ++#include + + namespace extensions_v8 { + +diff -up chromium-7.0.542.0/webkit/extensions/v8/heap_profiler_extension.h.system-code chromium-7.0.542.0/webkit/extensions/v8/heap_profiler_extension.h +--- chromium-7.0.542.0/src/webkit/extensions/v8/heap_profiler_extension.h.system-code 2010-10-04 05:39:56.000000000 -0400 ++++ chromium-7.0.542.0/src/webkit/extensions/v8/heap_profiler_extension.h 2010-10-04 14:16:54.858478535 -0400 +@@ -9,7 +9,7 @@ + #ifndef WEBKIT_EXTENSIONS_V8_HEAP_PROFILER_EXTENSION_H_ + #define WEBKIT_EXTENSIONS_V8_HEAP_PROFILER_EXTENSION_H_ + +-#include "v8/include/v8.h" ++#include + + namespace extensions_v8 { + +diff -up chromium-7.0.542.0/webkit/extensions/v8/playback_extension.h.system-code chromium-7.0.542.0/webkit/extensions/v8/playback_extension.h +--- chromium-7.0.542.0/src/webkit/extensions/v8/playback_extension.h.system-code 2010-10-04 05:39:56.000000000 -0400 ++++ chromium-7.0.542.0/src/webkit/extensions/v8/playback_extension.h 2010-10-04 14:16:54.859478557 -0400 +@@ -5,7 +5,7 @@ + #ifndef WEBKIT_EXTENSIONS_V8_PLAYBACK_EXTENSION_H_ + #define WEBKIT_EXTENSIONS_V8_PLAYBACK_EXTENSION_H_ + +-#include "v8/include/v8.h" ++#include + + namespace extensions_v8 { + +diff -up chromium-7.0.542.0/webkit/extensions/v8/profiler_extension.h.system-code chromium-7.0.542.0/webkit/extensions/v8/profiler_extension.h +--- chromium-7.0.542.0/src/webkit/extensions/v8/profiler_extension.h.system-code 2010-10-04 05:39:56.000000000 -0400 ++++ chromium-7.0.542.0/src/webkit/extensions/v8/profiler_extension.h 2010-10-04 14:16:54.861478714 -0400 +@@ -9,7 +9,7 @@ + #ifndef WEBKIT_EXTENSIONS_V8_PROFILER_EXTENSION_H_ + #define WEBKIT_EXTENSIONS_V8_PROFILER_EXTENSION_H_ + +-#include "v8/include/v8.h" ++#include + + namespace extensions_v8 { + +diff -up chromium-7.0.542.0/webkit/glue/webkitclient_impl.cc.system-code chromium-7.0.542.0/webkit/glue/webkitclient_impl.cc +--- chromium-7.0.542.0/src/webkit/glue/webkitclient_impl.cc.system-code 2010-10-04 05:39:57.000000000 -0400 ++++ chromium-7.0.542.0/src/webkit/glue/webkitclient_impl.cc 2010-10-04 14:16:54.867374474 -0400 +@@ -42,7 +42,7 @@ + #include "webkit/glue/weburlloader_impl.h" + + #if defined(OS_LINUX) +-#include "v8/include/v8.h" ++#include + #endif + + using WebKit::WebAudioBus; +diff -up chromium-7.0.542.0/webkit/glue/webkit_glue.cc.system-code chromium-7.0.542.0/webkit/glue/webkit_glue.cc +--- chromium-7.0.542.0/src/webkit/glue/webkit_glue.cc.system-code 2010-10-04 05:39:57.000000000 -0400 ++++ chromium-7.0.542.0/src/webkit/glue/webkit_glue.cc 2010-10-04 14:16:54.869402307 -0400 +@@ -43,7 +43,7 @@ + #endif + #include "webkit/glue/glue_serialize.h" + #include "webkit/glue/user_agent.h" +-#include "v8/include/v8.h" ++#include + + using WebKit::WebCanvas; + using WebKit::WebData; +diff -up chromium-7.0.542.0/webkit/support/test_webkit_client.cc.system-code chromium-7.0.542.0/webkit/support/test_webkit_client.cc +--- chromium-7.0.542.0/src/webkit/support/test_webkit_client.cc.system-code 2010-10-04 05:39:57.000000000 -0400 ++++ chromium-7.0.542.0/src/webkit/support/test_webkit_client.cc 2010-10-04 14:16:54.871369363 -0400 +@@ -31,7 +31,7 @@ + #include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageNamespace.h" + #include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" + #include "third_party/WebKit/Source/WebKit/chromium/public/WebURL.h" +-#include "v8/include/v8.h" ++#include + #include "webkit/appcache/web_application_cache_host_impl.h" + #include "webkit/database/vfs_backend.h" + #include "webkit/extensions/v8/gc_extension.h" +diff -up chromium-7.0.542.0/webkit/tools/test_shell/listener_leak_test.cc.system-code chromium-7.0.542.0/webkit/tools/test_shell/listener_leak_test.cc +--- chromium-7.0.542.0/src/webkit/tools/test_shell/listener_leak_test.cc.system-code 2010-10-04 05:39:56.000000000 -0400 ++++ chromium-7.0.542.0/src/webkit/tools/test_shell/listener_leak_test.cc 2010-10-04 14:16:54.872365629 -0400 +@@ -8,8 +8,8 @@ + #include "base/string_number_conversions.h" + #include "base/string_util.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/v8.h" +-#include "v8/include/v8-profiler.h" ++#include ++#include + #include "webkit/glue/webkit_glue.h" + #include "webkit/tools/test_shell/test_shell.h" + #include "webkit/tools/test_shell/test_shell_test.h" diff --git a/chromium-7.0.542.0-media-probe.patch b/chromium-7.0.542.0-media-probe.patch new file mode 100644 index 0000000..04f8b7e --- /dev/null +++ b/chromium-7.0.542.0-media-probe.patch @@ -0,0 +1,190 @@ +diff -up chromium-7.0.542.0/net/base/mime_util.cc.media-probe chromium-7.0.542.0/net/base/mime_util.cc +--- chromium-7.0.542.0/src/net/base/mime_util.cc.media-probe 2010-10-04 05:40:38.000000000 -0400 ++++ chromium-7.0.542.0/src/net/base/mime_util.cc 2010-10-04 15:02:09.324499172 -0400 +@@ -15,6 +15,15 @@ + #include "base/string_util.h" + #include "base/utf_string_conversions.h" + ++#include "base/path_service.h" ++ ++#if ! defined(OS_MACOSX) && defined (OS_POSIX) ++#include ++#define HAVE_DLFCN 1 ++#else ++#define HAVE_DLFCN 0 ++#endif ++ + using std::string; + + namespace net { +@@ -224,51 +233,47 @@ + "image/x-xbitmap" // xbm + }; + +-// A list of media types: http://en.wikipedia.org/wiki/Internet_media_type +-// A comprehensive mime type list: http://plugindoc.mozdev.org/winmime.php +-static const char* const supported_media_types[] = { +-#if defined(ENABLE_MEDIA_TYPE_OGG) +- // Ogg. +- "video/ogg", +- "audio/ogg", +- "application/ogg", +-#endif +- +- // WebM. +- "video/webm", +- "audio/webm", +- "audio/wav", +- "audio/x-wav", ++struct format_info { ++ const char* name; ++ const char* symbol; ++ const bool fallback; ++}; + + #if defined(GOOGLE_CHROME_BUILD) || defined(USE_PROPRIETARY_CODECS) +- // MPEG-4. +- "video/mp4", +- "video/x-m4v", +- "audio/mp4", +- "audio/x-m4a", +- +- // MP3. +- "audio/mp3", +- "audio/x-mp3", +- "audio/mpeg", ++#define MPEG true ++#else ++#define MPEG false + #endif ++ ++// A list of media types: http://en.wikipedia.org/wiki/Internet_media_type ++// A comprehensive mime type list: http://plugindoc.mozdev.org/winmime.php ++static const format_info supported_media_types[] = { ++ { "video/ogg", "ogg_demuxer", true }, ++ { "audio/ogg", "ogg_demuxer", true }, ++ { "application/ogg", "ogg_demuxer", true }, ++ { "video/webm", "matroska_demuxer", true }, ++ { "audio/webm", "matroska_demuxer", true }, ++ { "audio/wav", "wav_demuxer", true }, ++ { "audio/x-wav", "wav_demuxer", true }, ++ { "video/mp4", "mov_demuxer", MPEG }, ++ { "video/x-m4v", "mov_demuxer", MPEG }, ++ { "audio/mp4", "mov_demuxer", MPEG }, ++ { "audio/x-m4a", "mov_demuxer", MPEG }, ++ { "audio/mp3", "mp3_demuxer", MPEG }, ++ { "audio/x-mp3", "mp3_demuxer", MPEG }, ++ { "audio/mpeg", "mp3_demuxer", MPEG }, + }; + + // List of supported codecs when passed in with . + // + // Refer to http://wiki.whatwg.org/wiki/Video_type_parameters#Browser_Support + // for more information. +-static const char* const supported_media_codecs[] = { +-#if defined(GOOGLE_CHROME_BUILD) || defined(USE_PROPRIETARY_CODECS) +- "avc1", +- "mp4a", +-#endif +-#if defined(ENABLE_MEDIA_CODEC_THEORA) +- "theora", +-#endif +- "vorbis", +- "vp8", +- "1" // PCM for WAV. ++static const format_info supported_media_codecs[] = { ++ { "avc1", "aac_decoder", MPEG }, ++ { "mp4a", "h264_decoder", MPEG }, ++ { "theora", "theora_decoder", true }, ++ { "vorbis", "vorbis_decoder", true }, ++ { "vp8", "libvpx_decoder", true }, + }; + + // Note: does not include javascript types list (see supported_javascript_types) +@@ -342,7 +347,47 @@ + { "audio/wav", "1" } + }; + +-void MimeUtil::InitializeMimeTypeMaps() { ++#if defined(OS_MACOSX) ++#define DSO_NAME(MODULE) ("lib" MODULE ".dylib") ++#elif defined(OS_POSIX) ++#define DSO_NAME(MODULE) ("lib" MODULE ".so") ++#else ++#define DSO_NAME(MODULE) (MODULE ".dll") ++#endif ++ ++static void* GetHandle(const FilePath& module_dir, const char* library) { ++#if HAVE_DLFCN ++ FilePath path = module_dir.Append(library); ++ return dlopen(path.value().c_str(), RTLD_LAZY); ++#else ++ return NULL; ++#endif ++} ++ ++static void DumpHandle(void* dlhandle) { ++#if HAVE_DLFCN ++ if (dlhandle) ++ dlclose(dlhandle); ++#endif ++} ++ ++static bool ProbeFormat(void* dlhandle, const char* symbol, bool fallback) { ++#if HAVE_DLFCN ++ return dlhandle && dlsym(dlhandle, symbol); ++#else ++ return fallback; ++#endif ++} ++ ++ void MimeUtil::InitializeMimeTypeMaps() { ++ FilePath module_path; ++#if defined(OS_MACOSX) ++ module_path = mac_util::MainAppBundlePath().Append("Libraries"); ++#else ++ PathService::Get(base::DIR_MODULE, &module_path); ++#endif ++ void* h_ffmpegsumo = GetHandle(module_path, DSO_NAME("ffmpegsumo")); ++ + for (size_t i = 0; i < arraysize(supported_image_types); ++i) + image_map_.insert(supported_image_types[i]); + +@@ -352,11 +397,15 @@ + for (size_t i = 0; i < arraysize(supported_javascript_types); ++i) + non_image_map_.insert(supported_javascript_types[i]); + for (size_t i = 0; i < arraysize(supported_media_types); ++i) +- non_image_map_.insert(supported_media_types[i]); ++ if (ProbeFormat(h_ffmpegsumo, supported_media_types[i].symbol, ++ supported_media_types[i].fallback)) ++ non_image_map_.insert(supported_media_types[i].name); + + // Initialize the supported media types. + for (size_t i = 0; i < arraysize(supported_media_types); ++i) +- media_map_.insert(supported_media_types[i]); ++ if (ProbeFormat(h_ffmpegsumo, supported_media_types[i].symbol, ++ supported_media_types[i].fallback)) ++ media_map_.insert(supported_media_types[i].name); + + for (size_t i = 0; i < arraysize(supported_javascript_types); ++i) + javascript_map_.insert(supported_javascript_types[i]); +@@ -365,7 +414,9 @@ + view_source_map_.insert(view_source_types[i]); + + for (size_t i = 0; i < arraysize(supported_media_codecs); ++i) +- codecs_map_.insert(supported_media_codecs[i]); ++ if (ProbeFormat(h_ffmpegsumo, supported_media_codecs[i].symbol, ++ supported_media_codecs[i].fallback)) ++ codecs_map_.insert(supported_media_codecs[i].name); + + // Initialize the strict supported media types. + for (size_t i = 0; i < arraysize(format_codec_mappings); ++i) { +@@ -379,6 +430,8 @@ + codecs.insert(mime_type_codecs[j]); + strict_format_map_[format_codec_mappings[i].mime_type] = codecs; + } ++ ++ DumpHandle(h_ffmpegsumo); + } + + bool MimeUtil::IsSupportedImageMimeType(const char* mime_type) const { diff --git a/chromium-7.0.542.0-system-libvpx.patch b/chromium-7.0.542.0-system-libvpx.patch new file mode 100644 index 0000000..6b53f48 --- /dev/null +++ b/chromium-7.0.542.0-system-libvpx.patch @@ -0,0 +1,64 @@ +diff -up chromium-7.0.542.0/build/linux/system.gyp.system-libvpx chromium-7.0.542.0/build/linux/system.gyp +--- chromium-7.0.542.0/src/build/linux/system.gyp.system-libvpx 2010-10-06 14:01:19.638507000 -0400 ++++ chromium-7.0.542.0/src/build/linux/system.gyp 2010-10-06 14:01:19.650507000 -0400 +@@ -409,6 +409,26 @@ + }]] + }, + { ++ 'target_name': 'libvpx', ++ 'type': 'settings', ++ 'conditions': [ ++ ['_toolset=="target"', { ++ 'direct_dependent_settings': { ++ 'cflags': [ ++ '-I/usr/include/vpx', ++ ], ++ }, ++ 'link_settings': { ++ 'ldflags': [ ++ '', ++ ], ++ 'libraries': [ ++ '-lvpx', ++ ], ++ }, ++ }]] ++ }, ++ { + 'target_name': 'gnome_keyring', + 'type': 'settings', + 'conditions': [ +diff -up chromium-7.0.542.0/remoting/remoting.gyp.system-libvpx chromium-7.0.542.0/remoting/remoting.gyp +--- chromium-7.0.542.0/src/remoting/remoting.gyp.system-libvpx 2010-10-06 14:01:19.641507000 -0400 ++++ chromium-7.0.542.0/src/remoting/remoting.gyp 2010-10-06 14:01:19.654507000 -0400 +@@ -165,7 +165,7 @@ + 'remoting_base', + 'remoting_host', + 'remoting_jingle_glue', +- '../third_party/libvpx/libvpx.gyp:libvpx', ++ '../build/linux/system.gyp:libvpx', + '../third_party/npapi/npapi.gyp:npapi', + ], + 'sources': [ +@@ -303,7 +303,7 @@ + # TODO(hclam): Remove this and depend on libvpx directly once we remove + # libvpx from FFmpeg. + 'include_dirs': [ +- '../third_party/libvpx/source/libvpx', ++ '/usr/include/vpx', + ], + # This target needs a hard dependency because dependent targets + # depend on chromotocol_proto_lib for headers. +diff -up chromium-7.0.542.0/third_party/ffmpeg/ffmpeg.gyp.system-libvpx chromium-7.0.542.0/third_party/ffmpeg/ffmpeg.gyp +--- chromium-7.0.542.0/src/third_party/ffmpeg/ffmpeg.gyp.system-libvpx 2010-10-06 14:04:09.730507291 -0400 ++++ chromium-7.0.542.0/src/third_party/ffmpeg/ffmpeg.gyp 2010-10-06 14:05:14.341510863 -0400 +@@ -812,6 +812,9 @@ + '<(output_root)', + '../..', # The chromium 'src' directory. + ], ++ 'dependencies': [ ++ '../../build/linux/system.gyp:libvpx', ++ ], + 'direct_dependent_settings': { + 'defines': [ + '__STDC_CONSTANT_MACROS', # FFmpeg uses INT64_C. diff --git a/chromium-91-java-only-allowed-in-android-builds.patch b/chromium-91-java-only-allowed-in-android-builds.patch new file mode 100644 index 0000000..c0b118c --- /dev/null +++ b/chromium-91-java-only-allowed-in-android-builds.patch @@ -0,0 +1,16 @@ +References: https://bugs.chromium.org/p/chromium/issues/detail?id=1192875 + +Index: chromium-91.0.4472.57/third_party/closure_compiler/compiler.py +=================================================================== +--- chromium-91.0.4472.57.orig/third_party/closure_compiler/compiler.py ++++ chromium-91.0.4472.57/third_party/closure_compiler/compiler.py +@@ -13,8 +13,7 @@ import subprocess + + + _CURRENT_DIR = os.path.join(os.path.dirname(__file__)) +-_JAVA_PATH = os.path.join(_CURRENT_DIR, "..", "jdk", "current", "bin", "java") +-assert os.path.isfile(_JAVA_PATH), "java only allowed in android builds" ++_JAVA_PATH = "java" + + class Compiler(object): + """Runs the Closure compiler on given source files to typecheck them diff --git a/chromium-93-ffmpeg-4.4-rest.patch b/chromium-93-ffmpeg-4.4-rest.patch new file mode 100644 index 0000000..78a584b --- /dev/null +++ b/chromium-93-ffmpeg-4.4-rest.patch @@ -0,0 +1,59 @@ +From: 52c3e9c0f140a8742034e107fb0f371c0d73bf1d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Marek=20Beh=C3=BAn?= +Date: Sun, 12 Sep 2021 04:20:11 +0200 +Subject: [PATCH] chromium-93: fix building with system-ffmpeg +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The version of ffmpeg bundled in Chromium changed ABI a little, which +affected the code in that the type of the last parameter of +av_packet_get_side_data() is now size_t instead of int. + +This causes Chromium to fail to build with system-ffmpeg if the system +ffmpeg's version does not yet have this ABI change. + +Fix the code to be able to compile with older ffmpeg as well. + +Signed-off-by: Marek Behún +--- + media/filters/audio_decoder_unittest.cc | 4 ++++ + media/filters/ffmpeg_demuxer.cc | 16 ++++++++++++++++ + 2 files changed, 20 insertions(+) + +Index: chromium-126.0.6478.8/media/filters/ffmpeg_demuxer.cc +=================================================================== +--- chromium-126.0.6478.8.orig/media/filters/ffmpeg_demuxer.cc ++++ chromium-126.0.6478.8/media/filters/ffmpeg_demuxer.cc +@@ -343,11 +343,19 @@ + } + + base::span GetSideData(const AVPacket* packet) { ++#if LIBAVUTIL_VERSION_MAJOR < 57 ++ int side_data_size = 0; ++#else + size_t side_data_size = 0; ++#endif + uint8_t* side_data = av_packet_get_side_data( + packet, AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL, &side_data_size); + ++#if LIBAVUTIL_VERSION_MAJOR < 57 ++ return base::span(side_data, base::checked_cast(side_data_size)); ++#else + return base::span(side_data, side_data_size); ++#endif + } + + void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) { +@@ -474,7 +482,11 @@ + base::HeapArray::CopiedFrom(side_data); + } + ++#if LIBAVUTIL_VERSION_MAJOR < 57 ++ int skip_samples_size = 0; ++#else + size_t skip_samples_size = 0; ++#endif + const uint32_t* skip_samples_ptr = + reinterpret_cast(av_packet_get_side_data( + packet.get(), AV_PKT_DATA_SKIP_SAMPLES, &skip_samples_size)); diff --git a/chromium-93-ffmpeg-4.4.patch b/chromium-93-ffmpeg-4.4.patch new file mode 100644 index 0000000..a98164d --- /dev/null +++ b/chromium-93-ffmpeg-4.4.patch @@ -0,0 +1,39 @@ +From: 52c3e9c0f140a8742034e107fb0f371c0d73bf1d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Marek=20Beh=C3=BAn?= +Date: Sun, 12 Sep 2021 04:20:11 +0200 +Subject: [PATCH] chromium-93: fix building with system-ffmpeg +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The version of ffmpeg bundled in Chromium changed ABI a little, which +affected the code in that the type of the last parameter of +av_packet_get_side_data() is now size_t instead of int. + +This causes Chromium to fail to build with system-ffmpeg if the system +ffmpeg's version does not yet have this ABI change. + +Fix the code to be able to compile with older ffmpeg as well. + +Signed-off-by: Marek Behún +--- + media/filters/audio_decoder_unittest.cc | 4 ++++ + media/filters/ffmpeg_demuxer.cc | 16 ++++++++++++++++ + 2 files changed, 20 insertions(+) + +Index: chromium-126.0.6478.8/media/filters/audio_decoder_unittest.cc +=================================================================== +--- chromium-126.0.6478.8.orig/media/filters/audio_decoder_unittest.cc ++++ chromium-126.0.6478.8/media/filters/audio_decoder_unittest.cc +@@ -109,7 +109,11 @@ void SetDiscardPadding(AVPacket* packet, + } + + // If the timestamp is positive, try to use FFmpeg's discard data. ++#if LIBAVUTIL_VERSION_MAJOR < 57 ++ int skip_samples_size = 0; ++#else + size_t skip_samples_size = 0; ++#endif + const uint32_t* skip_samples_ptr = + reinterpret_cast(av_packet_get_side_data( + packet, AV_PKT_DATA_SKIP_SAMPLES, &skip_samples_size)); diff --git a/chromium-browser-rpmlintrc b/chromium-browser-rpmlintrc new file mode 100644 index 0000000..0dca49f --- /dev/null +++ b/chromium-browser-rpmlintrc @@ -0,0 +1 @@ +setBadness("permissions-file-setuid-bit", 0) diff --git a/chromium-browser.desktop b/chromium-browser.desktop new file mode 100644 index 0000000..94b3574 --- /dev/null +++ b/chromium-browser.desktop @@ -0,0 +1,14 @@ +[Desktop Entry] +Version=1.0 +Name=Chromium Web Browser +Comment=Browse the World Wide Web +GenericName=Web Browser +Exec=chromium %u +Terminal=false +X-MultipleArgs=false +Type=Application +Icon=chromium-browser.png +Categories=Network;WebBrowser; +MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https; +StartupWMClass=Chromium + diff --git a/chromium-browser.sh b/chromium-browser.sh new file mode 100644 index 0000000..937b534 --- /dev/null +++ b/chromium-browser.sh @@ -0,0 +1,117 @@ +#!/bin/sh + +# Chromium launcher + +# Authors: +# Fabien Tassin +# License: GPLv2 or later + +APPNAME=chromium +LIBDIR=/usr/lib/chromium +GDB=/usr/bin/gdb + +# Let the Chromium aware MeeGo desktop environment. +# For system proxy setting integration. +GNOME_DESKTOP_SESSION_ID="this-is-deprecated" +export GNOME_DESKTOP_SESSION_ID + +usage () { + echo "$APPNAME [-h|--help] [-g|--debug] [options] [URL]" + echo + echo " -g or --debug Start within $GDB" + echo " -h or --help This help screen" +} + +# FFmpeg needs to know where its libs are located +if [ "Z$LD_LIBRARY_PATH" != Z ] ; then + LD_LIBRARY_PATH=$LIBDIR:$LD_LIBRARY_PATH +else + LD_LIBRARY_PATH=$LIBDIR +fi +export LD_LIBRARY_PATH + +# xdg-settings should in PATH +PATH=$PATH:$LIBDIR +export PATH + +want_debug=0 +while [ $# -gt 0 ]; do + case "$1" in + -h | --help | -help ) + usage + exit 0 ;; + -g | --debug ) + want_debug=1 + shift ;; + -- ) # Stop option prcessing + shift + break ;; + * ) + break ;; + esac +done + +# Setup the default profile if this is none +# Set the default theme as GTK+ with system window decoration +if [ ! -d ~/.config/chromium/Default ]; then + mkdir -p ~/.config/chromium/Default + cat < ~/.config/chromium/Default/Preferences +{ + "browser": { + "custom_chrome_frame": false + }, + "extensions": { + "theme": { + "colors": { + + }, + "id": "", + "images": { + + }, + "properties": { + + }, + "tints": { + + }, + "use_system": true + } + }, + "homepage": "http://meego.com/", + "homepage_is_newtabpage": false, + "session": { + "restore_on_startup": 1 + }, + "webkit": { + "webprefs": { + "default_fixed_font_size": 13, + "default_font_size": 16, + "fixed_font_family": "Droid Sans Mono", + "sansserif_font_family": "Droid Sans", + "serif_font_family": "Droid Serif" + } + } +} +EOF + # Set the default browser + $LIBDIR/xdg-settings set default-web-browser chromium-browser.desktop +fi + +if [ $want_debug -eq 1 ] ; then + if [ ! -x $GDB ] ; then + echo "Sorry, can't find usable $GDB. Please install it." + exit 1 + fi + tmpfile=`mktemp /tmp/chromiumargs.XXXXXX` || { echo "Cannot create temporary file" >&2; exit 1; } + trap " [ -f \"$tmpfile\" ] && /bin/rm -f -- \"$tmpfile\"" 0 1 2 3 13 15 + echo "set args ${1+"$@"}" > $tmpfile + echo "# Env:" + echo "# LD_LIBRARY_PATH=$LD_LIBRARY_PATH" + echo "$GDB $LIBDIR/$APPNAME -x $tmpfile" + $GDB "$LIBDIR/$APPNAME" -x $tmpfile + exit $? +else + exec $LIBDIR/$APPNAME "--password-store=detect" "--enable-experimental-extension-apis" "--enable-plugins" "--enable-extensions" "--enable-user-scripts" "--enable-printing" "--enable-sync" "--auto-ssl-client-auth" "$@" +fi + diff --git a/chromium-browser.xml b/chromium-browser.xml new file mode 100644 index 0000000..961c2fb --- /dev/null +++ b/chromium-browser.xml @@ -0,0 +1,16 @@ + + + + + + Chromium + chromium + chromium %s + chromium-browser + false + true + false + false + + + diff --git a/chromium-buildname.patch b/chromium-buildname.patch new file mode 100644 index 0000000..0ac9ea9 --- /dev/null +++ b/chromium-buildname.patch @@ -0,0 +1,13 @@ +Index: chromium-73.0.3683.27/components/version_ui_strings.grdp +=================================================================== +--- chromium-73.0.3683.27.orig/components/version_ui_strings.grdp ++++ chromium-73.0.3683.27/components/version_ui_strings.grdp +@@ -7,7 +7,7 @@ + Official Build + + +- Developer Build ++ openSUSE Build + + + (32-bit) diff --git a/chromium-codechanges-zlib.patch b/chromium-codechanges-zlib.patch new file mode 100644 index 0000000..a4aed81 --- /dev/null +++ b/chromium-codechanges-zlib.patch @@ -0,0 +1,50 @@ +diff -up chromium/src/net/base/gzip_header.cc chromium/src/net/base/gzip_header.cc +--- chromium/src/net/base/gzip_header.cc 2009-09-28 10:34:28.000000000 -0600 ++++ chromium/src/net/base/gzip_header.cc 2009-11-24 17:23:22.000000000 -0700 +@@ -4,11 +4,11 @@ + + #include "net/base/gzip_header.h" + +-#if defined(USE_SYSTEM_ZLIB) ++/* #if defined(USE_SYSTEM_ZLIB) */ + #include +-#else ++/* #else + #include "third_party/zlib/zlib.h" // for Z_DEFAULT_COMPRESSION +-#endif ++#endif */ + + #include "base/logging.h" + +diff -up chromium/src/net/base/sdch_filter_unittest.cc chromium/src/net/base/sdch_filter_unittest.cc +--- chromium/src/net/base/sdch_filter_unittest.cc 2009-09-28 10:34:29.000000000 -0600 ++++ chromium/src/net/base/sdch_filter_unittest.cc 2009-11-24 17:21:57.000000000 -0700 +@@ -8,11 +8,11 @@ + #include + #include + +-#if defined(USE_SYSTEM_ZLIB) ++/* #if defined(USE_SYSTEM_ZLIB) */ + #include +-#else ++/* #else + #include "third_party/zlib/zlib.h" +-#endif ++#endif */ + + #include "base/logging.h" + #include "base/memory/scoped_ptr.h" +--- chromium/src/chrome/common/metrics_helpers.cc 2009-09-28 10:34:29.000000000 -0600 ++++ chromium/src/chrome/common/metrics_helpers.cc 2009-11-24 17:21:57.000000000 -0700 +@@ -4,11 +4,7 @@ + + #include "chrome/common/metrics_helpers.h" + +-#if defined(USE_SYSTEM_LIBBZ2) + #include +-#else +-#include "third_party/bzip2/bzlib.h" +-#endif + + #include "base/base64.h" + #include "base/basictypes.h" diff --git a/chromium-gcc46.patch b/chromium-gcc46.patch new file mode 100644 index 0000000..906323d --- /dev/null +++ b/chromium-gcc46.patch @@ -0,0 +1,100 @@ +--- chromium/src/ui/gfx/codec/jpeg_codec.h~ 2011-03-31 14:11:18.000000000 +0400 ++++ chromium/src/ui/gfx/codec/jpeg_codec.h 2011-03-31 14:11:27.000000000 +0400 +@@ -8,6 +8,7 @@ + + #include + #include ++#include + + #include "ui/base/ui_export.h" + +--- chromium/src/chrome/browser/search_engines/template_url_prepopulate_data.h 2011-03-31 14:48:03.000000000 +0400 ++++ chromium/src/chrome/browser/search_engines/template_url_prepopulate_data.h 2011-03-31 14:49:52.000000000 +0400 +@@ -8,6 +8,7 @@ + + #include + #include ++#include + + class GURL; + class PrefService; +--- chromium/src/third_party/tcmalloc/chromium/src/common.cc~ 2011-03-29 20:46:14.000000000 +0400 ++++ chromium/src/third_party/tcmalloc/chromium/src/common.cc 2011-03-29 20:47:02.000000000 +0400 +@@ -30,6 +30,7 @@ + // --- + // Author: Sanjay Ghemawat + ++#include + #include "config.h" + #include "common.h" + #include "system-alloc.h" +--- chromium/src/third_party/libjingle/source/talk/base/sigslot.h~ 2011-03-31 13:43:11.000000000 +0400 ++++ chromium/src/third_party/libjingle/source/talk/base/sigslot.h 2011-03-31 13:52:32.000000000 +0400 +@@ -81,6 +81,7 @@ + #include + #include + #include ++#include + + // On our copy of sigslot.h, we force single threading + #define SIGSLOT_PURE_ISO +--- chromium/src/third_party/ots/src/os2.cc~ 2011-03-31 14:03:13.000000000 +0400 ++++ chromium/src/third_party/ots/src/os2.cc 2011-03-31 14:03:25.000000000 +0400 +@@ -5,6 +5,7 @@ + #include "os2.h" + + #include "head.h" ++#include + + // OS/2 - OS/2 and Windows Metrics + // http://www.microsoft.com/opentype/otspec/os2.htm +--- chromium/src/third_party/tcmalloc/chromium/src/base/vdso_support.h~ 2011-03-29 23:20:20.000000000 +0400 ++++ chromium/src/third_party/tcmalloc/chromium/src/base/vdso_support.h 2011-03-29 23:20:37.000000000 +0400 +@@ -38,6 +38,7 @@ + + #define HAVE_VDSO_SUPPORT 1 + ++#include + #include // for NULL + #include // for ElfW + +--- chromium/src/third_party/tcmalloc/chromium/src/base/stl_allocator.h~ 2011-03-31 12:53:13.000000000 +0400 ++++ chromium/src/third_party/tcmalloc/chromium/src/base/stl_allocator.h 2011-03-31 12:53:32.000000000 +0400 +@@ -39,6 +39,7 @@ + + #include // for std::ptrdiff_t + #include ++#include + + #include "base/logging.h" + +--- chromium/src/third_party/tcmalloc/chromium/src/symbolize.h~ 2011-03-31 12:58:42.000000000 +0400 ++++ chromium/src/third_party/tcmalloc/chromium/src/symbolize.h 2011-03-31 12:59:00.000000000 +0400 +@@ -39,6 +39,7 @@ + #endif + #include // for NULL + #include ++#include + + using std::map; + +--- chromium/src/third_party/tcmalloc/chromium/src/system-alloc.h~ 2011-03-31 13:01:01.000000000 +0400 ++++ chromium/src/third_party/tcmalloc/chromium/src/system-alloc.h 2011-03-31 13:01:15.000000000 +0400 +@@ -37,6 +37,7 @@ + #define TCMALLOC_SYSTEM_ALLOC_H_ + + #include ++#include + #include // for size_t + + class SysAllocator; +--- chromium/src/ppapi/cpp/paint_aggregator.h 2010-12-23 18:10:27.000000000 -0600 ++++ chromium/src/ppapi/cpp/paint_aggregator.h 2011-04-19 05:34:56.085582885 -0500 +@@ -5,6 +5,7 @@ + #ifndef PPAPI_CPP_PAINT_AGGREGATOR_H_ + #define PPAPI_CPP_PAINT_AGGREGATOR_H_ + ++#include + #include + #include + diff --git a/chromium-icons.tar.bz2 b/chromium-icons.tar.bz2 new file mode 100644 index 0000000..6b25460 --- /dev/null +++ b/chromium-icons.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4d0115898a05eda80d3b1c291c9d9ee23d70db6b61411610a9b1fcbeaee40d2 +size 96357 diff --git a/chromium-libusb_interrupt_event_handler.patch b/chromium-libusb_interrupt_event_handler.patch new file mode 100644 index 0000000..5f53dc1 --- /dev/null +++ b/chromium-libusb_interrupt_event_handler.patch @@ -0,0 +1,15 @@ +diff -up chromium-48.0.2564.116/services/device/usb/usb_context.cc.modern-libusbx chromium-48.0.2564.116/device/usb/usb_context.cc +--- chromium-48.0.2564.116/services/device/usb/usb_context.cc.modern-libusbx 2016-02-24 10:21:10.534996028 -0500 ++++ chromium-48.0.2564.116/services/device/usb/usb_context.cc 2016-02-24 10:22:28.270499864 -0500 +@@ -57,7 +57,11 @@ void UsbContext::UsbEventHandler::Run() + + void UsbContext::UsbEventHandler::Stop() { + base::subtle::Release_Store(&running_, 0); ++#ifdef LIBUSB_API_VERSION >= 0x01000105 ++ libusb_interrupt_event_handler(context_); ++#else + libusb_interrupt_handle_event(context_); ++#endif + } + + UsbContext::UsbContext(PlatformUsbContext context) : context_(context) { diff --git a/chromium-master-prefs-path.patch b/chromium-master-prefs-path.patch new file mode 100644 index 0000000..c6479f5 --- /dev/null +++ b/chromium-master-prefs-path.patch @@ -0,0 +1,13 @@ +diff -dupr a/src/chrome/browser/first_run.cc b/src/chrome/browser/first_run.cc +--- a/src/chrome/browser/first_run/first_run.cc 2010-03-10 10:21:33.000000000 -0700 ++++ b/src/chrome/browser/first_run/first_run.cc 2010-03-10 13:08:12.000000000 -0700 +@@ -92,8 +92,7 @@ + + // The standard location of the master prefs is next to the chrome binary. + FilePath master_prefs; +- if (!PathService::Get(base::DIR_EXE, &master_prefs)) +- return true; ++ master_prefs = FilePath("/etc/chromium"); + master_prefs = master_prefs.AppendASCII(installer::kDefaultMasterPrefs); + + installer::MasterPreferences prefs(master_prefs); diff --git a/chromium-no-courgette.patch b/chromium-no-courgette.patch new file mode 100644 index 0000000..6cf6e5e --- /dev/null +++ b/chromium-no-courgette.patch @@ -0,0 +1,12 @@ +diff -up chromium-20100218svn39394/src/build/all.gyp.no-courgette chromium-20100218svn39394/src/build/all.gyp +--- chromium-20100218svn39394/src/build/all.gyp.no-courgette 2010-02-19 16:03:23.305138076 -0500 ++++ chromium-20100218svn39394/src/build/all.gyp 2010-02-19 16:03:42.426124248 -0500 +@@ -81,7 +81,6 @@ + ['OS=="linux"', { + 'dependencies': [ + '../breakpad/breakpad.gyp:*', +- '../courgette/courgette.gyp:*', + '../dbus/dbus.gyp:*', + '../sandbox/sandbox.gyp:*', + ], +diff -up chromium-20100218svn39394/src/chrome/chrome.gyp.no-courgette chromium-20100218svn39394/src/chrome/chrome.gyp diff --git a/chromium-no-sqlite-debug.patch b/chromium-no-sqlite-debug.patch new file mode 100644 index 0000000..1608901 --- /dev/null +++ b/chromium-no-sqlite-debug.patch @@ -0,0 +1,22 @@ +diff -up chromium-20100218svn39394/src/chrome/common/sqlite_utils.cc.no-sqlite-debugging chromium-20100218svn39394/src/chrome/common/sqlite_utils.cc +--- chromium-20100218svn39394/src/chrome/common/sqlite_utils.cc.no-sqlite-debugging 2010-02-18 18:23:31.000000000 -0500 ++++ chromium-20100218svn39394/src/chrome/common/sqlite_utils.cc 2010-02-19 15:40:50.338131672 -0500 +@@ -32,8 +32,6 @@ class DebugSQLErrorHandler: public Vanil + public: + virtual int HandleError(int error, sqlite3* db) { + error_ = error; +- NOTREACHED() << "sqlite error " << error +- << " db " << static_cast(db); + return error; + } + }; +@@ -276,8 +274,7 @@ int SQLStatement::prepare(sqlite3* db, c + DCHECK(!stmt_); + int rv = sqlite3_prepare_v2(db, sql, sql_len, &stmt_, NULL); + if (rv != SQLITE_OK) { +- SQLErrorHandler* error_handler = GetErrorHandlerFactory()->Make(); +- return error_handler->HandleError(rv, db); ++ DLOG(ERROR) << "SQLStatement.prepare_v2 failed: " << sqlite3_errmsg(db); + } + return rv; + } diff --git a/chromium-no-test-sources.patch b/chromium-no-test-sources.patch new file mode 100644 index 0000000..663328b --- /dev/null +++ b/chromium-no-test-sources.patch @@ -0,0 +1,53 @@ +diff -up chromium-6.0.417.0-20100526svn48276/chrome/chrome.gyp.notests chromium-6.0.417.0-20100526svn48276/chrome/chrome.gyp +--- chromium-6.0.417.0-20100526svn48276/src/chrome/chrome.gyp.notests 2010-05-27 11:08:15.000000000 -0400 ++++ chromium-6.0.417.0-20100526svn48276/src/chrome/chrome.gyp 2010-05-27 11:09:38.961194394 -0400 +@@ -132,7 +132,6 @@ + 'chrome_installer.gypi', + 'chrome_installer_util.gypi', + 'chrome_renderer.gypi', +- 'chrome_tests.gypi', + 'common_constants.gypi', + 'nacl.gypi', + ], +@@ -920,7 +919,6 @@ + 'target_name': 'ipclist', + 'type': 'executable', + 'dependencies': [ +- 'test_support_common', + '../skia/skia.gyp:skia', + ], + 'include_dirs': [ +@@ -1238,7 +1236,6 @@ + 'type': 'executable', + 'dependencies': [ + '../base/base.gyp:base', +- '../base/base.gyp:test_support_base', + ], + 'sources': [ + 'tools/perf/flush_cache/flush_cache.cc', +@@ -1351,7 +1348,6 @@ + '..', + ], + 'dependencies': [ +- 'test_support_common', + '../skia/skia.gyp:skia', + ], + 'sources': [ +@@ -1528,7 +1524,6 @@ + 'dependencies': [ + 'theme_resources', + 'theme_resources_standard', +- '../base/base.gyp:test_support_base', + '../skia/skia.gyp:skia', + '../testing/gtest.gyp:gtest', + ], +--- chromium/src/chrome/browser/sync/tools/sync_tools.gyp 2011-04-08 16:44:28.737000131 +0200 ++++ chromium/src/chrome/browser/sync/tools/sync_tools.gyp 2011-04-08 16:44:28.737000131 +0200 +@@ -13,7 +13,6 @@ + 'dependencies': [ + '<(DEPTH)/base/base.gyp:base', + '<(DEPTH)/chrome/chrome.gyp:sync_notifier', +- '<(DEPTH)/chrome/chrome.gyp:test_support_common', + '<(DEPTH)/content/content.gyp:content_browser', + '<(DEPTH)/net/net.gyp:net', + ], diff --git a/chromium-norar.patch b/chromium-norar.patch new file mode 100644 index 0000000..33c8bc5 --- /dev/null +++ b/chromium-norar.patch @@ -0,0 +1,16 @@ +diff --git a/chrome/browser/safe_browsing/download_protection/file_analyzer.cc b/chrome/browser/safe_browsing/download_protection/file_analyzer.cc +index 2a930f44908f4..095a1ac913334 100644 +--- a/chrome/browser/safe_browsing/download_protection/file_analyzer.cc ++++ b/chrome/browser/safe_browsing/download_protection/file_analyzer.cc +@@ -78,11 +78,6 @@ void FileAnalyzer::Start(const base::FilePath& target_file_name, + return; + } + +- if (inspection_type == DownloadFileType::RAR) { +- StartExtractRarFeatures(); +- return; +- } +- + #if BUILDFLAG(IS_MAC) + if (inspection_type == DownloadFileType::DMG) { + StartExtractDmgFeatures(); diff --git a/chromium-norpath.patch b/chromium-norpath.patch new file mode 100644 index 0000000..bd6c3e8 --- /dev/null +++ b/chromium-norpath.patch @@ -0,0 +1,11 @@ +--- chromium/src/native_client/build/common.gypi.norpath 2009-12-16 10:15:46.000000000 -0500 ++++ chromium/src/native_client/build/common.gypi 2009-12-16 10:15:52.000000000 -0500 +@@ -511,7 +511,7 @@ + # -rpath is only used when building with shared libraries. + 'conditions': [ + [ 'library=="shared_library"', { +- 'RPATH': '$LIB_DIR', ++ # 'RPATH': '$LIB_DIR', + }], + ], + }, diff --git a/chromium-prop-codecs.patch b/chromium-prop-codecs.patch new file mode 100644 index 0000000..fe3b499 --- /dev/null +++ b/chromium-prop-codecs.patch @@ -0,0 +1,17 @@ +Index: chromium-106.0.5249.91/media/BUILD.gn +=================================================================== +--- chromium-106.0.5249.91.orig/media/BUILD.gn ++++ chromium-106.0.5249.91/media/BUILD.gn +@@ -64,12 +64,6 @@ buildflag_header("media_buildflags") { + } + } + +-if (proprietary_codecs && media_use_ffmpeg) { +- assert( +- ffmpeg_branding != "Chromium", +- "proprietary codecs and ffmpeg_branding set to Chromium are incompatible") +-} +- + # Common configuration for targets in the media directory; these must not be + # exported since things like USE_NEON have different meanings elsewhere in the + # code base. diff --git a/chromium-remoting-build-fix.diff b/chromium-remoting-build-fix.diff new file mode 100644 index 0000000..8f1f5d2 --- /dev/null +++ b/chromium-remoting-build-fix.diff @@ -0,0 +1,14 @@ +--- chromium/src/remoting/remoting.gyp 2010-10-03 15:13:07.746440175 +0200 ++++ chromium/src/remoting/remoting.gyp 2010-10-03 15:13:07.746440175 +0200 +@@ -243,6 +243,11 @@ + # TODO(hclam): Enable VP8 in the build. + #'third_party/on2/on2.gyp:vp8', + ], ++ 'link_settings': { ++ 'libraries': [ ++ '-lvpx', ++ ], ++ }, + 'export_dependent_settings': [ + '../base/base.gyp:base', + '../net/net.gyp:net', diff --git a/chromium-symbolic.svg b/chromium-symbolic.svg new file mode 100644 index 0000000..f851afc --- /dev/null +++ b/chromium-symbolic.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cfe74408486aa8e032ca719e2ec57ad6f8bee916b4efb03767d69d7fdca5f012 +size 3537 diff --git a/chromium-system-expat.patch b/chromium-system-expat.patch new file mode 100644 index 0000000..c4577db --- /dev/null +++ b/chromium-system-expat.patch @@ -0,0 +1,42 @@ +diff -up chromium-5.0.358.0-20100318svn41971/src/chrome/browser/autofill/autofill_xml_parser.h.system-expat chromium-5.0.358.0-20100318svn41971/src/chrome/browser/autofill/autofill_xml_parser.h +--- chromium-5.0.358.0-20100318svn41971/src/chrome/browser/autofill/autofill_xml_parser.h.system-expat 2010-03-18 22:55:12.071283208 -0400 ++++ chromium-5.0.358.0-20100318svn41971/src/chrome/browser/autofill/autofill_xml_parser.h 2010-03-18 22:55:27.671209061 -0400 +@@ -10,7 +10,7 @@ + #include "base/basictypes.h" + #include "chrome/browser/autofill/field_types.h" + #include "chrome/browser/autofill/form_structure.h" +-#include "third_party/expat/files/lib/expat.h" ++#include + #include "third_party/libjingle/source/talk/xmllite/xmlparser.h" + + // The base class that contains common functionality between +--- chromium-5.0.358.0-20100318svn41971/src/third_party/libjingle/source/talk/xmllite/xmlparser.h.system-expat 2010-03-18 22:55:12.071283208 -0400 ++++ chromium-5.0.358.0-20100318svn41971/src/third_party/libjingle/source/talk/xmllite/xmlparser.h 2010-03-18 22:55:27.671209061 -0400 +@@ -31,11 +31,7 @@ + #include + + #include "talk/xmllite/xmlnsstack.h" +-#ifdef EXPAT_RELATIVE_PATH +-#include "expat.h" +-#else +-#include "third_party/expat/v2_0_1/Source/lib/expat.h" +-#endif // EXPAT_RELATIVE_PATH ++#include + + struct XML_ParserStruct; + typedef struct XML_ParserStruct* XML_Parser; +--- chromium-5.0.358.0-20100318svn41971/src/third_party/libjingle/source/talk/xmllite/xmlbuilder.h.system-expat 2010-03-18 22:55:12.071283208 -0400 ++++ chromium-5.0.358.0-20100318svn41971/src/third_party/libjingle/source/talk/xmllite/xmlbuilder.h 2010-03-18 22:55:27.671209061 -0400 +@@ -33,11 +33,7 @@ + #include "talk/base/scoped_ptr.h" + #include "talk/xmllite/xmlparser.h" + +-#ifdef EXPAT_RELATIVE_PATH +-#include "expat.h" +-#else +-#include "third_party/expat/v2_0_1/Source/lib/expat.h" +-#endif // EXPAT_RELATIVE_PATH ++#include + + namespace buzz { + diff --git a/chromium-system-glew.patch b/chromium-system-glew.patch new file mode 100644 index 0000000..ba5b630 --- /dev/null +++ b/chromium-system-glew.patch @@ -0,0 +1,46 @@ +diff -up chromium-5.0.377.0-20100413svn44349/src/build/linux/system.gyp.GLEW chromium-5.0.377.0-20100413svn44349/src/build/linux/system.gyp +--- chromium-5.0.377.0-20100413svn44349/src/build/linux/system.gyp.GLEW 2010-04-13 11:36:47.300172139 -0400 ++++ chromium-5.0.377.0-20100413svn44349/src/build/linux/system.gyp 2010-04-13 11:36:47.579173387 -0400 +@@ -340,6 +340,42 @@ + }, + }]] + }, ++ { ++ 'target_name': 'icu', ++ 'type': 'settings', ++ 'conditions': [ ++ ['_toolset=="target"', { ++ 'direct_dependent_settings': { ++ 'cflags': [ ++ '-Wno-unused-function', ++ # TODO(port): fix ICU to not depend on this flag. ++ '-fno-strict-aliasing', ++ ], ++ }, ++ 'link_settings': { ++ 'ldflags': [ ++ '', ++ ], ++ 'libraries': [ ++ '-licui18n', ++ ], ++ }, ++ }]] ++ }, ++ { ++ 'target_name': 'glew', ++ 'type': 'settings', ++ 'conditions': [ ++ ['_toolset=="target"', { ++ 'link_settings': { ++ 'libraries': [ ++ '-lGLEW', ++ '-lGL', ++ '-lX11', ++ ], ++ }, ++ }]] ++ }, + { + 'target_name': 'gnome_keyring', + 'type': 'settings', diff --git a/chromium-system-zlib.patch b/chromium-system-zlib.patch new file mode 100644 index 0000000..af20f79 --- /dev/null +++ b/chromium-system-zlib.patch @@ -0,0 +1,19 @@ +diff -up chromium-20100315svn41580/src/third_party/WebKit/Source/WebCore/WebCore.gyp/WebCore.gyp.system-zlib chromium-20100315svn41580/src/third_party/WebKit/WebCore/WebCore.gyp/WebCore.gyp +--- chromium-20100315svn41580/src/third_party/WebKit/Source/WebCore/WebCore.gyp/WebCore.gyp.system-zlib 2010-03-15 13:08:00.000000000 -0400 ++++ chromium-20100315svn41580/src/third_party/WebKit/Source/WebCore/WebCore.gyp/WebCore.gyp 2010-03-15 13:10:34.697208907 -0400 +@@ -855,6 +855,7 @@ + '<(chromium_src_dir)/third_party/ots/ots.gyp:ots', + '<(chromium_src_dir)/third_party/sqlite/sqlite.gyp:sqlite', + '<(chromium_src_dir)/third_party/angle/src/build_angle.gyp:translator_common', ++ '<(chromium_src_dir)/third_party/zlib/zlib.gyp:zlib', + '<(libjpeg_gyp_path):libjpeg', + ], + 'export_dependent_settings': [ +@@ -872,6 +873,7 @@ + '<(chromium_src_dir)/third_party/ots/ots.gyp:ots', + '<(chromium_src_dir)/third_party/sqlite/sqlite.gyp:sqlite', + '<(chromium_src_dir)/third_party/angle/src/build_angle.gyp:translator_common', ++ '<(chromium_src_dir)/third_party/zlib/zlib.gyp:zlib', + '<(libjpeg_gyp_path):libjpeg', + ], + # This is needed for mac because of webkit_system_interface. It'd be nice diff --git a/chromium-vendor.patch.in b/chromium-vendor.patch.in new file mode 100644 index 0000000..059e3d2 --- /dev/null +++ b/chromium-vendor.patch.in @@ -0,0 +1,11 @@ +--- src/webkit/glue/user_agent.cc ++++ src/webkit/glue/user_agent.cc +@@ -106,6 +106,7 @@ void BuildUserAgent(bool mimic_chrome1, + base::StringAppendF( + result, + "Mozilla/5.0 (%s%s) AppleWebKit/%d.%d" +- " (KHTML, like Gecko) %s Safari/%d.%d", ++ " (KHTML, like Gecko) %s Safari/%d.%d" ++ " SUSE/RPM_VERSION", + mimic_windows ? "Windows " : kUserAgentPlatform, + BuildOSCpuInfo().c_str(), diff --git a/chromium.15.0.854.0.svn96902.tar.lzma b/chromium.15.0.854.0.svn96902.tar.lzma new file mode 100644 index 0000000..b7a55ac --- /dev/null +++ b/chromium.15.0.854.0.svn96902.tar.lzma @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d09fedf04e64c8ff6876464af4ef20672a0d917052842f390aa6244716199f5f +size 191564388 diff --git a/chromium.changes b/chromium.changes new file mode 100644 index 0000000..80aac82 --- /dev/null +++ b/chromium.changes @@ -0,0 +1,406 @@ +------------------------------------------------------------------- +Tue Aug 16 09:14:32 UTC 2011 - tittiatcoke@gmail.com + +- Update to 15.0.854 + +------------------------------------------------------------------- +Sun Aug 7 09:13:32 UTC 2011 - tittiatcoke@gmail.com + +- Introduce an option to switch the password store for Chromium in + a more friendlier way, by using the update-alternatives. The user + has now the option to install a new package (chromium-desktop-kde + or chromium-desktop-gnome) and based on this the respective + password store is selected. + +------------------------------------------------------------------- +Sat Aug 6 10:09:02 UTC 2011 - tittiatcoke@gmail.com + +- Update to 15.0.846 + +------------------------------------------------------------------- +Sat Jul 30 08:12:51 UTC 2011 - tittiatcoke@gmail.com + +- Update to 15.0.839 + +------------------------------------------------------------------- +Thu Jul 21 17:06:31 UTC 2011 - tittiatcoke@gmail.com + +- Update to 14.0.829 + +------------------------------------------------------------------- +Sun Jul 17 09:15:18 UTC 2011 - tittiatcoke@gmail.com + +- Update to 14.0.825 + +------------------------------------------------------------------- +Tue Jul 12 02:26:20 UTC 2011 - nmarques@opensuse.org + +- Fix for bnc#705223: + + Icons are installed in hicolor instead of oxygen, this ensures + compatibility with open Desktop standards. + + Add GTK icon cache update for >= 1140 on %post and %postun. + + Removed the .png in %{_datadir}/pixmaps as hicolor is a better + option. + + Add hicolor-icon-theme to BuildRequires and Requires. + +------------------------------------------------------------------- +Mon Jun 13 11:49:27 UTC 2011 - tittiatcoke@gmail.com + +- Update to 14.0.792 + +------------------------------------------------------------------- +Mon Jun 6 08:47:30 UTC 2011 - tittiatcoke@gmail.com + +- Update to 14.0.786 + +------------------------------------------------------------------- +Sat Jun 4 07:22:05 UTC 2011 - tittiatcoke@gmail.com + +- Update to 14.0.785 + +------------------------------------------------------------------- +Sat May 28 20:05:21 UTC 2011 - tittiatcoke@gmail.com + +- Update to 13.0.780 + +------------------------------------------------------------------- +Wed May 25 13:03:04 UTC 2011 - tittiatcoke@gmail.com + +- Update to 13.0.777 + + Builds now based on system library for V8. + + Removed Shared Library build due to errors. Everything is back + into one single binary + + Added patchfile to build with GCC 4.6 + +------------------------------------------------------------------- +Sun May 15 12:49:33 UTC 2011 - tittiatcoke@gmail.com + +- Update to 13.0.767 + +------------------------------------------------------------------- +Thu Apr 28 17:44:47 UTC 2011 - tittiatcoke@gmail.com + +- Update to 13.0.751 + +------------------------------------------------------------------- +Fri Apr 22 06:23:09 UTC 2011 - tittiatcoke@gmail.com + +- Update to 12.0.744 + +------------------------------------------------------------------- +Mon Apr 18 17:01:00 UTC 2011 - tittiatcoke@gmail.com + +- Update to 12.0.741 +- Include icon-set for Oxygen. (bnc#684728) + +------------------------------------------------------------------- +Fri Apr 8 15:29:13 UTC 2011 - tittiatcoke@gmail.com + +- Update to 12.0.731 + +------------------------------------------------------------------- +Sun Apr 3 15:30:49 UTC 2011 - tittiatcoke@gmail.com + +- Update to 12.0.724 + +------------------------------------------------------------------- +Thu Mar 31 19:28:18 UTC 2011 - tittiatcoke@gmail.com + +- Update to 12.0.721 + +------------------------------------------------------------------- +Mon Mar 28 18:26:22 UTC 2011 - tittiatcoke@gmail.com + +- Update to 12.0.718 +- Added conflict for xine-browser-plugin + +------------------------------------------------------------------- +Wed Mar 16 05:15:44 UTC 2011 - tittiatcoke@gmail.com + +- Update to 12.0.705 +- Included option to detect the password store in /usr/bin/chromium + (options there are detect,default,gnome,kwallet) + +------------------------------------------------------------------- +Fri Mar 11 08:42:36 UTC 2011 - tittiatcoke@gmail.com + +- Update to 12.0.700 + +------------------------------------------------------------------- +Wed Mar 9 18:45:16 UTC 2011 - tittiatcoke@gmail.com + +- Update to 11.0.698 + +------------------------------------------------------------------- +Fri Mar 4 08:08:57 UTC 2011 - tittiatcoke@gmail.com + +- Update to 11.0.691 + +------------------------------------------------------------------- +Wed Mar 2 18:17:40 UTC 2011 - tittiatcoke@gmail.com + +- Update to 11.0.688 + +------------------------------------------------------------------- +Sun Feb 27 09:05:00 UTC 2011 - tittiatcoke@gmail.com + +- Update to 11.0.685 + +------------------------------------------------------------------- +Sun Feb 27 08:52:51 UTC 2011 - tittiatcoke@gmail.com + +- Update to 11.0.683 + * Chromium will now use the internal ICU libraries for all + openSUSE versions. + +------------------------------------------------------------------- +Wed Feb 16 23:45:49 UTC 2011 - tittiatcoke@gmail.com + +- Update to 11.0.674 + +------------------------------------------------------------------- +Tue Feb 15 18:37:51 UTC 2011 - tittiatcoke@gmail.com + +- Update to 11.0.673 + * For Factory the internal ICU libraries are used as that + Chromium does not build with the ones provided by Factory + +------------------------------------------------------------------- +Wed Jan 19 13:23:13 UTC 2011 - prusnak@opensuse.org + +- add more mimetypes to desktop file + + +------------------------------------------------------------------- +Sat Dec 25 09:40:13 UTC 2010 - rwooninck@opensuse.org + +- update to 10.0.622.0 + +------------------------------------------------------------------- +Mon Oct 25 14:30:33 UTC 2010 - tittiatcoke@gmail.com + +- Update to 9.0.564 build + * Added specific patches for MeeGo. + * We are now using shared libraries for Chromium + * Spec-file cleanup (Thanks to prusnak) + +------------------------------------------------------------------- +Thu Jul 8 00:13:33 UTC 2010 - cristian.rodriguez@opensuse.org + +- use jobs instead of a fixed numer of jobs, buildsystem may hang + +------------------------------------------------------------------- +Wed Jul 7 20:10:06 UTC 2010 - cristian.rodriguez@opensuse.org + +- workaround gcc bug, that produces extremely annoying + failure of the search bar. + +------------------------------------------------------------------- +Mon May 24 01:17:14 UTC 2010 - cristian.rodriguez@opensuse.org + +- do not include %{release} in RPM_VERSION that makes the + package to republish everytime to users even if there + are no code changes. + +------------------------------------------------------------------- +Wed Mar 10 20:10:14 UTC 2010 - bgmerrell@novell.com + +- Add master_preferences source file and install it to /etc/chromium. +- Create a new patch (chromium-master-prefs-path.patch) which tells + chromium to look in /etc/chromium for the master_preferences file + (instead of looking in the default directory, which is the same + directory as the 'chrome' binary). + +------------------------------------------------------------------- +* Sun Mar 7 00:00:00 UTC 2010 - tititatcoke@gmail.com + +- Update to 5.0.347 + + moved back to static binary again. + + No longer depends on system v8 + +------------------------------------------------------------------- +* Mon Feb 21 00:00:00 UTC 2010 - tititatcoke@gmail.com + +- Update to 5.0.341 + + remove courgette build and sources (patent issue) + + Move to shared libraries build + + Depends on system v8 again + +------------------------------------------------------------------- +Sun Jan 24 21:42:27 UTC 2010 - prusnak@suse.cz + +- added vendor to user agent (chromium-vendor.patch.in) + +------------------------------------------------------------------- +Sun Nov 29 14:18:27 UTC 2009 - prusnak@suse.cz + +- added --enable-sync to wrapper to enable bookmark sync + +------------------------------------------------------------------- +* Sun Nov 29 00:00:00 UTC 2009 - tittiatcoke@gmail.com + +- Update to 4.0.260 + +------------------------------------------------------------------- +* Fri Nov 27 00:00:00 UTC 2009 - tittiatcoke@gmail.com + +- Update to 4.0.259 + +------------------------------------------------------------------- +* Thu Nov 26 00:00:00 UTC 2009 - tittiatcoke@gmail.com + +- Update to 4.0.258 + +------------------------------------------------------------------- +* Tue Nov 24 00:00:00 UTC 2009 - tittatcoke@gmai.com + +- In order to complete prevent the wrong v8 version to be used, + the Chromium build has been changed to having an built-in v8 + +------------------------------------------------------------------- +* Tue Nov 24 00:00:00 UTC 2009 - dbuck@example.com + +- Re-base patches. +- Fixed a few patch errors. +- Rename some patches to better correspond with function. +- Removed some patches. +- Minor SPEC changes. +- I changed the v8 requirement to be exact, instead of greater than a specific version. + +------------------------------------------------------------------- +Fri Nov 13 20:34:05 UTC 2009 - tittiatcoke@gmail.com + +- update to 247.0 svn 31928 + +------------------------------------------------------------------- +Fri Oct 30 13:58:11 UTC 2009 - tittiatcoke@gmail.com + +- update to 229.0 svn 30454 + + Fix regression where popups and app frames lost their titlebars. + + Makes it so that when a folder is open on the bookmark bar + and the mouse moves over another folder, the menu for that + folder is shown. + + Lazily create the find bar. + + Polish to the gmail checker sample. + * New, crisper icons that are exactly 19x19 + * Add a loading animation at the beginning before Gmail + responds. + * Fix a bug where we sometimes don't update the UI after a + logout/login cycle. + + Refactor widget methods to support desktop notifications, + including GTK stubs. + + Find-in-page should not ding while deleting characters. + + Add SSL wrapper for linux and mac. This allows notifier to + use chrome's SSL layer instead of OpenSSL. + + Add three of the six extensions to PAC that Internet Explorer supports. + + WebSocket support in chromium. (Run with --enable-web-sockets + enables WebSocket features.) + + Do not allow GTK File Chooser dialogs to return directories. + + Fix the notifier SSL layer to make notifications work for + Linux Bookmark sync. + + linux: don't override mouse selection behavior in omnibox + +------------------------------------------------------------------- +Sun Oct 25 08:37:29 UTC 2009 - tittiatcoke@gmail.com + +- Update to 224.4 svn 30027 + + First cut at new page and browser action docs based + on new API. Deleted old stuff. + + Add suppression for new memory leak caused by WebKit merge 49830:49844 + + Cleanup: change PIDs to base::ProcessId (or pid_t, as appropriate) + + Minimize dependency of user scripts + + Fixup the flip_framer eof-handling semantics now that we have + the FIN bit in place + + app depends on x11 because of active_window_watcher_x + + Adding two images for the new Extension managment UI + + Removing hard-coded Chrome Frame output path + + Rearrange clipboard code + + Fix crash bug when attempting to download a url with unsupported scheme, + e.g. 'data:', by 'Alt + Click' + + GTK: Change text for extension download UI + + Ignore invalid urls on command line + + Make dropped tabs animate from where they were dropped. + + Make room for the full width of the tab placeholder. + + Make tab dragging as smooth as glass. + + Remove an annoying NOTIMPLEMNETED + + Extensions: guarantee removal of BROWSER_WINDOW_READY registration + + If we're in the middle of a drag, don't allow the user to middle + click to close or right click for the context menu + + "Fix" a NOTIMPLEMENTED on Linux by using the default password store + + Remove +x bit from files that shouldn't have it + + Fold first 3 channels of multichannel instead of 5. Use fixed point + + Adding new image needed for the managment UI + + Fix a race bug where content scripts would not apply to the first page load + + Make escape remove a bookmark if it's just been added (but not if it already existed) + + Fix bubbles deactivating the opaque frame + + Allow ESC to cancel ALT+SHIFT+T in Toolbar + + ake all pepper plugins default to windowless and transparent + + Add styles for printing + + Implement the new extension management UI + + Add support for to automation interface load install and load extensions + + GTK: theme the info bar border + + Update V8 to version 1.3.16.1 + + Introduce WebSecurityPolicy for security related methods + + New button scheme...borders are separate from the inner contents so + that they can be highlighted / depressed independently + + When opening Chrome maximized with an application window already + running, the Chrome window was not activated + + Fix compatibility problems with FileZilla FTP Server + + Remove the extension shelf on Linux + + Fix the proxy host and port string to start with http:// if it does not already + + Enable HTML5 databases for all extension renderer processes + +------------------------------------------------------------------- +* Sat Oct 24 00:00:00 UTC 2009 - prusnak@opensuse.org + +- don't create desktop files in wrapper +- fix LD_LIBRARY_PATH (chromium-fix-wrapper.patch) + +------------------------------------------------------------------- +* Tue Oct 20 00:00:00 UTC 2009 - tittiatcoke@gmail.com + +- update to newer svn snapshot + + Obsoletes fwrite patch (included upstream) + +------------------------------------------------------------------- +* Fri Oct 16 00:00:00 UTC 2009 - tittiatcoke@gmail.com + +- update to newer svn snapshot + + Requires newer version of v8 + +------------------------------------------------------------------- +* Thu Oct 15 00:00:00 UTC 2009 - prusnak@suse.cz + +- do not force SSE on x86 (drop-sse.patch) + +------------------------------------------------------------------- +* Tue Oct 13 00:00:00 UTC 2009 - tittiatcoke@gmail.com + +- Update to newer svn snapshot +- Fixed spec file in order to build +- Included patch to build with system zlib + +------------------------------------------------------------------- +* Mon Oct 12 00:00:00 UTC 2009 - prusnak@suse.cz + +- package renamed to chromium +- cleaned up spec file + +------------------------------------------------------------------- +* Tue Oct 6 00:00:00 UTC 2009 - dbuck@example.com + +- v8 is now built as a separate package, and is required +- included many patches to use system libraries: + v8, icu, libxml2, libxslt, libjpeg, libpng, libevent, bzip2, zlib, nspr, nss + +------------------------------------------------------------------- +* Sun Oct 1 00:00:00 UTC 2009 - dbuck@example.com + +- included a newer DEP than is in svn, native_client@823 +- things should compile cleanly now + +------------------------------------------------------------------- +* Sun Aug 31 00:00:00 UTC 2009 - dbuck@example.com + +- initial build + diff --git a/chromium.spec b/chromium.spec new file mode 100644 index 0000000..07acf16 --- /dev/null +++ b/chromium.spec @@ -0,0 +1,379 @@ +# Thanks to malcolmlewis for help with this script +# Thanks to Tom "spot" Callaway for much of the patchwork +# Thanks to jhaygood for most of the icu patch + + +%define svn_rev 96902 +%define v8_ver 3.5.5.0 + +Name: chromium +Version: 15.0.854.0 +Release: 1 +License: BSD +Summary: Google's opens source browser project +Group: Productivity/Networking/Web/Browsers +Source0: %{name}.%{version}.svn%{svn_rev}.tar.lzma +Source8: ffmpeg-0.6-headers.tar.bz2 +Source20: chromium-vendor.patch.in +Source30: master_preferences +Source31: default_bookmarks.html +Source99: chrome-wrapper +Source100: chromium-browser.sh +Source101: chromium-browser.desktop +Source102: chromium-browser.xml +Source103: chromium-browser-rpmlintrc +Source104: chromium-icons.tar.bz2 +Provides: chromium-browser = %{version} +Provides: chromium-based-browser = %{version} +Obsoletes: chromium-browser < %{version} +Obsoletes: chromium-devel <= %{version} +Obsoletes: chromium-libs <= %{version} +Provides: chromium-libs = %{version} +Conflicts: xine-browser-plugin + +## Start Patches +# Many changes to the gyp systems so we can use system libraries +# PATCH-FIX-OPENSUSE Fix build with GCC 4.6 +Patch1: chromium-gcc46.patch +# PATCH-FIX-OPENSUSE disable debug for sqlite +#Patch4: chromium-no-sqlite-debug.patch +# PATCH-FIX-OPENSUSE patches in system zlib library +Patch8: chromium-codechanges-zlib.patch +# PATCH-FIX-OPENSUSE disables the build of the test suite +Patch12: chromium-no-test-sources.patch +# PATCH-FIX-OPENSUSE removes build part for courgette +Patch13: chromium-no-courgette.patch +# PATCH-FIX-OPENSUSE enables reading of the master preference +Patch14: chromium-master-prefs-path.patch +# PATCH-FIX-OPENSUSE patches in system glew library +Patch17: chromium-system-glew.patch +# PATCH-FIX-OPENSUSE patches in system expat library +Patch18: chromium-system-expat.patch +# PATCH-FIX-OPENSUSE further changes to work with system zlib library +Patch19: chromium-system-zlib.patch +# PATCH-FIX-OPENSUSE disables the requirement for ffmpeg +Patch20: chromium-6.0.425.0-ffmpeg-no-pkgconfig.patch +# PATCH-FIX-OPENSUSE ensure that all media formats are being recognized +Patch21: chromium-7.0.542.0-media-probe.patch +# PATCH-FIX-OPENSUSE disable the use of tcmallic function +Patch25: tcmalloc-factory.patch +# PATCH-FIX-OPENSUSE make sure that Chrome remoting is linking against the system libvpx +Patch26: chromium-remoting-build-fix.diff +# PATCH-FIX-OPENSUSE patches in system speex library +Patch28: chromium-7.0.500.0-system-speex.patch +# PATCH-FIX-OPENSUSE patches in the system ffmpeg header files +Patch29: chromium-7.0.510.0-system-ffmpeg.patch +# PATCH-FIX-OPENSUSE patches in the system libvpx library +Patch32: chromium-7.0.542.0-system-libvpx.patch +# PATCH-FIX-OPENSUSE further changes to ensure working with the system minizip and v8 libraries +Patch34: chromium-7.0.542.0-codechanges-system-minizip-v8.patch +# PATCH-FIX-OPENSUSE remove the rpath in the libraries +Patch62: chromium-norpath.patch +# PATCH-FIX-OPENSUSE patches in the system v8 library +Patch63: chromium-6.0.406.0-system-gyp-v8.patch +%if 0%{?suse_version} > 1130 +# PATCH-FIX-OPENSUSE ensure that on newer kernels the right /proc/oom_score_adj file is used +Patch99: chromium_patch_newer_kernels.patch +%endif +Patch999: buildfix.patch + +BuildRequires: Mesa-devel +BuildRequires: alsa-devel +BuildRequires: bison +BuildRequires: cups-devel +BuildRequires: desktop-file-utils +BuildRequires: fdupes +BuildRequires: flex +BuildRequires: freetype2-devel +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: gperf +BuildRequires: hunspell-devel +BuildRequires: libbz2-devel +BuildRequires: libevent +BuildRequires: libexpat-devel +BuildRequires: libgnutls-devel +BuildRequires: libjpeg-devel +BuildRequires: libpng-devel +BuildRequires: libstdc++-devel +BuildRequires: libvpx-devel +BuildRequires: libxslt-devel +BuildRequires: libzip-devel +BuildRequires: lzma +BuildRequires: mozilla-nspr-devel +BuildRequires: mozilla-nss-devel +BuildRequires: openssl-devel +BuildRequires: pam-devel +BuildRequires: perl(Switch) +BuildRequires: pkg-config +BuildRequires: pkgconfig(cairo) >= 1.6 +BuildRequires: pkgconfig(dbus-1) +BuildRequires: pkgconfig(gconf-2.0) +BuildRequires: pkgconfig(glib-2.0) +BuildRequires: pkgconfig(gtk+-2.0) +BuildRequires: pkgconfig(libxml-2.0) +BuildRequires: python +BuildRequires: python-xml +BuildRequires: sqlite3-devel +BuildRequires: update-desktop-files +BuildRequires: v8-devel = %{v8_ver} +BuildRequires: wdiff +BuildRequires: zlib-devel +BuildRequires: libpulse-devel +%if 0%{?suse_version} > 1120 +BuildRequires: libgnome-keyring-devel +%else +BuildRequires: gnome-keyring-devel +%endif +%if 0%{?suse_version} > 1130 +BuildRequires: python-devel +%endif + +%if 0%{?suse_version} >= 1110 +BuildRequires: libevent-devel +BuildRequires: libicu-devel >= 4.0 +%endif +BuildRequires: speex-devel +BuildRequires: hicolor-icon-theme + +Requires: alsa +Requires: xdg-utils +Requires: libv8-3 = %{v8_ver} +Requires: hicolor-icon-theme +Requires: update-alternatives + +Recommends: Chromium-password + +# Recommends the chromium-ffmpeg library (available from packman) +Recommends: chromium-ffmpeg = %{version} + +%if 0%{?suse_version} < 1120 +BuildRoot: %{_tmppath}/%{name}-%{version}-build +%endif + +%description +Chromium is the open-source project behind Google Chrome. We invite you to join us in our effort to help build a safer, faster, and more stable way for all Internet users to experience the web, and to create a powerful platform for developing a new generation of web applications. + +%package desktop-kde +Summary: Update to chromium to use KDE's kwallet to store passwords +Group: Productivity/Networking/Web/Browsers +supplements: packageand(chromium:kdebase4-session) +conflicts: chromium-desktop-gnome +Provides: Chromium-password + +%description desktop-kde +By using the openSUSE update-alternatives the password store for Chromium is changed to utilize +KDE's kwallet. Please be aware that by this change the old password are no longer accessible and +are also not converted to kwallet. + +%package desktop-gnome +Summary: Update to chromium to use Gnome keyring to store passwords +Group: Productivity/Networking/Web/Browsers +supplements: packageand(chromium:gnome-session) +conflicts: chromium-desktop-kde +Provides: Chromium-password + +%description desktop-gnome +By using the openSUSE update-alternatives the password store for Chromium is changed to utilize +Gnome's Keyring. Please be aware that by this change the old password are no longer accessible and +are also not converted to Gnome's Keyring. + +%prep +lzma -cd %{SOURCE0} | tar xf - +%setup -D -T -n %{name}-suse + +%patch1 -p1 +%patch62 -p1 +%patch63 -p1 +%patch8 -p1 +%patch12 -p1 +%patch13 -p1 +%patch14 -p1 +%patch17 -p1 +%patch18 -p1 +%patch19 -p1 +%patch20 -p1 +%patch21 -p1 +%patch25 -p1 +%patch26 -p1 +%patch28 -p1 +%patch29 -p1 +%patch32 -p1 +%patch34 -p1 +%if 0%{?suse_version} > 1130 +%patch99 -p1 +%endif +%patch999 -p1 + +pushd src/third_party/ffmpeg/ +tar xf %{SOURCE8} +popd + +rm -rf src/third_party/speex/ + +# apply vendor patch after substitution +sed "s:RPM_VERSION:%{version}:" %{SOURCE20} | patch -p0 + +%build + +## create make files + +PARSED_OPT_FLAGS=`echo \'%{optflags} -DUSE_SYSTEM_LIBEVENT -fPIC -fno-ipa-cp -fno-strict-aliasing \' | sed "s/ /',/g" | sed "s/',/', '/g"` +for i in src/build/common.gypi; do + sed -i "s|'-march=pentium4',||g" $i + sed -i "s|'-mfpmath=sse',||g" $i + sed -i "s|'-O<(debug_optimize)',||g" $i + sed -i "s|'-m32',||g" $i + sed -i "s|'-fno-exceptions',|$PARSED_OPT_FLAGS|g" $i + sed -i "s|'-Werror'|'-Wno-error'|g" $i +done +# ' + +pushd src + +./build/gyp_chromium -f make build/all.gyp \ +-Dlinux_sandbox_path=%{_libdir}/chromium/chrome-sandbox \ +-Dlinux_sandbox_chrome_path=%{_libdir}/chromium/chromium-browser \ +-Duse_openssl=0 \ +-Duse_system_ffmpeg=1 \ +-Duse_system_zlib=1 \ +-Duse_system_libpng=1 \ +-Duse_system_bzip2=1 \ +-Duse_system_libbz2=1 \ +-Duse_system_libjpeg=1 \ +-Duse_system_libxml=1 \ +-Duse_system_libxslt=1 \ +-Duse_system_libevent=1 \ +-Duse_system_vpx=1 \ +-Dremove_webcore_debug_symbols=1 \ +%if 0 +-Duse_system_v8=1 \ +%endif +-Dproprietary_codecs=1 \ +-Djavascript_engine=v8 \ +-Dlinux_fpic=1 \ +-Ddisable_sse2=1 \ +%ifarch x86_64 +-Dtarget_arch=x64 \ +%endif +-Dno_strict_aliasing=1 \ +-Drelease_extra_cflags=-fPIC + +make -r %{?_smp_mflags} chrome V=1 BUILDTYPE=Release + +popd + +%install +mkdir -p %{buildroot}%{_libdir}/chromium/ +install -m 755 %{SOURCE100} %{buildroot}%{_libdir}/chromium/chromium-generic +# x86_64 capable systems need this +sed -i "s|/usr/lib/chromium|%{_libdir}/chromium|g" %{buildroot}%{_libdir}/chromium/chromium-generic +#update the password-store settings for each alternative +sed "s|password-store=detect|password-store=kwallet|g" %{buildroot}%{_libdir}/chromium/chromium-generic > %{buildroot}%{_libdir}/chromium/chromium-kde +sed "s|password-store=detect|password-store=gnome|g" %{buildroot}%{_libdir}/chromium/chromium-generic > %{buildroot}%{_libdir}/chromium/chromium-gnome +mkdir -p %{buildroot}%{_mandir}/man1/ +pushd src/out/Release +cp -a chrome.pak locales resources xdg-settings %{buildroot}%{_libdir}/chromium/ +cp -a resources.pak %{buildroot}%{_libdir}/chromium/ +cp -a chrome %{buildroot}%{_libdir}/chromium/chromium +#cp -a lib.target/lib*.so %{buildroot}%{_libdir}/chromium/ +#cp -a lib.host/lib*.so %{buildroot}%{_libdir}/chromium/ +cp -a chrome.1 %{buildroot}%{_mandir}/man1/chrome.1 +cp -a chrome.1 %{buildroot}%{_mandir}/man1/chromium.1 +%fdupes %{buildroot}%{_mandir}/man1/ +popd + +mkdir -p %{buildroot}%{_datadir}/icons/ +pushd %{buildroot}%{_datadir}/icons/ +tar -xjf %{SOURCE104} +mv oxygen hicolor +popd + +mkdir -p %{buildroot}%{_datadir}/applications/ +desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE101} + +mkdir -p %{buildroot}%{_datadir}/gnome-control-center/default-apps/ +cp -a %{SOURCE102} %{buildroot}%{_datadir}/gnome-control-center/default-apps/ + +# link to browser plugin path. Plugin patch doesn't work. Why? +mkdir -p %{buildroot}%{_libdir}/browser-plugins +pushd %{buildroot}%{_libdir}/%{name} +ln -s %{_libdir}/browser-plugins plugins + +# Install the master_preferences file +mkdir -p %{buildroot}%{_sysconfdir}/%{name} +install -m 0644 %{SOURCE30} %{buildroot}%{_sysconfdir}/%{name} +install -m 0644 %{SOURCE31} %{buildroot}%{_sysconfdir}/%{name} + +%clean +rm -rf %{buildroot} + +%pre +if [ -f /usr/bin/chromium ] ; then + rm -v /usr/bin/chromium ; +fi + +# Add snipplets to update the GTK cache on package install. +%if 0%{?suse_version} >= 1140 +%post +%icon_theme_cache_post +update-alternatives --install %{_bindir}/chromium chromium %{_libdir}/chromium/chromium-generic 10 + +%postun +%icon_theme_cache_postun +update-alternatives --remove all chromium +%endif + +%if 0%{?suse_version} < 1140 +%post +update-alternatives --install %{_bindir}/chromium chromium %{_libdir}/chromium/chromium-generic 10 + +%postun +update-alternatives --remove all chromium +%endif + +%post desktop-kde +update-alternatives --install %{_bindir}/chromium chromium %{_libdir}/chromium/chromium-kde 15 +update-alternatives --auto chromium + +%postun desktop-kde +update-alternatives --remove %{_bindir}/chromium %{_libdir}/chromium/chromium-kde +update-alternatives --auto chromium + +%post desktop-gnome +update-alternatives --install %{_bindir}/chromium chromium %{_libdir}/chromium/chromium-gnome 15 +update-alternatives --auto chromium + +%postun desktop-gnome +update-alternatives --remove %{_bindir}/chromium %{_libdir}/chromium/chromium-gnome +update-alternatives --auto chromium + +# Files! + +%files +%defattr(-,root,root,-) +%config %{_sysconfdir}/%{name} +%dir %{_datadir}/gnome-control-center +%dir %{_datadir}/gnome-control-center/default-apps +%dir %{_libdir}/chromium/ +%{_libdir}/chromium/chromium +%{_libdir}/chromium/chromium-generic +%{_libdir}/chromium/plugins/ +%{_libdir}/chromium/resources/ +%{_libdir}/chromium/xdg-settings +%{_mandir}/man1/chrom* +%{_datadir}/applications/*.desktop +%{_datadir}/gnome-control-center/default-apps/chromium-browser.xml +%{_datadir}/icons/hicolor/ +%{_libdir}/chromium/chrome.pak +%{_libdir}/chromium/resources.pak +%{_libdir}/chromium/locales/ + +%files desktop-kde +%attr(755, root, root) %{_libdir}/chromium/chromium-kde + +%files desktop-gnome +%attr(755, root, root) %{_libdir}/chromium/chromium-gnome + + +%changelog diff --git a/chromium_patch_newer_kernels.patch b/chromium_patch_newer_kernels.patch new file mode 100644 index 0000000..8bcaa98 --- /dev/null +++ b/chromium_patch_newer_kernels.patch @@ -0,0 +1,11 @@ +--- chromium/src/base/process_util_linux.cc 2011-03-03 19:19:41.840017366 +0100 ++++ chromium/src/base/process_util_linux.cc 2011-03-03 19:19:41.840017366 +0100 +@@ -702,7 +702,7 @@ + + FilePath oom_adj("/proc"); + oom_adj = oom_adj.Append(base::Int64ToString(process)); +- oom_adj = oom_adj.AppendASCII("oom_adj"); ++ oom_adj = oom_adj.AppendASCII("oom_score_adj"); + + if (!file_util::PathExists(oom_adj)) + return false; diff --git a/default_bookmarks.html b/default_bookmarks.html new file mode 100644 index 0000000..6e81724 --- /dev/null +++ b/default_bookmarks.html @@ -0,0 +1,38 @@ + + + +Bookmarks +

Bookmarks Menu

+ +

+

Recently Bookmarked +
Recent Tags +
+
Get Bookmark Add-ons +

Bookmarks Toolbar

+
Add bookmarks to this folder to see them displayed on the Bookmarks Toolbar +

+

openSUSE

+

+

openSUSE +
openSUSE Documentation +
openSUSE Download +
openSUSE News +
How To participate in openSUSE +
openSUSE Forums +
Planet SUSE +

+

Latest Headlines +
+

Chromium

+

+

Bug Life Cycle and Reporting Guidelines (The Chromium Projects) +
Chromium - Google Code +
Chromium Blog +
Getting Involved (The Chromium Projects) +
Google Chrome Help +

+

+

diff --git a/esbuild-0.24.0-vendor.tar.gz b/esbuild-0.24.0-vendor.tar.gz new file mode 100644 index 0000000..44925c4 --- /dev/null +++ b/esbuild-0.24.0-vendor.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f13e8473c0acb621bbffde48cc35ee67fa4872e7c775d7c96a56ed7b8cbb1ee9 +size 902802 diff --git a/esbuild-0.24.0.tar.gz b/esbuild-0.24.0.tar.gz new file mode 100644 index 0000000..d471b9e --- /dev/null +++ b/esbuild-0.24.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db289a2d668e42f81b93d7489c27ef665e86ef4e5c4974997526d46982f2b68a +size 1895084 diff --git a/exclude_ymp.patch b/exclude_ymp.patch new file mode 100644 index 0000000..1920197 --- /dev/null +++ b/exclude_ymp.patch @@ -0,0 +1,10 @@ +--- a/third_party/blink/common/mime_util/mime_util.cc 2013-08-25 10:12:05.428599992 +0200 ++++ b/third_party/blink/common/mime_util/mime_util.cc 2013-08-25 10:12:05.428599992 +0200 +@@ -79,6 +79,7 @@ + "text/x-csv", + "text/x-vcf", + "text/rtf", ++ "text/x-suse-ymp", + "text/comma-separated-values", + "text/csv", + "text/tab-separated-values", diff --git a/ffmpeg-0.6-headers.tar.bz2 b/ffmpeg-0.6-headers.tar.bz2 new file mode 100644 index 0000000..14fe950 --- /dev/null +++ b/ffmpeg-0.6-headers.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a4aaba875fb07d7065c3199041c1e45f1175f78e210ea48a0ec9d610707563f +size 2252763 diff --git a/ffmpeg-new-channel-layout.patch b/ffmpeg-new-channel-layout.patch new file mode 100644 index 0000000..2e43bd3 --- /dev/null +++ b/ffmpeg-new-channel-layout.patch @@ -0,0 +1,304 @@ +From 6e554a30893150793c2638e3689cf208ffc8e375 Mon Sep 17 00:00:00 2001 +From: Dale Curtis +Date: Sat, 2 Apr 2022 05:13:53 +0000 +Subject: [PATCH] Roll src/third_party/ffmpeg/ 574c39cce..32b2d1d526 (1125 + commits) + +https://chromium.googlesource.com/chromium/third_party/ffmpeg.git/+log/574c39cce323..32b2d1d526 + +Created with: + roll-dep src/third_party/ffmpeg + +Fixed: 1293918 +Cq-Include-Trybots: luci.chromium.try:mac_chromium_asan_rel_ng,linux_chromium_asan_rel_ng,linux_chromium_chromeos_asan_rel_ng +Change-Id: I41945d0f963e3d1f65940067bac22f63b68e37d2 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3565647 +Auto-Submit: Dale Curtis +Reviewed-by: Dan Sanders +Commit-Queue: Dale Curtis +Cr-Commit-Position: refs/heads/main@{#988253} +--- + .../clear_key_cdm/ffmpeg_cdm_audio_decoder.cc | 29 ++++++++++--------- + media/ffmpeg/ffmpeg_common.cc | 11 +++---- + media/filters/audio_file_reader.cc | 9 +++--- + media/filters/audio_file_reader_unittest.cc | 6 ++-- + .../filters/audio_video_metadata_extractor.cc | 11 +++++-- + .../filters/ffmpeg_aac_bitstream_converter.cc | 7 +++-- + ...ffmpeg_aac_bitstream_converter_unittest.cc | 2 +- + media/filters/ffmpeg_audio_decoder.cc | 13 +++++---- + 8 files changed, 51 insertions(+), 37 deletions(-) + +diff --git a/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc b/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc +index e4fc3f460e2..9b1ad9f7675 100644 +--- a/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc ++++ b/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc +@@ -74,7 +74,7 @@ void CdmAudioDecoderConfigToAVCodecContext( + codec_context->sample_fmt = AV_SAMPLE_FMT_NONE; + } + +- codec_context->channels = config.channel_count; ++ codec_context->ch_layout.nb_channels = config.channel_count; + codec_context->sample_rate = config.samples_per_second; + + if (config.extra_data) { +@@ -124,8 +124,8 @@ void CopySamples(cdm::AudioFormat cdm_format, + case cdm::kAudioFormatPlanarS16: + case cdm::kAudioFormatPlanarF32: { + const int decoded_size_per_channel = +- decoded_audio_size / av_frame.channels; +- for (int i = 0; i < av_frame.channels; ++i) { ++ decoded_audio_size / av_frame.ch_layout.nb_channels; ++ for (int i = 0; i < av_frame.ch_layout.nb_channels; ++i) { + memcpy(output_buffer, av_frame.extended_data[i], + decoded_size_per_channel); + output_buffer += decoded_size_per_channel; +@@ -185,13 +185,14 @@ bool FFmpegCdmAudioDecoder::Initialize( + // Success! + decoding_loop_ = std::make_unique(codec_context_.get()); + samples_per_second_ = config.samples_per_second; +- bytes_per_frame_ = codec_context_->channels * config.bits_per_channel / 8; ++ bytes_per_frame_ = ++ codec_context_->ch_layout.nb_channels * config.bits_per_channel / 8; + output_timestamp_helper_ = + std::make_unique(config.samples_per_second); + is_initialized_ = true; + + // Store initial values to guard against midstream configuration changes. +- channels_ = codec_context_->channels; ++ channels_ = codec_context_->ch_layout.nb_channels; + av_sample_format_ = codec_context_->sample_fmt; + + return true; +@@ -291,17 +292,19 @@ cdm::Status FFmpegCdmAudioDecoder::DecodeBuffer( + for (auto& frame : audio_frames) { + int decoded_audio_size = 0; + if (frame->sample_rate != samples_per_second_ || +- frame->channels != channels_ || frame->format != av_sample_format_) { ++ frame->ch_layout.nb_channels != channels_ || ++ frame->format != av_sample_format_) { + DLOG(ERROR) << "Unsupported midstream configuration change!" + << " Sample Rate: " << frame->sample_rate << " vs " +- << samples_per_second_ << ", Channels: " << frame->channels +- << " vs " << channels_ << ", Sample Format: " << frame->format +- << " vs " << av_sample_format_; ++ << samples_per_second_ ++ << ", Channels: " << frame->ch_layout.nb_channels << " vs " ++ << channels_ << ", Sample Format: " << frame->format << " vs " ++ << av_sample_format_; + return cdm::kDecodeError; + } + + decoded_audio_size = av_samples_get_buffer_size( +- nullptr, codec_context_->channels, frame->nb_samples, ++ nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples, + codec_context_->sample_fmt, 1); + if (!decoded_audio_size) + continue; +@@ -320,9 +323,9 @@ bool FFmpegCdmAudioDecoder::OnNewFrame( + size_t* total_size, + std::vector>* audio_frames, + AVFrame* frame) { +- *total_size += av_samples_get_buffer_size(nullptr, codec_context_->channels, +- frame->nb_samples, +- codec_context_->sample_fmt, 1); ++ *total_size += av_samples_get_buffer_size( ++ nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples, ++ codec_context_->sample_fmt, 1); + audio_frames->emplace_back(av_frame_clone(frame)); + return true; + } +diff --git a/media/ffmpeg/ffmpeg_common.cc b/media/ffmpeg/ffmpeg_common.cc +index 87ca8969626..76f03d6608e 100644 +--- a/media/ffmpeg/ffmpeg_common.cc ++++ b/media/ffmpeg/ffmpeg_common.cc +@@ -334,10 +334,11 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context, + codec_context->sample_fmt, codec_context->codec_id); + + ChannelLayout channel_layout = +- codec_context->channels > 8 ++ codec_context->ch_layout.nb_channels > 8 + ? CHANNEL_LAYOUT_DISCRETE +- : ChannelLayoutToChromeChannelLayout(codec_context->channel_layout, +- codec_context->channels); ++ : ChannelLayoutToChromeChannelLayout( ++ codec_context->ch_layout.u.mask, ++ codec_context->ch_layout.nb_channels); + + switch (codec) { + // For AC3/EAC3 we enable only demuxing, but not decoding, so FFmpeg does +@@ -401,7 +402,7 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context, + extra_data, encryption_scheme, seek_preroll, + codec_context->delay); + if (channel_layout == CHANNEL_LAYOUT_DISCRETE) +- config->SetChannelsForDiscrete(codec_context->channels); ++ config->SetChannelsForDiscrete(codec_context->ch_layout.nb_channels); + + #if BUILDFLAG(ENABLE_PLATFORM_AC3_EAC3_AUDIO) + // These are bitstream formats unknown to ffmpeg, so they don't have +@@ -470,7 +471,7 @@ void AudioDecoderConfigToAVCodecContext(const AudioDecoderConfig& config, + + // TODO(scherkus): should we set |channel_layout|? I'm not sure if FFmpeg uses + // said information to decode. +- codec_context->channels = config.channels(); ++ codec_context->ch_layout.nb_channels = config.channels(); + codec_context->sample_rate = config.samples_per_second(); + + if (config.extra_data().empty()) { +diff --git a/media/filters/audio_file_reader.cc b/media/filters/audio_file_reader.cc +index 5f257bdfaa6..e1be5aa9a5b 100644 +--- a/media/filters/audio_file_reader.cc ++++ b/media/filters/audio_file_reader.cc +@@ -113,14 +113,15 @@ bool AudioFileReader::OpenDecoder() { + + // Verify the channel layout is supported by Chrome. Acts as a sanity check + // against invalid files. See http://crbug.com/171962 +- if (ChannelLayoutToChromeChannelLayout(codec_context_->channel_layout, +- codec_context_->channels) == ++ if (ChannelLayoutToChromeChannelLayout( ++ codec_context_->ch_layout.u.mask, ++ codec_context_->ch_layout.nb_channels) == + CHANNEL_LAYOUT_UNSUPPORTED) { + return false; + } + + // Store initial values to guard against midstream configuration changes. +- channels_ = codec_context_->channels; ++ channels_ = codec_context_->ch_layout.nb_channels; + audio_codec_ = CodecIDToAudioCodec(codec_context_->codec_id); + sample_rate_ = codec_context_->sample_rate; + av_sample_format_ = codec_context_->sample_fmt; +@@ -223,7 +224,7 @@ bool AudioFileReader::OnNewFrame( + if (frames_read < 0) + return false; + +- const int channels = frame->channels; ++ const int channels = frame->ch_layout.nb_channels; + if (frame->sample_rate != sample_rate_ || channels != channels_ || + frame->format != av_sample_format_) { + DLOG(ERROR) << "Unsupported midstream configuration change!" +diff --git a/media/filters/audio_file_reader_unittest.cc b/media/filters/audio_file_reader_unittest.cc +index 2aba7927a31..1f45a50cace 100644 +--- a/media/filters/audio_file_reader_unittest.cc ++++ b/media/filters/audio_file_reader_unittest.cc +@@ -121,11 +121,11 @@ class AudioFileReaderTest : public testing::Test { + EXPECT_FALSE(reader_->Open()); + } + +- void RunTestFailingDecode(const char* fn) { ++ void RunTestFailingDecode(const char* fn, int expect_read = 0) { + Initialize(fn); + EXPECT_TRUE(reader_->Open()); + std::vector> decoded_audio_packets; +- EXPECT_EQ(reader_->Read(&decoded_audio_packets), 0); ++ EXPECT_EQ(reader_->Read(&decoded_audio_packets), expect_read); + } + + void RunTestPartialDecode(const char* fn) { +@@ -219,7 +219,7 @@ TEST_F(AudioFileReaderTest, AAC_ADTS) { + } + + TEST_F(AudioFileReaderTest, MidStreamConfigChangesFail) { +- RunTestFailingDecode("midstream_config_change.mp3"); ++ RunTestFailingDecode("midstream_config_change.mp3", 0); + } + #endif + +diff --git a/media/filters/ffmpeg_aac_bitstream_converter.cc b/media/filters/ffmpeg_aac_bitstream_converter.cc +index 6f231c85729..ca5e5fb927d 100644 +--- a/media/filters/ffmpeg_aac_bitstream_converter.cc ++++ b/media/filters/ffmpeg_aac_bitstream_converter.cc +@@ -195,14 +195,15 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) { + if (!header_generated_ || codec_ != stream_codec_parameters_->codec_id || + audio_profile_ != stream_codec_parameters_->profile || + sample_rate_index_ != sample_rate_index || +- channel_configuration_ != stream_codec_parameters_->channels || ++ channel_configuration_ != ++ stream_codec_parameters_->ch_layout.nb_channels || + frame_length_ != header_plus_packet_size) { + header_generated_ = + GenerateAdtsHeader(stream_codec_parameters_->codec_id, + 0, // layer + stream_codec_parameters_->profile, sample_rate_index, + 0, // private stream +- stream_codec_parameters_->channels, ++ stream_codec_parameters_->ch_layout.nb_channels, + 0, // originality + 0, // home + 0, // copyrighted_stream +@@ -214,7 +215,7 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) { + codec_ = stream_codec_parameters_->codec_id; + audio_profile_ = stream_codec_parameters_->profile; + sample_rate_index_ = sample_rate_index; +- channel_configuration_ = stream_codec_parameters_->channels; ++ channel_configuration_ = stream_codec_parameters_->ch_layout.nb_channels; + frame_length_ = header_plus_packet_size; + } + +diff --git a/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc b/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc +index 1fd4c5ccd7d..f59bcd8fdaf 100644 +--- a/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc ++++ b/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc +@@ -34,7 +34,7 @@ class FFmpegAACBitstreamConverterTest : public testing::Test { + memset(&test_parameters_, 0, sizeof(AVCodecParameters)); + test_parameters_.codec_id = AV_CODEC_ID_AAC; + test_parameters_.profile = FF_PROFILE_AAC_MAIN; +- test_parameters_.channels = 2; ++ test_parameters_.ch_layout.nb_channels = 2; + test_parameters_.extradata = extradata_header_; + test_parameters_.extradata_size = sizeof(extradata_header_); + } +diff --git a/media/filters/ffmpeg_audio_decoder.cc b/media/filters/ffmpeg_audio_decoder.cc +index 6a56c675f7d..4615fdeb3fb 100644 +--- a/media/filters/ffmpeg_audio_decoder.cc ++++ b/media/filters/ffmpeg_audio_decoder.cc +@@ -28,7 +28,7 @@ namespace media { + + // Return the number of channels from the data in |frame|. + static inline int DetermineChannels(AVFrame* frame) { +- return frame->channels; ++ return frame->ch_layout.nb_channels; + } + + // Called by FFmpeg's allocation routine to allocate a buffer. Uses +@@ -231,7 +231,7 @@ bool FFmpegAudioDecoder::OnNewFrame(const DecoderBuffer& buffer, + // Translate unsupported into discrete layouts for discrete configurations; + // ffmpeg does not have a labeled discrete configuration internally. + ChannelLayout channel_layout = ChannelLayoutToChromeChannelLayout( +- codec_context_->channel_layout, codec_context_->channels); ++ codec_context_->ch_layout.u.mask, codec_context_->ch_layout.nb_channels); + if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED && + config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE) { + channel_layout = CHANNEL_LAYOUT_DISCRETE; +@@ -348,11 +348,11 @@ bool FFmpegAudioDecoder::ConfigureDecoder(const AudioDecoderConfig& config) { + // Success! + av_sample_format_ = codec_context_->sample_fmt; + +- if (codec_context_->channels != config.channels()) { ++ if (codec_context_->ch_layout.nb_channels != config.channels()) { + MEDIA_LOG(ERROR, media_log_) + << "Audio configuration specified " << config.channels() + << " channels, but FFmpeg thinks the file contains " +- << codec_context_->channels << " channels"; ++ << codec_context_->ch_layout.nb_channels << " channels"; + ReleaseFFmpegResources(); + state_ = DecoderState::kUninitialized; + return false; +@@ -403,7 +403,7 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s, + if (frame->nb_samples <= 0) + return AVERROR(EINVAL); + +- if (s->channels != channels) { ++ if (s->ch_layout.nb_channels != channels) { + DLOG(ERROR) << "AVCodecContext and AVFrame disagree on channel count."; + return AVERROR(EINVAL); + } +@@ -436,7 +436,8 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s, + ChannelLayout channel_layout = + config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE + ? CHANNEL_LAYOUT_DISCRETE +- : ChannelLayoutToChromeChannelLayout(s->channel_layout, s->channels); ++ : ChannelLayoutToChromeChannelLayout(s->ch_layout.u.mask, ++ s->ch_layout.nb_channels); + + if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED) { + DLOG(ERROR) << "Unsupported channel layout."; diff --git a/fix-build-with-pipewire-1.3.82.patch b/fix-build-with-pipewire-1.3.82.patch new file mode 100644 index 0000000..39c4981 --- /dev/null +++ b/fix-build-with-pipewire-1.3.82.patch @@ -0,0 +1,22 @@ +Index: chromium-133.0.6943.98/third_party/webrtc/modules/video_capture/linux/pipewire_session.cc +=================================================================== +--- chromium-133.0.6943.98.orig/third_party/webrtc/modules/video_capture/linux/pipewire_session.cc ++++ chromium-133.0.6943.98/third_party/webrtc/modules/video_capture/linux/pipewire_session.cc +@@ -87,7 +87,7 @@ PipeWireNode::PipeWireNode(PipeWireSessi + .param = OnNodeParam, + }; + +- pw_node_add_listener(proxy_, &node_listener_, &node_events, this); ++ pw_node_add_listener(reinterpret_cast(proxy_), &node_listener_, &node_events, this); + } + + // static +@@ -119,7 +119,7 @@ void PipeWireNode::OnNodeInfo(void* data + uint32_t id = info->params[i].id; + if (id == SPA_PARAM_EnumFormat && + info->params[i].flags & SPA_PARAM_INFO_READ) { +- pw_node_enum_params(that->proxy_, 0, id, 0, UINT32_MAX, nullptr); ++ pw_node_enum_params(reinterpret_cast(that->proxy_), 0, id, 0, UINT32_MAX, nullptr); + break; + } + } diff --git a/fix_building_widevinecdm_with_chromium.patch b/fix_building_widevinecdm_with_chromium.patch new file mode 100644 index 0000000..51f03ef --- /dev/null +++ b/fix_building_widevinecdm_with_chromium.patch @@ -0,0 +1,11 @@ +--- chromium-125.0.6422.141.orig/third_party/widevine/cdm/widevine.gni ++++ chromium-125.0.6422.141/third_party/widevine/cdm/widevine.gni +@@ -27,7 +27,7 @@ + library_widevine_cdm_available = + (is_chromeos && + (target_cpu == "x64" || target_cpu == "arm" || target_cpu == "arm64")) || +- (target_os == "linux" && target_cpu == "x64") || ++ (target_os == "linux" && (target_cpu == "x64" || target_cpu == "arm64")) || + (target_os == "mac" && (target_cpu == "x64" || target_cpu == "arm64")) || + (target_os == "win" && + (target_cpu == "x86" || target_cpu == "x64" || target_cpu == "arm64")) diff --git a/gcc-enable-lto.patch b/gcc-enable-lto.patch new file mode 100644 index 0000000..b21645e --- /dev/null +++ b/gcc-enable-lto.patch @@ -0,0 +1,70 @@ +Index: chromium-120.0.6099.18/build/config/BUILDCONFIG.gn +=================================================================== +--- chromium-120.0.6099.18.orig/build/config/BUILDCONFIG.gn ++++ chromium-120.0.6099.18/build/config/BUILDCONFIG.gn +@@ -135,6 +135,8 @@ declare_args() { + # set "is_official_build" to true for any build intended to ship to end-users. + is_official_build = false + ++ gcc_lto = false ++ + # Set to true when compiling with the Clang compiler. + is_clang = current_os != "linux" || + (current_cpu != "s390x" && current_cpu != "s390" && +@@ -354,6 +356,12 @@ default_compiler_configs = [ + "//build/config/sanitizers:default_sanitizer_flags", + ] + ++if (gcc_lto) { ++ default_compiler_configs += [ ++ "//build/config/compiler:gcc_lto", ++ ] ++} ++ + if (is_win) { + default_compiler_configs += [ + "//build/config/win:default_cfg_compiler", +Index: chromium-120.0.6099.18/build/config/compiler/BUILD.gn +=================================================================== +--- chromium-120.0.6099.18.orig/build/config/compiler/BUILD.gn ++++ chromium-120.0.6099.18/build/config/compiler/BUILD.gn +@@ -2342,6 +2342,10 @@ if (is_win) { + common_optimize_on_cflags += [ "-fno-math-errno" ] + } + ++config("gcc_lto") { ++ cflags = [ "-flto" ] ++} ++ + config("default_stack_frames") { + if (!is_win) { + if (enable_frame_pointers) { +Index: chromium-120.0.6099.18/sandbox/linux/BUILD.gn +=================================================================== +--- chromium-120.0.6099.18.orig/sandbox/linux/BUILD.gn ++++ chromium-120.0.6099.18/sandbox/linux/BUILD.gn +@@ -253,6 +253,9 @@ component("seccomp_bpf") { + "//base", + "//sandbox:sandbox_buildflags", + ] ++ if (gcc_lto) { ++ configs -= [ "//build/config/compiler:gcc_lto" ] ++ } + + if (is_android) { + sources += [ +Index: chromium-120.0.6099.18/base/BUILD.gn +=================================================================== +--- chromium-120.0.6099.18.orig/base/BUILD.gn ++++ chromium-120.0.6099.18/base/BUILD.gn +@@ -3561,6 +3561,10 @@ + sources += [ "location_unittest.cc" ] + } + ++ if (gcc_lto) { ++ configs -= [ "//build/config/compiler:gcc_lto" ] ++ } ++ + if (!is_nacl) { + sources += [ + "containers/span_rust_unittest.cc", diff --git a/gtk-414.patch b/gtk-414.patch new file mode 100644 index 0000000..b5277a4 --- /dev/null +++ b/gtk-414.patch @@ -0,0 +1,119 @@ +From b3e4993ab0aaf2ed41a0c8c69b94ae1226be7494 Mon Sep 17 00:00:00 2001 +From: Tom Anderson +Date: Mon, 3 Mar 2025 10:41:42 -0800 +Subject: [PATCH] [GTK] Fix caption button rendering on newer versions of GTK4 + +A few new node types have been introduced since the GTK4 port was +written, so this CL adds and handles the new types and adds logging to +more easily diagnose this in the future. + +R=thestig + +Change-Id: Ie1d69ff7d7effc19aa1e873a58f8dd8943a43366 +Fixed: 400336287, 400365777 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6318540 +Reviewed-by: Lei Zhang +Commit-Queue: Lei Zhang +Commit-Queue: Thomas Anderson +Auto-Submit: Thomas Anderson +Cr-Commit-Position: refs/heads/main@{#1427225} + +diff --git a/ui/gtk/gsk.sigs b/ui/gtk/gsk.sigs +index 8f80d9d6bd11a..9dc03167830f4 100644 +--- a/ui/gtk/gsk.sigs ++++ b/ui/gtk/gsk.sigs +@@ -15,3 +15,6 @@ guint gsk_container_node_get_n_children(UI_GTK_CONST GskRenderNode* node); + guint gsk_gl_shader_node_get_n_children(UI_GTK_CONST GskRenderNode* node); + GdkTexture* gsk_texture_node_get_texture(UI_GTK_CONST GskRenderNode* node); + float gsk_opacity_node_get_opacity(const GskRenderNode* node); ++GskRenderNode* gsk_mask_node_get_mask(const GskRenderNode* node); ++GdkTexture* gsk_texture_scale_node_get_texture(const GskRenderNode* node); ++GskRenderNode* gsk_subsurface_node_get_child(const GskRenderNode* node); +\ No newline at end of file +diff --git a/ui/gtk/gtk_types.h b/ui/gtk/gtk_types.h +index 6a18a86ed1570..6c3b820fab09b 100644 +--- a/ui/gtk/gtk_types.h ++++ b/ui/gtk/gtk_types.h +@@ -41,7 +41,15 @@ using GskRenderNodeType = enum { + GSK_TEXT_NODE, + GSK_BLUR_NODE, + GSK_DEBUG_NODE, +- GSK_GL_SHADER_NODE ++ GSK_GL_SHADER_NODE, ++ GSK_TEXTURE_SCALE_NODE, ++ GSK_MASK_NODE, ++ GSK_FILL_NODE, ++ GSK_STROKE_NODE, ++ GSK_SUBSURFACE_NODE, ++ ++ // Not defined in GTK. ++ GSK_RENDER_NODE_MAX_VALUE = GSK_SUBSURFACE_NODE, + }; + + enum GdkMemoryFormat : int; +diff --git a/ui/gtk/gtk_util.cc b/ui/gtk/gtk_util.cc +index 0413e6fd94f59..78c4dc6bd57e5 100644 +--- a/ui/gtk/gtk_util.cc ++++ b/ui/gtk/gtk_util.cc +@@ -66,6 +66,10 @@ GskRenderNode* GetRenderNodeChild(GskRenderNode* node) { + return gsk_blur_node_get_child(node); + case GSK_DEBUG_NODE: + return gsk_debug_node_get_child(node); ++ case GSK_MASK_NODE: ++ return gsk_mask_node_get_mask(node); ++ case GSK_SUBSURFACE_NODE: ++ return gsk_subsurface_node_get_child(node); + default: + return nullptr; + } +@@ -769,8 +773,19 @@ GdkTexture* GetTextureFromRenderNode(GskRenderNode* node) { + return nullptr; + } + +- if (gsk_render_node_get_node_type(node) == GSK_TEXTURE_NODE) { +- return gsk_texture_node_get_texture(node); ++ auto node_type = gsk_render_node_get_node_type(node); ++ if (node_type > GSK_RENDER_NODE_MAX_VALUE) { ++ LOG(ERROR) << "Unexpected node type: " << node_type; ++ return nullptr; ++ } ++ ++ switch (node_type) { ++ case GSK_TEXTURE_NODE: ++ return gsk_texture_node_get_texture(node); ++ case GSK_TEXTURE_SCALE_NODE: ++ return gsk_texture_node_get_texture(node); ++ default: ++ break; + } + + if (auto* texture = GetTextureFromRenderNode(GetRenderNodeChild(node))) { +diff --git a/ui/gtk/nav_button_provider_gtk.cc b/ui/gtk/nav_button_provider_gtk.cc +index efe6321149679..239fbf4ca69a1 100644 +--- a/ui/gtk/nav_button_provider_gtk.cc ++++ b/ui/gtk/nav_button_provider_gtk.cc +@@ -117,11 +117,13 @@ gfx::Size LoadNavButtonIcon(ui::NavButtonProvider::FrameButtonDisplayType type, + auto* snapshot = gtk_snapshot_new(); + gdk_paintable_snapshot(paintable, snapshot, width, height); + auto* node = gtk_snapshot_free_to_node(snapshot); +- GdkTexture* texture = GetTextureFromRenderNode(node); + size_t nbytes = width * height * sizeof(SkColor); + SkColor* pixels = reinterpret_cast(g_malloc(nbytes)); ++ memset(pixels, 0, nbytes); + size_t stride = sizeof(SkColor) * width; +- gdk_texture_download(texture, reinterpret_cast(pixels), stride); ++ if (GdkTexture* texture = GetTextureFromRenderNode(node)) { ++ gdk_texture_download(texture, reinterpret_cast(pixels), stride); ++ } + SkColor fg = GtkStyleContextGetColor(button_context); + for (int i = 0; i < width * height; ++i) { + pixels[i] = SkColorSetA(fg, SkColorGetA(pixels[i])); +@@ -199,7 +201,7 @@ void CalculateUnscaledButtonSize( + gfx::Size* button_size, + gfx::Insets* button_margin) { + // views::ImageButton expects the images for each state to be of the +- // same size, but GTK can, in general, use a differnetly-sized ++ // same size, but GTK can, in general, use a differently-sized + // button for each state. For this reason, render buttons for all + // states at the size of a GTK_STATE_FLAG_NORMAL button. + auto button_context = AppendCssNodeToStyleContext( diff --git a/master_preferences b/master_preferences new file mode 100644 index 0000000..df56ff5 --- /dev/null +++ b/master_preferences @@ -0,0 +1,31 @@ +{ + "distribution": { + "skip_first_run_ui": true, + "import_bookmarks_from_file": "/etc/chromium/default_bookmarks.html", + "alternate_shortcut_text": false, + "oem_bubble": true, + "chrome_shortcut_icon_index": 0, + "create_all_shortcuts": true, + "show_welcome_page": true, + "make_chrome_default": false, + "make_chrome_default_for_user": false, + "system_level": false, + "verbose_logging": false + }, + "download": { + "extensions_to_open": "ymp" + }, + "browser": { + "show_home_button": true, + "check_default_browser": false + }, + "bookmark_bar": { + "show_on_all_tabs": true + }, + "first_run_tabs": [ + "http://www.opensuse.org", + "http://tools.google.com/chrome/intl/en/welcome.html" + ], + "homepage": "http://www.opensuse.org", + "homepage_is_newtabpage": false +} diff --git a/system-libdrm.patch b/system-libdrm.patch new file mode 100644 index 0000000..86df016 --- /dev/null +++ b/system-libdrm.patch @@ -0,0 +1,42 @@ +Index: chromium-114.0.5735.90/build/linux/unbundle/libdrm.gn +=================================================================== +--- chromium-114.0.5735.90.orig/build/linux/unbundle/libdrm.gn ++++ chromium-114.0.5735.90/build/linux/unbundle/libdrm.gn +@@ -11,7 +11,10 @@ pkg_config("system_libdrm") { + + shim_headers("libdrm_shim") { + root_path = "src/include" +- headers = [ "drm.h" ] ++ headers = [ ++ "drm.h", ++ "drm_fourcc.h", ++ ] + } + + source_set("libdrm") { +Index: chromium-114.0.5735.90/ui/ozone/platform/drm/gpu/hardware_display_controller.cc +=================================================================== +--- chromium-114.0.5735.90.orig/ui/ozone/platform/drm/gpu/hardware_display_controller.cc ++++ chromium-114.0.5735.90/ui/ozone/platform/drm/gpu/hardware_display_controller.cc +@@ -18,7 +18,7 @@ + #include "base/logging.h" + #include "base/metrics/histogram_macros.h" + #include "base/trace_event/typed_macros.h" +-#include "third_party/libdrm/src/include/drm/drm_fourcc.h" ++#include + #include "third_party/perfetto/include/perfetto/tracing/traced_value.h" + #include "third_party/skia/include/core/SkCanvas.h" + #include "third_party/skia/include/core/SkImage.h" +Index: chromium-114.0.5735.90/media/gpu/chromeos/video_decoder_pipeline_unittest.cc +=================================================================== +--- chromium-114.0.5735.90.orig/media/gpu/chromeos/video_decoder_pipeline_unittest.cc ++++ chromium-114.0.5735.90/media/gpu/chromeos/video_decoder_pipeline_unittest.cc +@@ -25,7 +25,7 @@ + #include "media/gpu/chromeos/dmabuf_video_frame_pool.h" + #include "testing/gmock/include/gmock/gmock.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "third_party/libdrm/src/include/drm/drm_fourcc.h" ++#include + + #if BUILDFLAG(IS_CHROMEOS) + // gn check does not account for BUILDFLAG(), so including this header will diff --git a/tcmalloc-factory.patch b/tcmalloc-factory.patch new file mode 100644 index 0000000..afbf118 --- /dev/null +++ b/tcmalloc-factory.patch @@ -0,0 +1,12 @@ +--- chromium/src/build/common.gypi 2010-04-29 12:39:04.018140987 +0200 ++++ chromium/src/build/common.gypi 2010-05-03 21:38:49.733821848 +0200 +@@ -261,7 +261,7 @@ + 'linux_strip_reliability_tests%': 0, + + # Enable TCMalloc. +- 'linux_use_tcmalloc%': 1, ++ 'linux_use_tcmalloc%': 0, + + # Disable TCMalloc's debugallocation. + 'linux_use_debugallocation%': 0, +