diff options
author | WorMzy Tykashi | 2018-01-13 00:38:56 +0000 |
---|---|---|
committer | WorMzy Tykashi | 2018-01-13 00:38:56 +0000 |
commit | c273672171ecec3f4716914e8d92d4579fd4803c (patch) | |
tree | f6fde438cc2ebba8a9e1c11da7eb2e0137fe501a | |
parent | 6232809d0c905713a2d6012f1d6ee8e61ac63dc6 (diff) | |
download | aur-c273672171ecec3f4716914e8d92d4579fd4803c.tar.gz |
Updated to 63.0.3239.132
-rw-r--r-- | .SRCINFO | 24 | ||||
-rw-r--r-- | PKGBUILD | 61 | ||||
-rw-r--r-- | chromium-disable-SharedArrayBuffer-by-default.patch | 35 | ||||
-rw-r--r-- | chromium-omnibox-unescape-fragment.patch | 437 | ||||
-rw-r--r-- | chromium-skia-harmony.patch | 77 |
5 files changed, 606 insertions, 28 deletions
@@ -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 @@ -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; + } + } + } |