Date: Friday, February 2, 2018 @ 12:31:12 Author: foutrelis Revision: 315753
archrelease: copy trunk to extra-x86_64 Added: chromium/repos/extra-x86_64/PKGBUILD (from rev 315752, chromium/trunk/PKGBUILD) chromium/repos/extra-x86_64/chromium-clang-r2.patch (from rev 315752, chromium/trunk/chromium-clang-r2.patch) chromium/repos/extra-x86_64/chromium-exclude_unwind_tables.patch (from rev 315752, chromium/trunk/chromium-exclude_unwind_tables.patch) chromium/repos/extra-x86_64/chromium-memcpy-r0.patch (from rev 315752, chromium/trunk/chromium-memcpy-r0.patch) chromium/repos/extra-x86_64/chromium-omnibox-unescape-fragment.patch (from rev 315752, chromium/trunk/chromium-omnibox-unescape-fragment.patch) chromium/repos/extra-x86_64/chromium-skia-harmony.patch (from rev 315752, chromium/trunk/chromium-skia-harmony.patch) chromium/repos/extra-x86_64/chromium-use-fromUTF8-for-UnicodeString-construction.patch (from rev 315752, chromium/trunk/chromium-use-fromUTF8-for-UnicodeString-construction.patch) chromium/repos/extra-x86_64/chromium-widevine.patch (from rev 315752, chromium/trunk/chromium-widevine.patch) chromium/repos/extra-x86_64/chromium.install (from rev 315752, chromium/trunk/chromium.install) Deleted: chromium/repos/extra-x86_64/PKGBUILD chromium/repos/extra-x86_64/chromium-clang-r2.patch chromium/repos/extra-x86_64/chromium-exclude_unwind_tables.patch chromium/repos/extra-x86_64/chromium-memcpy-r0.patch chromium/repos/extra-x86_64/chromium-omnibox-unescape-fragment.patch chromium/repos/extra-x86_64/chromium-skia-harmony.patch chromium/repos/extra-x86_64/chromium-use-fromUTF8-for-UnicodeString-construction.patch chromium/repos/extra-x86_64/chromium-widevine.patch chromium/repos/extra-x86_64/chromium.install ------------------------------------------------------------+ PKGBUILD | 522 +++--- chromium-clang-r2.patch | 42 chromium-exclude_unwind_tables.patch | 66 chromium-memcpy-r0.patch | 70 chromium-omnibox-unescape-fragment.patch | 874 +++++------ chromium-skia-harmony.patch | 154 - chromium-use-fromUTF8-for-UnicodeString-construction.patch | 136 - chromium-widevine.patch | 20 chromium.install | 32 9 files changed, 958 insertions(+), 958 deletions(-) Deleted: PKGBUILD =================================================================== --- PKGBUILD 2018-02-02 12:31:00 UTC (rev 315752) +++ PKGBUILD 2018-02-02 12:31:12 UTC (rev 315753) @@ -1,261 +0,0 @@ -# $Id$ -# Maintainer: Evangelos Foutras <evange...@foutrelis.com> -# Contributor: Pierre Schmitz <pie...@archlinux.de> -# Contributor: Jan "heftig" Steffens <jan.steff...@gmail.com> -# Contributor: Daniel J Griffiths <ghost1...@archlinux.us> - -pkgname=chromium -pkgver=64.0.3282.119 -pkgrel=1 -_launcher_ver=5 -pkgdesc="A web browser built for speed, simplicity, and security" -arch=('x86_64') -url="https://www.chromium.org/Home" -license=('BSD') -depends=('gtk3' 'nss' 'alsa-lib' 'xdg-utils' 'libxss' 'libcups' 'libgcrypt' - 'ttf-font' 'systemd' 'dbus' 'libpulse' 'pciutils' 'json-glib' - 'desktop-file-utils' 'hicolor-icon-theme') -makedepends=('python2' 'gperf' 'yasm' 'mesa' 'ninja' 'nodejs' 'git' 'clang') -optdepends=('pepper-flash: support for Flash content' - 'kdialog: needed for file dialogs in KDE' - 'gnome-keyring: for storing passwords in GNOME keyring' - 'kwallet: for storing passwords in KWallet') -install=chromium.install -source=(https://commondatastorage.googleapis.com/chromium-browser-official/$pkgname-$pkgver.tar.xz - chromium-launcher-$_launcher_ver.tar.gz::https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver.tar.gz - chromium-$pkgver.txt::https://chromium.googlesource.com/chromium/src.git/+/$pkgver?format=TEXT - chromium-use-fromUTF8-for-UnicodeString-construction.patch - chromium-omnibox-unescape-fragment.patch - chromium-skia-harmony.patch - chromium-memcpy-r0.patch - chromium-clang-r2.patch - chromium-exclude_unwind_tables.patch - chromium-widevine.patch) -sha256sums=('342ea80a925d85f5155b2b423a0d3cbcf2ee5729bf107c601d7d902315d03127' - '4dc3428f2c927955d9ae117f2fb24d098cc6dd67adb760ac9c82b522ec8b0587' - 'a86a8ec67aed5a94557257b9826c5b8fe37005e8376e75986fee77acd066539a' - 'c82c830bac7ab328a76d85fb141e150a17d02d97138a6daa4720a8a8c371a402' - '814eb2cecb10cb697e24036b08aac41e88d0e38971741f9e946200764e2401ae' - 'feca54ab09ac0fc9d0626770a6b899a6ac5a12173c7d0c1005bc3964ec83e7b3' - '455f0029987d9f0532bd9a5250669af5146a9c2b65b776d4a6e2499e8aca7bb4' - '4495e8b29dae242c79ffe4beefc5171eb3c7aacb7e9aebfd2d4d69b9d8c958d3' - '9478f1ec1a3c53425306cf41c2d0555c215a4f106955d9d6adfff38044530ce8' - 'd6fdcb922e5a7fbe15759d39ccc8ea4225821c44d98054ce0f23f9d1f00c9808') - -# Possible replacements are listed in build/linux/unbundle/replace_gn_files.py -# Keys are the names in the above script; values are the dependencies in Arch -readonly -A _system_libs=( - #[ffmpeg]=ffmpeg # https://crbug.com/731766 - [flac]=flac - #[fontconfig]=fontconfig # Enable for M65 - #[freetype]=freetype2 # Using 'use_system_freetype=true' until M65 - #[harfbuzz-ng]=harfbuzz # Using 'use_system_harfbuzz=true' until M65 - [icu]=icu - [libdrm]= - [libjpeg]=libjpeg - #[libpng]=libpng # https://crbug.com/752403#c10 - #[libvpx]=libvpx # https://bugs.gentoo.org/611394 - [libwebp]=libwebp - #[libxml]=libxml2 # https://crbug.com/736026 - [libxslt]=libxslt - [opus]=opus - [re2]=re2 - [snappy]=snappy - [yasm]= - [zlib]=minizip -) -readonly _unwanted_bundled_libs=( - ${!_system_libs[@]} - ${_system_libs[libjpeg]+libjpeg_turbo} - freetype - harfbuzz-ng -) -depends+=(${_system_libs[@]} freetype2 harfbuzz) - -# Google API keys (see https://www.chromium.org/developers/how-tos/api-keys) -# Note: These are for Arch Linux use ONLY. For your own distribution, please -# get your own set of keys. -_google_api_key=AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM -_google_default_client_id=413772536636.apps.googleusercontent.com -_google_default_client_secret=0ZChLK6AxeA3Isu96MkwqDR4 - -prepare() { - cd "$srcdir/$pkgname-$pkgver" - - # https://crbug.com/710701 - local _chrome_build_hash=$(base64 -d ../chromium-$pkgver.txt | - grep -Po '^parent \K[0-9a-f]{40}$') - if [[ -z $_chrome_build_hash ]]; then - error "Unable to find Chrome build hash." - return 1 - fi - echo "LASTCHANGE=$_chrome_build_hash-" >build/util/LASTCHANGE - - # Enable support for the Widevine CDM plugin - # libwidevinecdm.so is not included, but can be copied over from Chrome - # (Version string doesn't seem to matter so let's go with "Pinkie Pie") - sed "s/@WIDEVINE_VERSION@/Pinkie Pie/" ../chromium-widevine.patch | - patch -Np1 - - # https://chromium-review.googlesource.com/c/chromium/src/+/712575 - patch -Np1 -i ../chromium-exclude_unwind_tables.patch - - # https://crbug.com/772655 - patch -Np1 -i ../chromium-use-fromUTF8-for-UnicodeString-construction.patch - - # https://crbug.com/789163 - patch -Np1 -i ../chromium-omnibox-unescape-fragment.patch - - # https://crbug.com/skia/6663#c10 - patch -Np4 -i ../chromium-skia-harmony.patch - - # Fixes from Gentoo - patch -Np1 -i ../chromium-memcpy-r0.patch - patch -Np1 -i ../chromium-clang-r2.patch - - # Remove compiler flags not supported by our system clang - sed -i \ - -e '/"-Wno-enum-compare-switch"/d' \ - -e '/"-Wno-null-pointer-arithmetic"/d' \ - -e '/"-Wno-tautological-unsigned-zero-compare"/d' \ - -e '/"-Wno-tautological-constant-compare"/d' \ - build/config/compiler/BUILD.gn - - # Use Python 2 - find . -name '*.py' -exec sed -i -r 's|/usr/bin/python$|&2|g' {} + - - # There are still a lot of relative calls which need a workaround - mkdir "$srcdir/python2-path" - ln -s /usr/bin/python2 "$srcdir/python2-path/python" - - mkdir -p third_party/node/linux/node-linux-x64/bin - ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/ - - # Remove bundled libraries for which we will use the system copies; this - # *should* do what the remove_bundled_libraries.py script does, with the - # added benefit of not having to list all the remaining libraries - local _lib - for _lib in ${_unwanted_bundled_libs[@]}; do - find -type f -path "*third_party/$_lib/*" \ - \! -path "*third_party/$_lib/chromium/*" \ - \! -path "*third_party/$_lib/google/*" \ - \! -path './base/third_party/icu/*' \ - \! -path './third_party/freetype/src/src/psnames/pstables.h' \ - \! -path './third_party/yasm/run_yasm.py' \ - \! -regex '.*\.\(gn\|gni\|isolate\)' \ - -delete - done - - python2 build/linux/unbundle/replace_gn_files.py \ - --system-libraries "${!_system_libs[@]}" -} - -build() { - make -C chromium-launcher-$_launcher_ver - - cd "$srcdir/$pkgname-$pkgver" - - if check_buildoption ccache y; then - # Avoid falling back to preprocessor mode when sources contain time macros - export CCACHE_SLOPPINESS=time_macros - fi - - export PATH="$srcdir/python2-path:$PATH" - export TMPDIR="$srcdir/temp" - mkdir -p "$TMPDIR" - - export CC=clang - export CXX=clang++ - export AR=ar - export NM=nm - - local _flags=( - 'custom_toolchain="//build/toolchain/linux/unbundle:default"' - 'host_toolchain="//build/toolchain/linux/unbundle:default"' - 'is_clang=true' - 'clang_use_chrome_plugins=false' - 'is_debug=false' - 'fatal_linker_warnings=false' - 'treat_warnings_as_errors=false' - 'fieldtrial_testing_like_official_build=true' - 'remove_webcore_debug_symbols=true' - 'ffmpeg_branding="Chrome"' - 'proprietary_codecs=true' - 'link_pulseaudio=true' - 'use_system_freetype=true' - 'use_system_harfbuzz=true' - 'use_gtk3=true' - 'use_gconf=false' - 'use_gnome_keyring=false' - 'use_gold=false' - 'use_lld=false' - 'use_sysroot=false' - 'linux_use_bundled_binutils=false' - 'use_custom_libcxx=false' - 'enable_hangout_services_extension=true' - 'enable_widevine=true' - 'enable_nacl=false' - 'enable_swiftshader=false' - "google_api_key=\"${_google_api_key}\"" - "google_default_client_id=\"${_google_default_client_id}\"" - "google_default_client_secret=\"${_google_default_client_secret}\"" - ) - - if check_option strip y; then - _flags+=('exclude_unwind_tables=true') - fi - - python2 tools/gn/bootstrap/bootstrap.py --gn-gen-args "${_flags[*]}" - out/Release/gn gen out/Release --args="${_flags[*]}" \ - --script-executable=/usr/bin/python2 - - ninja -C out/Release chrome chrome_sandbox chromedriver widevinecdmadapter -} - -package() { - cd chromium-launcher-$_launcher_ver - make PREFIX=/usr DESTDIR="$pkgdir" install - install -Dm644 LICENSE \ - "$pkgdir/usr/share/licenses/chromium/LICENSE.launcher" - - cd "$srcdir/$pkgname-$pkgver" - - install -D out/Release/chrome "$pkgdir/usr/lib/chromium/chromium" - install -Dm4755 out/Release/chrome_sandbox "$pkgdir/usr/lib/chromium/chrome-sandbox" - ln -s /usr/lib/chromium/chromedriver "$pkgdir/usr/bin/chromedriver" - - install -Dm644 chrome/installer/linux/common/desktop.template \ - "$pkgdir/usr/share/applications/chromium.desktop" - install -Dm644 chrome/app/resources/manpage.1.in \ - "$pkgdir/usr/share/man/man1/chromium.1" - sed -i \ - -e "s/@@MENUNAME@@/Chromium/g" \ - -e "s/@@PACKAGE@@/chromium/g" \ - -e "s/@@USR_BIN_SYMLINK_NAME@@/chromium/g" \ - "$pkgdir/usr/share/applications/chromium.desktop" \ - "$pkgdir/usr/share/man/man1/chromium.1" - - cp \ - out/Release/{chrome_{100,200}_percent,resources}.pak \ - out/Release/{*.bin,chromedriver,libwidevinecdmadapter.so} \ - "$pkgdir/usr/lib/chromium/" - install -Dm644 -t "$pkgdir/usr/lib/chromium/locales" out/Release/locales/*.pak - - if [[ -z ${_system_libs[icu]+set} ]]; then - cp out/Release/icudtl.dat "$pkgdir/usr/lib/chromium/" - fi - - for size in 22 24 48 64 128 256; do - install -Dm644 "chrome/app/theme/chromium/product_logo_$size.png" \ - "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png" - done - - for size in 16 32; do - install -Dm644 "chrome/app/theme/default_100_percent/chromium/product_logo_$size.png" \ - "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png" - done - - install -Dm644 LICENSE "$pkgdir/usr/share/licenses/chromium/LICENSE" -} - -# vim:set ts=2 sw=2 et: Copied: chromium/repos/extra-x86_64/PKGBUILD (from rev 315752, chromium/trunk/PKGBUILD) =================================================================== --- PKGBUILD (rev 0) +++ PKGBUILD 2018-02-02 12:31:12 UTC (rev 315753) @@ -0,0 +1,261 @@ +# $Id$ +# Maintainer: Evangelos Foutras <evange...@foutrelis.com> +# Contributor: Pierre Schmitz <pie...@archlinux.de> +# Contributor: Jan "heftig" Steffens <jan.steff...@gmail.com> +# Contributor: Daniel J Griffiths <ghost1...@archlinux.us> + +pkgname=chromium +pkgver=64.0.3282.140 +pkgrel=1 +_launcher_ver=5 +pkgdesc="A web browser built for speed, simplicity, and security" +arch=('x86_64') +url="https://www.chromium.org/Home" +license=('BSD') +depends=('gtk3' 'nss' 'alsa-lib' 'xdg-utils' 'libxss' 'libcups' 'libgcrypt' + 'ttf-font' 'systemd' 'dbus' 'libpulse' 'pciutils' 'json-glib' + 'desktop-file-utils' 'hicolor-icon-theme') +makedepends=('python2' 'gperf' 'yasm' 'mesa' 'ninja' 'nodejs' 'git' 'clang') +optdepends=('pepper-flash: support for Flash content' + 'kdialog: needed for file dialogs in KDE' + 'gnome-keyring: for storing passwords in GNOME keyring' + 'kwallet: for storing passwords in KWallet') +install=chromium.install +source=(https://commondatastorage.googleapis.com/chromium-browser-official/$pkgname-$pkgver.tar.xz + chromium-launcher-$_launcher_ver.tar.gz::https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver.tar.gz + chromium-$pkgver.txt::https://chromium.googlesource.com/chromium/src.git/+/$pkgver?format=TEXT + chromium-use-fromUTF8-for-UnicodeString-construction.patch + chromium-omnibox-unescape-fragment.patch + chromium-skia-harmony.patch + chromium-memcpy-r0.patch + chromium-clang-r2.patch + chromium-exclude_unwind_tables.patch + chromium-widevine.patch) +sha256sums=('146afbab37982c52251e5c71b6e19e6e7053b527217fe1da9966c794478c29ce' + '4dc3428f2c927955d9ae117f2fb24d098cc6dd67adb760ac9c82b522ec8b0587' + 'cc3a328836af87f3a262ac7a7bc848e0f3a4b2f9f0346ef76b9b059c6f6d32bc' + 'c82c830bac7ab328a76d85fb141e150a17d02d97138a6daa4720a8a8c371a402' + '814eb2cecb10cb697e24036b08aac41e88d0e38971741f9e946200764e2401ae' + 'feca54ab09ac0fc9d0626770a6b899a6ac5a12173c7d0c1005bc3964ec83e7b3' + '455f0029987d9f0532bd9a5250669af5146a9c2b65b776d4a6e2499e8aca7bb4' + '4495e8b29dae242c79ffe4beefc5171eb3c7aacb7e9aebfd2d4d69b9d8c958d3' + '9478f1ec1a3c53425306cf41c2d0555c215a4f106955d9d6adfff38044530ce8' + 'd6fdcb922e5a7fbe15759d39ccc8ea4225821c44d98054ce0f23f9d1f00c9808') + +# Possible replacements are listed in build/linux/unbundle/replace_gn_files.py +# Keys are the names in the above script; values are the dependencies in Arch +readonly -A _system_libs=( + #[ffmpeg]=ffmpeg # https://crbug.com/731766 + [flac]=flac + #[fontconfig]=fontconfig # Enable for M65 + #[freetype]=freetype2 # Using 'use_system_freetype=true' until M65 + #[harfbuzz-ng]=harfbuzz # Using 'use_system_harfbuzz=true' until M65 + [icu]=icu + [libdrm]= + [libjpeg]=libjpeg + #[libpng]=libpng # https://crbug.com/752403#c10 + #[libvpx]=libvpx # https://bugs.gentoo.org/611394 + [libwebp]=libwebp + #[libxml]=libxml2 # https://crbug.com/736026 + [libxslt]=libxslt + [opus]=opus + [re2]=re2 + [snappy]=snappy + [yasm]= + [zlib]=minizip +) +readonly _unwanted_bundled_libs=( + ${!_system_libs[@]} + ${_system_libs[libjpeg]+libjpeg_turbo} + freetype + harfbuzz-ng +) +depends+=(${_system_libs[@]} freetype2 harfbuzz) + +# Google API keys (see https://www.chromium.org/developers/how-tos/api-keys) +# Note: These are for Arch Linux use ONLY. For your own distribution, please +# get your own set of keys. +_google_api_key=AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM +_google_default_client_id=413772536636.apps.googleusercontent.com +_google_default_client_secret=0ZChLK6AxeA3Isu96MkwqDR4 + +prepare() { + cd "$srcdir/$pkgname-$pkgver" + + # https://crbug.com/710701 + local _chrome_build_hash=$(base64 -d ../chromium-$pkgver.txt | + grep -Po '^parent \K[0-9a-f]{40}$') + if [[ -z $_chrome_build_hash ]]; then + error "Unable to find Chrome build hash." + return 1 + fi + echo "LASTCHANGE=$_chrome_build_hash-" >build/util/LASTCHANGE + + # Enable support for the Widevine CDM plugin + # libwidevinecdm.so is not included, but can be copied over from Chrome + # (Version string doesn't seem to matter so let's go with "Pinkie Pie") + sed "s/@WIDEVINE_VERSION@/Pinkie Pie/" ../chromium-widevine.patch | + patch -Np1 + + # https://chromium-review.googlesource.com/c/chromium/src/+/712575 + patch -Np1 -i ../chromium-exclude_unwind_tables.patch + + # https://crbug.com/772655 + patch -Np1 -i ../chromium-use-fromUTF8-for-UnicodeString-construction.patch + + # https://crbug.com/789163 + patch -Np1 -i ../chromium-omnibox-unescape-fragment.patch + + # https://crbug.com/skia/6663#c10 + patch -Np4 -i ../chromium-skia-harmony.patch + + # Fixes from Gentoo + patch -Np1 -i ../chromium-memcpy-r0.patch + patch -Np1 -i ../chromium-clang-r2.patch + + # Remove compiler flags not supported by our system clang + sed -i \ + -e '/"-Wno-enum-compare-switch"/d' \ + -e '/"-Wno-null-pointer-arithmetic"/d' \ + -e '/"-Wno-tautological-unsigned-zero-compare"/d' \ + -e '/"-Wno-tautological-constant-compare"/d' \ + build/config/compiler/BUILD.gn + + # Use Python 2 + find . -name '*.py' -exec sed -i -r 's|/usr/bin/python$|&2|g' {} + + + # There are still a lot of relative calls which need a workaround + mkdir "$srcdir/python2-path" + ln -s /usr/bin/python2 "$srcdir/python2-path/python" + + mkdir -p third_party/node/linux/node-linux-x64/bin + ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/ + + # Remove bundled libraries for which we will use the system copies; this + # *should* do what the remove_bundled_libraries.py script does, with the + # added benefit of not having to list all the remaining libraries + local _lib + for _lib in ${_unwanted_bundled_libs[@]}; do + find -type f -path "*third_party/$_lib/*" \ + \! -path "*third_party/$_lib/chromium/*" \ + \! -path "*third_party/$_lib/google/*" \ + \! -path './base/third_party/icu/*' \ + \! -path './third_party/freetype/src/src/psnames/pstables.h' \ + \! -path './third_party/yasm/run_yasm.py' \ + \! -regex '.*\.\(gn\|gni\|isolate\)' \ + -delete + done + + python2 build/linux/unbundle/replace_gn_files.py \ + --system-libraries "${!_system_libs[@]}" +} + +build() { + make -C chromium-launcher-$_launcher_ver + + cd "$srcdir/$pkgname-$pkgver" + + if check_buildoption ccache y; then + # Avoid falling back to preprocessor mode when sources contain time macros + export CCACHE_SLOPPINESS=time_macros + fi + + export PATH="$srcdir/python2-path:$PATH" + export TMPDIR="$srcdir/temp" + mkdir -p "$TMPDIR" + + export CC=clang + export CXX=clang++ + export AR=ar + export NM=nm + + local _flags=( + 'custom_toolchain="//build/toolchain/linux/unbundle:default"' + 'host_toolchain="//build/toolchain/linux/unbundle:default"' + 'is_clang=true' + 'clang_use_chrome_plugins=false' + 'is_debug=false' + 'fatal_linker_warnings=false' + 'treat_warnings_as_errors=false' + 'fieldtrial_testing_like_official_build=true' + 'remove_webcore_debug_symbols=true' + 'ffmpeg_branding="Chrome"' + 'proprietary_codecs=true' + 'link_pulseaudio=true' + 'use_system_freetype=true' + 'use_system_harfbuzz=true' + 'use_gtk3=true' + 'use_gconf=false' + 'use_gnome_keyring=false' + 'use_gold=false' + 'use_lld=false' + 'use_sysroot=false' + 'linux_use_bundled_binutils=false' + 'use_custom_libcxx=false' + 'enable_hangout_services_extension=true' + 'enable_widevine=true' + 'enable_nacl=false' + 'enable_swiftshader=false' + "google_api_key=\"${_google_api_key}\"" + "google_default_client_id=\"${_google_default_client_id}\"" + "google_default_client_secret=\"${_google_default_client_secret}\"" + ) + + if check_option strip y; then + _flags+=('exclude_unwind_tables=true') + fi + + python2 tools/gn/bootstrap/bootstrap.py --gn-gen-args "${_flags[*]}" + out/Release/gn gen out/Release --args="${_flags[*]}" \ + --script-executable=/usr/bin/python2 + + ninja -C out/Release chrome chrome_sandbox chromedriver widevinecdmadapter +} + +package() { + cd chromium-launcher-$_launcher_ver + make PREFIX=/usr DESTDIR="$pkgdir" install + install -Dm644 LICENSE \ + "$pkgdir/usr/share/licenses/chromium/LICENSE.launcher" + + cd "$srcdir/$pkgname-$pkgver" + + install -D out/Release/chrome "$pkgdir/usr/lib/chromium/chromium" + install -Dm4755 out/Release/chrome_sandbox "$pkgdir/usr/lib/chromium/chrome-sandbox" + ln -s /usr/lib/chromium/chromedriver "$pkgdir/usr/bin/chromedriver" + + install -Dm644 chrome/installer/linux/common/desktop.template \ + "$pkgdir/usr/share/applications/chromium.desktop" + install -Dm644 chrome/app/resources/manpage.1.in \ + "$pkgdir/usr/share/man/man1/chromium.1" + sed -i \ + -e "s/@@MENUNAME@@/Chromium/g" \ + -e "s/@@PACKAGE@@/chromium/g" \ + -e "s/@@USR_BIN_SYMLINK_NAME@@/chromium/g" \ + "$pkgdir/usr/share/applications/chromium.desktop" \ + "$pkgdir/usr/share/man/man1/chromium.1" + + cp \ + out/Release/{chrome_{100,200}_percent,resources}.pak \ + out/Release/{*.bin,chromedriver,libwidevinecdmadapter.so} \ + "$pkgdir/usr/lib/chromium/" + install -Dm644 -t "$pkgdir/usr/lib/chromium/locales" out/Release/locales/*.pak + + if [[ -z ${_system_libs[icu]+set} ]]; then + cp out/Release/icudtl.dat "$pkgdir/usr/lib/chromium/" + fi + + for size in 22 24 48 64 128 256; do + install -Dm644 "chrome/app/theme/chromium/product_logo_$size.png" \ + "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png" + done + + for size in 16 32; do + install -Dm644 "chrome/app/theme/default_100_percent/chromium/product_logo_$size.png" \ + "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png" + done + + install -Dm644 LICENSE "$pkgdir/usr/share/licenses/chromium/LICENSE" +} + +# vim:set ts=2 sw=2 et: Deleted: chromium-clang-r2.patch =================================================================== --- chromium-clang-r2.patch 2018-02-02 12:31:00 UTC (rev 315752) +++ chromium-clang-r2.patch 2018-02-02 12:31:12 UTC (rev 315753) @@ -1,21 +0,0 @@ ---- a/build/config/compiler/BUILD.gn -+++ b/build/config/compiler/BUILD.gn -@@ -422,18 +422,6 @@ - cflags += [ "-fcolor-diagnostics" ] - } - -- # TODO(hans): Remove this once Clang generates better optimized debug info by -- # default. https://crbug.com/765793 -- if (is_clang && !is_nacl && current_toolchain == host_toolchain && -- target_os != "chromeos") { -- cflags += [ -- "-Xclang", -- "-mllvm", -- "-Xclang", -- "-instcombine-lower-dbg-declare=0", -- ] -- } -- - # Print absolute paths in diagnostics. There is no precedent for doing this - # on Linux/Mac (GCC doesn't support it), but MSVC does this with /FC and - # Windows developers rely on it (crbug.com/636109) so only do this on Windows. Copied: chromium/repos/extra-x86_64/chromium-clang-r2.patch (from rev 315752, chromium/trunk/chromium-clang-r2.patch) =================================================================== --- chromium-clang-r2.patch (rev 0) +++ chromium-clang-r2.patch 2018-02-02 12:31:12 UTC (rev 315753) @@ -0,0 +1,21 @@ +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -422,18 +422,6 @@ + cflags += [ "-fcolor-diagnostics" ] + } + +- # TODO(hans): Remove this once Clang generates better optimized debug info by +- # default. https://crbug.com/765793 +- if (is_clang && !is_nacl && current_toolchain == host_toolchain && +- target_os != "chromeos") { +- cflags += [ +- "-Xclang", +- "-mllvm", +- "-Xclang", +- "-instcombine-lower-dbg-declare=0", +- ] +- } +- + # Print absolute paths in diagnostics. There is no precedent for doing this + # on Linux/Mac (GCC doesn't support it), but MSVC does this with /FC and + # Windows developers rely on it (crbug.com/636109) so only do this on Windows. Deleted: chromium-exclude_unwind_tables.patch =================================================================== --- chromium-exclude_unwind_tables.patch 2018-02-02 12:31:00 UTC (rev 315752) +++ chromium-exclude_unwind_tables.patch 2018-02-02 12:31:12 UTC (rev 315753) @@ -1,33 +0,0 @@ -diff --git a/build/config/compiler/compiler.gni b/build/config/compiler/compiler.gni -index ad40fd9..50e19a4 100644 ---- a/build/config/compiler/compiler.gni -+++ b/build/config/compiler/compiler.gni -@@ -68,19 +68,19 @@ - - # Whether or not we should use position independent code. - use_pic = true -+ -+ # Exclude unwind tables for official builds as unwinding can be done from -+ # stack dumps produced by Crashpad at a later time "offline" in the crash -+ # server. For unofficial (e.g. development) builds and non-Chrome branded -+ # (e.g. Cronet which doesn't use Crashpad, crbug.com/479283) builds it's -+ # useful to be able to unwind at runtime. -+ exclude_unwind_tables = -+ (is_chrome_branded && is_official_build) || -+ (is_chromecast && !is_cast_desktop_build && !is_debug && !is_fuchsia) - } - - assert(!is_cfi || use_thin_lto, "CFI requires ThinLTO") - --# Exclude unwind tables for official builds as unwinding can be done from stack --# dumps produced by Crashpad at a later time "offline" in the crash server. --# For unofficial (e.g. development) builds and non-Chrome branded (e.g. Cronet --# which doesn't use Crashpad, crbug.com/479283) builds it's useful to be able --# to unwind at runtime. --exclude_unwind_tables = -- (is_chrome_branded && is_official_build) || -- (is_chromecast && !is_cast_desktop_build && !is_debug && !is_fuchsia) -- - # If true, optimize for size. Does not affect windows builds. - # Linux & Mac favor speed over size. - # TODO(brettw) it's weird that Mac and desktop Linux are different. We should Copied: chromium/repos/extra-x86_64/chromium-exclude_unwind_tables.patch (from rev 315752, chromium/trunk/chromium-exclude_unwind_tables.patch) =================================================================== --- chromium-exclude_unwind_tables.patch (rev 0) +++ chromium-exclude_unwind_tables.patch 2018-02-02 12:31:12 UTC (rev 315753) @@ -0,0 +1,33 @@ +diff --git a/build/config/compiler/compiler.gni b/build/config/compiler/compiler.gni +index ad40fd9..50e19a4 100644 +--- a/build/config/compiler/compiler.gni ++++ b/build/config/compiler/compiler.gni +@@ -68,19 +68,19 @@ + + # Whether or not we should use position independent code. + use_pic = true ++ ++ # Exclude unwind tables for official builds as unwinding can be done from ++ # stack dumps produced by Crashpad at a later time "offline" in the crash ++ # server. For unofficial (e.g. development) builds and non-Chrome branded ++ # (e.g. Cronet which doesn't use Crashpad, crbug.com/479283) builds it's ++ # useful to be able to unwind at runtime. ++ exclude_unwind_tables = ++ (is_chrome_branded && is_official_build) || ++ (is_chromecast && !is_cast_desktop_build && !is_debug && !is_fuchsia) + } + + assert(!is_cfi || use_thin_lto, "CFI requires ThinLTO") + +-# Exclude unwind tables for official builds as unwinding can be done from stack +-# dumps produced by Crashpad at a later time "offline" in the crash server. +-# For unofficial (e.g. development) builds and non-Chrome branded (e.g. Cronet +-# which doesn't use Crashpad, crbug.com/479283) builds it's useful to be able +-# to unwind at runtime. +-exclude_unwind_tables = +- (is_chrome_branded && is_official_build) || +- (is_chromecast && !is_cast_desktop_build && !is_debug && !is_fuchsia) +- + # If true, optimize for size. Does not affect windows builds. + # Linux & Mac favor speed over size. + # TODO(brettw) it's weird that Mac and desktop Linux are different. We should Deleted: chromium-memcpy-r0.patch =================================================================== --- chromium-memcpy-r0.patch 2018-02-02 12:31:00 UTC (rev 315752) +++ chromium-memcpy-r0.patch 2018-02-02 12:31:12 UTC (rev 315753) @@ -1,35 +0,0 @@ -From 4942f56ceb6d60d6f54ebca8e6eba8ba01c278e8 Mon Sep 17 00:00:00 2001 -From: Tomas Popela <tomas.pop...@gmail.com> -Date: Thu, 7 Dec 2017 22:33:34 +0000 -Subject: [PATCH] memcpy used without including string.h - -Compiling Chromium with Clang 4.0.1 and using libstdc++ will fail on using -memcpy without including string.h. - -Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel -Change-Id: Idced1d5de3baf6b520d4a2d61774120642ead1a8 -Reviewed-on: https://chromium-review.googlesource.com/813737 -Reviewed-by: Thomas Anderson <thomasander...@chromium.org> -Reviewed-by: vmpstr <vmp...@chromium.org> -Commit-Queue: Thomas Anderson <thomasander...@chromium.org> -Cr-Commit-Position: refs/heads/master@{#522579} ---- - cc/paint/raw_memory_transfer_cache_entry.cc | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/cc/paint/raw_memory_transfer_cache_entry.cc b/cc/paint/raw_memory_transfer_cache_entry.cc -index 9e4660c685ee..95ad50b1a338 100644 ---- a/cc/paint/raw_memory_transfer_cache_entry.cc -+++ b/cc/paint/raw_memory_transfer_cache_entry.cc -@@ -4,6 +4,8 @@ - - #include "cc/paint/raw_memory_transfer_cache_entry.h" - -+#include <string.h> -+ - namespace cc { - - ClientRawMemoryTransferCacheEntry::ClientRawMemoryTransferCacheEntry( --- -2.15.1 - Copied: chromium/repos/extra-x86_64/chromium-memcpy-r0.patch (from rev 315752, chromium/trunk/chromium-memcpy-r0.patch) =================================================================== --- chromium-memcpy-r0.patch (rev 0) +++ chromium-memcpy-r0.patch 2018-02-02 12:31:12 UTC (rev 315753) @@ -0,0 +1,35 @@ +From 4942f56ceb6d60d6f54ebca8e6eba8ba01c278e8 Mon Sep 17 00:00:00 2001 +From: Tomas Popela <tomas.pop...@gmail.com> +Date: Thu, 7 Dec 2017 22:33:34 +0000 +Subject: [PATCH] memcpy used without including string.h + +Compiling Chromium with Clang 4.0.1 and using libstdc++ will fail on using +memcpy without including string.h. + +Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel +Change-Id: Idced1d5de3baf6b520d4a2d61774120642ead1a8 +Reviewed-on: https://chromium-review.googlesource.com/813737 +Reviewed-by: Thomas Anderson <thomasander...@chromium.org> +Reviewed-by: vmpstr <vmp...@chromium.org> +Commit-Queue: Thomas Anderson <thomasander...@chromium.org> +Cr-Commit-Position: refs/heads/master@{#522579} +--- + cc/paint/raw_memory_transfer_cache_entry.cc | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/cc/paint/raw_memory_transfer_cache_entry.cc b/cc/paint/raw_memory_transfer_cache_entry.cc +index 9e4660c685ee..95ad50b1a338 100644 +--- a/cc/paint/raw_memory_transfer_cache_entry.cc ++++ b/cc/paint/raw_memory_transfer_cache_entry.cc +@@ -4,6 +4,8 @@ + + #include "cc/paint/raw_memory_transfer_cache_entry.h" + ++#include <string.h> ++ + namespace cc { + + ClientRawMemoryTransferCacheEntry::ClientRawMemoryTransferCacheEntry( +-- +2.15.1 + Deleted: chromium-omnibox-unescape-fragment.patch =================================================================== --- chromium-omnibox-unescape-fragment.patch 2018-02-02 12:31:00 UTC (rev 315752) +++ chromium-omnibox-unescape-fragment.patch 2018-02-02 12:31:12 UTC (rev 315753) @@ -1,437 +0,0 @@ -commit 03f9a90d8a783f9d1a94935ac298338a1e694380 -Author: Eric Lawrence <elawre...@chromium.org> -Date: Sat Dec 16 04:48:11 2017 +0000 - - Reland of 'Unescape fragment for display in Omnibox' - - The original landing broke EGTests for iOS Simulator and Device which - were not run by the CQ. This change includes updated EGTests. - - TBR=pkast...@chromium.org - - Bug: 789163, 643458 - Cq-Include-Trybots: master.tryserver.chromium.mac:ios-simulator-cronet;master.tryserver.chromium.mac:ios-simulator-full-configs - Change-Id: Ie30afcb7bcba5affc7266d72a10b7f8dc0074314 - Reviewed-on: https://chromium-review.googlesource.com/830093 - Reviewed-by: Eric Lawrence <elawre...@chromium.org> - Reviewed-by: Peter Kasting <pkast...@chromium.org> - Reviewed-by: Eugene But <eugene...@chromium.org> - Commit-Queue: Eric Lawrence <elawre...@chromium.org> - Cr-Commit-Position: refs/heads/master@{#524591} - -diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views_browsertest.cc b/chrome/browser/ui/views/omnibox/omnibox_view_views_browsertest.cc -index 6e5dff47f7ec..24f1056d49d5 100644 ---- a/chrome/browser/ui/views/omnibox/omnibox_view_views_browsertest.cc -+++ b/chrome/browser/ui/views/omnibox/omnibox_view_views_browsertest.cc -@@ -462,3 +462,13 @@ IN_PROC_BROWSER_TEST_F(OmniboxViewViewsTest, TextElideStatus) { - EXPECT_EQ(omnibox_view_views->GetRenderText()->elide_behavior(), - gfx::NO_ELIDE); - } -+ -+IN_PROC_BROWSER_TEST_F(OmniboxViewViewsTest, FragmentUnescapedForDisplay) { -+ OmniboxView* view = nullptr; -+ ASSERT_NO_FATAL_FAILURE(GetOmniboxViewForBrowser(browser(), &view)); -+ ui_test_utils::NavigateToURL(browser(), -+ GURL("https://www.google.com/#%E2%98%83")); -+ -+ EXPECT_EQ(view->GetText(), -+ base::UTF8ToUTF16("https://www.google.com/#\u2603")); -+} -diff --git a/components/url_formatter/elide_url_unittest.cc b/components/url_formatter/elide_url_unittest.cc -index 5e0384af72a2..d403ce065f45 100644 ---- a/components/url_formatter/elide_url_unittest.cc -+++ b/components/url_formatter/elide_url_unittest.cc -@@ -347,15 +347,16 @@ TEST(TextEliderTest, TestElisionSpecialCases) { - kEllipsisStr + "berkeley.edu:4430/" + kEllipsisStr + "/arbitfilename"}, - - // Unescaping. -- {"http://www/%E4%BD%A0%E5%A5%BD?q=%E4%BD%A0%E5%A5%BD#\xe4\xbd\xa0", -- "www/\xe4\xbd\xa0\xe5\xa5\xbd?q=\xe4\xbd\xa0\xe5\xa5\xbd#" + -+ {"http://www/%E4%BD%A0%E5%A5%BD?" -+ "q=%E4%BD%A0%E5%A5%BD#\xe4\xbd\xa0\xe4\xbd\xa0\xe4\xbd\xa0", -+ "www/\xe4\xbd\xa0\xe5\xa5\xbd?q=\xe4\xbd\xa0\xe5\xa5\xbd#\xe4\xbd\xa0" + - kEllipsisStr}, - - // Invalid unescaping for path. The ref will always be valid UTF-8. We - // don't bother to do too many edge cases, since these are handled by the - // escaper unittest. - {"http://www/%E4%A0%E5%A5%BD?q=%E4%BD%A0%E5%A5%BD#\xe4\xbd\xa0", -- "www/%E4%A0%E5%A5%BD?q=\xe4\xbd\xa0\xe5\xa5\xbd#" + kEllipsisStr}, -+ "www/%E4%A0%E5%A5%BD?q=\xe4\xbd\xa0\xe5\xa5\xbd#\xe4\xbd\xa0"}, - }; - - RunElisionTest(testcases); -diff --git a/components/url_formatter/url_formatter.cc b/components/url_formatter/url_formatter.cc -index d5c0d314a5de..c422e3d98a72 100644 ---- a/components/url_formatter/url_formatter.cc -+++ b/components/url_formatter/url_formatter.cc -@@ -586,11 +586,10 @@ base::string16 FormatUrlWithAdjustments( - NonHostComponentTransform(unescape_rules), - &url_string, &new_parsed->query, adjustments); - -- // Ref. This is valid, unescaped UTF-8, so we can just convert. - if (parsed.ref.is_valid()) - url_string.push_back('#'); - AppendFormattedComponent(spec, parsed.ref, -- NonHostComponentTransform(net::UnescapeRule::NONE), -+ NonHostComponentTransform(unescape_rules), - &url_string, &new_parsed->ref, adjustments); - } - -diff --git a/components/url_formatter/url_formatter_unittest.cc b/components/url_formatter/url_formatter_unittest.cc -index 6fd3ece50f7d..5aaf31105a43 100644 ---- a/components/url_formatter/url_formatter_unittest.cc -+++ b/components/url_formatter/url_formatter_unittest.cc -@@ -828,7 +828,7 @@ TEST(UrlFormatterTest, FormatUrl) { - - {"With a port number and a reference", - "http://www.google.com:8080/#\xE3\x82\xB0", default_format_type, -- net::UnescapeRule::NORMAL, L"http://www.google.com:8080/#%E3%82%B0", 7}, -+ net::UnescapeRule::NORMAL, L"http://www.google.com:8080/#\x30B0", 7}, - - // -------- IDN tests -------- - {"Japanese IDN with ja", "http://xn--l8jvb1ey91xtjb.jp", -@@ -1119,7 +1119,7 @@ TEST(UrlFormatterTest, FormatUrlParsed) { - kFormatUrlOmitNothing, net::UnescapeRule::NORMAL, &parsed, - nullptr, nullptr); - EXPECT_EQ(WideToUTF16(L"http://\x30B0:\x30FC@\x30B0\x30FC\x30B0\x30EB.jp:8080" -- L"/\x30B0/?q=\x30B0#%E3%82%B0"), -+ L"/\x30B0/?q=\x30B0#\x30B0"), - formatted); - EXPECT_EQ(WideToUTF16(L"\x30B0"), - formatted.substr(parsed.username.begin, parsed.username.len)); -@@ -1133,7 +1133,7 @@ TEST(UrlFormatterTest, FormatUrlParsed) { - formatted.substr(parsed.path.begin, parsed.path.len)); - EXPECT_EQ(WideToUTF16(L"q=\x30B0"), - formatted.substr(parsed.query.begin, parsed.query.len)); -- EXPECT_EQ(WideToUTF16(L"%E3%82%B0"), -+ EXPECT_EQ(WideToUTF16(L"\x30B0"), - formatted.substr(parsed.ref.begin, parsed.ref.len)); - - // Omit_username_password + unescape case. -@@ -1143,7 +1143,7 @@ TEST(UrlFormatterTest, FormatUrlParsed) { - kFormatUrlOmitUsernamePassword, net::UnescapeRule::NORMAL, - &parsed, nullptr, nullptr); - EXPECT_EQ(WideToUTF16(L"http://\x30B0\x30FC\x30B0\x30EB.jp:8080" -- L"/\x30B0/?q=\x30B0#%E3%82%B0"), -+ L"/\x30B0/?q=\x30B0#\x30B0"), - formatted); - EXPECT_FALSE(parsed.username.is_valid()); - EXPECT_FALSE(parsed.password.is_valid()); -@@ -1155,7 +1155,7 @@ TEST(UrlFormatterTest, FormatUrlParsed) { - formatted.substr(parsed.path.begin, parsed.path.len)); - EXPECT_EQ(WideToUTF16(L"q=\x30B0"), - formatted.substr(parsed.query.begin, parsed.query.len)); -- EXPECT_EQ(WideToUTF16(L"%E3%82%B0"), -+ EXPECT_EQ(WideToUTF16(L"\x30B0"), - formatted.substr(parsed.ref.begin, parsed.ref.len)); - - // View-source case. -@@ -1389,9 +1389,12 @@ TEST(UrlFormatterTest, FormatUrlWithOffsets) { - kFormatUrlOmitNothing, net::UnescapeRule::SPACES, unescape_offsets); - - const size_t ref_offsets[] = { -- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, -- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49}; -+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, -+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, -+ 30, 31, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, -+ 32, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, 33}; -+ - // Unescape to "http://www.google.com/foo.html#\x30B0\x30B0z". - CheckAdjustedOffsets("http://www.google.com/foo.html#%E3%82%B0%E3%82%B0z", - kFormatUrlOmitNothing, net::UnescapeRule::NORMAL, -diff --git a/ios/chrome/browser/web/push_and_replace_state_navigation_egtest.mm b/ios/chrome/browser/web/push_and_replace_state_navigation_egtest.mm -index b67f2a08d0a0..431ad368f07d 100644 ---- a/ios/chrome/browser/web/push_and_replace_state_navigation_egtest.mm -+++ b/ios/chrome/browser/web/push_and_replace_state_navigation_egtest.mm -@@ -59,40 +59,42 @@ const char* kReplaceStateRootPathSpaceURL = "http://ios/rep lace"; - // Push 3 URLs. Verify that the URL changed and the status was updated. - [ChromeEarlGrey tapWebViewElementWithID:@"pushStateHashWithObject"]; - [self assertStatusText:@"pushStateHashWithObject" -- withURL:pushStateHashWithObjectURL -+ withOmniboxText:pushStateHashWithObjectURL.GetContent() - pageLoaded:NO]; - - [ChromeEarlGrey tapWebViewElementWithID:@"pushStateRootPath"]; - [self assertStatusText:@"pushStateRootPath" -- withURL:pushStateRootPathURL -+ withOmniboxText:pushStateRootPathURL.GetContent() - pageLoaded:NO]; - - [ChromeEarlGrey tapWebViewElementWithID:@"pushStatePathSpace"]; - [self assertStatusText:@"pushStatePathSpace" -- withURL:pushStatePathSpaceURL -+ withOmniboxText:pushStatePathSpaceURL.GetContent() - pageLoaded:NO]; - - // Go back and check that the page doesn't load and the status text is updated - // by the popstate event. - [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()]; - [self assertStatusText:@"pushStateRootPath" -- withURL:pushStateRootPathURL -+ withOmniboxText:pushStateRootPathURL.GetContent() - pageLoaded:NO]; - - [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()]; - [self assertStatusText:@"pushStateHashWithObject" -- withURL:pushStateHashWithObjectURL -+ withOmniboxText:pushStateHashWithObjectURL.GetContent() - pageLoaded:NO]; - - [ChromeEarlGrey tapWebViewElementWithID:@"goBack"]; - const GURL historyTestURL = web::test::HttpServer::MakeUrl(kHistoryTestUrl); -- [self assertStatusText:NULL withURL:historyTestURL pageLoaded:NO]; -+ [self assertStatusText:nil -+ withOmniboxText:historyTestURL.GetContent() -+ pageLoaded:NO]; - - // Go forward 2 pages and check that the page doesn't load and the status text - // is updated by the popstate event. - [ChromeEarlGrey tapWebViewElementWithID:@"goForward2"]; - [self assertStatusText:@"pushStateRootPath" -- withURL:pushStateRootPathURL -+ withOmniboxText:pushStateRootPathURL.GetContent() - pageLoaded:NO]; - } - -@@ -108,7 +110,7 @@ const char* kReplaceStateRootPathSpaceURL = "http://ios/rep lace"; - web::test::HttpServer::MakeUrl(kReplaceStateHashWithObjectURL); - [ChromeEarlGrey tapWebViewElementWithID:@"replaceStateHashWithObject"]; - [self assertStatusText:@"replaceStateHashWithObject" -- withURL:replaceStateHashWithObjectURL -+ withOmniboxText:replaceStateHashWithObjectURL.GetContent() - pageLoaded:NO]; - - [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()]; -@@ -119,7 +121,7 @@ const char* kReplaceStateRootPathSpaceURL = "http://ios/rep lace"; - [[EarlGrey selectElementWithMatcher:ForwardButton()] - performAction:grey_tap()]; - [self assertStatusText:@"replaceStateHashWithObject" -- withURL:replaceStateHashWithObjectURL -+ withOmniboxText:replaceStateHashWithObjectURL.GetContent() - pageLoaded:YES]; - - // Push URL then replace it. Do this twice. -@@ -127,44 +129,44 @@ const char* kReplaceStateRootPathSpaceURL = "http://ios/rep lace"; - web::test::HttpServer::MakeUrl(kPushStateHashStringURL); - [ChromeEarlGrey tapWebViewElementWithID:@"pushStateHashString"]; - [self assertStatusText:@"pushStateHashString" -- withURL:pushStateHashStringURL -+ withOmniboxText:pushStateHashStringURL.GetContent() - pageLoaded:NO]; - - const GURL replaceStateHashStringURL = - web::test::HttpServer::MakeUrl(kReplaceStateHashStringURL); - [ChromeEarlGrey tapWebViewElementWithID:@"replaceStateHashString"]; - [self assertStatusText:@"replaceStateHashString" -- withURL:replaceStateHashStringURL -+ withOmniboxText:replaceStateHashStringURL.GetContent() - pageLoaded:NO]; - - const GURL pushStatePathURL = - web::test::HttpServer::MakeUrl(kPushStatePathURL); - [ChromeEarlGrey tapWebViewElementWithID:@"pushStatePath"]; - [self assertStatusText:@"pushStatePath" -- withURL:pushStatePathURL -+ withOmniboxText:pushStatePathURL.GetContent() - pageLoaded:NO]; - - const GURL replaceStateRootPathSpaceURL = - web::test::HttpServer::MakeUrl(kReplaceStateRootPathSpaceURL); - [ChromeEarlGrey tapWebViewElementWithID:@"replaceStateRootPathSpace"]; - [self assertStatusText:@"replaceStateRootPathSpace" -- withURL:replaceStateRootPathSpaceURL -+ withOmniboxText:replaceStateRootPathSpaceURL.GetContent() - pageLoaded:NO]; - - // Go back and check URLs. - [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()]; - [self assertStatusText:@"replaceStateHashString" -- withURL:replaceStateHashStringURL -+ withOmniboxText:replaceStateHashStringURL.GetContent() - pageLoaded:NO]; - [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()]; - [self assertStatusText:@"replaceStateHashWithObject" -- withURL:replaceStateHashWithObjectURL -+ withOmniboxText:replaceStateHashWithObjectURL.GetContent() - pageLoaded:NO]; - - // Go forward and check URL. - [ChromeEarlGrey tapWebViewElementWithID:@"goForward2"]; - [self assertStatusText:@"replaceStateRootPathSpace" -- withURL:replaceStateRootPathSpaceURL -+ withOmniboxText:replaceStateRootPathSpaceURL.GetContent() - pageLoaded:NO]; - } - -@@ -180,11 +182,11 @@ const char* kReplaceStateRootPathSpaceURL = "http://ios/rep lace"; - web::test::HttpServer::MakeUrl(kPushStateHashStringURL); - [ChromeEarlGrey tapWebViewElementWithID:@"pushStateHashString"]; - [self assertStatusText:@"pushStateHashString" -- withURL:pushStateHashStringURL -+ withOmniboxText:pushStateHashStringURL.GetContent() - pageLoaded:NO]; - [ChromeEarlGrey tapWebViewElementWithID:@"pushStateHashString"]; - [self assertStatusText:@"pushStateHashString" -- withURL:pushStateHashStringURL -+ withOmniboxText:pushStateHashStringURL.GetContent() - pageLoaded:NO]; - - // Load a non-pushed URL. -@@ -194,7 +196,7 @@ const char* kReplaceStateRootPathSpaceURL = "http://ios/rep lace"; - [ChromeEarlGrey loadURL:historyTestURL]; - [ChromeEarlGrey tapWebViewElementWithID:@"pushStateHashString"]; - [self assertStatusText:@"pushStateHashString" -- withURL:pushStateHashStringURL -+ withOmniboxText:pushStateHashStringURL.GetContent() - pageLoaded:NO]; - - // At this point the history looks like this: -@@ -202,38 +204,54 @@ const char* kReplaceStateRootPathSpaceURL = "http://ios/rep lace"; - - // Go back (to second history.html) and verify page did not load. - [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()]; -- [self assertStatusText:nil withURL:historyTestURL pageLoaded:NO]; -+ [self assertStatusText:nil -+ withOmniboxText:historyTestURL.GetContent() -+ pageLoaded:NO]; - - // Go back twice (to second #string) and verify page did load. - [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()]; - [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()]; -- [self assertStatusText:nil withURL:pushStateHashStringURL pageLoaded:YES]; -+ [self assertStatusText:nil -+ withOmniboxText:pushStateHashStringURL.GetContent() -+ pageLoaded:YES]; - - // Go back once (to first #string) and verify page did not load. - [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()]; - [self assertStatusText:@"pushStateHashString" -- withURL:pushStateHashStringURL -+ withOmniboxText:pushStateHashStringURL.GetContent() - pageLoaded:NO]; - - // Go forward 4 entries at once (to third #string) and verify page did load. - [ChromeEarlGrey tapWebViewElementWithID:@"goForward4"]; - -- [self assertStatusText:nil withURL:pushStateHashStringURL pageLoaded:YES]; -+ [self assertStatusText:nil -+ withOmniboxText:pushStateHashStringURL.GetContent() -+ pageLoaded:YES]; - - // Go back 4 entries at once (to first #string) and verify page did load. - [ChromeEarlGrey tapWebViewElementWithID:@"goBack4"]; - -- [self assertStatusText:NULL withURL:pushStateHashStringURL pageLoaded:YES]; -+ [self assertStatusText:nil -+ withOmniboxText:pushStateHashStringURL.GetContent() -+ pageLoaded:YES]; - } - - // Tests calling pushState with unicode characters. - - (void)testHtml5HistoryPushUnicodeCharacters { -- const GURL pushStateUnicodeURLEncoded = web::test::HttpServer::MakeUrl( -- "http://ios/testing/data/http_server_files/" -- "history.html#unicode%E1%84%91"); -- const GURL pushStateUnicode2URLEncoded = web::test::HttpServer::MakeUrl( -- "http://ios/testing/data/http_server_files/" -- "history.html#unicode2%E2%88%A2"); -+ // The GURL object %-escapes Unicode characters in the URL's fragment, -+ // but the omnibox decodes them back to Unicode for display. -+ std::string pushStateUnicode = -+ web::test::HttpServer::MakeUrl( -+ "http://ios/testing/data/http_server_files/" -+ "history.html#unicode") -+ .GetContent() + -+ "\xe1\x84\x91"; -+ std::string pushStateUnicode2 = -+ web::test::HttpServer::MakeUrl( -+ "http://ios/testing/data/http_server_files/" -+ "history.html#unicode2") -+ .GetContent() + -+ "\xe2\x88\xa2"; - const char pushStateUnicodeLabel[] = "Action: pushStateUnicodeᄑ"; - NSString* pushStateUnicodeStatus = @"pushStateUnicodeᄑ"; - const char pushStateUnicode2Label[] = "Action: pushStateUnicode2∢"; -@@ -242,21 +260,16 @@ const char* kReplaceStateRootPathSpaceURL = "http://ios/rep lace"; - web::test::SetUpFileBasedHttpServer(); - [ChromeEarlGrey loadURL:web::test::HttpServer::MakeUrl(kHistoryTestUrl)]; - -- // TODO(crbug.com/643458): The fact that the URL shows %-escaped is due to -- // NSURL escaping to make UIWebView/JS happy. See if it's possible to -- // represent differently such that it displays unescaped. - // Do 2 push states with unicode characters. - [ChromeEarlGrey tapWebViewElementWithID:@"pushStateUnicode"]; - [[EarlGrey -- selectElementWithMatcher:chrome_test_util::OmniboxText( -- pushStateUnicodeURLEncoded.GetContent())] -+ selectElementWithMatcher:chrome_test_util::OmniboxText(pushStateUnicode)] - assertWithMatcher:grey_notNil()]; - [ChromeEarlGrey waitForWebViewContainingText:pushStateUnicodeLabel]; - - [ChromeEarlGrey tapWebViewElementWithID:@"pushStateUnicode2"]; - [[EarlGrey -- selectElementWithMatcher:chrome_test_util::OmniboxText( -- pushStateUnicode2URLEncoded.GetContent())] -+ selectElementWithMatcher:chrome_test_util::OmniboxText(pushStateUnicode2)] - assertWithMatcher:grey_notNil()]; - [ChromeEarlGrey waitForWebViewContainingText:pushStateUnicode2Label]; - -@@ -266,18 +279,18 @@ const char* kReplaceStateRootPathSpaceURL = "http://ios/rep lace"; - [ChromeEarlGrey tapWebViewElementWithID:@"pushStatePath"]; - - [self assertStatusText:@"pushStatePath" -- withURL:pushStatePathURL -+ withOmniboxText:pushStatePathURL.GetContent() - pageLoaded:NO]; - - // Go back and check the unicode in the URL and status. - [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()]; - [self assertStatusText:pushStateUnicode2Status -- withURL:pushStateUnicode2URLEncoded -+ withOmniboxText:pushStateUnicode2 - pageLoaded:NO]; - - [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()]; - [self assertStatusText:pushStateUnicodeStatus -- withURL:pushStateUnicodeURLEncoded -+ withOmniboxText:pushStateUnicode - pageLoaded:NO]; - } - -@@ -321,10 +334,11 @@ const char* kReplaceStateRootPathSpaceURL = "http://ios/rep lace"; - - #pragma mark - Utility methods - --// Assert that status text |status| is displayed in the webview, that "onloaded" --// text is displayed if pageLoaded is YES, and that the URL is as expected. -+// Assert that status text |status|, if non-nil, is displayed in the webview, -+// that the omnibox text is as expected, and that "onload" text is displayed if -+// pageLoaded is YES. - - (void)assertStatusText:(NSString*)status -- withURL:(const GURL&)urlToVerify -+ withOmniboxText:(const std::string&)omniboxText - pageLoaded:(BOOL)pageLoaded { - if (pageLoaded) { - [ChromeEarlGrey waitForWebViewContainingText:"onload"]; -@@ -332,14 +346,14 @@ const char* kReplaceStateRootPathSpaceURL = "http://ios/rep lace"; - [ChromeEarlGrey waitForWebViewNotContainingText:"onload"]; - } - -- if (status != NULL) { -+ if (status != nil) { - NSString* statusLabel = [NSString stringWithFormat:@"Action: %@", status]; - [ChromeEarlGrey - waitForWebViewContainingText:base::SysNSStringToUTF8(statusLabel)]; - } - -- [[EarlGrey selectElementWithMatcher:chrome_test_util::OmniboxText( -- urlToVerify.GetContent())] -+ [[EarlGrey -+ selectElementWithMatcher:chrome_test_util::OmniboxText(omniboxText)] - assertWithMatcher:grey_notNil()]; - } - Copied: chromium/repos/extra-x86_64/chromium-omnibox-unescape-fragment.patch (from rev 315752, chromium/trunk/chromium-omnibox-unescape-fragment.patch) =================================================================== --- chromium-omnibox-unescape-fragment.patch (rev 0) +++ chromium-omnibox-unescape-fragment.patch 2018-02-02 12:31:12 UTC (rev 315753) @@ -0,0 +1,437 @@ +commit 03f9a90d8a783f9d1a94935ac298338a1e694380 +Author: Eric Lawrence <elawre...@chromium.org> +Date: Sat Dec 16 04:48:11 2017 +0000 + + Reland of 'Unescape fragment for display in Omnibox' + + The original landing broke EGTests for iOS Simulator and Device which + were not run by the CQ. This change includes updated EGTests. + + TBR=pkast...@chromium.org + + Bug: 789163, 643458 + Cq-Include-Trybots: master.tryserver.chromium.mac:ios-simulator-cronet;master.tryserver.chromium.mac:ios-simulator-full-configs + Change-Id: Ie30afcb7bcba5affc7266d72a10b7f8dc0074314 + Reviewed-on: https://chromium-review.googlesource.com/830093 + Reviewed-by: Eric Lawrence <elawre...@chromium.org> + Reviewed-by: Peter Kasting <pkast...@chromium.org> + Reviewed-by: Eugene But <eugene...@chromium.org> + Commit-Queue: Eric Lawrence <elawre...@chromium.org> + Cr-Commit-Position: refs/heads/master@{#524591} + +diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views_browsertest.cc b/chrome/browser/ui/views/omnibox/omnibox_view_views_browsertest.cc +index 6e5dff47f7ec..24f1056d49d5 100644 +--- a/chrome/browser/ui/views/omnibox/omnibox_view_views_browsertest.cc ++++ b/chrome/browser/ui/views/omnibox/omnibox_view_views_browsertest.cc +@@ -462,3 +462,13 @@ IN_PROC_BROWSER_TEST_F(OmniboxViewViewsTest, TextElideStatus) { + EXPECT_EQ(omnibox_view_views->GetRenderText()->elide_behavior(), + gfx::NO_ELIDE); + } ++ ++IN_PROC_BROWSER_TEST_F(OmniboxViewViewsTest, FragmentUnescapedForDisplay) { ++ OmniboxView* view = nullptr; ++ ASSERT_NO_FATAL_FAILURE(GetOmniboxViewForBrowser(browser(), &view)); ++ ui_test_utils::NavigateToURL(browser(), ++ GURL("https://www.google.com/#%E2%98%83")); ++ ++ EXPECT_EQ(view->GetText(), ++ base::UTF8ToUTF16("https://www.google.com/#\u2603")); ++} +diff --git a/components/url_formatter/elide_url_unittest.cc b/components/url_formatter/elide_url_unittest.cc +index 5e0384af72a2..d403ce065f45 100644 +--- a/components/url_formatter/elide_url_unittest.cc ++++ b/components/url_formatter/elide_url_unittest.cc +@@ -347,15 +347,16 @@ TEST(TextEliderTest, TestElisionSpecialCases) { + kEllipsisStr + "berkeley.edu:4430/" + kEllipsisStr + "/arbitfilename"}, + + // Unescaping. +- {"http://www/%E4%BD%A0%E5%A5%BD?q=%E4%BD%A0%E5%A5%BD#\xe4\xbd\xa0", +- "www/\xe4\xbd\xa0\xe5\xa5\xbd?q=\xe4\xbd\xa0\xe5\xa5\xbd#" + ++ {"http://www/%E4%BD%A0%E5%A5%BD?" ++ "q=%E4%BD%A0%E5%A5%BD#\xe4\xbd\xa0\xe4\xbd\xa0\xe4\xbd\xa0", ++ "www/\xe4\xbd\xa0\xe5\xa5\xbd?q=\xe4\xbd\xa0\xe5\xa5\xbd#\xe4\xbd\xa0" + + kEllipsisStr}, + + // Invalid unescaping for path. The ref will always be valid UTF-8. We + // don't bother to do too many edge cases, since these are handled by the + // escaper unittest. + {"http://www/%E4%A0%E5%A5%BD?q=%E4%BD%A0%E5%A5%BD#\xe4\xbd\xa0", +- "www/%E4%A0%E5%A5%BD?q=\xe4\xbd\xa0\xe5\xa5\xbd#" + kEllipsisStr}, ++ "www/%E4%A0%E5%A5%BD?q=\xe4\xbd\xa0\xe5\xa5\xbd#\xe4\xbd\xa0"}, + }; + + RunElisionTest(testcases); +diff --git a/components/url_formatter/url_formatter.cc b/components/url_formatter/url_formatter.cc +index d5c0d314a5de..c422e3d98a72 100644 +--- a/components/url_formatter/url_formatter.cc ++++ b/components/url_formatter/url_formatter.cc +@@ -586,11 +586,10 @@ base::string16 FormatUrlWithAdjustments( + NonHostComponentTransform(unescape_rules), + &url_string, &new_parsed->query, adjustments); + +- // Ref. This is valid, unescaped UTF-8, so we can just convert. + if (parsed.ref.is_valid()) + url_string.push_back('#'); + AppendFormattedComponent(spec, parsed.ref, +- NonHostComponentTransform(net::UnescapeRule::NONE), ++ NonHostComponentTransform(unescape_rules), + &url_string, &new_parsed->ref, adjustments); + } + +diff --git a/components/url_formatter/url_formatter_unittest.cc b/components/url_formatter/url_formatter_unittest.cc +index 6fd3ece50f7d..5aaf31105a43 100644 +--- a/components/url_formatter/url_formatter_unittest.cc ++++ b/components/url_formatter/url_formatter_unittest.cc +@@ -828,7 +828,7 @@ TEST(UrlFormatterTest, FormatUrl) { + + {"With a port number and a reference", + "http://www.google.com:8080/#\xE3\x82\xB0", default_format_type, +- net::UnescapeRule::NORMAL, L"http://www.google.com:8080/#%E3%82%B0", 7}, ++ net::UnescapeRule::NORMAL, L"http://www.google.com:8080/#\x30B0", 7}, + + // -------- IDN tests -------- + {"Japanese IDN with ja", "http://xn--l8jvb1ey91xtjb.jp", +@@ -1119,7 +1119,7 @@ TEST(UrlFormatterTest, FormatUrlParsed) { + kFormatUrlOmitNothing, net::UnescapeRule::NORMAL, &parsed, + nullptr, nullptr); + EXPECT_EQ(WideToUTF16(L"http://\x30B0:\x30FC@\x30B0\x30FC\x30B0\x30EB.jp:8080" +- L"/\x30B0/?q=\x30B0#%E3%82%B0"), ++ L"/\x30B0/?q=\x30B0#\x30B0"), + formatted); + EXPECT_EQ(WideToUTF16(L"\x30B0"), + formatted.substr(parsed.username.begin, parsed.username.len)); +@@ -1133,7 +1133,7 @@ TEST(UrlFormatterTest, FormatUrlParsed) { + formatted.substr(parsed.path.begin, parsed.path.len)); + EXPECT_EQ(WideToUTF16(L"q=\x30B0"), + formatted.substr(parsed.query.begin, parsed.query.len)); +- EXPECT_EQ(WideToUTF16(L"%E3%82%B0"), ++ EXPECT_EQ(WideToUTF16(L"\x30B0"), + formatted.substr(parsed.ref.begin, parsed.ref.len)); + + // Omit_username_password + unescape case. +@@ -1143,7 +1143,7 @@ TEST(UrlFormatterTest, FormatUrlParsed) { + kFormatUrlOmitUsernamePassword, net::UnescapeRule::NORMAL, + &parsed, nullptr, nullptr); + EXPECT_EQ(WideToUTF16(L"http://\x30B0\x30FC\x30B0\x30EB.jp:8080" +- L"/\x30B0/?q=\x30B0#%E3%82%B0"), ++ L"/\x30B0/?q=\x30B0#\x30B0"), + formatted); + EXPECT_FALSE(parsed.username.is_valid()); + EXPECT_FALSE(parsed.password.is_valid()); +@@ -1155,7 +1155,7 @@ TEST(UrlFormatterTest, FormatUrlParsed) { + formatted.substr(parsed.path.begin, parsed.path.len)); + EXPECT_EQ(WideToUTF16(L"q=\x30B0"), + formatted.substr(parsed.query.begin, parsed.query.len)); +- EXPECT_EQ(WideToUTF16(L"%E3%82%B0"), ++ EXPECT_EQ(WideToUTF16(L"\x30B0"), + formatted.substr(parsed.ref.begin, parsed.ref.len)); + + // View-source case. +@@ -1389,9 +1389,12 @@ TEST(UrlFormatterTest, FormatUrlWithOffsets) { + kFormatUrlOmitNothing, net::UnescapeRule::SPACES, unescape_offsets); + + const size_t ref_offsets[] = { +- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, +- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, +- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49}; ++ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ++ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, ++ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, ++ 30, 31, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, ++ 32, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, 33}; ++ + // Unescape to "http://www.google.com/foo.html#\x30B0\x30B0z". + CheckAdjustedOffsets("http://www.google.com/foo.html#%E3%82%B0%E3%82%B0z", + kFormatUrlOmitNothing, net::UnescapeRule::NORMAL, +diff --git a/ios/chrome/browser/web/push_and_replace_state_navigation_egtest.mm b/ios/chrome/browser/web/push_and_replace_state_navigation_egtest.mm +index b67f2a08d0a0..431ad368f07d 100644 +--- a/ios/chrome/browser/web/push_and_replace_state_navigation_egtest.mm ++++ b/ios/chrome/browser/web/push_and_replace_state_navigation_egtest.mm +@@ -59,40 +59,42 @@ const char* kReplaceStateRootPathSpaceURL = "http://ios/rep lace"; + // Push 3 URLs. Verify that the URL changed and the status was updated. + [ChromeEarlGrey tapWebViewElementWithID:@"pushStateHashWithObject"]; + [self assertStatusText:@"pushStateHashWithObject" +- withURL:pushStateHashWithObjectURL ++ withOmniboxText:pushStateHashWithObjectURL.GetContent() + pageLoaded:NO]; + + [ChromeEarlGrey tapWebViewElementWithID:@"pushStateRootPath"]; + [self assertStatusText:@"pushStateRootPath" +- withURL:pushStateRootPathURL ++ withOmniboxText:pushStateRootPathURL.GetContent() + pageLoaded:NO]; + + [ChromeEarlGrey tapWebViewElementWithID:@"pushStatePathSpace"]; + [self assertStatusText:@"pushStatePathSpace" +- withURL:pushStatePathSpaceURL ++ withOmniboxText:pushStatePathSpaceURL.GetContent() + pageLoaded:NO]; + + // Go back and check that the page doesn't load and the status text is updated + // by the popstate event. + [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()]; + [self assertStatusText:@"pushStateRootPath" +- withURL:pushStateRootPathURL ++ withOmniboxText:pushStateRootPathURL.GetContent() + pageLoaded:NO]; + + [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()]; + [self assertStatusText:@"pushStateHashWithObject" +- withURL:pushStateHashWithObjectURL ++ withOmniboxText:pushStateHashWithObjectURL.GetContent() + pageLoaded:NO]; + + [ChromeEarlGrey tapWebViewElementWithID:@"goBack"]; + const GURL historyTestURL = web::test::HttpServer::MakeUrl(kHistoryTestUrl); +- [self assertStatusText:NULL withURL:historyTestURL pageLoaded:NO]; ++ [self assertStatusText:nil ++ withOmniboxText:historyTestURL.GetContent() ++ pageLoaded:NO]; + + // Go forward 2 pages and check that the page doesn't load and the status text + // is updated by the popstate event. + [ChromeEarlGrey tapWebViewElementWithID:@"goForward2"]; + [self assertStatusText:@"pushStateRootPath" +- withURL:pushStateRootPathURL ++ withOmniboxText:pushStateRootPathURL.GetContent() + pageLoaded:NO]; + } + +@@ -108,7 +110,7 @@ const char* kReplaceStateRootPathSpaceURL = "http://ios/rep lace"; + web::test::HttpServer::MakeUrl(kReplaceStateHashWithObjectURL); + [ChromeEarlGrey tapWebViewElementWithID:@"replaceStateHashWithObject"]; + [self assertStatusText:@"replaceStateHashWithObject" +- withURL:replaceStateHashWithObjectURL ++ withOmniboxText:replaceStateHashWithObjectURL.GetContent() + pageLoaded:NO]; + + [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()]; +@@ -119,7 +121,7 @@ const char* kReplaceStateRootPathSpaceURL = "http://ios/rep lace"; + [[EarlGrey selectElementWithMatcher:ForwardButton()] + performAction:grey_tap()]; + [self assertStatusText:@"replaceStateHashWithObject" +- withURL:replaceStateHashWithObjectURL ++ withOmniboxText:replaceStateHashWithObjectURL.GetContent() + pageLoaded:YES]; + + // Push URL then replace it. Do this twice. +@@ -127,44 +129,44 @@ const char* kReplaceStateRootPathSpaceURL = "http://ios/rep lace"; + web::test::HttpServer::MakeUrl(kPushStateHashStringURL); + [ChromeEarlGrey tapWebViewElementWithID:@"pushStateHashString"]; + [self assertStatusText:@"pushStateHashString" +- withURL:pushStateHashStringURL ++ withOmniboxText:pushStateHashStringURL.GetContent() + pageLoaded:NO]; + + const GURL replaceStateHashStringURL = + web::test::HttpServer::MakeUrl(kReplaceStateHashStringURL); + [ChromeEarlGrey tapWebViewElementWithID:@"replaceStateHashString"]; + [self assertStatusText:@"replaceStateHashString" +- withURL:replaceStateHashStringURL ++ withOmniboxText:replaceStateHashStringURL.GetContent() + pageLoaded:NO]; + + const GURL pushStatePathURL = + web::test::HttpServer::MakeUrl(kPushStatePathURL); + [ChromeEarlGrey tapWebViewElementWithID:@"pushStatePath"]; + [self assertStatusText:@"pushStatePath" +- withURL:pushStatePathURL ++ withOmniboxText:pushStatePathURL.GetContent() + pageLoaded:NO]; + + const GURL replaceStateRootPathSpaceURL = + web::test::HttpServer::MakeUrl(kReplaceStateRootPathSpaceURL); + [ChromeEarlGrey tapWebViewElementWithID:@"replaceStateRootPathSpace"]; + [self assertStatusText:@"replaceStateRootPathSpace" +- withURL:replaceStateRootPathSpaceURL ++ withOmniboxText:replaceStateRootPathSpaceURL.GetContent() + pageLoaded:NO]; + + // Go back and check URLs. + [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()]; + [self assertStatusText:@"replaceStateHashString" +- withURL:replaceStateHashStringURL ++ withOmniboxText:replaceStateHashStringURL.GetContent() + pageLoaded:NO]; + [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()]; + [self assertStatusText:@"replaceStateHashWithObject" +- withURL:replaceStateHashWithObjectURL ++ withOmniboxText:replaceStateHashWithObjectURL.GetContent() + pageLoaded:NO]; + + // Go forward and check URL. + [ChromeEarlGrey tapWebViewElementWithID:@"goForward2"]; + [self assertStatusText:@"replaceStateRootPathSpace" +- withURL:replaceStateRootPathSpaceURL ++ withOmniboxText:replaceStateRootPathSpaceURL.GetContent() + pageLoaded:NO]; + } + +@@ -180,11 +182,11 @@ const char* kReplaceStateRootPathSpaceURL = "http://ios/rep lace"; + web::test::HttpServer::MakeUrl(kPushStateHashStringURL); + [ChromeEarlGrey tapWebViewElementWithID:@"pushStateHashString"]; + [self assertStatusText:@"pushStateHashString" +- withURL:pushStateHashStringURL ++ withOmniboxText:pushStateHashStringURL.GetContent() + pageLoaded:NO]; + [ChromeEarlGrey tapWebViewElementWithID:@"pushStateHashString"]; + [self assertStatusText:@"pushStateHashString" +- withURL:pushStateHashStringURL ++ withOmniboxText:pushStateHashStringURL.GetContent() + pageLoaded:NO]; + + // Load a non-pushed URL. +@@ -194,7 +196,7 @@ const char* kReplaceStateRootPathSpaceURL = "http://ios/rep lace"; + [ChromeEarlGrey loadURL:historyTestURL]; + [ChromeEarlGrey tapWebViewElementWithID:@"pushStateHashString"]; + [self assertStatusText:@"pushStateHashString" +- withURL:pushStateHashStringURL ++ withOmniboxText:pushStateHashStringURL.GetContent() + pageLoaded:NO]; + + // At this point the history looks like this: +@@ -202,38 +204,54 @@ const char* kReplaceStateRootPathSpaceURL = "http://ios/rep lace"; + + // Go back (to second history.html) and verify page did not load. + [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()]; +- [self assertStatusText:nil withURL:historyTestURL pageLoaded:NO]; ++ [self assertStatusText:nil ++ withOmniboxText:historyTestURL.GetContent() ++ pageLoaded:NO]; + + // Go back twice (to second #string) and verify page did load. + [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()]; + [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()]; +- [self assertStatusText:nil withURL:pushStateHashStringURL pageLoaded:YES]; ++ [self assertStatusText:nil ++ withOmniboxText:pushStateHashStringURL.GetContent() ++ pageLoaded:YES]; + + // Go back once (to first #string) and verify page did not load. + [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()]; + [self assertStatusText:@"pushStateHashString" +- withURL:pushStateHashStringURL ++ withOmniboxText:pushStateHashStringURL.GetContent() + pageLoaded:NO]; + + // Go forward 4 entries at once (to third #string) and verify page did load. + [ChromeEarlGrey tapWebViewElementWithID:@"goForward4"]; + +- [self assertStatusText:nil withURL:pushStateHashStringURL pageLoaded:YES]; ++ [self assertStatusText:nil ++ withOmniboxText:pushStateHashStringURL.GetContent() ++ pageLoaded:YES]; + + // Go back 4 entries at once (to first #string) and verify page did load. + [ChromeEarlGrey tapWebViewElementWithID:@"goBack4"]; + +- [self assertStatusText:NULL withURL:pushStateHashStringURL pageLoaded:YES]; ++ [self assertStatusText:nil ++ withOmniboxText:pushStateHashStringURL.GetContent() ++ pageLoaded:YES]; + } + + // Tests calling pushState with unicode characters. + - (void)testHtml5HistoryPushUnicodeCharacters { +- const GURL pushStateUnicodeURLEncoded = web::test::HttpServer::MakeUrl( +- "http://ios/testing/data/http_server_files/" +- "history.html#unicode%E1%84%91"); +- const GURL pushStateUnicode2URLEncoded = web::test::HttpServer::MakeUrl( +- "http://ios/testing/data/http_server_files/" +- "history.html#unicode2%E2%88%A2"); ++ // The GURL object %-escapes Unicode characters in the URL's fragment, ++ // but the omnibox decodes them back to Unicode for display. ++ std::string pushStateUnicode = ++ web::test::HttpServer::MakeUrl( ++ "http://ios/testing/data/http_server_files/" ++ "history.html#unicode") ++ .GetContent() + ++ "\xe1\x84\x91"; ++ std::string pushStateUnicode2 = ++ web::test::HttpServer::MakeUrl( ++ "http://ios/testing/data/http_server_files/" ++ "history.html#unicode2") ++ .GetContent() + ++ "\xe2\x88\xa2"; + const char pushStateUnicodeLabel[] = "Action: pushStateUnicodeᄑ"; + NSString* pushStateUnicodeStatus = @"pushStateUnicodeᄑ"; + const char pushStateUnicode2Label[] = "Action: pushStateUnicode2∢"; +@@ -242,21 +260,16 @@ const char* kReplaceStateRootPathSpaceURL = "http://ios/rep lace"; + web::test::SetUpFileBasedHttpServer(); + [ChromeEarlGrey loadURL:web::test::HttpServer::MakeUrl(kHistoryTestUrl)]; + +- // TODO(crbug.com/643458): The fact that the URL shows %-escaped is due to +- // NSURL escaping to make UIWebView/JS happy. See if it's possible to +- // represent differently such that it displays unescaped. + // Do 2 push states with unicode characters. + [ChromeEarlGrey tapWebViewElementWithID:@"pushStateUnicode"]; + [[EarlGrey +- selectElementWithMatcher:chrome_test_util::OmniboxText( +- pushStateUnicodeURLEncoded.GetContent())] ++ selectElementWithMatcher:chrome_test_util::OmniboxText(pushStateUnicode)] + assertWithMatcher:grey_notNil()]; + [ChromeEarlGrey waitForWebViewContainingText:pushStateUnicodeLabel]; + + [ChromeEarlGrey tapWebViewElementWithID:@"pushStateUnicode2"]; + [[EarlGrey +- selectElementWithMatcher:chrome_test_util::OmniboxText( +- pushStateUnicode2URLEncoded.GetContent())] ++ selectElementWithMatcher:chrome_test_util::OmniboxText(pushStateUnicode2)] + assertWithMatcher:grey_notNil()]; + [ChromeEarlGrey waitForWebViewContainingText:pushStateUnicode2Label]; + +@@ -266,18 +279,18 @@ const char* kReplaceStateRootPathSpaceURL = "http://ios/rep lace"; + [ChromeEarlGrey tapWebViewElementWithID:@"pushStatePath"]; + + [self assertStatusText:@"pushStatePath" +- withURL:pushStatePathURL ++ withOmniboxText:pushStatePathURL.GetContent() + pageLoaded:NO]; + + // Go back and check the unicode in the URL and status. + [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()]; + [self assertStatusText:pushStateUnicode2Status +- withURL:pushStateUnicode2URLEncoded ++ withOmniboxText:pushStateUnicode2 + pageLoaded:NO]; + + [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()]; + [self assertStatusText:pushStateUnicodeStatus +- withURL:pushStateUnicodeURLEncoded ++ withOmniboxText:pushStateUnicode + pageLoaded:NO]; + } + +@@ -321,10 +334,11 @@ const char* kReplaceStateRootPathSpaceURL = "http://ios/rep lace"; + + #pragma mark - Utility methods + +-// Assert that status text |status| is displayed in the webview, that "onloaded" +-// text is displayed if pageLoaded is YES, and that the URL is as expected. ++// Assert that status text |status|, if non-nil, is displayed in the webview, ++// that the omnibox text is as expected, and that "onload" text is displayed if ++// pageLoaded is YES. + - (void)assertStatusText:(NSString*)status +- withURL:(const GURL&)urlToVerify ++ withOmniboxText:(const std::string&)omniboxText + pageLoaded:(BOOL)pageLoaded { + if (pageLoaded) { + [ChromeEarlGrey waitForWebViewContainingText:"onload"]; +@@ -332,14 +346,14 @@ const char* kReplaceStateRootPathSpaceURL = "http://ios/rep lace"; + [ChromeEarlGrey waitForWebViewNotContainingText:"onload"]; + } + +- if (status != NULL) { ++ if (status != nil) { + NSString* statusLabel = [NSString stringWithFormat:@"Action: %@", status]; + [ChromeEarlGrey + waitForWebViewContainingText:base::SysNSStringToUTF8(statusLabel)]; + } + +- [[EarlGrey selectElementWithMatcher:chrome_test_util::OmniboxText( +- urlToVerify.GetContent())] ++ [[EarlGrey ++ selectElementWithMatcher:chrome_test_util::OmniboxText(omniboxText)] + assertWithMatcher:grey_notNil()]; + } + Deleted: chromium-skia-harmony.patch =================================================================== --- chromium-skia-harmony.patch 2018-02-02 12:31:00 UTC (rev 315752) +++ chromium-skia-harmony.patch 2018-02-02 12:31:12 UTC (rev 315753) @@ -1,77 +0,0 @@ ---- qtwebengine-opensource-src-5.9.1/src/3rdparty/chromium/third_party/skia/src/ports/SkFontHost_FreeType.cpp.orig 2017-10-10 17:42:06.956950985 +0200 -+++ qtwebengine-opensource-src-5.9.1/src/3rdparty/chromium/third_party/skia/src/ports/SkFontHost_FreeType.cpp 2017-10-10 17:46:05.824187787 +0200 -@@ -99,8 +99,6 @@ - FreeTypeLibrary() - : fGetVarDesignCoordinates(nullptr) - , fLibrary(nullptr) -- , fIsLCDSupported(false) -- , fLCDExtra(0) - { - if (FT_New_Library(&gFTMemory, &fLibrary)) { - return; -@@ -147,12 +145,7 @@ - } - #endif - -- // Setup LCD filtering. This reduces color fringes for LCD smoothed glyphs. -- // The default has changed over time, so this doesn't mean the same thing to all users. -- if (FT_Library_SetLcdFilter(fLibrary, FT_LCD_FILTER_DEFAULT) == 0) { -- fIsLCDSupported = true; -- fLCDExtra = 2; //Using a filter adds one full pixel to each side. -- } -+ FT_Library_SetLcdFilter(fLibrary, FT_LCD_FILTER_DEFAULT); - } - ~FreeTypeLibrary() { - if (fLibrary) { -@@ -161,8 +153,6 @@ - } - - FT_Library library() { return fLibrary; } -- bool isLCDSupported() { return fIsLCDSupported; } -- int lcdExtra() { return fLCDExtra; } - - // FT_Get_{MM,Var}_{Blend,Design}_Coordinates were added in FreeType 2.7.1. - // Prior to this there was no way to get the coordinates out of the FT_Face. -@@ -173,8 +163,6 @@ - - private: - FT_Library fLibrary; -- bool fIsLCDSupported; -- int fLCDExtra; - - // FT_Library_SetLcdFilterWeights was introduced in FreeType 2.4.0. - // The following platforms provide FreeType of at least 2.4.0. -@@ -704,17 +692,6 @@ - rec->fTextSize = SkIntToScalar(1 << 14); - } - -- if (isLCD(*rec)) { -- // TODO: re-work so that FreeType is set-up and selected by the SkFontMgr. -- SkAutoMutexAcquire ama(gFTMutex); -- ref_ft_library(); -- if (!gFTLibrary->isLCDSupported()) { -- // If the runtime Freetype library doesn't support LCD, disable it here. -- rec->fMaskFormat = SkMask::kA8_Format; -- } -- unref_ft_library(); -- } -- - SkPaint::Hinting h = rec->getHinting(); - if (SkPaint::kFull_Hinting == h && !isLCD(*rec)) { - // collapse full->normal hinting if we're not doing LCD -@@ -1115,11 +1092,11 @@ - void SkScalerContext_FreeType::updateGlyphIfLCD(SkGlyph* glyph) { - if (isLCD(fRec)) { - if (fLCDIsVert) { -- glyph->fHeight += gFTLibrary->lcdExtra(); -- glyph->fTop -= gFTLibrary->lcdExtra() >> 1; -+ glyph->fHeight += 2; -+ glyph->fTop -= 1; - } else { -- glyph->fWidth += gFTLibrary->lcdExtra(); -- glyph->fLeft -= gFTLibrary->lcdExtra() >> 1; -+ glyph->fWidth += 2; -+ glyph->fLeft -= 1; - } - } - } Copied: chromium/repos/extra-x86_64/chromium-skia-harmony.patch (from rev 315752, chromium/trunk/chromium-skia-harmony.patch) =================================================================== --- chromium-skia-harmony.patch (rev 0) +++ chromium-skia-harmony.patch 2018-02-02 12:31:12 UTC (rev 315753) @@ -0,0 +1,77 @@ +--- qtwebengine-opensource-src-5.9.1/src/3rdparty/chromium/third_party/skia/src/ports/SkFontHost_FreeType.cpp.orig 2017-10-10 17:42:06.956950985 +0200 ++++ qtwebengine-opensource-src-5.9.1/src/3rdparty/chromium/third_party/skia/src/ports/SkFontHost_FreeType.cpp 2017-10-10 17:46:05.824187787 +0200 +@@ -99,8 +99,6 @@ + FreeTypeLibrary() + : fGetVarDesignCoordinates(nullptr) + , fLibrary(nullptr) +- , fIsLCDSupported(false) +- , fLCDExtra(0) + { + if (FT_New_Library(&gFTMemory, &fLibrary)) { + return; +@@ -147,12 +145,7 @@ + } + #endif + +- // Setup LCD filtering. This reduces color fringes for LCD smoothed glyphs. +- // The default has changed over time, so this doesn't mean the same thing to all users. +- if (FT_Library_SetLcdFilter(fLibrary, FT_LCD_FILTER_DEFAULT) == 0) { +- fIsLCDSupported = true; +- fLCDExtra = 2; //Using a filter adds one full pixel to each side. +- } ++ FT_Library_SetLcdFilter(fLibrary, FT_LCD_FILTER_DEFAULT); + } + ~FreeTypeLibrary() { + if (fLibrary) { +@@ -161,8 +153,6 @@ + } + + FT_Library library() { return fLibrary; } +- bool isLCDSupported() { return fIsLCDSupported; } +- int lcdExtra() { return fLCDExtra; } + + // FT_Get_{MM,Var}_{Blend,Design}_Coordinates were added in FreeType 2.7.1. + // Prior to this there was no way to get the coordinates out of the FT_Face. +@@ -173,8 +163,6 @@ + + private: + FT_Library fLibrary; +- bool fIsLCDSupported; +- int fLCDExtra; + + // FT_Library_SetLcdFilterWeights was introduced in FreeType 2.4.0. + // The following platforms provide FreeType of at least 2.4.0. +@@ -704,17 +692,6 @@ + rec->fTextSize = SkIntToScalar(1 << 14); + } + +- if (isLCD(*rec)) { +- // TODO: re-work so that FreeType is set-up and selected by the SkFontMgr. +- SkAutoMutexAcquire ama(gFTMutex); +- ref_ft_library(); +- if (!gFTLibrary->isLCDSupported()) { +- // If the runtime Freetype library doesn't support LCD, disable it here. +- rec->fMaskFormat = SkMask::kA8_Format; +- } +- unref_ft_library(); +- } +- + SkPaint::Hinting h = rec->getHinting(); + if (SkPaint::kFull_Hinting == h && !isLCD(*rec)) { + // collapse full->normal hinting if we're not doing LCD +@@ -1115,11 +1092,11 @@ + void SkScalerContext_FreeType::updateGlyphIfLCD(SkGlyph* glyph) { + if (isLCD(fRec)) { + if (fLCDIsVert) { +- glyph->fHeight += gFTLibrary->lcdExtra(); +- glyph->fTop -= gFTLibrary->lcdExtra() >> 1; ++ glyph->fHeight += 2; ++ glyph->fTop -= 1; + } else { +- glyph->fWidth += gFTLibrary->lcdExtra(); +- glyph->fLeft -= gFTLibrary->lcdExtra() >> 1; ++ glyph->fWidth += 2; ++ glyph->fLeft -= 1; + } + } + } Deleted: chromium-use-fromUTF8-for-UnicodeString-construction.patch =================================================================== --- chromium-use-fromUTF8-for-UnicodeString-construction.patch 2018-02-02 12:31:00 UTC (rev 315752) +++ chromium-use-fromUTF8-for-UnicodeString-construction.patch 2018-02-02 12:31:12 UTC (rev 315753) @@ -1,68 +0,0 @@ -From e58fa0ba66272c5f28828b15d06c7e42a9882b3b Mon Sep 17 00:00:00 2001 -From: Jungshik Shin <js...@chromium.org> -Date: Sat, 16 Dec 2017 04:19:27 +0000 -Subject: [PATCH] Use fromUTF8() for UnicodeString construction from UTF-8 - -Chrome's copy of ICU is built with U_CHARSET_IS_UTF8=1 so that |char *| -buffer is treated as UTF-8 when constructing UnicodeString() regardless -of the default encoding of the current locale on Linux or non-Unicode code -page on Windows. - -However, some Linux distros do not set U_CHARSET_IS_UTF=1 when building -ICU and Chromium build with system_icu crashes when Chromium is run in -non-UTF-8 locale (e.g. 'C'). - -To make Chromium work in a non-UTF-8 locale (which is pretty rare these -days), use 'icu::UnicodeString::fromUTF8(StringPiece)' instead of -'icu::UnicodeString(const char*)'. - -Bug: 772655 -Test: components_unittests --gtest_filter=*IDN* -Test: Chromium built with system_icu does not crash in C locale. -Change-Id: I0daa284ec06b8e83814fc70eb8e9e5c96444ebfa -Reviewed-on: https://chromium-review.googlesource.com/831247 -Reviewed-by: Peter Kasting <pkast...@chromium.org> -Commit-Queue: Jungshik Shin <js...@chromium.org> -Cr-Commit-Position: refs/heads/master@{#524586} ---- - components/url_formatter/idn_spoof_checker.cc | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/components/url_formatter/idn_spoof_checker.cc b/components/url_formatter/idn_spoof_checker.cc -index a88c5e8f8331..aee748d8a4d5 100644 ---- a/components/url_formatter/idn_spoof_checker.cc -+++ b/components/url_formatter/idn_spoof_checker.cc -@@ -110,8 +110,8 @@ IDNSpoofChecker::IDNSpoofChecker() { - - // These Cyrillic letters look like Latin. A domain label entirely made of - // these letters is blocked as a simplified whole-script-spoofable. -- cyrillic_letters_latin_alike_ = -- icu::UnicodeSet(icu::UnicodeString("[асԁеһіјӏорԛѕԝхуъЬҽпгѵѡ]"), status); -+ cyrillic_letters_latin_alike_ = icu::UnicodeSet( -+ icu::UnicodeString::fromUTF8("[асԁеһіјӏорԛѕԝхуъЬҽпгѵѡ]"), status); - cyrillic_letters_latin_alike_.freeze(); - - cyrillic_letters_ = -@@ -141,8 +141,8 @@ IDNSpoofChecker::IDNSpoofChecker() { - UParseError parse_error; - diacritic_remover_.reset(icu::Transliterator::createFromRules( - UNICODE_STRING_SIMPLE("DropAcc"), -- icu::UnicodeString("::NFD; ::[:Nonspacing Mark:] Remove; ::NFC;" -- " ł > l; ø > o; đ > d;"), -+ icu::UnicodeString::fromUTF8("::NFD; ::[:Nonspacing Mark:] Remove; ::NFC;" -+ " ł > l; ø > o; đ > d;"), - UTRANS_FORWARD, parse_error, status)); - - // Supplement the Unicode confusable list by the following mapping. -@@ -158,7 +158,7 @@ IDNSpoofChecker::IDNSpoofChecker() { - // - U+0D1F (ട) => s - extra_confusable_mapper_.reset(icu::Transliterator::createFromRules( - UNICODE_STRING_SIMPLE("ExtraConf"), -- icu::UnicodeString( -+ icu::UnicodeString::fromUTF8( - "ӏ > l; [кĸκ] > k; п > n; [ƅь] > b; в > b; м > m; н > h; " - "т > t; [шщ] > w; ട > s;"), - UTRANS_FORWARD, parse_error, status)); --- -2.15.1 - Copied: chromium/repos/extra-x86_64/chromium-use-fromUTF8-for-UnicodeString-construction.patch (from rev 315752, chromium/trunk/chromium-use-fromUTF8-for-UnicodeString-construction.patch) =================================================================== --- chromium-use-fromUTF8-for-UnicodeString-construction.patch (rev 0) +++ chromium-use-fromUTF8-for-UnicodeString-construction.patch 2018-02-02 12:31:12 UTC (rev 315753) @@ -0,0 +1,68 @@ +From e58fa0ba66272c5f28828b15d06c7e42a9882b3b Mon Sep 17 00:00:00 2001 +From: Jungshik Shin <js...@chromium.org> +Date: Sat, 16 Dec 2017 04:19:27 +0000 +Subject: [PATCH] Use fromUTF8() for UnicodeString construction from UTF-8 + +Chrome's copy of ICU is built with U_CHARSET_IS_UTF8=1 so that |char *| +buffer is treated as UTF-8 when constructing UnicodeString() regardless +of the default encoding of the current locale on Linux or non-Unicode code +page on Windows. + +However, some Linux distros do not set U_CHARSET_IS_UTF=1 when building +ICU and Chromium build with system_icu crashes when Chromium is run in +non-UTF-8 locale (e.g. 'C'). + +To make Chromium work in a non-UTF-8 locale (which is pretty rare these +days), use 'icu::UnicodeString::fromUTF8(StringPiece)' instead of +'icu::UnicodeString(const char*)'. + +Bug: 772655 +Test: components_unittests --gtest_filter=*IDN* +Test: Chromium built with system_icu does not crash in C locale. +Change-Id: I0daa284ec06b8e83814fc70eb8e9e5c96444ebfa +Reviewed-on: https://chromium-review.googlesource.com/831247 +Reviewed-by: Peter Kasting <pkast...@chromium.org> +Commit-Queue: Jungshik Shin <js...@chromium.org> +Cr-Commit-Position: refs/heads/master@{#524586} +--- + components/url_formatter/idn_spoof_checker.cc | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/components/url_formatter/idn_spoof_checker.cc b/components/url_formatter/idn_spoof_checker.cc +index a88c5e8f8331..aee748d8a4d5 100644 +--- a/components/url_formatter/idn_spoof_checker.cc ++++ b/components/url_formatter/idn_spoof_checker.cc +@@ -110,8 +110,8 @@ IDNSpoofChecker::IDNSpoofChecker() { + + // These Cyrillic letters look like Latin. A domain label entirely made of + // these letters is blocked as a simplified whole-script-spoofable. +- cyrillic_letters_latin_alike_ = +- icu::UnicodeSet(icu::UnicodeString("[асԁеһіјӏорԛѕԝхуъЬҽпгѵѡ]"), status); ++ cyrillic_letters_latin_alike_ = icu::UnicodeSet( ++ icu::UnicodeString::fromUTF8("[асԁеһіјӏорԛѕԝхуъЬҽпгѵѡ]"), status); + cyrillic_letters_latin_alike_.freeze(); + + cyrillic_letters_ = +@@ -141,8 +141,8 @@ IDNSpoofChecker::IDNSpoofChecker() { + UParseError parse_error; + diacritic_remover_.reset(icu::Transliterator::createFromRules( + UNICODE_STRING_SIMPLE("DropAcc"), +- icu::UnicodeString("::NFD; ::[:Nonspacing Mark:] Remove; ::NFC;" +- " ł > l; ø > o; đ > d;"), ++ icu::UnicodeString::fromUTF8("::NFD; ::[:Nonspacing Mark:] Remove; ::NFC;" ++ " ł > l; ø > o; đ > d;"), + UTRANS_FORWARD, parse_error, status)); + + // Supplement the Unicode confusable list by the following mapping. +@@ -158,7 +158,7 @@ IDNSpoofChecker::IDNSpoofChecker() { + // - U+0D1F (ട) => s + extra_confusable_mapper_.reset(icu::Transliterator::createFromRules( + UNICODE_STRING_SIMPLE("ExtraConf"), +- icu::UnicodeString( ++ icu::UnicodeString::fromUTF8( + "ӏ > l; [кĸκ] > k; п > n; [ƅь] > b; в > b; м > m; н > h; " + "т > t; [шщ] > w; ട > s;"), + UTRANS_FORWARD, parse_error, status)); +-- +2.15.1 + Deleted: chromium-widevine.patch =================================================================== --- chromium-widevine.patch 2018-02-02 12:31:00 UTC (rev 315752) +++ chromium-widevine.patch 2018-02-02 12:31:12 UTC (rev 315753) @@ -1,10 +0,0 @@ -diff -upr chromium-48.0.2564.82.orig/third_party/widevine/cdm/stub/widevine_cdm_version.h chromium-48.0.2564.82/third_party/widevine/cdm/stub/widevine_cdm_version.h ---- chromium-48.0.2564.82.orig/third_party/widevine/cdm/stub/widevine_cdm_version.h 2016-01-14 01:05:17.000000000 +0200 -+++ chromium-48.0.2564.82/third_party/widevine/cdm/stub/widevine_cdm_version.h 2016-01-21 19:18:51.287978456 +0200 -@@ -12,4 +12,6 @@ - - #define WIDEVINE_CDM_AVAILABLE - -+#define WIDEVINE_CDM_VERSION_STRING "@WIDEVINE_VERSION@" -+ - #endif // WIDEVINE_CDM_VERSION_H_ Copied: chromium/repos/extra-x86_64/chromium-widevine.patch (from rev 315752, chromium/trunk/chromium-widevine.patch) =================================================================== --- chromium-widevine.patch (rev 0) +++ chromium-widevine.patch 2018-02-02 12:31:12 UTC (rev 315753) @@ -0,0 +1,10 @@ +diff -upr chromium-48.0.2564.82.orig/third_party/widevine/cdm/stub/widevine_cdm_version.h chromium-48.0.2564.82/third_party/widevine/cdm/stub/widevine_cdm_version.h +--- chromium-48.0.2564.82.orig/third_party/widevine/cdm/stub/widevine_cdm_version.h 2016-01-14 01:05:17.000000000 +0200 ++++ chromium-48.0.2564.82/third_party/widevine/cdm/stub/widevine_cdm_version.h 2016-01-21 19:18:51.287978456 +0200 +@@ -12,4 +12,6 @@ + + #define WIDEVINE_CDM_AVAILABLE + ++#define WIDEVINE_CDM_VERSION_STRING "@WIDEVINE_VERSION@" ++ + #endif // WIDEVINE_CDM_VERSION_H_ Deleted: chromium.install =================================================================== --- chromium.install 2018-02-02 12:31:00 UTC (rev 315752) +++ chromium.install 2018-02-02 12:31:12 UTC (rev 315753) @@ -1,16 +0,0 @@ -post_upgrade() { - if (($(vercmp $2 42.0.2311.90-1) < 0)); then - echo ':: This Chromium package no longer supports custom flags passed via the' - echo ' /etc/chromium/default file (or any other files under /etc/chromium/).' - echo - echo ' The new /usr/bin/chromium launcher script will automatically detect' - echo ' Pepper Flash (if installed) and pass the correct flags to Chromium.' - echo - echo ' If you need to pass extra command-line arguments to Chromium, you' - echo ' can put them in a "chromium-flags.conf" file under $HOME/.config/' - echo ' (or $XDG_CONFIG_HOME). Arguments are split on whitespace and shell' - echo ' quoting rules apply but no further parsing is performed.' - fi -} - -# vim:set ts=2 sw=2 et: Copied: chromium/repos/extra-x86_64/chromium.install (from rev 315752, chromium/trunk/chromium.install) =================================================================== --- chromium.install (rev 0) +++ chromium.install 2018-02-02 12:31:12 UTC (rev 315753) @@ -0,0 +1,16 @@ +post_upgrade() { + if (($(vercmp $2 42.0.2311.90-1) < 0)); then + echo ':: This Chromium package no longer supports custom flags passed via the' + echo ' /etc/chromium/default file (or any other files under /etc/chromium/).' + echo + echo ' The new /usr/bin/chromium launcher script will automatically detect' + echo ' Pepper Flash (if installed) and pass the correct flags to Chromium.' + echo + echo ' If you need to pass extra command-line arguments to Chromium, you' + echo ' can put them in a "chromium-flags.conf" file under $HOME/.config/' + echo ' (or $XDG_CONFIG_HOME). Arguments are split on whitespace and shell' + echo ' quoting rules apply but no further parsing is performed.' + fi +} + +# vim:set ts=2 sw=2 et: