diff options
author | Balló György | 2018-01-24 02:13:25 +0100 |
---|---|---|
committer | Balló György | 2018-01-24 02:13:25 +0100 |
commit | 0e5954b65dd4809b0bb3b8bb83b7232ea1899ae3 (patch) | |
tree | eabe5a0737b973698a9ea3c5902c9e34702111c3 | |
download | aur-chromium-beta.tar.gz |
Add chromium-beta for Chromium Beta Channel
https://googlechromereleases.blogspot.com/
-rw-r--r-- | .SRCINFO | 70 | ||||
-rw-r--r-- | PKGBUILD | 261 | ||||
-rw-r--r-- | chromium-clang-r1.patch | 21 | ||||
-rw-r--r-- | chromium-exclude_unwind_tables.patch | 46 | ||||
-rw-r--r-- | chromium-memcpy.patch | 13 | ||||
-rw-r--r-- | chromium-omnibox-unescape-fragment.patch | 437 | ||||
-rw-r--r-- | chromium-skia-harmony.patch | 77 | ||||
-rw-r--r-- | chromium-widevine.patch | 10 | ||||
-rw-r--r-- | chromium.install | 16 |
9 files changed, 951 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..1f19d533f635 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,70 @@ +pkgbase = chromium-beta + pkgdesc = A web browser built for speed, simplicity, and security (beta channel) + pkgver = 64.0.3282.99 + pkgrel = 1 + url = https://www.chromium.org/Home + install = chromium.install + arch = x86_64 + license = BSD + makedepends = python2 + makedepends = gperf + makedepends = yasm + makedepends = mesa + makedepends = ninja + makedepends = nodejs + makedepends = git + makedepends = clang + makedepends = lld + depends = gtk3 + depends = nss + depends = alsa-lib + depends = xdg-utils + depends = libxss + depends = libcups + depends = libgcrypt + depends = ttf-font + depends = systemd + depends = dbus + depends = libpulse + depends = pciutils + depends = json-glib + depends = desktop-file-utils + depends = hicolor-icon-theme + depends = flac + depends = opus + depends = minizip + depends = libxml2 + depends = libxslt + depends = re2 + depends = libwebp + depends = libjpeg + depends = snappy + depends = freetype2 + depends = harfbuzz + optdepends = pepper-flash: support for Flash content + optdepends = kdialog: needed for file dialogs in KDE + optdepends = gnome-keyring: for storing passwords in GNOME keyring + optdepends = kwallet: for storing passwords in KWallet + provides = chromium=64.0.3282.99 + conflicts = chromium + source = https://commondatastorage.googleapis.com/chromium-browser-official/chromium-64.0.3282.99.tar.xz + source = chromium-launcher-5.tar.gz::https://github.com/foutrelis/chromium-launcher/archive/v5.tar.gz + source = chromium-64.0.3282.99.txt::https://chromium.googlesource.com/chromium/src.git/+/64.0.3282.99?format=TEXT + source = chromium-omnibox-unescape-fragment.patch + source = chromium-skia-harmony.patch + source = chromium-clang-r1.patch + source = chromium-memcpy.patch + source = chromium-exclude_unwind_tables.patch + source = chromium-widevine.patch + sha256sums = 2ddb59f5be28d2be0007f22ef8dffbe817de7ea5abc09e5b1c07873f302729c6 + sha256sums = 4dc3428f2c927955d9ae117f2fb24d098cc6dd67adb760ac9c82b522ec8b0587 + sha256sums = 3f3b7c57c83da23122185d102e194fc262d16391ec05f2437159d6b59b66dcb4 + sha256sums = 814eb2cecb10cb697e24036b08aac41e88d0e38971741f9e946200764e2401ae + sha256sums = feca54ab09ac0fc9d0626770a6b899a6ac5a12173c7d0c1005bc3964ec83e7b3 + sha256sums = b721b279ce03db291f18a9c97d1c62cfaa769ed49e0b03e30267c1ae0fd28dbf + sha256sums = d580f70766de6d70c65f27ebd8a20c159b0683c45dab13df9b011603b46a537d + sha256sums = e6208e4466e10f5f2d0ac64066dd2cf08f4d82e9fa586596b34ace76f0a02ad1 + sha256sums = d6fdcb922e5a7fbe15759d39ccc8ea4225821c44d98054ce0f23f9d1f00c9808 + +pkgname = chromium-beta + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..f712db948bbf --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,261 @@ +# $Id$ +# Contributor: Evangelos Foutras <evangelos@foutrelis.com> +# Contributor: Pierre Schmitz <pierre@archlinux.de> +# Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com> +# Contributor: Daniel J Griffiths <ghost1227@archlinux.us> + +pkgname=chromium-beta +_pkgname=chromium +pkgver=64.0.3282.99 +pkgrel=1 +_launcher_ver=5 +pkgdesc="A web browser built for speed, simplicity, and security (beta channel)" +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' + 'lld') +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') +conflicts=('chromium') +provides=("chromium=$pkgver") +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-omnibox-unescape-fragment.patch + chromium-skia-harmony.patch + chromium-clang-r1.patch + chromium-memcpy.patch + chromium-exclude_unwind_tables.patch + chromium-widevine.patch) +sha256sums=('2ddb59f5be28d2be0007f22ef8dffbe817de7ea5abc09e5b1c07873f302729c6' + '4dc3428f2c927955d9ae117f2fb24d098cc6dd67adb760ac9c82b522ec8b0587' + '3f3b7c57c83da23122185d102e194fc262d16391ec05f2437159d6b59b66dcb4' + '814eb2cecb10cb697e24036b08aac41e88d0e38971741f9e946200764e2401ae' + 'feca54ab09ac0fc9d0626770a6b899a6ac5a12173c7d0c1005bc3964ec83e7b3' + 'b721b279ce03db291f18a9c97d1c62cfaa769ed49e0b03e30267c1ae0fd28dbf' + 'd580f70766de6d70c65f27ebd8a20c159b0683c45dab13df9b011603b46a537d' + 'e6208e4466e10f5f2d0ac64066dd2cf08f4d82e9fa586596b34ace76f0a02ad1' + '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 + #[freetype]=freetype2 # Using 'use_system_freetype=true' until M65 + #[harfbuzz-ng]=harfbuzz # Using 'use_system_harfbuzz=true' until M65 + #[icu]=icu # https://crbug.com/772655 + need M64 for ICU 60 + [libdrm]= + [libjpeg]=libjpeg + #[libpng]=libpng # https://crbug.com/752403#c10 + #[libvpx]=libvpx # https://bugs.gentoo.org/611394 + [libwebp]=libwebp + [libxml]=libxml2 + [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/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-clang-r1.patch + + # https://chromium.googlesource.com/chromium/src.git/+/4942f56ceb6d60d6f54ebca8e6eba8ba01c278e8%5E%21/#F0 + patch -Np1 -i ../chromium-memcpy.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-unsigned-enum-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_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/$pkgname/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/$pkgname/LICENSE" +} + +# vim:set ts=2 sw=2 et: diff --git a/chromium-clang-r1.patch b/chromium-clang-r1.patch new file mode 100644 index 000000000000..74a08db58547 --- /dev/null +++ b/chromium-clang-r1.patch @@ -0,0 +1,21 @@ +--- a/build/config/compiler/BUILD.gn.orig 2017-10-04 08:50:15.014675936 +0000 ++++ b/build/config/compiler/BUILD.gn 2017-10-04 08:50:32.831024327 +0000 +@@ -429,18 +429,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. diff --git a/chromium-exclude_unwind_tables.patch b/chromium-exclude_unwind_tables.patch new file mode 100644 index 000000000000..ef1fe597f282 --- /dev/null +++ b/chromium-exclude_unwind_tables.patch @@ -0,0 +1,46 @@ +From 1fc37227522ccd314f82ec893ed15c6129296604 Mon Sep 17 00:00:00 2001 +From: Paul Jensen <pauljensen@chromium.org> +Date: Wed, 11 Oct 2017 08:37:34 -0400 +Subject: [PATCH] Move exclude_unwind_tables back into declare_args + +There is desire to adjust this flag manually. + +BUG=762629 +R=thakis@chromium.org + +Change-Id: I3bd134c19270cd1f729b3ea078674e734493d4ab +--- + +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 diff --git a/chromium-memcpy.patch b/chromium-memcpy.patch new file mode 100644 index 000000000000..7549108ef2b5 --- /dev/null +++ b/chromium-memcpy.patch @@ -0,0 +1,13 @@ +diff --git a/cc/paint/raw_memory_transfer_cache_entry.cc b/cc/paint/raw_memory_transfer_cache_entry.cc +index 9e4660c..95ad50b 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( diff --git a/chromium-omnibox-unescape-fragment.patch b/chromium-omnibox-unescape-fragment.patch new file mode 100644 index 000000000000..59ab04003022 --- /dev/null +++ b/chromium-omnibox-unescape-fragment.patch @@ -0,0 +1,437 @@ +commit 03f9a90d8a783f9d1a94935ac298338a1e694380 +Author: Eric Lawrence <elawrence@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=pkasting@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 <elawrence@chromium.org> + Reviewed-by: Peter Kasting <pkasting@chromium.org> + Reviewed-by: Eugene But <eugenebut@chromium.org> + Commit-Queue: Eric Lawrence <elawrence@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()]; + } + diff --git a/chromium-skia-harmony.patch b/chromium-skia-harmony.patch new file mode 100644 index 000000000000..6343f7f804ff --- /dev/null +++ b/chromium-skia-harmony.patch @@ -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; + } + } + } diff --git a/chromium-widevine.patch b/chromium-widevine.patch new file mode 100644 index 000000000000..a67ae8b1c118 --- /dev/null +++ b/chromium-widevine.patch @@ -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_ diff --git a/chromium.install b/chromium.install new file mode 100644 index 000000000000..c2b5000d2d7b --- /dev/null +++ b/chromium.install @@ -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: |