summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorWorMzy Tykashi2018-01-13 00:38:56 +0000
committerWorMzy Tykashi2018-01-13 00:38:56 +0000
commitc273672171ecec3f4716914e8d92d4579fd4803c (patch)
treef6fde438cc2ebba8a9e1c11da7eb2e0137fe501a
parent6232809d0c905713a2d6012f1d6ee8e61ac63dc6 (diff)
downloadaur-c273672171ecec3f4716914e8d92d4579fd4803c.tar.gz
Updated to 63.0.3239.132
-rw-r--r--.SRCINFO24
-rw-r--r--PKGBUILD61
-rw-r--r--chromium-disable-SharedArrayBuffer-by-default.patch35
-rw-r--r--chromium-omnibox-unescape-fragment.patch437
-rw-r--r--chromium-skia-harmony.patch77
5 files changed, 606 insertions, 28 deletions
diff --git a/.SRCINFO b/.SRCINFO
index d6639c2f5bdd..c4daddcc9f63 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,6 +1,6 @@
pkgbase = chromium-gtk2
pkgdesc = A web browser built for speed, simplicity, and security (GTK2 version)
- pkgver = 63.0.3239.108
+ pkgver = 63.0.3239.132
pkgrel = 1
url = https://www.chromium.org/Home
install = chromium.install
@@ -40,28 +40,34 @@ pkgbase = chromium-gtk2
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
conflicts = chromium
- source = https://commondatastorage.googleapis.com/chromium-browser-official/chromium-63.0.3239.108.tar.xz
+ source = https://commondatastorage.googleapis.com/chromium-browser-official/chromium-63.0.3239.132.tar.xz
source = chromium-launcher-5.tar.gz::https://github.com/foutrelis/chromium-launcher/archive/v5.tar.gz
- source = chromium-63.0.3239.108.txt::https://chromium.googlesource.com/chromium/src.git/+/63.0.3239.108?format=TEXT
- source = chromium.desktop
- source = chromium-exclude_unwind_tables.patch
+ source = chromium-63.0.3239.132.txt::https://chromium.googlesource.com/chromium/src.git/+/63.0.3239.132?format=TEXT
+ source = chromium-omnibox-unescape-fragment.patch
+ source = chromium-disable-SharedArrayBuffer-by-default.patch
+ source = chromium-skia-harmony.patch
source = chromium-clang-r1.patch
source = chromium-webrtc-r0.patch
+ source = chromium-exclude_unwind_tables.patch
source = chromium-widevine.patch
source = fix-nav-button-layout.patch
- sha256sums = 47d80798194da78bdd519b7ce012425b13cf89d6eb287e22a34342a245c31a2b
+ sha256sums = 84c46c2c42faaa102abe0647ee1213615a2522627124924c2741ddc2161b3d8d
sha256sums = 4dc3428f2c927955d9ae117f2fb24d098cc6dd67adb760ac9c82b522ec8b0587
- sha256sums = 6da2cc8e4ae13547763f946c331b2f819fbb8af01681b8b90564a95f8a423e58
- sha256sums = 028a748a5c275de9b8f776f97909f999a8583a4b77fd1cd600b4fc5c0c3e91e9
- sha256sums = e53dc6f259acd39df13874f8a0f440528fae764b859dd71447991a5b1fac7c9c
+ sha256sums = ab330f30c14ea3b5e77976d674304b91cfb02251fe8771cecb0bb4092c7f6b74
+ sha256sums = 814eb2cecb10cb697e24036b08aac41e88d0e38971741f9e946200764e2401ae
+ sha256sums = 1e040caa43ba34c627fe3750fb44c781a74298d010ef40657ab8deb4780db70b
+ sha256sums = feca54ab09ac0fc9d0626770a6b899a6ac5a12173c7d0c1005bc3964ec83e7b3
sha256sums = ab5368a3e3a67fa63b33fefc6788ad5b4a79089ef4db1011a14c3bee9fdf70c6
sha256sums = bcb2f4588cf5dcf75cde855c7431e94fdcc34bdd68b876a90f65ab9938594562
+ sha256sums = e53dc6f259acd39df13874f8a0f440528fae764b859dd71447991a5b1fac7c9c
sha256sums = d6fdcb922e5a7fbe15759d39ccc8ea4225821c44d98054ce0f23f9d1f00c9808
sha256sums = 377cb60201a9bf6a095499273a1d96f43543a4f1dae62e591748eec5c652cf52
diff --git a/PKGBUILD b/PKGBUILD
index 029749280305..0c0676777d4a 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -7,7 +7,7 @@
pkgname=chromium-gtk2
_pkgname=chromium
-pkgver=63.0.3239.108
+pkgver=63.0.3239.132
pkgrel=1
_launcher_ver=5
pkgdesc="A web browser built for speed, simplicity, and security (GTK2 version)"
@@ -29,34 +29,38 @@ 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.desktop
- chromium-exclude_unwind_tables.patch
+ chromium-omnibox-unescape-fragment.patch
+ chromium-disable-SharedArrayBuffer-by-default.patch
+ chromium-skia-harmony.patch
chromium-clang-r1.patch
chromium-webrtc-r0.patch
+ chromium-exclude_unwind_tables.patch
chromium-widevine.patch
fix-nav-button-layout.patch)
-sha256sums=('47d80798194da78bdd519b7ce012425b13cf89d6eb287e22a34342a245c31a2b'
+sha256sums=('84c46c2c42faaa102abe0647ee1213615a2522627124924c2741ddc2161b3d8d'
'4dc3428f2c927955d9ae117f2fb24d098cc6dd67adb760ac9c82b522ec8b0587'
- '6da2cc8e4ae13547763f946c331b2f819fbb8af01681b8b90564a95f8a423e58'
- '028a748a5c275de9b8f776f97909f999a8583a4b77fd1cd600b4fc5c0c3e91e9'
- 'e53dc6f259acd39df13874f8a0f440528fae764b859dd71447991a5b1fac7c9c'
+ 'ab330f30c14ea3b5e77976d674304b91cfb02251fe8771cecb0bb4092c7f6b74'
+ '814eb2cecb10cb697e24036b08aac41e88d0e38971741f9e946200764e2401ae'
+ '1e040caa43ba34c627fe3750fb44c781a74298d010ef40657ab8deb4780db70b'
+ 'feca54ab09ac0fc9d0626770a6b899a6ac5a12173c7d0c1005bc3964ec83e7b3'
'ab5368a3e3a67fa63b33fefc6788ad5b4a79089ef4db1011a14c3bee9fdf70c6'
'bcb2f4588cf5dcf75cde855c7431e94fdcc34bdd68b876a90f65ab9938594562'
+ 'e53dc6f259acd39df13874f8a0f440528fae764b859dd71447991a5b1fac7c9c'
'd6fdcb922e5a7fbe15759d39ccc8ea4225821c44d98054ce0f23f9d1f00c9808'
'377cb60201a9bf6a095499273a1d96f43543a4f1dae62e591748eec5c652cf52')
# 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
-declare -rgA _system_libs=(
- #[ffmpeg]=ffmpeg # https://crbug.com/731766
+readonly -A _system_libs=(
+ #[ffmpeg]=ffmpeg # https://crbug.com/731766
[flac]=flac
- #[freetype]=freetype2 # https://crbug.com/pdfium/733
- #[harfbuzz-ng]=harfbuzz-icu # https://crbug.com/768938
- #[icu]=icu # https://crbug.com/772655
+ #[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
+ #[libpng]=libpng # https://crbug.com/752403#c10
+ #[libvpx]=libvpx # https://bugs.gentoo.org/611394
[libwebp]=libwebp
[libxml]=libxml2
[libxslt]=libxslt
@@ -66,7 +70,13 @@ declare -rgA _system_libs=(
[yasm]=
[zlib]=minizip
)
-depends+=(${_system_libs[@]})
+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
@@ -82,7 +92,7 @@ prepare() {
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 fetch Chrome build hash."
+ error "Unable to find Chrome build hash."
return 1
fi
echo "LASTCHANGE=$_chrome_build_hash-" >build/util/LASTCHANGE
@@ -96,6 +106,15 @@ prepare() {
# 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/798864
+ patch -Np1 -i ../chromium-disable-SharedArrayBuffer-by-default.patch
+
+ # https://crbug.com/skia/6663#c10
+ patch -Np4 -i ../chromium-skia-harmony.patch
+
# Fixes from Gentoo
patch -Np1 -i ../chromium-clang-r1.patch
patch -Np1 -i ../chromium-webrtc-r0.patch
@@ -125,12 +144,14 @@ prepare() {
# *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 ${!_system_libs[@]} ${_system_libs[libjpeg]+libjpeg_turbo}; do
+ 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/*" \
- \! -regex '.*\.\(gn\|gni\|isolate\|py\)' \
+ \! -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
@@ -170,6 +191,8 @@ build() {
'ffmpeg_branding="Chrome"'
'proprietary_codecs=true'
'link_pulseaudio=true'
+ 'use_system_freetype=true'
+ 'use_system_harfbuzz=true'
'use_gtk3=false'
'use_gconf=false'
'use_gnome_keyring=false'
diff --git a/chromium-disable-SharedArrayBuffer-by-default.patch b/chromium-disable-SharedArrayBuffer-by-default.patch
new file mode 100644
index 000000000000..302abf91bcbd
--- /dev/null
+++ b/chromium-disable-SharedArrayBuffer-by-default.patch
@@ -0,0 +1,35 @@
+From a354b4ecf2434f2f6460b33031aeaf646edf5e64 Mon Sep 17 00:00:00 2001
+From: Brad Nelson <bradnelson@chromium.org>
+Date: Thu, 4 Jan 2018 00:36:18 -0800
+Subject: [PATCH] Disable SharedArrayBuffer by default.
+
+BUG=chromium:798864
+R=jschuh@chromium.org,binji@chromium.org
+
+Change-Id: I5ebfae41a4b4c7e89faf071e6d009ea3d9ca30d4
+Reviewed-on: https://chromium-review.googlesource.com/849429
+Reviewed-by: Ben Smith <binji@chromium.org>
+Reviewed-by: Justin Schuh <jschuh@chromium.org>
+Reviewed-by: Darin Fisher <darin@chromium.org>
+Commit-Queue: Brad Nelson <bradnelson@chromium.org>
+Cr-Commit-Position: refs/heads/master@{#527460}
+---
+ content/public/common/content_features.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
+index 847a1af6db7b..9075bd853d0f 100644
+--- a/content/public/common/content_features.cc
++++ b/content/public/common/content_features.cc
+@@ -312,7 +312,7 @@ const base::Feature kServiceWorkerScriptFullCodeCache{
+
+ // http://tc39.github.io/ecmascript_sharedmem/shmem.html
+ const base::Feature kSharedArrayBuffer{"SharedArrayBuffer",
+- base::FEATURE_ENABLED_BY_DEFAULT};
++ base::FEATURE_DISABLED_BY_DEFAULT};
+
+ // An experiment to require process isolation for the sign-in origin,
+ // https://accounts.google.com. Launch bug: https://crbug.com/739418.
+--
+2.15.1
+
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;
+ }
+ }
+ }