diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2018-07-12 12:14:52 +0200 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2018-07-30 05:20:27 +0000 |
commit | 2f448dd87466e2cf21a93eca35c167c983e3ac7a (patch) | |
tree | acb9c69db2192a4518a52bbb0971dfae9756155f /community/chromium | |
parent | 495bbd7fb1f07c23a1f2d47a071aa5519e08744c (diff) | |
download | aports-2f448dd87466e2cf21a93eca35c167c983e3ac7a.tar.bz2 aports-2f448dd87466e2cf21a93eca35c167c983e3ac7a.tar.xz |
community/chromium: upgrade to 66.0.3359.181
Diffstat (limited to 'community/chromium')
-rw-r--r-- | community/chromium/APKBUILD | 106 | ||||
-rw-r--r-- | community/chromium/add-missing-blink-tools.patch | 1071 | ||||
-rw-r--r-- | community/chromium/chromium-48.0.2564.116-libusb_interrupt_event_handler.patch | 15 | ||||
-rw-r--r-- | community/chromium/chromium-60.0.3112.78-gn-system.patch | 221 | ||||
-rw-r--r-- | community/chromium/chromium-60.0.3112.78-jpeg-nomangle.patch | 14 | ||||
-rw-r--r-- | community/chromium/chromium-60.0.3112.78-no-libpng-prefix.patch | 17 | ||||
-rw-r--r-- | community/chromium/chromium-60.0.3112.78-no-zlib-mangle.patch | 13 | ||||
-rw-r--r-- | community/chromium/chromium-clang-r2.patch | 21 | ||||
-rw-r--r-- | community/chromium/chromium-clang-r3.patch | 19 | ||||
-rw-r--r-- | community/chromium/chromium-gcc-r1.patch | 14 | ||||
-rw-r--r-- | community/chromium/chromium-skia-harmony.patch | 77 | ||||
-rw-r--r-- | community/chromium/gcc6.patch | 13 | ||||
-rw-r--r-- | community/chromium/gn_bootstrap.patch | 76 | ||||
-rw-r--r-- | community/chromium/no-execinfo.patch | 22 | ||||
-rw-r--r-- | community/chromium/secure_getenv.patch | 31 |
15 files changed, 1346 insertions, 384 deletions
diff --git a/community/chromium/APKBUILD b/community/chromium/APKBUILD index 5fbfa32c15..f7701c38ec 100644 --- a/community/chromium/APKBUILD +++ b/community/chromium/APKBUILD @@ -1,8 +1,8 @@ # Contributor: Carlo Landmeter <clandmeter@gmail.com> # Maintainer: Carlo Landmeter <clandmeter@gmail.com> pkgname=chromium -pkgver=64.0.3282.168 -pkgrel=2 +pkgver=66.0.3359.181 +pkgrel=0 pkgdesc="chromium web browser" url="http://www.chromium.org/" arch="x86_64" @@ -17,6 +17,8 @@ makedepends="$depends_dev bsd-compat-headers bzip2-dev cairo-dev + clang + clang-dev cups-dev dbus-glib-dev eudev-dev @@ -26,7 +28,7 @@ makedepends="$depends_dev freetype-dev gnutls-dev gperf - gtk+-dev + gtk+3.0-dev gzip harfbuzz-dev hunspell-dev @@ -37,6 +39,7 @@ makedepends="$depends_dev libbsd-dev libcap-dev libelf-dev + libevent-dev libexif-dev libgcrypt-dev libgnome-keyring-dev @@ -59,10 +62,12 @@ makedepends="$depends_dev ninja nodejs nss-dev + opus-dev paxmark pciutils-dev perl python2 + re2-dev snappy-dev speex-dev sqlite-dev @@ -84,7 +89,6 @@ source="https://commondatastorage.googleapis.com/chromium-browser-official/$pkgn chromium-widevine.patch default-pthread-stacksize.patch - gcc6.patch gn_bootstrap.patch last-commit-position.patch musl-fixes.patch @@ -98,11 +102,11 @@ source="https://commondatastorage.googleapis.com/chromium-browser-official/$pkgn unset-madv_free.patch swiftshader.patch secure_getenv.patch - chromium-48.0.2564.116-libusb_interrupt_event_handler.patch - chromium-60.0.3112.78-gn-system.patch - chromium-60.0.3112.78-jpeg-nomangle.patch - chromium-60.0.3112.78-no-libpng-prefix.patch - chromium-60.0.3112.78-no-zlib-mangle.patch + chromium-clang-r2.patch + chromium-clang-r3.patch + + chromium-gcc-r1.patch + chromium-skia-harmony.patch " builddir="$srcdir"/$pkgname-$pkgver @@ -140,22 +144,20 @@ prepare() { mkdir -p third_party/node/linux/node-linux-x64/bin ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/ -} -_gn_flags() { - echo $* -} - -build() { - cd "$builddir" # reusable system library settings local use_system=" + fontconfig flac libdrm + libevent libjpeg libpng libwebp + libxml libxslt + opus + re2 snappy yasm zlib @@ -165,27 +167,40 @@ build() { 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/pdfium/third_party/freetype/include/pstables.h' \ + \! -path './third_party/yasm/run_yasm.py' \ \! -regex '.*\.\(gn\|gni\|isolate\|py\)' \ -delete done +# freetype +# harfbuzz-ng # pdfium uses internal headers in freetype # we copy from freetype sources # https://bugs.chromium.org/p/pdfium/issues/detail?id=733 # should be fixed in freetype: # https://savannah.nongnu.org/bugs/index.php?51156 - mkdir -p "third_party/freetype/src/src/psnames/" - cp "$srcdir"/pstables-2.8.h third_party/freetype/src/src/psnames/pstables.h +# mkdir -p "third_party/freetype/src/src/psnames/" +# cp "$srcdir"/pstables-2.8.h third_party/freetype/src/src/psnames/pstables.h # Work around bug in v8 in which GCC 6 optimizes away null pointer checks # https://bugs.chromium.org/p/v8/issues/detail?id=3782 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69234 - CFLAGS="$CFLAGS -fno-delete-null-pointer-checks" +# CFLAGS="$CFLAGS -fno-delete-null-pointer-checks" msg "Replacing gyp files" python build/linux/unbundle/replace_gn_files.py --system-libraries \ ${use_system} third_party/libaddressinput/chromium/tools/update-strings.py +} + +_gn_flags() { + echo $* +} + +build() { + cd "$builddir" ############################################################## # Please dont use these keys outside of Alpine Linux project # @@ -194,50 +209,67 @@ build() { ############################################################## eval "$(base64 -d < $srcdir/google-api.keys)" + export CC=clang + export CXX=clang++ + msg "Bootstrapping GN" - local _c=$(_gn_flags is_clang=false \ + local _c=$(_gn_flags is_clang=true \ use_sysroot=false \ treat_warnings_as_errors=false \ fatal_linker_warnings=false \ binutils_path=\"/usr/bin\" \ - use_gconf=false \ - use_gold=true \ + use_gold=false \ use_allocator=\"none\" \ use_allocator_shim=false \ ) - python tools/gn/bootstrap/bootstrap.py --gn-gen-args "$_c" + AR="ar" CC="$CC" CXX="$CXX" LD="$CXX" \ + python tools/gn/bootstrap/bootstrap.py -s -v --no-clean --gn-gen-args "$_c" + msg "Configuring build" _c=$(_gn_flags \ + clang_use_chrome_plugins=false \ + custom_toolchain=\"//build/toolchain/linux/unbundle:default\" \ + enable_hangout_services_extension=true \ enable_hotwording=false \ enable_nacl=false \ enable_nacl_nonsfi=false \ enable_precompiled_headers=false \ + enable_widevine=true \ + fatal_linker_warnings=false \ ffmpeg_branding=\"Chrome\" \ fieldtrial_testing_like_official_build=true \ + gold_path=\"/usr/bin/ld.gold\" \ google_api_key=\"$_google_api_key\" \ google_default_client_id=\"$_google_default_client_id\" \ google_default_client_secret=\"$_google_default_client_secret\" \ - is_clang=false \ + host_toolchain=\"//build/toolchain/linux/unbundle:default\" \ + icu_use_data_file=true \ + is_clang=true \ is_debug=$_is_debug \ linux_use_bundled_binutils=false \ proprietary_codecs=true \ + remove_webcore_debug_symbols=true \ symbol_level=0 \ treat_warnings_as_errors=false \ use_allocator=\"none\" \ use_allocator_shim=false \ - use_gconf=false \ + use_cups=true \ + use_custom_libcxx=false \ use_gnome_keyring=false \ + use_gold=false \ + use_lld=false \ use_pulseaudio=false \ use_sysroot=false \ + use_system_harfbuzz=true \ ) - out/Release/gn gen out/$_buildtype --args="$_c" + AR="ar" CC="$CC" CXX="$CXX" LD="$CXX" NM=/usr/bin/nm \ + out/Release/gn gen out/$_buildtype --args="$_c" msg "Ninja turtles GO!" # workaround parallel build - ninja -C out/Release gen/ui/accessibility/ax_enums.h \ - gen/ui/accessibility/ax_enums.cc + ninja -C out/Release gen/ui/accessibility/ax_enums.p # build mksnapshot and paxmark it ninja -C out/$_buildtype mksnapshot @@ -314,7 +346,7 @@ chromedriver() { mv "$pkgdir"/usr/bin/chromedriver "$subpkgdir"/usr/bin } -sha512sums="8bb31d6df85651315f8b70bd27f5b855b0936dd06b05a22451d24d4b440edc5d4e8d8f20d0fbc5fc52484f14f0539d2b2e5e0623aa22cca40c1f3b9e5d9d06d7 chromium-64.0.3282.168.tar.xz +sha512sums="3549cae27ce33a19bab857c91da1ed96c1ae36123b71bdf41a8bbacdc9554d15b4902e835dc4a8ef8016e69344b809aab4e1e3b1b26bd54d5ca651048bcb9886 chromium-66.0.3359.181.tar.xz a3bb959c65944ae2fb765725cedcffd743a58bc0c2cd1f1999d15fe79801d00f3474b08b4ed7b48859ed921eb57093d0ad09d90f201d729ed9b8a419a591ed29 pstables-2.8.h b9a810416dd7a8ffc3a5ced85ad9acebda1665bd08a57eec7b189698cc5f74d2c3fd69044e20fcb83297a43214b2772a1312b2c6122ea0eb716abacf39524d60 chromium-launcher.sh f6d962b9e4c22dd42183df3db5d3202dab33eccecafb1bf63ca678147289581262db1e5e64cbe8f9c212beefb0a6717bb8d311e497f56b55fe95b8bab2db493f chromium.conf @@ -322,22 +354,20 @@ e182c998a43d22d1c76a86c561619afd1fca8c2be668265ad5e2f81a3806f7a154272cc027a2f8b3 2d8237a940ea691bd10b08315429677a587f7ef9692a0cca53bfd066eae82998a6c71f402a8669e9de39f94d7f3280745d1628ea6eac5d76ca7116844d4e0dac google-api.keys 55921cc33d623e0751e94d4fef2ddd69afb57381da6115995b1f318e2398978b9173e80f6ffbc6e6c0c0c55a04e934e0e34a46c32e03947cc31f0f5a226e7725 chromium-widevine.patch 05fb6d9434565a7a73f5c18d470ae600bf4afbe15d0e4a7c2770bf2596a0bd2788cdfeb37e0b566fc3d26ff2d0791b70488b2c184e3286cff5a1fa25e17582cd default-pthread-stacksize.patch -d86fa87a47f9dc1f7400358c70f2d9efcb85fa5bf0badf65456ed6a7003e59eb0809e0406fb114f256d51acb002c2a8da8a0c1c93dfdc21e198761dc516a0ecb gcc6.patch -f420f6b4827da4dbd416b2de094452917313cb79e01d33a07029589066a0b79e06446882f1ade5ac418f180ae581937d620d1d48698df77b5c5ddb4a3d6cf680 gn_bootstrap.patch +46e141a932860c6db1f655c8b188b8c41bce0dbb1654c066379fa53063ce6cc3bf8be156bd8e73e103c7d9e956e436732e2f7db0653f9847eb26cbfebc441a10 gn_bootstrap.patch 8fbfd67a0b6bbdf08364e810bd85b4a80dda9af73fefe3aba8010d9b33022d458a785c628515bbda9c743b8a0293d57cfe18fcc5aa2313c845c6fb948c2335f9 last-commit-position.patch ca73f4912c4e41a235821fba5f3a7a5266739ce86dc1b27bc07d6bc2f97dc97b15b2fa47dc95c7a82a7e0b8fa1e6a17071f6dc06ddf47f65a56f216c0aaaf054 musl-fixes.patch 90efbc89151c77f32434364dcbaabaf9d9a207f4a77f147cd51b3fe100832fbfb3a9fb665303a79a3d788e400f4f41890de202ccbb7bd1fc6252e33c6e74e429 musl-fixes-breakpad.patch 507a8db2317f1f6ec18dec6cb5894b716e9b2542b58887bab9319bc6d4c66fe4a4d09b200ca8e3f11b32e380b282442a27e7a1b358d3c25eef0fa7655e9dc134 musl-hacks.patch 95ead57f7338649351948d100e32e5ec1eeadb02bffa136ff15c6c515eceb8013c444be092d777c1b62b945bfb83b97778ba4d3a0ccc2d7c2c9a0a8cd8ee0f01 musl-libc++.patch 9b75d6ac720d1b8ddc597f0f472bc400ff866a733f12b3a4cd3e7e18e724549c5f8e056c7e0d0462ef083bff5e677f8cef6b89b22f4740a40ad6398978269373 musl-sandbox.patch -fe2cee01d07e5dc638dad0c5453397eb03e30867c1e54591d7f612034366c96ccaa35216d2bcedbe796863eeb5b90dcf71c75e5391c266df4cb27b44e59bb040 no-execinfo.patch +31f847b5c78ac26a8f89fa7ff55911023929753ba2e6a2c4a723fdcee17e38388b0b56e395a6cb958da2efb9f17d4efa8fdce3d9dd31471271a1435b37cfa68b no-execinfo.patch 7a3a4ba4479a22a13126a78ad3d9991188ef030389026c4293d45b4440711751d68e43d28687653d5670d7f00ed5f1b820a8df50a3a08ce06e454f0cad9dbd3c no-mallinfo.patch ac0c9d7780ac897ea8ad5d909616d3aa29eed720353c7a660c850ee1404c80f51f5db274b3c5d3c730561a7c3cd138624e1901ece329926b5dc5ca15195d9abf resolver.patch 27dd7916be3324294a0a913c43c856e9c00be767a2aec4f3da2455fb84e74ebb0017d1aa586b40dd9d989ada6b60fc531522f503d57e04324726a2171bf3a85e unset-madv_free.patch 6b0812725a0fc562527f3556dc4979fec72d1ba92f26a5e78ff2016c39bb2c155a0ff95fc22101f9c097d14b84182d6615276f4247f60ae7833ab45da8366e6d swiftshader.patch -67eea8e13c85aca7db5c85f5b0d33e5798e8063ab7f5b2f0a5c7f6fee8266e58bee4e72f4542472ef6634634ca0f4359a2d1113fa310a991373404320c784730 secure_getenv.patch -2e9496aa9ccd6fed2d0df4b659d55e87abb67b1be4e3cc7cb0483ccb458b9071bed9939132a2345bf15192b4dcfe5da9474d7f653ae2f4b4d46d2f3c032b3a3f chromium-48.0.2564.116-libusb_interrupt_event_handler.patch -197ca3fd315e15c3e0b796615afbd01f65e2040027a2cde6304dea500cfaf18372ce2be88f4030bcd26651b913dd4af741a4df8803cdf9ff062a8eef9ab6c5db chromium-60.0.3112.78-gn-system.patch -e9fcc976d2ac1b2e73d310790e76dae15111e78cd8e3efa5febd702fd9492d7d68b1b57d95bca88d5e16c0627594a00ebdeaf570df52be6e9b23a4212906c141 chromium-60.0.3112.78-jpeg-nomangle.patch -9b08e895826fdd14fd6334662b8d07807beabab7368f3fcff3fcebe76baba4c7714c55042b379da6dab1ea0b1c4e5d657bf972b644089f00b418b7c2f5b6ef1b chromium-60.0.3112.78-no-libpng-prefix.patch -87a0c6ff4906f0c4b6f6b471ec9bf0b2e2d28431122e99a68f957474cf27ec6b073ebca14660c8858817219521d74a184b8444cf2885db21d28fa4599fcaa66f chromium-60.0.3112.78-no-zlib-mangle.patch" +42c4f9684463f0958c27b0cfa3ad160cb9053c2e5e8940fefecdd69adcb844674e64f03c2003d1abdcbdefa5f415a64f37c85042218b2f1d379690322d6e198c secure_getenv.patch +b74f94675aad849791f42261325d36bdc796c982d3871c43b7c4f665b1f00762c7e67a6ee7e9d02fbc51b2e23ee171bf0bca36559bdf999e41ffd4fc9f54ceca chromium-clang-r2.patch +a742e09199bfa2c391bb3684788961d87ba3b51255aff0346de0fa42874160ce83bd0a6569d76addf2155a47c161bde1176cf6ae8438818b9b962412ec82f16c chromium-clang-r3.patch +6e2bcbed44786c6c0d3beda935269f30fdcdf07c400defa6bf73f8359a60b1d59cc2f80dbc106be651a535635995641321d9e524b18919d3975bd6008a641d59 chromium-gcc-r1.patch +cbd99d51178fa5c2c3dee1eb4990240ca2ff829cee9151384e36bc3c634698c0ecaf9b51c99e901f38d0a37eef7187fe5ad39b9b7f528f7a9066a855a0c6e49f chromium-skia-harmony.patch" diff --git a/community/chromium/add-missing-blink-tools.patch b/community/chromium/add-missing-blink-tools.patch new file mode 100644 index 0000000000..4eddd8c744 --- /dev/null +++ b/community/chromium/add-missing-blink-tools.patch @@ -0,0 +1,1071 @@ +Description: add back contents of third-party/blink/tools that went missing in the source tarball for 66.0.3359.106 +Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=832283 + +--- /dev/null ++++ b/third_party/blink/tools/OWNERS +@@ -0,0 +1 @@ ++file://third_party/WebKit/Tools/OWNERS +--- /dev/null ++++ b/third_party/blink/tools/blinkpy/__init__.py +@@ -0,0 +1,3 @@ ++# Copyright 2017 The Chromium Authors. All rights reserved. ++# Use of this source code is governed by a BSD-style license that can be ++# found in the LICENSE file. +--- /dev/null ++++ b/third_party/blink/tools/blinkpy/common/__init__.py +@@ -0,0 +1,3 @@ ++# Copyright 2017 The Chromium Authors. All rights reserved. ++# Use of this source code is governed by a BSD-style license that can be ++# found in the LICENSE file. +--- /dev/null ++++ b/third_party/blink/tools/blinkpy/common/name_style_converter.py +@@ -0,0 +1,128 @@ ++# Copyright 2017 The Chromium Authors. All rights reserved. ++# Use of this source code is governed by a BSD-style license that can be ++# found in the LICENSE file. ++ ++# pylint: disable=import-error,print-statement,relative-import ++ ++import re ++ ++SPECIAL_TOKENS = [ ++ # This list should be sorted by length. ++ 'CString', ++ 'Float32', ++ 'Float64', ++ 'Base64', ++ 'IFrame', ++ 'Latin1', ++ 'PlugIn', ++ 'SQLite', ++ 'Uint16', ++ 'Uint32', ++ 'WebGL2', ++ 'ASCII', ++ 'CType', ++ 'DList', ++ 'Int16', ++ 'Int32', ++ 'MPath', ++ 'OList', ++ 'TSpan', ++ 'UList', ++ 'UTF16', ++ 'Uint8', ++ 'WebGL', ++ 'XPath', ++ 'ETC1', ++ 'HTML', ++ 'Int8', ++ 'S3TC', ++ 'SPv2', ++ 'UTF8', ++ 'API', ++ 'CSS', ++ 'DOM', ++ 'EXT', ++ 'RTC', ++ 'SVG', ++ '2D', ++ 'AX', ++ 'V0', ++ 'V8', ++] ++ ++MATCHING_EXPRESSION = '((?:[A-Z][a-z]+)|[0-9]D?$)' ++ ++ ++class SmartTokenizer(object): ++ """Detects special cases that are not easily discernible without additional ++ knowledge, such as recognizing that in SVGSVGElement, the first two SVGs ++ are separate tokens, but WebGL is one token.""" ++ ++ def __init__(self, name): ++ self.remaining = name ++ ++ def tokenize(self): ++ name = self.remaining ++ tokens = [] ++ while len(name) > 0: ++ matched_token = None ++ for token in SPECIAL_TOKENS: ++ if name.startswith(token): ++ matched_token = token ++ break ++ if not matched_token: ++ match = re.search(MATCHING_EXPRESSION, name) ++ if not match: ++ matched_token = name ++ elif match.start(0) != 0: ++ matched_token = name[:match.start(0)] ++ else: ++ matched_token = match.group(0) ++ tokens.append(name[:len(matched_token)]) ++ name = name[len(matched_token):] ++ return tokens ++ ++ ++class NameStyleConverter(object): ++ """Converts names from camelCase to various other styles. ++ """ ++ ++ def __init__(self, name): ++ self.tokens = self.tokenize(name) ++ ++ def tokenize(self, name): ++ tokenizer = SmartTokenizer(name) ++ return tokenizer.tokenize() ++ ++ def to_snake_case(self): ++ """Snake case is the file and variable name style per Google C++ Style ++ Guide: ++ https://google.github.io/styleguide/cppguide.html#Variable_Names ++ ++ Also known as the hacker case. ++ https://en.wikipedia.org/wiki/Snake_case ++ """ ++ return '_'.join([token.lower() for token in self.tokens]) ++ ++ def to_upper_camel_case(self): ++ """Upper-camel case is the class and function name style per ++ Google C++ Style Guide: ++ https://google.github.io/styleguide/cppguide.html#Function_Names ++ ++ Also known as the PascalCase. ++ https://en.wikipedia.org/wiki/Camel_case. ++ """ ++ return ''.join([token[0].upper() + token[1:] for token in self.tokens]) ++ ++ def to_macro_case(self): ++ """Macro case is the macro name style per Google C++ Style Guide: ++ https://google.github.io/styleguide/cppguide.html#Macro_Names ++ """ ++ return '_'.join([token.upper() for token in self.tokens]) ++ ++ def to_all_cases(self): ++ return { ++ 'snake_case': self.to_snake_case(), ++ 'upper_camel_case': self.to_upper_camel_case(), ++ 'macro_case': self.to_macro_case(), ++ } +--- /dev/null ++++ b/third_party/blink/tools/blinkpy/common/name_style_converter_test.py +@@ -0,0 +1,178 @@ ++# Copyright 2017 The Chromium Authors. All rights reserved. ++# Use of this source code is governed by a BSD-style license that can be ++# found in the LICENSE file. ++ ++# pylint: disable=import-error,print-statement,relative-import,protected-access ++ ++"""Unit tests for name_style_converter.py.""" ++ ++import unittest ++ ++from name_style_converter import NameStyleConverter ++from name_style_converter import SmartTokenizer ++ ++ ++class SmartTokenizerTest(unittest.TestCase): ++ def test_simple_cases(self): ++ tokenizer = SmartTokenizer('foo') ++ self.assertEqual(tokenizer.tokenize(), ['foo']) ++ ++ tokenizer = SmartTokenizer('fooBar') ++ self.assertEqual(tokenizer.tokenize(), ['foo', 'Bar']) ++ ++ tokenizer = SmartTokenizer('fooBarBaz') ++ self.assertEqual(tokenizer.tokenize(), ['foo', 'Bar', 'Baz']) ++ ++ tokenizer = SmartTokenizer('Baz') ++ self.assertEqual(tokenizer.tokenize(), ['Baz']) ++ ++ tokenizer = SmartTokenizer('') ++ self.assertEqual(tokenizer.tokenize(), []) ++ ++ tokenizer = SmartTokenizer('FOO') ++ self.assertEqual(tokenizer.tokenize(), ['FOO']) ++ ++ tokenizer = SmartTokenizer('foo2') ++ self.assertEqual(tokenizer.tokenize(), ['foo', '2']) ++ ++ def test_tricky_cases(self): ++ tokenizer = SmartTokenizer('XMLHttpRequest') ++ self.assertEqual(tokenizer.tokenize(), ['XML', 'Http', 'Request']) ++ ++ tokenizer = SmartTokenizer('HTMLElement') ++ self.assertEqual(tokenizer.tokenize(), ['HTML', 'Element']) ++ ++ tokenizer = SmartTokenizer('WebGLRenderingContext') ++ self.assertEqual(tokenizer.tokenize(), ++ ['WebGL', 'Rendering', 'Context']) ++ ++ tokenizer = SmartTokenizer('CanvasRenderingContext2D') ++ self.assertEqual(tokenizer.tokenize(), ++ ['Canvas', 'Rendering', 'Context', '2D']) ++ tokenizer = SmartTokenizer('CanvasRenderingContext2DAPITest') ++ self.assertEqual(tokenizer.tokenize(), ++ ['Canvas', 'Rendering', 'Context', '2D', 'API', 'Test']) ++ ++ tokenizer = SmartTokenizer('SVGSVGElement') ++ self.assertEqual(tokenizer.tokenize(), ['SVG', 'SVG', 'Element']) ++ ++ tokenizer = SmartTokenizer('CanvasRenderingContext2D') ++ self.assertEqual(tokenizer.tokenize(), ['Canvas', 'Rendering', 'Context', '2D']) ++ ++ tokenizer = SmartTokenizer('CSSURLImageValue') ++ self.assertEqual(tokenizer.tokenize(), ['CSS', 'URL', 'Image', 'Value']) ++ tokenizer = SmartTokenizer('CSSPropertyAPID') ++ self.assertEqual(tokenizer.tokenize(), ['CSS', 'Property', 'API', 'D']) ++ tokenizer = SmartTokenizer('AXARIAGridCell') ++ self.assertEqual(tokenizer.tokenize(), ['AX', 'ARIA', 'Grid', 'Cell']) ++ ++ tokenizer = SmartTokenizer('CDATASection') ++ self.assertEqual(tokenizer.tokenize(), ['CDATA', 'Section']) ++ ++ tokenizer = SmartTokenizer('ASCIICType') ++ self.assertEqual(tokenizer.tokenize(), ['ASCII', 'CType']) ++ tokenizer = SmartTokenizer('CString') ++ self.assertEqual(tokenizer.tokenize(), ['CString']) ++ ++ tokenizer = SmartTokenizer('HTMLDListElement') ++ self.assertEqual(tokenizer.tokenize(), ['HTML', 'DList', 'Element']) ++ tokenizer = SmartTokenizer('HTMLOListElement') ++ self.assertEqual(tokenizer.tokenize(), ['HTML', 'OList', 'Element']) ++ tokenizer = SmartTokenizer('HTMLIFrameElement') ++ self.assertEqual(tokenizer.tokenize(), ['HTML', 'IFrame', 'Element']) ++ tokenizer = SmartTokenizer('HTMLPlugInElement') ++ self.assertEqual(tokenizer.tokenize(), ['HTML', 'PlugIn', 'Element']) ++ ++ # No special handling for OptGroup, FieldSet, and TextArea. ++ tokenizer = SmartTokenizer('HTMLOptGroupElement') ++ self.assertEqual(tokenizer.tokenize(), ['HTML', 'Opt', 'Group', 'Element']) ++ tokenizer = SmartTokenizer('HTMLFieldSetElement') ++ self.assertEqual(tokenizer.tokenize(), ['HTML', 'Field', 'Set', 'Element']) ++ tokenizer = SmartTokenizer('HTMLTextAreaElement') ++ self.assertEqual(tokenizer.tokenize(), ['HTML', 'Text', 'Area', 'Element']) ++ ++ tokenizer = SmartTokenizer('Path2D') ++ self.assertEqual(tokenizer.tokenize(), ['Path', '2D']) ++ tokenizer = SmartTokenizer('Point2D') ++ self.assertEqual(tokenizer.tokenize(), ['Point', '2D']) ++ tokenizer = SmartTokenizer('CanvasRenderingContext2DState') ++ self.assertEqual(tokenizer.tokenize(), ['Canvas', 'Rendering', 'Context', '2D', 'State']) ++ ++ tokenizer = SmartTokenizer('RTCDTMFSender') ++ self.assertEqual(tokenizer.tokenize(), ['RTC', 'DTMF', 'Sender']) ++ ++ tokenizer = SmartTokenizer('WebGLCompressedTextureS3TCsRGB') ++ self.assertEqual(tokenizer.tokenize(), ['WebGL', 'Compressed', 'Texture', 'S3TC', 'sRGB']) ++ tokenizer = SmartTokenizer('WebGL2CompressedTextureETC1') ++ self.assertEqual(tokenizer.tokenize(), ['WebGL2', 'Compressed', 'Texture', 'ETC1']) ++ tokenizer = SmartTokenizer('EXTsRGB') ++ self.assertEqual(tokenizer.tokenize(), ['EXT', 'sRGB']) ++ ++ tokenizer = SmartTokenizer('SVGFEBlendElement') ++ self.assertEqual(tokenizer.tokenize(), ['SVG', 'FE', 'Blend', 'Element']) ++ tokenizer = SmartTokenizer('SVGMPathElement') ++ self.assertEqual(tokenizer.tokenize(), ['SVG', 'MPath', 'Element']) ++ tokenizer = SmartTokenizer('SVGTSpanElement') ++ self.assertEqual(tokenizer.tokenize(), ['SVG', 'TSpan', 'Element']) ++ tokenizer = SmartTokenizer('SVGURIReference') ++ self.assertEqual(tokenizer.tokenize(), ['SVG', 'URI', 'Reference']) ++ ++ tokenizer = SmartTokenizer('UTF16TextIterator') ++ self.assertEqual(tokenizer.tokenize(), ['UTF16', 'Text', 'Iterator']) ++ tokenizer = SmartTokenizer('UTF8Decoder') ++ self.assertEqual(tokenizer.tokenize(), ['UTF8', 'Decoder']) ++ tokenizer = SmartTokenizer('Uint8Array') ++ self.assertEqual(tokenizer.tokenize(), ['Uint8', 'Array']) ++ tokenizer = SmartTokenizer('DOMWindowBase64') ++ self.assertEqual(tokenizer.tokenize(), ['DOM', 'Window', 'Base64']) ++ tokenizer = SmartTokenizer('TextCodecLatin1') ++ self.assertEqual(tokenizer.tokenize(), ['Text', 'Codec', 'Latin1']) ++ tokenizer = SmartTokenizer('V8BindingForCore') ++ self.assertEqual(tokenizer.tokenize(), ['V8', 'Binding', 'For', 'Core']) ++ tokenizer = SmartTokenizer('V8DOMRect') ++ self.assertEqual(tokenizer.tokenize(), ['V8', 'DOM', 'Rect']) ++ ++ tokenizer = SmartTokenizer('V0InsertionPoint') ++ self.assertEqual(tokenizer.tokenize(), ['V0', 'Insertion', 'Point']) ++ tokenizer = SmartTokenizer('ShadowDOMV0Test') ++ self.assertEqual(tokenizer.tokenize(), ['Shadow', 'DOM', 'V0', 'Test']) ++ tokenizer = SmartTokenizer('ElementShadowV0') ++ self.assertEqual(tokenizer.tokenize(), ['Element', 'Shadow', 'V0']) ++ tokenizer = SmartTokenizer('StubChromeClientForSPv2') ++ self.assertEqual(tokenizer.tokenize(), ['Stub', 'Chrome', 'Client', 'For', 'SPv2']) ++ ++ tokenizer = SmartTokenizer('SQLiteAuthorizer') ++ self.assertEqual(tokenizer.tokenize(), ['SQLite', 'Authorizer']) ++ tokenizer = SmartTokenizer('XPathEvaluator') ++ self.assertEqual(tokenizer.tokenize(), ['XPath', 'Evaluator']) ++ ++ tokenizer = SmartTokenizer('IsXHTMLDocument') ++ self.assertEqual(tokenizer.tokenize(), ['Is', 'XHTML', 'Document']) ++ ++ tokenizer = SmartTokenizer('Animation.idl') ++ self.assertEqual(tokenizer.tokenize(), ['Animation', '.idl']) ++ ++ ++class NameStyleConverterTest(unittest.TestCase): ++ def test_snake_case(self): ++ converter = NameStyleConverter('HTMLElement') ++ self.assertEqual(converter.to_snake_case(), 'html_element') ++ ++ def test_upper_camel_case(self): ++ converter = NameStyleConverter('someSuperThing') ++ self.assertEqual(converter.to_upper_camel_case(), 'SomeSuperThing') ++ ++ converter = NameStyleConverter('SVGElement') ++ self.assertEqual(converter.to_upper_camel_case(), 'SVGElement') ++ ++ def test_macro_case(self): ++ converter = NameStyleConverter('WebGLBaz2D') ++ self.assertEqual(converter.to_macro_case(), 'WEBGL_BAZ_2D') ++ ++ def test_all_cases(self): ++ converter = NameStyleConverter('SVGScriptElement') ++ self.assertEqual(converter.to_all_cases(), { ++ 'snake_case': 'svg_script_element', ++ 'upper_camel_case': 'SVGScriptElement', ++ 'macro_case': 'SVG_SCRIPT_ELEMENT', ++ }) +--- /dev/null ++++ b/third_party/blink/tools/compile_devtools_frontend.py +@@ -0,0 +1,20 @@ ++#!/usr/bin/env vpython ++# Copyright 2017 The Chromium Authors. All rights reserved. ++# Use of this source code is governed by a BSD-style license that can be ++# found in the LICENSE file. ++ ++"""Compile DevTools frontend code with Closure compiler. ++ ++This script wraps devtools/scripts/compile_frontend.py. ++DevTools bot kicks this script. ++""" ++ ++import os ++import sys ++ ++sys.path.append(os.path.join( ++ os.path.dirname(__file__), '..', '..', 'WebKit', 'Source', 'devtools', 'scripts')) ++import compile_frontend ++ ++if __name__ == '__main__': ++ sys.exit(compile_frontend.main()) +--- /dev/null ++++ b/third_party/blink/tools/move_blink_source.py +@@ -0,0 +1,615 @@ ++#!/usr/bin/env vpython ++# Copyright 2017 The Chromium Authors. All rights reserved. ++# Use of this source code is governed by a BSD-style license that can be ++# found in the LICENSE file. ++ ++"""Tool to move Blink source from third_party/WebKit to third_party/blink. ++ ++See https://docs.google.com/document/d/1l3aPv1Wx__SpRkdOhvJz8ciEGigNT3wFKv78XiuW0Tw/edit?usp=sharing#heading=h.o225wrxp242h ++for the details. ++""" ++ ++import argparse ++import logging ++import os ++import re ++import sys ++from functools import partial ++ ++# Without abspath(), PathFinder can't find chromium_base correctly. ++sys.path.append(os.path.abspath( ++ os.path.join(os.path.dirname(__file__), '..', '..', '..', ++ 'third_party', 'WebKit', 'Tools', 'Scripts'))) ++from blinkpy.common.name_style_converter import NameStyleConverter ++from plan_blink_move import plan_blink_move ++from plan_blink_move import relative_dest ++from webkitpy.common.checkout.git import Git ++from webkitpy.common.path_finder import get_chromium_src_dir ++from webkitpy.common.path_finder import get_scripts_dir ++from webkitpy.common.system.executive import Executive ++from webkitpy.common.system.executive import ScriptError ++from webkitpy.common.system.filesystem import FileSystem ++ ++_log = logging.getLogger('move_blink_source') ++ ++ ++class FileType(object): ++ NONE = 0 ++ BUILD = 1 ++ BLINK_BUILD = 2 ++ OWNERS = 3 ++ DEPS = 4 ++ MOJOM = 5 ++ TYPEMAP = 6 ++ BLINK_BUILD_PY = 7 ++ LAYOUT_TESTS_WITH_MOJOM = 8 ++ ++ @staticmethod ++ def detect(path): ++ slash_dir, basename = os.path.split(path) ++ slash_dir = slash_dir.replace(os.path.sep, '/') ++ if basename == 'DEPS': ++ return FileType.DEPS ++ if basename == 'OWNERS': ++ return FileType.OWNERS ++ if basename.endswith('.mojom'): ++ return FileType.MOJOM ++ if basename.endswith('.typemap'): ++ return FileType.TYPEMAP ++ if basename.endswith('.py') and 'third_party/WebKit/Source/build' in slash_dir: ++ return FileType.BLINK_BUILD_PY ++ if basename.endswith(('.gn', '.gni')): ++ if 'third_party/WebKit' in path or 'third_party/blink' in slash_dir: ++ return FileType.BLINK_BUILD ++ if 'third_party' in slash_dir: ++ return FileType.NONE ++ return FileType.BUILD ++ if basename.endswith('.html') and re.search( ++ r'third_party/WebKit/LayoutTests/(geolocation-api|installedapp|' + ++ r'media/mediasession|payments|presentation|webshare)', slash_dir): ++ return FileType.LAYOUT_TESTS_WITH_MOJOM ++ return FileType.NONE ++ ++ ++class MoveBlinkSource(object): ++ ++ def __init__(self, fs, options, repo_root): ++ self._fs = fs ++ self._options = options ++ _log.debug(options) ++ self._repo_root = repo_root ++ ++ # The following fields are initialized in _create_basename_maps. ++ self._basename_map = None ++ self._basename_re = None ++ self._idl_generated_impl_headers = None ++ # _checked_in_header_re is used to distinguish checked-in header files ++ # and generated header files. ++ self._checked_in_header_re = None ++ ++ self._updated_files = [] ++ ++ def update(self, apply_only=None): ++ """Updates contents of files affected by Blink source move. ++ ++ Args: ++ apply_only: If it's None, updates all affected files. Otherwise, ++ it should be a set of file paths and this function updates ++ only the files in |apply_only|. ++ """ ++ _log.info('Planning renaming ...') ++ file_pairs = plan_blink_move(self._fs, []) ++ _log.info('Will move %d files', len(file_pairs)) ++ ++ self._create_basename_maps(file_pairs) ++ dirs = self._update_file_content(apply_only) ++ ++ # Updates #includes in files in directories with updated DEPS + ++ # third_party/WebKit/{Source,common,public}. ++ self._append_unless_upper_dir_exists(dirs, self._fs.join(self._repo_root, 'third_party', 'WebKit', 'Source')) ++ self._append_unless_upper_dir_exists(dirs, self._fs.join(self._repo_root, 'third_party', 'WebKit', 'common')) ++ self._append_unless_upper_dir_exists(dirs, self._fs.join(self._repo_root, 'third_party', 'WebKit', 'public')) ++ self._append_unless_upper_dir_exists(dirs, self._fs.join(self._repo_root, 'mojo', 'public', 'tools', ++ 'bindings', 'generators', 'cpp_templates')) ++ self._update_cpp_includes_in_directories(dirs, apply_only) ++ ++ # Content update for individual files. ++ # The following is a list of tuples. ++ # Tuple: (<file path relative to repo root>, [replacement commands]) ++ # Command: a callable object, or ++ # a tuple of (<original string>, <new string>). ++ file_replacement_list = [ ++ ('DEPS', ++ [('src/third_party/WebKit/Source/devtools', ++ 'src/third_party/blink/renderer/devtools')]), ++ ('WATCHLISTS', ++ [('third_party/WebKit/Source', 'third_party/blink/renderer'), ++ ('third_party/WebKit/public', 'third_party/blink/renderer/public')]), ++ ('build/check_gn_headers_whitelist.txt', ++ [('third_party/WebKit/Source', 'third_party/blink/renderer'), ++ ('third_party/WebKit/public', 'third_party/blink/renderer/public'), ++ self._update_basename]), ++ ('testing/buildbot/gn_isolate_map.pyl', ++ [('third_party/WebKit/Source', 'third_party/blink/renderer')]), ++ ('third_party/WebKit/Source/BUILD.gn', ++ [('$root_gen_dir/third_party/WebKit', ++ '$root_gen_dir/third_party/blink/renderer')]), ++ ('third_party/WebKit/Source/config.gni', ++ [('snake_case_source_files = false', ++ 'snake_case_source_files = true')]), ++ ('third_party/WebKit/Source/core/css/CSSProperties.json5', ++ [self._update_basename]), ++ ('third_party/WebKit/Source/core/css/ComputedStyleExtraFields.json5', ++ [self._update_basename]), ++ ('third_party/WebKit/Source/core/css/ComputedStyleFieldAliases.json5', ++ [self._update_basename]), ++ ('third_party/WebKit/Source/core/html/parser/create-html-entity-table', ++ [self._update_basename]), ++ ('third_party/WebKit/Source/core/inspector/inspector_protocol_config.json', ++ [self._update_basename]), ++ ('third_party/WebKit/Source/core/probe/CoreProbes.json5', ++ [self._update_basename]), ++ ('third_party/WebKit/Source/core/testing/InternalSettings.h', ++ [('InternalSettingsGenerated.h', 'internal_settings_generated.h')]), ++ ('third_party/WebKit/Source/core/testing/Internals.cpp', ++ [('InternalRuntimeFlags.h', 'internal_runtime_flags.h')]), ++ ('third_party/WebKit/Source/platform/probe/PlatformProbes.json5', ++ [self._update_basename]), ++ ('third_party/WebKit/public/BUILD.gn', ++ [('$root_gen_dir/third_party/WebKit', ++ '$root_gen_dir/third_party/blink/renderer')]), ++ ('third_party/WebKit/public/blink_resources.grd', ++ [('../Source/', '../')]), ++ ('tools/android/eclipse/.classpath', ++ [('third_party/WebKit/public', 'third_party/blink/renderer/public')]), ++ ('tools/android/loading/cloud/backend/deploy.sh', ++ [('third_party/WebKit/Source', 'third_party/blink/renderer')]), ++ ('tools/android/loading/emulation_unittest.py', ++ [('third_party/WebKit/Source', 'third_party/blink/renderer')]), ++ ('tools/android/loading/options.py', ++ [('third_party/WebKit/Source', 'third_party/blink/renderer')]), ++ ('tools/android/loading/request_track.py', ++ [('third_party/WebKit/Source', 'third_party/blink/renderer')]), ++ ('tools/gritsettings/resource_ids', ++ [('third_party/WebKit/public', 'third_party/blink/renderer/public'), ++ ('third_party/WebKit/Source', 'third_party/blink/renderer')]), ++ ('tools/metrics/actions/extract_actions.py', ++ [('third_party/WebKit/Source', 'third_party/blink/renderer')]), ++ ('tools/metrics/histograms/update_editor_commands.py', ++ [('third_party/WebKit/Source/core/editing/EditorCommand.cpp', ++ 'third_party/blink/renderer/core/editing/editor_command.cc')]), ++ ('tools/metrics/histograms/update_use_counter_css.py', ++ [('third_party/WebKit/Source/core/frame/UseCounter.cpp', ++ 'third_party/blink/renderer/core/frame/use_counter.cc')]), ++ ('tools/metrics/histograms/update_use_counter_feature_enum.py', ++ [('third_party/WebKit/public', 'third_party/blink/renderer/public')]), ++ ] ++ for file_path, replacement_list in file_replacement_list: ++ if not apply_only or file_path in apply_only: ++ self._update_single_file_content(file_path, replacement_list, should_write=self._options.run) ++ ++ if self._options.run: ++ _log.info('Formatting updated %d files ...', len(self._updated_files)) ++ git = Git(cwd=self._repo_root) ++ # |git cl format| can't handle too many files at once. ++ while len(self._updated_files) > 0: ++ end_index = 100 ++ if end_index > len(self._updated_files): ++ end_index = len(self._updated_files) ++ git.run(['cl', 'format'] + self._updated_files[:end_index]) ++ self._updated_files = self._updated_files[end_index:] ++ ++ if not apply_only: ++ _log.info('Make a local commit ...') ++ git.commit_locally_with_message("""The Great Blink mv for source files, part 1. ++ ++Update file contents without moving files. ++ ++NOAUTOREVERT=true ++Bug: 768828 ++""") ++ ++ def move(self, apply_only=None): ++ """Move Blink source files. ++ ++ Args: ++ apply_only: If it's None, move all affected files. Otherwise, ++ it should be a set of file paths and this function moves ++ only the files in |apply_only|. ++ """ ++ _log.info('Planning renaming ...') ++ file_pairs = plan_blink_move(self._fs, []) ++ ++ if apply_only: ++ file_pairs = [(src, dest) for (src, dest) in file_pairs ++ if 'third_party/WebKit/' + src.replace('\\', '/') in apply_only] ++ print 'Update file_pairs = ', file_pairs ++ _log.info('Will move %d files', len(file_pairs)) ++ ++ git = Git(cwd=self._repo_root) ++ files_set = self._get_checked_in_files(git) ++ for i, (src, dest) in enumerate(file_pairs): ++ src_from_repo = self._fs.join('third_party', 'WebKit', src) ++ if src_from_repo.replace('\\', '/') not in files_set: ++ _log.info('%s is not in the repository', src) ++ continue ++ dest_from_repo = self._fs.join('third_party', 'blink', dest) ++ self._fs.maybe_make_directory(self._repo_root, 'third_party', 'blink', self._fs.dirname(dest)) ++ if self._options.run_git: ++ git.move(src_from_repo, dest_from_repo) ++ _log.info('[%d/%d] Git moved %s', i + 1, len(file_pairs), src) ++ else: ++ self._fs.move(self._fs.join(self._repo_root, src_from_repo), ++ self._fs.join(self._repo_root, dest_from_repo)) ++ _log.info('[%d/%d] Moved %s', i + 1, len(file_pairs), src) ++ if apply_only: ++ return ++ ++ self._update_single_file_content( ++ 'build/get_landmines.py', ++ [('\ndef main', ' print \'The Great Blink mv for source files (crbug.com/768828)\'\n\ndef main')]) ++ ++ _log.info('Run run-bindings-tests ...') ++ Executive().run_command(['python', ++ self._fs.join(get_scripts_dir(), 'run-bindings-tests'), ++ '--reset-results'], ++ cwd=self._repo_root) ++ ++ if self._options.run_git: ++ _log.info('Make a local commit ...') ++ git.commit_locally_with_message("""The Great Blink mv for source files, part 2. ++ ++Move and rename files. ++ ++NOAUTOREVERT=true ++Bug: 768828 ++""") ++ ++ def fix_branch(self): ++ git = Git(cwd=self._repo_root) ++ status = self._get_local_change_status(git) ++ if len(status) == 0: ++ _log.info('No local changes.') ++ return ++ modified_files = {f for (s, f) in status if s != 'D'} ++ deleted_files = {f for (s, f) in status if s == 'D'} ++ ++ self.update(apply_only=modified_files) ++ self.move(apply_only=modified_files) ++ try: ++ git.commit_locally_with_message('This commit should be squashed.') ++ except ScriptError: ++ _log.info('move_blink_source.py modified nothing.') ++ ++ # TODO(tkent): Show a message about deleted_files. ++ ++ def _get_local_change_status(self, git): ++ """Returns a list of tuples representing local change summary. ++ ++ Each tuple contains two strings. The first one is file change status ++ such as "M", "D". See --diff-filter section of git-diff manual page. ++ The second one is file name relative to the repository top. ++ """ ++ ++ base_commit = git.run(['show-branch', '--merge-base', 'master', 'HEAD']).strip() ++ # Note that file names in the following command result are always ++ # slash-separated, even on Windows. ++ status_lines = git.run(['diff', '--name-status', '--no-renames', base_commit]).split('\n') ++ status_tuple_list = [] ++ for l in status_lines: ++ items = l.split('\t') ++ if len(items) == 2: ++ status_tuple_list.append(tuple(items)) ++ elif len(l) > 0: ++ _log.warning('Unrecognized diff output: "%s"', l) ++ return status_tuple_list ++ ++ def _get_checked_in_files(self, git): ++ files_text = git.run(['ls-files', ++ 'third_party/WebKit/Source', ++ 'third_party/WebKit/common', ++ 'third_party/WebKit/public']) ++ return set(files_text.split('\n')) ++ ++ def _create_basename_maps(self, file_pairs): ++ basename_map = {} ++ # Generated inspector/protocol/* contains a lot of names duplicated with ++ # checked-in core files. We don't want to rename them, and don't want to ++ # replace them in BUILD.gn and #include accidentally. ++ pattern = r'(?<!inspector/protocol/)\b(' ++ idl_headers = set() ++ header_pattern = r'(?<!inspector/protocol/)\b(' ++ for source, dest in file_pairs: ++ _, source_base = self._fs.split(source) ++ _, dest_base = self._fs.split(dest) ++ # OriginTrialFeaturesForCore.h in bindings/tests/results/modules/ ++ # confuses generated/checked-in detection in _replace_include_path(). ++ if 'bindings/tests' in source.replace('\\', '/'): ++ continue ++ if source_base.endswith('.h'): ++ header_pattern += re.escape(source_base) + '|' ++ if source_base == dest_base: ++ continue ++ basename_map[source_base] = dest_base ++ pattern += re.escape(source_base) + '|' ++ # IDL sometimes generates implementation files as well as ++ # binding files. We'd like to update #includes for such files. ++ if source_base.endswith('.idl'): ++ source_header = source_base.replace('.idl', '.h') ++ basename_map[source_header] = dest_base.replace('.idl', '.h') ++ pattern += re.escape(source_header) + '|' ++ idl_headers.add(source_header) ++ _log.info('Rename %d files for snake_case', len(basename_map)) ++ self._basename_map = basename_map ++ self._basename_re = re.compile(pattern[0:len(pattern) - 1] + ')(?=["\']|$)') ++ self._idl_generated_impl_headers = idl_headers ++ self._checked_in_header_re = re.compile(header_pattern[0:len(header_pattern) - 1] + ')$') ++ ++ def _shorten_path(self, path): ++ if path.startswith(self._repo_root): ++ return path[len(self._repo_root) + 1:] ++ return path ++ ++ @staticmethod ++ def _filter_file(fs, dirname, basename): ++ return FileType.detect(fs.join(dirname, basename)) != FileType.NONE ++ ++ def _update_build(self, content): ++ content = content.replace('//third_party/WebKit/Source', '//third_party/blink/renderer') ++ content = content.replace('//third_party/WebKit/common', '//third_party/blink/common') ++ content = content.replace('//third_party/WebKit/public', '//third_party/blink/renderer/public') ++ # export_header_blink exists outside of Blink too. ++ content = content.replace('export_header_blink = "third_party/WebKit/public/platform/WebCommon.h"', ++ 'export_header_blink = "third_party/blink/renderer/public/platform/web_common.h"') ++ return content ++ ++ def _update_blink_build(self, content): ++ content = self._update_build(content) ++ ++ # Update visibility=[...] ++ content = content.replace('//third_party/WebKit/*', '//third_party/blink/*') ++ content = content.replace('//third_party/WebKit/Source/*', '//third_party/blink/renderer/*') ++ content = content.replace('//third_party/WebKit/public/*', '//third_party/blink/renderer/public/*') ++ ++ # Update mojom variables ++ content = content.replace('export_header = "third_party/WebKit/common', ++ 'export_header = "third_party/blink/common') ++ content = content.replace('export_header_blink = "third_party/WebKit/Source', ++ 'export_header_blink = "third_party/blink/renderer') ++ return self._update_basename(content) ++ ++ def _update_owners(self, content): ++ content = content.replace('//third_party/WebKit/Source', '//third_party/blink/renderer') ++ content = content.replace('//third_party/WebKit/common', '//third_party/blink/common') ++ content = content.replace('//third_party/WebKit/public', '//third_party/blink/renderer/public') ++ return content ++ ++ def _update_deps(self, content): ++ original_content = content ++ content = content.replace('third_party/WebKit/Source', 'third_party/blink/renderer') ++ content = content.replace('third_party/WebKit/common', 'third_party/blink/common') ++ content = content.replace('third_party/WebKit/public', 'third_party/blink/renderer/public') ++ content = content.replace('third_party/WebKit', 'third_party/blink') ++ if original_content == content: ++ return content ++ return self._update_basename(content) ++ ++ def _update_mojom(self, content): ++ content = content.replace('third_party/WebKit/public', 'third_party/blink/renderer/public') ++ content = content.replace('third_party/WebKit/common', 'third_party/blink/common') ++ return content ++ ++ def _update_typemap(self, content): ++ content = content.replace('//third_party/WebKit/Source', '//third_party/blink/renderer') ++ content = content.replace('//third_party/WebKit/common', '//third_party/blink/common') ++ content = content.replace('//third_party/WebKit/public', '//third_party/blink/renderer/public') ++ return self._update_basename(content) ++ ++ def _update_blink_build_py(self, content): ++ # We don't prepend 'third_party/blink/renderer/' to matched basenames ++ # because it won't affect build and manual update after the great mv is ++ # enough. ++ return self._update_basename(content) ++ ++ def _update_layout_tests(self, content): ++ return content.replace('file:///gen/third_party/WebKit/', 'file:///gen/third_party/blink/renderer/') ++ ++ def _update_basename(self, content): ++ return self._basename_re.sub(lambda match: self._basename_map[match.group(1)], content) ++ ++ @staticmethod ++ def _append_unless_upper_dir_exists(dirs, new_dir): ++ for i in range(0, len(dirs)): ++ if new_dir.startswith(dirs[i]): ++ return ++ if dirs[i].startswith(new_dir): ++ dirs[i] = new_dir ++ return ++ dirs.append(new_dir) ++ ++ def _update_file_content(self, apply_only): ++ _log.info('Find *.gn, *.mojom, *.py, *.typemap, DEPS, and OWNERS ...') ++ files = self._fs.files_under( ++ self._repo_root, dirs_to_skip=['.git', 'out'], file_filter=self._filter_file) ++ _log.info('Scan contents of %d files ...', len(files)) ++ updated_deps_dirs = [] ++ for file_path in files: ++ file_type = FileType.detect(file_path) ++ original_content = self._fs.read_text_file(file_path) ++ content = original_content ++ if file_type == FileType.BUILD: ++ content = self._update_build(content) ++ elif file_type == FileType.BLINK_BUILD: ++ content = self._update_blink_build(content) ++ elif file_type == FileType.OWNERS: ++ content = self._update_owners(content) ++ elif file_type == FileType.DEPS: ++ if self._fs.dirname(file_path) == self._repo_root: ++ _log.info("Skip //DEPS") ++ continue ++ content = self._update_deps(content) ++ elif file_type == FileType.MOJOM: ++ content = self._update_mojom(content) ++ elif file_type == FileType.TYPEMAP: ++ content = self._update_typemap(content) ++ elif file_type == FileType.BLINK_BUILD_PY: ++ content = self._update_blink_build_py(content) ++ elif file_type == FileType.LAYOUT_TESTS_WITH_MOJOM: ++ content = self._update_layout_tests(content) ++ ++ if original_content == content: ++ continue ++ if self._options.run and (not apply_only or file_path.replace('\\', '/') in apply_only): ++ self._fs.write_text_file(file_path, content) ++ self._updated_files.append(file_path) ++ if file_type == FileType.DEPS: ++ self._append_unless_upper_dir_exists(updated_deps_dirs, self._fs.dirname(file_path)) ++ _log.info('Updated %s', self._shorten_path(file_path)) ++ return updated_deps_dirs ++ ++ def _update_cpp_includes_in_directories(self, dirs, apply_only): ++ for dirname in dirs: ++ _log.info('Processing #include in %s ...', self._shorten_path(dirname)) ++ files = self._fs.files_under( ++ dirname, file_filter=lambda fs, _, basename: basename.endswith( ++ ('.h', '.cc', '.cpp', '.mm', '.cc.tmpl', '.cpp.tmpl', ++ '.h.tmpl', 'XPathGrammar.y', '.gperf'))) ++ for file_path in files: ++ posix_file_path = file_path.replace('\\', '/') ++ original_content = self._fs.read_text_file(file_path) ++ ++ content = self._update_cpp_includes(original_content) ++ if file_path.endswith('.h') and '/third_party/WebKit/public/' in posix_file_path: ++ content = self._update_basename_only_includes(content, file_path) ++ if file_path.endswith('.h') and '/third_party/WebKit/' in posix_file_path: ++ content = self._update_include_guard(content, file_path) ++ ++ if original_content == content: ++ continue ++ if self._options.run and (not apply_only or posix_file_path in apply_only): ++ self._fs.write_text_file(file_path, content) ++ self._updated_files.append(file_path) ++ _log.info('Updated %s', self._shorten_path(file_path)) ++ ++ def _replace_include_path(self, match): ++ include_or_import = match.group(1) ++ path = match.group(2) ++ ++ # If |path| starts with 'third_party/WebKit', we should adjust the ++ # directory name for third_party/blink, and replace its basename by ++ # self._basename_map. ++ # ++ # If |path| starts with a Blink-internal directory such as bindings, ++ # core, modules, platform, public, it refers to a checked-in file, or a ++ # generated file. For the former, we should add ++ # 'third_party/blink/renderer/' and replace the basename. For the ++ # latter, we should update the basename for a name mapped from an IDL ++ # renaming, and should not add 'third_party/blink/renderer'. ++ ++ if path.startswith('third_party/WebKit'): ++ path = path.replace('third_party/WebKit/Source', 'third_party/blink/renderer') ++ path = path.replace('third_party/WebKit/common', 'third_party/blink/common') ++ path = path.replace('third_party/WebKit/public', 'third_party/blink/renderer/public') ++ path = self._update_basename(path) ++ return '#%s "%s"' % (include_or_import, path) ++ ++ match = self._checked_in_header_re.search(path) ++ if match: ++ if match.group(1) in self._basename_map: ++ path = 'third_party/blink/renderer/' + path[:match.start(1)] + self._basename_map[match.group(1)] ++ else: ++ path = 'third_party/blink/renderer/' + path ++ elif 'core/inspector/protocol/' not in path: ++ basename_start = path.rfind('/') + 1 ++ basename = path[basename_start:] ++ if basename in self._idl_generated_impl_headers: ++ path = path[:basename_start] + self._basename_map[basename] ++ elif basename.startswith('V8'): ++ path = path[:basename_start] + NameStyleConverter(basename[:len(basename) - 2]).to_snake_case() + '.h' ++ return '#%s "%s"' % (include_or_import, path) ++ ++ def _update_cpp_includes(self, content): ++ pattern = re.compile(r'#(include|import)\s+"((bindings|core|modules|platform|public|' + ++ r'third_party/WebKit/(Source|common|public))/[-_\w/.]+)"') ++ return pattern.sub(self._replace_include_path, content) ++ ++ def _replace_basename_only_include(self, subdir, source_path, match): ++ source_basename = match.group(1) ++ if source_basename in self._basename_map: ++ return '#include "third_party/blink/renderer/public/%s/%s"' % (subdir, self._basename_map[source_basename]) ++ _log.warning('Basename-only %s in %s', match.group(0), self._shorten_path(source_path)) ++ return match.group(0) ++ ++ def _update_basename_only_includes(self, content, source_path): ++ if not source_path.endswith('.h') or '/third_party/WebKit/public/' not in source_path.replace('\\', '/'): ++ return ++ # In public/ header files, we should replace |#include "WebFoo.h"| ++ # with |#include "third_party/blink/renderer/public/platform-or-web/web_foo.h"| ++ subdir = self._fs.basename(self._fs.dirname(source_path)) ++ # subdir is 'web' or 'platform'. ++ return re.sub(r'#include\s+"(\w+\.h)"', ++ partial(self._replace_basename_only_include, subdir, source_path), content) ++ ++ def _update_include_guard(self, content, source_path): ++ current_guard = re.sub(r'[.]', '_', self._fs.basename(source_path)) ++ new_path = relative_dest(self._fs, self._fs.relpath( ++ source_path, start=self._fs.join(self._repo_root, 'third_party', 'WebKit'))) ++ new_guard = 'THIRD_PARTY_BLINK_' + re.sub(r'[\\/.]', '_', new_path.upper()) + '_' ++ content = re.sub(r'#ifndef\s+(WTF_)?' + current_guard, '#ifndef ' + new_guard, content); ++ content = re.sub(r'#define\s+(WTF_)?' + current_guard, '#define ' + new_guard, content); ++ content = re.sub(r'#endif\s+//\s+(WTF_)?' + current_guard, '#endif // ' + new_guard, content); ++ return content ++ ++ def _update_single_file_content(self, file_path, replace_list, should_write=True): ++ full_path = self._fs.join(self._repo_root, file_path) ++ original_content = self._fs.read_text_file(full_path) ++ content = original_content ++ for command in replace_list: ++ if isinstance(command, tuple): ++ src, dest = command ++ content = content.replace(src, dest) ++ elif callable(command): ++ content = command(content) ++ else: ++ raise TypeError('A tuple or a function is expected.') ++ if content != original_content: ++ if should_write: ++ self._fs.write_text_file(full_path, content) ++ self._updated_files.append(full_path) ++ _log.info('Updated %s', file_path) ++ else: ++ _log.warning('%s does not contain specified source strings.', file_path) ++ ++ ++def main(): ++ logging.basicConfig(level=logging.DEBUG, ++ format='[%(asctime)s %(levelname)s %(name)s] %(message)s', ++ datefmt='%H:%M:%S') ++ parser = argparse.ArgumentParser(description='Blink source mover') ++ sub_parsers = parser.add_subparsers() ++ ++ update_parser = sub_parsers.add_parser('update') ++ update_parser.set_defaults(command='update') ++ update_parser.add_argument('--run', dest='run', action='store_true', ++ help='Update file contents') ++ ++ move_parser = sub_parsers.add_parser('move') ++ move_parser.set_defaults(command='move') ++ move_parser.add_argument('--git', dest='run_git', action='store_true', ++ help='Run |git mv| command instead of |mv|.') ++ ++ fixbranch_parser = sub_parsers.add_parser('fixbranch') ++ fixbranch_parser.set_defaults(command='fixbranch', run=True, run_git=True) ++ ++ options = parser.parse_args() ++ mover = MoveBlinkSource(FileSystem(), options, get_chromium_src_dir()) ++ if options.command == 'update': ++ mover.update() ++ elif options.command == 'move': ++ mover.move() ++ elif options.command == 'fixbranch': ++ mover.fix_branch() ++ ++ ++if __name__ == '__main__': ++ main() +--- /dev/null ++++ b/third_party/blink/tools/plan_blink_move.py +@@ -0,0 +1,96 @@ ++#!/usr/bin/env vpython ++# Copyright 2017 The Chromium Authors. All rights reserved. ++# Use of this source code is governed by a BSD-style license that can be ++# found in the LICENSE file. ++ ++import os ++import re ++import sys ++ ++sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', '..', ++ 'third_party', 'WebKit', 'Tools', 'Scripts')) ++from blinkpy.common.name_style_converter import NameStyleConverter ++from webkitpy.common.system.filesystem import FileSystem ++ ++ ++def relative_dest(fs, filename): ++ """Returns a destination path string for given filename. ++ ++ |filename| is a path relative to third_party/WebKit, and the resultant path ++ is relative to third_party/blink. ++ """ ++ dest = None ++ if filename.startswith('public'): ++ dest = re.sub(r'^public', 'renderer' + fs.sep + 'public', filename) ++ elif filename.startswith('Source'): ++ dest = re.sub(r'^Source', 'renderer', filename) ++ elif filename.startswith('common'): ++ dest = filename ++ else: ++ raise ValueError('|filename| must start with "common", "public", or "Source": %s' % filename) ++ if filename.endswith(('.h', '.cpp', '.mm', '.idl', '.typemap', 'Settings.json5')): ++ dirname, basename = fs.split(dest) ++ basename, ext = fs.splitext(basename) ++ # Skip some inspector-related files. #includes for these files are ++ # generated by a script outside of Blink. ++ if (re.match(r'Inspector.*Agent', basename) ++ or basename == 'InspectorTraceEvents' ++ or basename == 'PerformanceMonitor' ++ or basename == 'PlatformTraceEventsAgent'): ++ return dest ++ # Skip CSSProperty*. Some files are generated, and some files are ++ # checked-in. It's hard to handle them automatically. ++ if re.search(r'css[\\/]properties$', dirname): ++ return dest ++ if filename.endswith('.cpp'): ++ ext = '.cc' ++ # WebKit.h should be renamed to blink.h. ++ if basename == 'WebKit' and ext == '.h': ++ basename = 'blink' ++ if basename.lower() != basename: ++ basename = NameStyleConverter(basename).to_snake_case() ++ return fs.join(dirname, basename + ext) ++ return dest ++ ++ ++def start_with_list(name, prefixes): ++ if len(prefixes) == 0: ++ return True ++ for prefix in prefixes: ++ if name.startswith(prefix): ++ return True ++ return False ++ ++ ++def plan_blink_move(fs, prefixes): ++ """Returns (source, dest) path pairs. ++ ++ The source paths are relative to third_party/WebKit, ++ and the dest paths are relative to third_party/blink. ++ The paths use os.sep as the path part separator. ++ """ ++ blink_dir = fs.join(fs.dirname(__file__), '..') ++ webkit_dir = fs.join(blink_dir, '..', '..', 'third_party', 'WebKit') ++ source_files = fs.files_under(fs.join(webkit_dir, 'Source')) ++ source_files += fs.files_under(fs.join(webkit_dir, 'common')) ++ source_files += fs.files_under(fs.join(webkit_dir, 'public')) ++ ++ # It's possible to check git.exists() here, but we don't do it due to slow ++ # performance. We should check it just before executing git command. ++ ++ source_files = [f[len(webkit_dir) + 1:] for f in source_files] ++ return [(f, relative_dest(fs, f)) for f in source_files ++ if f.find('node_modules') == -1 and start_with_list(f, prefixes)] ++ ++ ++def main(): ++ fs = FileSystem() ++ file_pairs = plan_blink_move(fs, sys.argv[1:]) ++ print 'Show renaming plan. It contains files not in the repository.' ++ print '<Source path relative to third_party/WebKit> => <Destination path relative to third_party/blink>' ++ for pair in file_pairs: ++ print '%s\t=>\t%s' % pair ++ ++ ++if __name__ == '__main__': ++ main() diff --git a/community/chromium/chromium-48.0.2564.116-libusb_interrupt_event_handler.patch b/community/chromium/chromium-48.0.2564.116-libusb_interrupt_event_handler.patch deleted file mode 100644 index 2826e34774..0000000000 --- a/community/chromium/chromium-48.0.2564.116-libusb_interrupt_event_handler.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -up chromium-48.0.2564.116/device/usb/usb_context.cc.modern-libusbx chromium-48.0.2564.116/device/usb/usb_context.cc ---- device/usb/usb_context.cc.modern-libusbx 2016-02-24 10:21:10.534996028 -0500 -+++ device/usb/usb_context.cc 2016-02-24 10:22:28.270499864 -0500 -@@ -57,7 +57,11 @@ void UsbContext::UsbEventHandler::Run() - - void UsbContext::UsbEventHandler::Stop() { - base::subtle::Release_Store(&running_, 0); -+#ifdef LIBUSB_API_VERSION >= 0x01000105 -+ libusb_interrupt_event_handler(context_); -+#else - libusb_interrupt_handle_event(context_); -+#endif - } - - UsbContext::UsbContext(PlatformUsbContext context) : context_(context) { diff --git a/community/chromium/chromium-60.0.3112.78-gn-system.patch b/community/chromium/chromium-60.0.3112.78-gn-system.patch deleted file mode 100644 index bb511bacf0..0000000000 --- a/community/chromium/chromium-60.0.3112.78-gn-system.patch +++ /dev/null @@ -1,221 +0,0 @@ -diff -up chromium-60.0.3112.78/build/linux/unbundle/libjpeg.gn.gnsystem chromium-60.0.3112.78/build/linux/unbundle/libjpeg.gn ---- build/linux/unbundle/libjpeg.gn.gnsystem 2017-07-25 15:04:48.000000000 -0400 -+++ build/linux/unbundle/libjpeg.gn 2017-07-31 10:38:25.879951641 -0400 -@@ -16,6 +16,10 @@ source_set("libjpeg") { - libs = [ "jpeg" ] - } - -+config("system_libjpeg") { -+ defines = [ "USE_SYSTEM_LIBJPEG=1" ] -+} -+ - source_set("simd") { - } - -diff -up chromium-60.0.3112.78/build/linux/unbundle/libusb.gn.gnsystem chromium-60.0.3112.78/build/linux/unbundle/libusb.gn ---- build/linux/unbundle/libusb.gn.gnsystem 2017-07-31 10:38:25.880951622 -0400 -+++ build/linux/unbundle/libusb.gn 2017-07-31 10:38:25.879951641 -0400 -@@ -0,0 +1,24 @@ -+# Copyright 2016 The Chromium Authors. All rights reserved. -+# Use of this source code is governed by a BSD-style license that can be -+# found in the LICENSE file. -+ -+import("//build/config/linux/pkg_config.gni") -+import("//build/shim_headers.gni") -+ -+pkg_config("system_libusb") { -+ packages = [ "libusb-1.0" ] -+} -+ -+shim_headers("libusb_shim") { -+ root_path = "src/libusb" -+ headers = [ -+ "libusb.h", -+ ] -+} -+ -+source_set("libusb") { -+ deps = [ -+ ":libusb_shim", -+ ] -+ public_configs = [ ":system_libusb" ] -+} -diff -up chromium-60.0.3112.78/build/linux/unbundle/opus.gn.gnsystem chromium-60.0.3112.78/build/linux/unbundle/opus.gn ---- build/linux/unbundle/opus.gn.gnsystem 2017-07-25 15:04:48.000000000 -0400 -+++ build/linux/unbundle/opus.gn 2017-07-31 10:38:25.880951622 -0400 -@@ -1,3 +1,164 @@ -+# Copyright 2016 The Chromium Authors. All rights reserved. -+# Use of this source code is governed by a BSD-style license that can be -+# found in the LICENSE file. -+ -+import("//build/config/linux/pkg_config.gni") -+import("//build/shim_headers.gni") -+import("//testing/test.gni") -+ -+pkg_config("system_opus") { -+ packages = [ "opus" ] -+} -+ -+shim_headers("opus_shim") { -+ root_path = "src/include" -+ headers = [ -+ "opus_custom.h", -+ "opus_defines.h", -+ "opus_multistream.h", -+ "opus_types.h", -+ "opus.h", -+ ] -+} -+ -+source_set("opus") { -+ deps = [ -+ ":opus_shim", -+ ] -+ public_configs = [ ":system_opus" ] -+} -+ -+config("opus_test_config") { -+ include_dirs = [ -+ "src/celt", -+ "src/silk", -+ ] -+ -+ if (is_win) { -+ defines = [ "inline=__inline" ] -+ } -+ if (is_android) { -+ libs = [ "log" ] -+ } -+ if (is_clang) { -+ cflags = [ "-Wno-absolute-value" ] -+ } -+} -+ -+executable("opus_compare") { -+ sources = [ -+ "src/src/opus_compare.c", -+ ] -+ -+ configs -= [ "//build/config/compiler:chromium_code" ] -+ configs += [ -+ "//build/config/compiler:no_chromium_code", -+ ":opus_test_config", -+ ] -+ -+ deps = [ -+ ":opus", -+ "//build/config/sanitizers:deps", -+ "//build/win:default_exe_manifest", -+ ] -+} -+ -+executable("opus_demo") { -+ sources = [ -+ "src/src/opus_demo.c", -+ ] -+ -+ configs -= [ "//build/config/compiler:chromium_code" ] -+ configs += [ -+ "//build/config/compiler:no_chromium_code", -+ ":opus_test_config", -+ ] -+ -+ deps = [ -+ ":opus", -+ "//build/config/sanitizers:deps", -+ "//build/win:default_exe_manifest", -+ ] -+} -+ -+test("test_opus_api") { -+ sources = [ -+ "src/tests/test_opus_api.c", -+ ] -+ -+ configs -= [ "//build/config/compiler:chromium_code" ] -+ configs += [ -+ "//build/config/compiler:no_chromium_code", -+ ":opus_test_config", -+ ] -+ -+ deps = [ -+ ":opus", -+ ] -+} -+ -+test("test_opus_encode") { -+ sources = [ -+ "src/tests/test_opus_encode.c", -+ ] -+ -+ configs -= [ "//build/config/compiler:chromium_code" ] -+ configs += [ -+ "//build/config/compiler:no_chromium_code", -+ ":opus_test_config", -+ ] -+ -+ deps = [ -+ ":opus", -+ ] -+} -+ -+# GN orders flags on a target before flags from configs. The default config -+# adds -Wall, and this flag have to be after -Wall -- so they need to -+# come from a config and can't be on the target directly. -+config("test_opus_decode_config") { -+ # test_opus_decode passes a null pointer to opus_decode() for an argument -+ # marked as requiring a non-null value by the nonnull function attribute, -+ # and expects opus_decode() to fail. Disable the -Wnonnull option to avoid -+ # a compilation error if -Werror is specified. -+ if (is_posix) { -+ cflags = [ "-Wno-nonnull" ] -+ } -+} -+ -+test("test_opus_decode") { -+ sources = [ -+ "src/tests/test_opus_decode.c", -+ ] -+ -+ configs -= [ "//build/config/compiler:chromium_code" ] -+ configs += [ -+ "//build/config/compiler:no_chromium_code", -+ ":opus_test_config", -+ ":test_opus_decode_config", -+ ] -+ -+ deps = [ -+ ":opus", -+ ] -+} -+ -+test("test_opus_padding") { -+ sources = [ -+ "src/tests/test_opus_padding.c", -+ ] -+ -+ configs -= [ "//build/config/compiler:chromium_code" ] -+ configs += [ -+ "//build/config/compiler:no_chromium_code", -+ ":opus_test_config", -+ ] -+ -+ deps = [ -+ ":opus", -+ ] -+} -+ - # Copyright 2017 The Chromium Authors. All rights reserved. - # Use of this source code is governed by a BSD-style license that can be - # found in the LICENSE file. -diff -up chromium-60.0.3112.78/build/linux/unbundle/replace_gn_files.py.gnsystem chromium-60.0.3112.78/build/linux/unbundle/replace_gn_files.py ---- build/linux/unbundle/replace_gn_files.py.gnsystem 2017-07-31 10:38:25.880951622 -0400 -+++ build/linux/unbundle/replace_gn_files.py 2017-07-31 10:39:58.067159914 -0400 -@@ -26,6 +26,7 @@ REPLACEMENTS = { - 'libevent': 'base/third_party/libevent/BUILD.gn', - 'libjpeg': 'build/secondary/third_party/libjpeg_turbo/BUILD.gn', - 'libpng': 'third_party/libpng/BUILD.gn', -+ 'libusb': 'third_party/libusb/BUILD.gn', - 'libvpx': 'third_party/libvpx/BUILD.gn', - 'libwebp': 'third_party/libwebp/BUILD.gn', - 'libxml': 'third_party/libxml/BUILD.gn', diff --git a/community/chromium/chromium-60.0.3112.78-jpeg-nomangle.patch b/community/chromium/chromium-60.0.3112.78-jpeg-nomangle.patch deleted file mode 100644 index 3edb054565..0000000000 --- a/community/chromium/chromium-60.0.3112.78-jpeg-nomangle.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -up chromium-60.0.3112.78/third_party/libjpeg_turbo/jpeglib.h.nomangle chromium-60.0.3112.78/third_party/libjpeg_turbo/jpeglib.h ---- chromium-60.0.3112.78/third_party/libjpeg_turbo/jpeglib.h.nomangle 2017-08-01 15:29:00.870759406 -0400 -+++ third_party/libjpeg_turbo/jpeglib.h 2017-08-01 15:29:09.326593414 -0400 -@@ -18,10 +18,6 @@ - #ifndef JPEGLIB_H - #define JPEGLIB_H - --/* Begin chromium edits */ --#include "jpeglibmangler.h" --/* End chromium edits */ -- - /* - * First we include the configuration files that record how this - * installation of the JPEG library is set up. jconfig.h can be diff --git a/community/chromium/chromium-60.0.3112.78-no-libpng-prefix.patch b/community/chromium/chromium-60.0.3112.78-no-libpng-prefix.patch deleted file mode 100644 index 489f8e00a2..0000000000 --- a/community/chromium/chromium-60.0.3112.78-no-libpng-prefix.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff -up chromium-60.0.3112.78/third_party/libpng/pnglibconf.h.noprefix chromium-60.0.3112.78/third_party/libpng/pnglibconf.h ---- chromium-60.0.3112.78/third_party/libpng/pnglibconf.h.noprefix 2017-08-01 14:42:54.321986758 -0400 -+++ third_party/libpng/pnglibconf.h 2017-08-01 14:43:01.493845832 -0400 -@@ -225,13 +225,4 @@ - #define PNG_USER_CHUNK_MALLOC_MAX 4000000L - /* end of chromium settings */ - --/* chromium prefixing */ --/* -- * This is necessary to build multiple copies of libpng. We need this while pdfium builds -- * its own copy of libpng. -- */ --#define PNG_PREFIX --#include "pngprefix.h" --/* end of chromium prefixing */ -- - #endif /* PNGLCONF_H */ diff --git a/community/chromium/chromium-60.0.3112.78-no-zlib-mangle.patch b/community/chromium/chromium-60.0.3112.78-no-zlib-mangle.patch deleted file mode 100644 index 1854dfe488..0000000000 --- a/community/chromium/chromium-60.0.3112.78-no-zlib-mangle.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -up chromium-60.0.3112.78/third_party/zlib/zconf.h.nozmangle chromium-60.0.3112.78/third_party/zlib/zconf.h ---- chromium-60.0.3112.78/third_party/zlib/zconf.h.nozmangle 2017-08-04 10:45:17.509152089 -0400 -+++ third_party/zlib/zconf.h 2017-08-04 10:45:30.451902380 -0400 -@@ -8,9 +8,6 @@ - #ifndef ZCONF_H - #define ZCONF_H - --/* This include does prefixing as below, but with an updated set of names */ --#include "names.h" -- - /* - * If you *really* need a unique prefix for all types and library functions, - * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. diff --git a/community/chromium/chromium-clang-r2.patch b/community/chromium/chromium-clang-r2.patch new file mode 100644 index 0000000000..94932b559a --- /dev/null +++ b/community/chromium/chromium-clang-r2.patch @@ -0,0 +1,21 @@ +--- ./build/config/compiler/BUILD.gn ++++ ./build/config/compiler/BUILD.gn +@@ -422,18 +422,6 @@ + cflags += [ "-fcolor-diagnostics" ] + } + +- # TODO(hans): Remove this once Clang generates better optimized debug info by +- # default. https://crbug.com/765793 +- if (is_clang && !is_nacl && current_toolchain == host_toolchain && +- target_os != "chromeos") { +- cflags += [ +- "-Xclang", +- "-mllvm", +- "-Xclang", +- "-instcombine-lower-dbg-declare=0", +- ] +- } +- + # Print absolute paths in diagnostics. There is no precedent for doing this + # on Linux/Mac (GCC doesn't support it), but MSVC does this with /FC and + # Windows developers rely on it (crbug.com/636109) so only do this on Windows. diff --git a/community/chromium/chromium-clang-r3.patch b/community/chromium/chromium-clang-r3.patch new file mode 100644 index 0000000000..0010932b3e --- /dev/null +++ b/community/chromium/chromium-clang-r3.patch @@ -0,0 +1,19 @@ +# Taken from gentoo: +# https://gitweb.gentoo.org/repo/gentoo.git/plain/www-client/chromium/files/chromium-clang-r3.patch +# +# Prevents this error: +# ../../device/u2f/u2f_ble_transaction.cc:134:27: error: no viable overloaded '=' +# request_cont_fragments_ = {}; +# ~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~ + +--- ./device/fido/u2f_ble_transaction.cc ++++ ./device/fido/u2f_ble_transaction.cc +@@ -131,7 +131,7 @@ + + void U2fBleTransaction::OnError() { + request_frame_.reset(); +- request_cont_fragments_ = {}; ++ request_cont_fragments_ = base::queue<U2fBleFrameContinuationFragment>(); + response_frame_assembler_.reset(); + std::move(callback_).Run(base::nullopt); + } diff --git a/community/chromium/chromium-gcc-r1.patch b/community/chromium/chromium-gcc-r1.patch new file mode 100644 index 0000000000..6979b11451 --- /dev/null +++ b/community/chromium/chromium-gcc-r1.patch @@ -0,0 +1,14 @@ +diff --git a/base/numerics/safe_math_shared_impl.h b/base/numerics/safe_math_shared_impl.h +index 99f230ce7e9a..de2415d402f5 100644 +--- base/numerics/safe_math_shared_impl.h ++++ base/numerics/safe_math_shared_impl.h +@@ -21,8 +21,7 @@ + #if !defined(__native_client__) && \ + ((defined(__clang__) && \ + ((__clang_major__ > 3) || \ +- (__clang_major__ == 3 && __clang_minor__ >= 4))) || \ +- (defined(__GNUC__) && __GNUC__ >= 5)) ++ (__clang_major__ == 3 && __clang_minor__ >= 4)))) + #include "base/numerics/safe_math_clang_gcc_impl.h" + #define BASE_HAS_OPTIMIZED_SAFE_MATH (1) + #else diff --git a/community/chromium/chromium-skia-harmony.patch b/community/chromium/chromium-skia-harmony.patch new file mode 100644 index 0000000000..04e27b1216 --- /dev/null +++ b/community/chromium/chromium-skia-harmony.patch @@ -0,0 +1,77 @@ +--- third_party/skia/src/ports/SkFontHost_FreeType.cpp.orig 2017-10-10 17:42:06.956950985 +0200 ++++ 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/community/chromium/gcc6.patch b/community/chromium/gcc6.patch index eeef288144..036502c57e 100644 --- a/community/chromium/gcc6.patch +++ b/community/chromium/gcc6.patch @@ -10,16 +10,3 @@ index 45fee9a..0769c41 100644 } # This is included by reference in the //build/config/compiler:runtime_library -diff --git a/third_party/angle/src/compiler/translator/Types.h b/third_party/angle/src/compiler/translator/Types.h -index 77db3ac..201ed4e 100644 ---- third_party/angle/src/compiler/translator/Types.h -+++ third_party/angle/src/compiler/translator/Types.h -@@ -236,7 +236,7 @@ class TType - { - } - -- TBasicType getBasicType() const { return type; } -+ constexpr TBasicType getBasicType() const { return type; } - void setBasicType(TBasicType t); - - TPrecision getPrecision() const { return precision; } diff --git a/community/chromium/gn_bootstrap.patch b/community/chromium/gn_bootstrap.patch index 82def2e1a5..5929742125 100644 --- a/community/chromium/gn_bootstrap.patch +++ b/community/chromium/gn_bootstrap.patch @@ -1,8 +1,21 @@ +diff --git a/base/message_loop/message_pump_libevent.cc b/base/message_loop/message_pump_libevent.cc +index dc5efc6..a9f1ec0 100644 +--- base/message_loop/message_pump_libevent.cc ++++ base/message_loop/message_pump_libevent.cc +@@ -14,7 +14,7 @@ + #include "base/files/file_util.h" + #include "base/logging.h" + #include "base/posix/eintr_wrapper.h" +-#include "base/third_party/libevent/event.h" ++#include "event.h" + #include "base/time/time.h" + #include "base/trace_event/trace_event.h" + #include "build/build_config.h" diff --git a/tools/gn/bootstrap/bootstrap.py b/tools/gn/bootstrap/bootstrap.py -index 1390560..5ce7832 100755 +index 2bf25e5..0ddc537 100755 --- tools/gn/bootstrap/bootstrap.py +++ tools/gn/bootstrap/bootstrap.py -@@ -31,6 +32,7 @@ SRC_ROOT = os.path.dirname(os.path.dirname(GN_ROOT)) +@@ -32,6 +32,7 @@ SRC_ROOT = os.path.dirname(os.path.dirname(GN_ROOT)) is_win = sys.platform.startswith('win') is_linux = sys.platform.startswith('linux') @@ -10,16 +23,16 @@ index 1390560..5ce7832 100755 is_mac = sys.platform.startswith('darwin') is_aix = sys.platform.startswith('aix') is_posix = is_linux or is_mac or is_aix -@@ -167,7 +169,7 @@ def build_gn_with_ninja_manually(tempdir, options): - mkdir_p(root_gen_dir) +@@ -184,7 +185,7 @@ def build_gn_with_ninja_manually(tempdir, options): + {'ENABLE_MUTEX_PRIORITY_INHERITANCE': 'false'}) - write_buildflag_header_manually(root_gen_dir, 'base/allocator/features.h', + write_buildflag_header_manually(root_gen_dir, 'base/allocator/buildflags.h', - {'USE_ALLOCATOR_SHIM': 'true' if is_linux else 'false'}) + {'USE_ALLOCATOR_SHIM': 'true' if is_gnu_linux else 'false'}) - write_buildflag_header_manually(root_gen_dir, 'base/debug/debugging_flags.h', - { -@@ -395,8 +397,6 @@ def write_gn_ninja(path, root_gen_dir, options): + write_buildflag_header_manually(root_gen_dir, + 'base/debug/debugging_buildflags.h', +@@ -438,8 +439,6 @@ def write_gn_ninja(path, root_gen_dir, options): 'base/third_party/superfasthash/superfasthash.c', ]) static_libraries['base']['sources'].extend([ @@ -28,19 +41,54 @@ index 1390560..5ce7832 100755 'base/at_exit.cc', 'base/base_paths.cc', 'base/base_switches.cc', -@@ -653,10 +654,11 @@ def write_gn_ninja(path, root_gen_dir, options): - 'base/threading/platform_thread_linux.cc', +@@ -641,26 +640,6 @@ def write_gn_ninja(path, root_gen_dir, options): + 'base/time/time_conversion_posix.cc', + 'base/trace_event/heap_profiler_allocation_register_posix.cc', ]) - if is_linux: +- static_libraries['libevent'] = { +- 'sources': [ +- 'base/third_party/libevent/buffer.c', +- 'base/third_party/libevent/evbuffer.c', +- 'base/third_party/libevent/evdns.c', +- 'base/third_party/libevent/event.c', +- 'base/third_party/libevent/event_tagging.c', +- 'base/third_party/libevent/evrpc.c', +- 'base/third_party/libevent/evutil.c', +- 'base/third_party/libevent/http.c', +- 'base/third_party/libevent/log.c', +- 'base/third_party/libevent/poll.c', +- 'base/third_party/libevent/select.c', +- 'base/third_party/libevent/signal.c', +- 'base/third_party/libevent/strlcpy.c', +- ], +- 'tool': 'cc', +- 'include_dirs': [], +- 'cflags': cflags + ['-DHAVE_CONFIG_H'], +- } + + if is_linux or is_aix: + static_libraries['xdg_user_dirs'] = { +@@ -767,17 +746,12 @@ def write_gn_ninja(path, root_gen_dir, options): + '-D_LIBCXXABI_NO_EXCEPTIONS', + ] + } - static_libraries['base']['sources'].extend([ - 'base/allocator/allocator_shim.cc', - 'base/allocator/allocator_shim_default_dispatch_to_glibc.cc', - ]) +- libs.extend(['-lrt', '-latomic']) +- static_libraries['libevent']['include_dirs'].extend([ +- os.path.join(SRC_ROOT, 'base', 'third_party', 'libevent', 'linux') +- ]) +- static_libraries['libevent']['sources'].extend([ +- 'base/third_party/libevent/epoll.c', +- ]) + if is_gnu_linux: + static_libraries['base']['sources'].extend([ + 'base/allocator/allocator_shim.cc', + 'base/allocator/allocator_shim_default_dispatch_to_glibc.cc', + ]) - libs.extend(['-lrt', '-latomic']) - static_libraries['libevent']['include_dirs'].extend([ - os.path.join(SRC_ROOT, 'base', 'third_party', 'libevent', 'linux') ++ libs.extend(['-lrt', '-levent']) + else: + ldflags.extend(['-pthread']) + libs.extend(['-lrt']) diff --git a/community/chromium/no-execinfo.patch b/community/chromium/no-execinfo.patch index 231cf33cff..4b5e2fa4e6 100644 --- a/community/chromium/no-execinfo.patch +++ b/community/chromium/no-execinfo.patch @@ -86,25 +86,3 @@ index 9bdece7..0c76188 100644 #include <cxxabi.h> #include <dlfcn.h> #include <execinfo.h> -diff --git a/third_party/webrtc/rtc_base/checks.cc b/third_party/webrtc/rtc_base/checks.cc -index 533240f..08b3f3e 100644 ---- a/third_party/webrtc/rtc_base/checks.cc -+++ third_party/webrtc/rtc_base/checks.cc -@@ -16,7 +16,7 @@ - #include <cstdio> - #include <cstdlib> - --#if defined(__GLIBCXX__) && !defined(__UCLIBC__) -+#if defined(__GLIBCXX__) && defined(__GLIBC__) - #include <cxxabi.h> - #include <execinfo.h> - #endif -@@ -60,7 +60,7 @@ void PrintError(const char* format, ...) { - // to get usable symbols on Linux. This is copied from V8. Chromium has a more - // advanced stace trace system; also more difficult to copy. - void DumpBacktrace() { --#if defined(__GLIBCXX__) && !defined(__UCLIBC__) -+#if defined(__GLIBCXX__) && defined(__GLIBC__) - void* trace[100]; - int size = backtrace(trace, sizeof(trace) / sizeof(*trace)); - char** symbols = backtrace_symbols(trace, size); diff --git a/community/chromium/secure_getenv.patch b/community/chromium/secure_getenv.patch index b28b77ef79..d142819ffb 100644 --- a/community/chromium/secure_getenv.patch +++ b/community/chromium/secure_getenv.patch @@ -1,22 +1,7 @@ -diff --git a/third_party/angle/src/vulkan_support/BUILD.gn b/third_party/angle/src/vulkan_support/BUILD.gn -index 51c8c10..fb70649 100644 ---- third_party/angle/src/vulkan_support/BUILD.gn -+++ third_party/angle/src/vulkan_support/BUILD.gn -@@ -204,8 +204,8 @@ config("vulkan_loader_config") { - cflags = [ "/wd4201" ] - } - if (is_linux) { -- # assume secure_getenv() is available -- defines += [ "HAVE_SECURE_GETENV" ] -+ # assume getauxval() is available -+ defines += [ "HAVE_GETAUXVAL" ] - } - } - diff --git a/third_party/vulkan-validation-layers/src/loader/loader.c b/third_party/vulkan-validation-layers/src/loader/loader.c index facddc1..b6a8ee9 100644 ---- third_party/vulkan-validation-layers/src/loader/loader.c -+++ third_party/vulkan-validation-layers/src/loader/loader.c +--- ./third_party/angle/third_party/vulkan-validation-layers/src/loader/loader.c ++++ ./third_party/angle/third_party/vulkan-validation-layers/src/loader/loader.c @@ -31,6 +31,9 @@ #include <stdbool.h> #include <string.h> @@ -36,3 +21,15 @@ index facddc1..b6a8ee9 100644 #else #pragma message("Warning: Falling back to non-secure getenv for environmental lookups! Consider" \ " updating to a different libc.") +--- ./third_party/angle/third_party/vulkan-validation-layers/BUILD.gn.orig ++++ ./third_party/angle/third_party/vulkan-validation-layers/BUILD.gn +@@ -264,8 +264,7 @@ + cflags = [ "/wd4201" ] + } + if (is_linux) { +- # assume secure_getenv() is available +- defines += [ "HAVE_SECURE_GETENV" ] ++ defines += [ "HAVE_GETAUXVAL" ] + } + } + |