diff --git a/qt5-qtwebengine.spec b/qt5-qtwebengine.spec index cfff4c5..8323af1 100644 --- a/qt5-qtwebengine.spec +++ b/qt5-qtwebengine.spec @@ -113,6 +113,10 @@ Patch11: qtwebengine-everywhere-src-5.10.0-skia-neon.patch Patch12: qtwebengine-opensource-src-5.9.0-webrtc-neon-detect.patch # Force verbose output from the GN bootstrap process Patch21: qtwebengine-everywhere-src-5.10.0-gn-bootstrap-verbose.patch +# Forward-port missing parts of build fix with system ICU >= 59 from 5.9: +# https://codereview.qt-project.org/#/c/196922/ +# see QTBUG-60886 and QTBUG-65090 +Patch22: qtwebengine-everywhere-src-5.10.0-icu59.patch # drop support for obsolete Unicode "aspirational scripts" (dropped in UTS 31), # fixes #error with ICU >= 60 (which was a reminder to double-check the list) # see: http://www.unicode.org/reports/tr31/#Aspirational_Use_Scripts @@ -364,6 +368,7 @@ BuildArch: noarch %patch11 -p1 -b .skia-neon %patch12 -p1 -b .webrtc-neon-detect %patch21 -p1 -b .gn-bootstrap-verbose +%patch22 -p1 -b .icu59 %patch100 -p1 -b .no-aspirational-scripts # fix // in #include in content/renderer/gpu to avoid debugedit failure sed -i -e 's!gpu//!gpu/!g' \ @@ -584,6 +589,7 @@ done - Re-backport no-aspirational-scripts from upstream (undo 5.9 backport) - Disable system libvpx support for now, requires unreleased libvpx (1.6.2+) - Add new BuildRequires: flex (required) and pkgconfig(lcms2) (unbundled) +- Forward-port missing parts of 5.9 ICU>=59 build fix (QTBUG-60886, QTBUG-65090) * Tue Dec 19 2017 Rex Dieter - 5.9.3-5 - properly escape newline in lesser_version hack diff --git a/qtwebengine-everywhere-src-5.10.0-icu59.patch b/qtwebengine-everywhere-src-5.10.0-icu59.patch new file mode 100644 index 0000000..3ccff08 --- /dev/null +++ b/qtwebengine-everywhere-src-5.10.0-icu59.patch @@ -0,0 +1,524 @@ +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/base/BUILD.gn qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/base/BUILD.gn +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/base/BUILD.gn 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/base/BUILD.gn 2017-12-26 00:08:24.179696335 +0100 +@@ -1134,6 +1134,10 @@ + ":debugging_flags", + ] + ++ if (!is_win) { ++ public_deps += [ "//third_party/icu:icuuc" ] ++ } ++ + # Needed for if using newer C++ library than sysroot, except if + # building inside the cros_sdk environment - use host_toolchain as a + # more robust check for this. +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/base/i18n/bidi_line_iterator.cc qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/base/i18n/bidi_line_iterator.cc +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/base/i18n/bidi_line_iterator.cc 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/base/i18n/bidi_line_iterator.cc 2017-12-25 23:52:46.376221561 +0100 +@@ -44,7 +44,7 @@ + bidi_ = ubidi_openSized(static_cast(text.length()), 0, &error); + if (U_FAILURE(error)) + return false; +- ubidi_setPara(bidi_, text.data(), static_cast(text.length()), ++ ubidi_setPara(bidi_, reinterpret_cast(text.data()), static_cast(text.length()), + GetParagraphLevelForDirection(direction), NULL, &error); + return (U_SUCCESS(error) == TRUE); + } +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/base/i18n/break_iterator.cc qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/base/i18n/break_iterator.cc +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/base/i18n/break_iterator.cc 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/base/i18n/break_iterator.cc 2017-12-25 23:52:46.376221561 +0100 +@@ -59,9 +59,9 @@ + return false; + } + if (break_type_ == RULE_BASED) { +- iter_ = ubrk_openRules(rules_.c_str(), ++ iter_ = ubrk_openRules(reinterpret_cast(rules_.c_str()), + static_cast(rules_.length()), +- string_.data(), ++ reinterpret_cast(string_.data()), + static_cast(string_.size()), + &parse_error, + &status); +@@ -72,7 +72,7 @@ + } else { + iter_ = ubrk_open(break_type, + NULL, +- string_.data(), ++ reinterpret_cast(string_.data()), + static_cast(string_.size()), + &status); + if (U_FAILURE(status)) { +@@ -128,7 +128,7 @@ + bool BreakIterator::SetText(const base::char16* text, const size_t length) { + UErrorCode status = U_ZERO_ERROR; + ubrk_setText(static_cast(iter_), +- text, length, &status); ++ reinterpret_cast(text), length, &status); + pos_ = 0; // implicit when ubrk_setText is done + prev_ = npos; + if (U_FAILURE(status)) { +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/base/i18n/case_conversion.cc qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/base/i18n/case_conversion.cc +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/base/i18n/case_conversion.cc 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/base/i18n/case_conversion.cc 2017-12-25 23:52:46.376221561 +0100 +@@ -64,8 +64,8 @@ + // terminator, but will otherwise. So we don't need to save room for that. + // Don't use WriteInto, which assumes null terminators. + int32_t new_length = case_mapper( +- &dest[0], saturated_cast(dest.size()), +- string.data(), saturated_cast(string.size()), ++ reinterpret_cast(&dest[0]), saturated_cast(dest.size()), ++ reinterpret_cast(string.data()), saturated_cast(string.size()), + &error); + dest.resize(new_length); + } while (error == U_BUFFER_OVERFLOW_ERROR); +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/base/i18n/icu_string_conversions.cc qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/base/i18n/icu_string_conversions.cc +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/base/i18n/icu_string_conversions.cc 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/base/i18n/icu_string_conversions.cc 2017-12-25 23:52:46.376221561 +0100 +@@ -151,7 +151,7 @@ + if (!U_SUCCESS(status)) + return false; + +- return ConvertFromUTF16(converter, utf16.c_str(), ++ return ConvertFromUTF16(converter, reinterpret_cast(utf16.c_str()), + static_cast(utf16.length()), on_error, encoded); + } + +@@ -178,7 +178,7 @@ + + SetUpErrorHandlerForToUChars(on_error, converter, &status); + std::unique_ptr buffer(new char16[uchar_max_length]); +- int actual_size = ucnv_toUChars(converter, buffer.get(), ++ int actual_size = ucnv_toUChars(converter, reinterpret_cast(buffer.get()), + static_cast(uchar_max_length), encoded.data(), + static_cast(encoded.length()), &status); + ucnv_close(converter); +@@ -205,8 +205,8 @@ + string16 normalized_utf16; + std::unique_ptr buffer(new char16[max_length]); + int actual_length = unorm_normalize( +- utf16.c_str(), utf16.length(), UNORM_NFC, 0, +- buffer.get(), static_cast(max_length), &status); ++ reinterpret_cast(utf16.c_str()), utf16.length(), UNORM_NFC, 0, ++ reinterpret_cast(buffer.get()), static_cast(max_length), &status); + if (!U_SUCCESS(status)) + return false; + normalized_utf16.assign(buffer.get(), actual_length); +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/base/i18n/rtl.cc qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/base/i18n/rtl.cc +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/base/i18n/rtl.cc 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/base/i18n/rtl.cc 2017-12-25 23:54:24.681803775 +0100 +@@ -212,7 +212,7 @@ + } + + TextDirection GetFirstStrongCharacterDirection(const string16& text) { +- const UChar* string = text.c_str(); ++ const UChar* string = reinterpret_cast(text.c_str()); + size_t length = text.length(); + size_t position = 0; + while (position < length) { +@@ -228,7 +228,7 @@ + } + + TextDirection GetLastStrongCharacterDirection(const string16& text) { +- const UChar* string = text.c_str(); ++ const UChar* string = reinterpret_cast(text.c_str()); + size_t position = text.length(); + while (position > 0) { + UChar32 character; +@@ -243,7 +243,7 @@ + } + + TextDirection GetStringDirection(const string16& text) { +- const UChar* string = text.c_str(); ++ const UChar* string = reinterpret_cast(text.c_str()); + size_t length = text.length(); + size_t position = 0; + +@@ -374,7 +374,7 @@ + #endif // !OS_WIN + + bool StringContainsStrongRTLChars(const string16& text) { +- const UChar* string = text.c_str(); ++ const UChar* string = reinterpret_cast(text.c_str()); + size_t length = text.length(); + size_t position = 0; + while (position < length) { +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/base/i18n/string_search.cc qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/base/i18n/string_search.cc +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/base/i18n/string_search.cc 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/base/i18n/string_search.cc 2017-12-25 23:54:45.809499066 +0100 +@@ -20,8 +20,8 @@ + const string16& dummy = find_this_; + + UErrorCode status = U_ZERO_ERROR; +- search_ = usearch_open(find_this_.data(), find_this_.size(), +- dummy.data(), dummy.size(), ++ search_ = usearch_open(reinterpret_cast(find_this_.data()), find_this_.size(), ++ reinterpret_cast(dummy.data()), dummy.size(), + uloc_getDefault(), + NULL, // breakiter + &status); +@@ -41,7 +41,7 @@ + bool FixedPatternStringSearchIgnoringCaseAndAccents::Search( + const string16& in_this, size_t* match_index, size_t* match_length) { + UErrorCode status = U_ZERO_ERROR; +- usearch_setText(search_, in_this.data(), in_this.size(), &status); ++ usearch_setText(search_, reinterpret_cast(in_this.data()), in_this.size(), &status); + + // Default to basic substring search if usearch fails. According to + // http://icu-project.org/apiref/icu4c/usearch_8h.html, usearch_open will fail +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/components/url_formatter/idn_spoof_checker.cc qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/components/url_formatter/idn_spoof_checker.cc +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/components/url_formatter/idn_spoof_checker.cc 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/components/url_formatter/idn_spoof_checker.cc 2017-12-26 00:16:45.791461970 +0100 +@@ -155,14 +155,14 @@ + bool is_tld_ascii) { + UErrorCode status = U_ZERO_ERROR; + int32_t result = +- uspoof_check(checker_, label.data(), ++ uspoof_check(checker_, (const UChar*)label.data(), + base::checked_cast(label.size()), NULL, &status); + // If uspoof_check fails (due to library failure), or if any of the checks + // fail, treat the IDN as unsafe. + if (U_FAILURE(status) || (result & USPOOF_ALL_CHECKS)) + return false; + +- icu::UnicodeString label_string(FALSE, label.data(), ++ icu::UnicodeString label_string(FALSE, (const UChar*)label.data(), + base::checked_cast(label.size())); + + // A punycode label with 'xn--' prefix is not subject to the URL +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/components/url_formatter/url_formatter.cc qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/components/url_formatter/url_formatter.cc +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/components/url_formatter/url_formatter.cc 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/components/url_formatter/url_formatter.cc 2017-12-25 23:58:01.767672910 +0100 +@@ -374,7 +374,7 @@ + // code units, |status| will be U_BUFFER_OVERFLOW_ERROR and we'll try + // the conversion again, but with a sufficiently large buffer. + output_length = uidna_labelToUnicode( +- uidna, comp, static_cast(comp_len), &(*out)[original_length], ++ uidna, (const UChar*)comp, static_cast(comp_len), (UChar*)&(*out)[original_length], + output_length, &info, &status); + } while ((status == U_BUFFER_OVERFLOW_ERROR && info.errors == 0)); + +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/content/child/browser_font_resource_trusted.cc qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/content/child/browser_font_resource_trusted.cc +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/content/child/browser_font_resource_trusted.cc 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/content/child/browser_font_resource_trusted.cc 2017-12-25 23:58:54.555911585 +0100 +@@ -77,7 +77,7 @@ + } else { + bidi_ = ubidi_open(); + UErrorCode uerror = U_ZERO_ERROR; +- ubidi_setPara(bidi_, text_.data(), text_.size(), run.rtl, NULL, &uerror); ++ ubidi_setPara(bidi_, reinterpret_cast(text_.data()), text_.size(), run.rtl, NULL, &uerror); + if (U_SUCCESS(uerror)) + num_runs_ = ubidi_countRuns(bidi_, &uerror); + } +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/net/third_party/mozilla_security_manager/nsPKCS12Blob.cpp qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/net/third_party/mozilla_security_manager/nsPKCS12Blob.cpp +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/net/third_party/mozilla_security_manager/nsPKCS12Blob.cpp 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/net/third_party/mozilla_security_manager/nsPKCS12Blob.cpp 2017-12-26 00:00:40.801379288 +0100 +@@ -58,7 +58,7 @@ + // For the NSS PKCS#12 library, must convert PRUnichars (shorts) to + // a buffer of octets. Must handle byte order correctly. + // TODO: Is there a Mozilla way to do this? In the string lib? +-void unicodeToItem(const PRUnichar *uni, SECItem *item) ++void unicodeToItem(const base::char16 *uni, SECItem *item) + { + int len = 0; + while (uni[len++] != 0); +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/ppapi/proxy/pdf_resource.cc qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/ppapi/proxy/pdf_resource.cc +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/ppapi/proxy/pdf_resource.cc 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/ppapi/proxy/pdf_resource.cc 2017-12-26 00:00:40.801379288 +0100 +@@ -58,10 +58,10 @@ + PP_PrivateFindResult** results, int* count) { + if (locale_.empty()) + locale_ = GetLocale(); +- const base::char16* string = +- reinterpret_cast(input_string); +- const base::char16* term = +- reinterpret_cast(input_term); ++ const UChar* string = ++ reinterpret_cast(input_string); ++ const UChar* term = ++ reinterpret_cast(input_term); + + UErrorCode status = U_ZERO_ERROR; + UStringSearch* searcher = usearch_open(term, -1, string, -1, locale_.c_str(), +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/third_party/sfntly/src/cpp/src/sample/chromium/subsetter_impl.cc qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/third_party/sfntly/src/cpp/src/sample/chromium/subsetter_impl.cc +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/third_party/sfntly/src/cpp/src/sample/chromium/subsetter_impl.cc 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/third_party/sfntly/src/cpp/src/sample/chromium/subsetter_impl.cc 2017-12-26 00:02:54.958444442 +0100 +@@ -27,6 +27,7 @@ + #include + #include + ++#include "base/i18n/unicodestring.h" + #include "sfntly/table/bitmap/eblc_table.h" + #include "sfntly/table/bitmap/ebdt_table.h" + #include "sfntly/table/bitmap/index_sub_table.h" +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/exported/FilePathConversion.cpp qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/third_party/WebKit/Source/platform/exported/FilePathConversion.cpp +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/exported/FilePathConversion.cpp 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/third_party/WebKit/Source/platform/exported/FilePathConversion.cpp 2017-12-26 00:21:22.768467342 +0100 +@@ -19,7 +19,7 @@ + String str = web_string; + if (!str.Is8Bit()) { + return base::FilePath::FromUTF16Unsafe( +- base::StringPiece16(str.Characters16(), str.length())); ++ base::StringPiece16((const base::char16*)str.Characters16(), str.length())); + } + + #if defined(OS_POSIX) +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/exported/URLConversion.cpp qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/third_party/WebKit/Source/platform/exported/URLConversion.cpp +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/exported/URLConversion.cpp 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/third_party/WebKit/Source/platform/exported/URLConversion.cpp 2017-12-26 00:21:37.908248992 +0100 +@@ -23,7 +23,7 @@ + } + + // GURL can consume UTF-16 directly. +- return GURL(base::StringPiece16(str.Characters16(), str.length())); ++ return GURL(base::StringPiece16((const base::char16*)str.Characters16(), str.length())); + } + + } // namespace blink +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/exported/WebString.cpp qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/third_party/WebKit/Source/platform/exported/WebString.cpp +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/exported/WebString.cpp 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/third_party/WebKit/Source/platform/exported/WebString.cpp 2017-12-26 00:22:14.401722675 +0100 +@@ -59,7 +59,7 @@ + } + + void WebString::Assign(const WebUChar* data, size_t length) { +- Assign(StringImpl::Create8BitIfPossible(data, length).Get()); ++ Assign(StringImpl::Create8BitIfPossible((const UChar*)data, length).Get()); + } + + size_t WebString::length() const { +@@ -75,7 +75,7 @@ + } + + const WebUChar* WebString::Data16() const { +- return !private_.IsNull() && !Is8Bit() ? private_->Characters16() : 0; ++ return !private_.IsNull() && !Is8Bit() ? (const WebUChar*)private_->Characters16() : 0; + } + + std::string WebString::Utf8(UTF8ConversionMode mode) const { +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/LinkHash.cpp qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/third_party/WebKit/Source/platform/LinkHash.cpp +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/LinkHash.cpp 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/third_party/WebKit/Source/platform/LinkHash.cpp 2017-12-26 00:20:18.452394923 +0100 +@@ -51,7 +51,7 @@ + relative_utf8.length(), 0, buffer, &parsed); + } + return url::ResolveRelative(base_utf8.Data(), base_utf8.length(), +- base.GetParsed(), relative.Characters16(), ++ base.GetParsed(), (const base::char16*)relative.Characters16(), + relative.length(), 0, buffer, &parsed); + } + +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/weborigin/KURL.cpp qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/third_party/WebKit/Source/platform/weborigin/KURL.cpp +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/weborigin/KURL.cpp 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/third_party/WebKit/Source/platform/weborigin/KURL.cpp 2017-12-26 00:25:55.112547976 +0100 +@@ -104,7 +104,7 @@ + int input_length, + url::CanonOutput* output) override { + CString encoded = encoding_->Encode( +- String(input, input_length), WTF::kURLEncodedEntitiesForUnencodables); ++ String((const UChar*)input, input_length), WTF::kURLEncodedEntitiesForUnencodables); + output->Append(encoded.data(), static_cast(encoded.length())); + } + +@@ -341,7 +341,7 @@ + if (string_.Is8Bit()) + url::ExtractFileName(AsURLChar8Subtle(string_), path, &file); + else +- url::ExtractFileName(string_.Characters16(), path, &file); ++ url::ExtractFileName((const base::char16*)string_.Characters16(), path, &file); + + // Bug: https://bugs.webkit.org/show_bug.cgi?id=21015 this function returns + // a null string when the path is empty, which we duplicate here. +@@ -371,7 +371,7 @@ + DCHECK(!string_.IsNull()); + int port = string_.Is8Bit() + ? url::ParsePort(AsURLChar8Subtle(string_), parsed_.port) +- : url::ParsePort(string_.Characters16(), parsed_.port); ++ : url::ParsePort((const base::char16*)string_.Characters16(), parsed_.port); + DCHECK_NE(port, url::PORT_UNSPECIFIED); // Checked port.len <= 0 before. + + if (port == url::PORT_INVALID || +@@ -666,7 +666,7 @@ + return false; + return string_.Is8Bit() + ? url::IsStandard(AsURLChar8Subtle(string_), parsed_.scheme) +- : url::IsStandard(string_.Characters16(), parsed_.scheme); ++ : url::IsStandard((const base::char16*)string_.Characters16(), parsed_.scheme); + } + + bool EqualIgnoringFragmentIdentifier(const KURL& a, const KURL& b) { +@@ -719,7 +719,7 @@ + if (string_.Is8Bit()) + url::ExtractFileName(AsURLChar8Subtle(string_), parsed_.path, &filename); + else +- url::ExtractFileName(string_.Characters16(), parsed_.path, &filename); ++ url::ExtractFileName((const base::char16*)string_.Characters16(), parsed_.path, &filename); + return filename.begin; + } + +@@ -732,7 +732,7 @@ + if (url.Is8Bit()) + return url::FindAndCompareScheme(AsURLChar8Subtle(url), url.length(), + protocol, 0); +- return url::FindAndCompareScheme(url.Characters16(), url.length(), protocol, ++ return url::FindAndCompareScheme((const base::char16*)url.Characters16(), url.length(), protocol, + 0); + } + +@@ -765,7 +765,7 @@ + charset_converter, &output, &parsed_); + } else { + is_valid_ = url::ResolveRelative(base_utf8.Data(), base_utf8.length(), +- base.parsed_, relative.Characters16(), ++ base.parsed_, (const base::char16*)relative.Characters16(), + clampTo(relative.length()), + charset_converter, &output, &parsed_); + } +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/weborigin/SecurityOrigin.cpp qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/third_party/WebKit/Source/platform/weborigin/SecurityOrigin.cpp +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/weborigin/SecurityOrigin.cpp 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/third_party/WebKit/Source/platform/weborigin/SecurityOrigin.cpp 2017-12-26 00:27:48.865912016 +0100 +@@ -638,7 +638,7 @@ + url::CanonicalizeHost(utf8.Data(), url::Component(0, utf8.length()), + &canon_output, &out_host); + } else { +- *success = url::CanonicalizeHost(host.Characters16(), ++ *success = url::CanonicalizeHost(reinterpret_cast(host.Characters16()), + url::Component(0, host.length()), + &canon_output, &out_host); + } +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/wtf/text/AtomicString.h qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/third_party/WebKit/Source/platform/wtf/text/AtomicString.h +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/wtf/text/AtomicString.h 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/third_party/WebKit/Source/platform/wtf/text/AtomicString.h 2017-12-26 00:02:31.246786418 +0100 +@@ -66,9 +66,10 @@ + AtomicString(const LChar* chars, unsigned length); + AtomicString(const UChar* chars, unsigned length); + AtomicString(const UChar* chars); ++#if U_ICU_VERSION_MAJOR_NUM < 59 + AtomicString(const char16_t* chars) + : AtomicString(reinterpret_cast(chars)) {} +- ++#endif + template + explicit AtomicString(const Vector& vector) + : AtomicString(vector.data(), vector.size()) {} +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/wtf/text/StringView.h qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/third_party/WebKit/Source/platform/wtf/text/StringView.h +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/wtf/text/StringView.h 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/third_party/WebKit/Source/platform/wtf/text/StringView.h 2017-12-26 00:02:44.550594548 +0100 +@@ -83,8 +83,10 @@ + characters16_(chars), + length_(length) {} + StringView(const UChar* chars); ++#if U_ICU_VERSION_MAJOR_NUM < 59 + StringView(const char16_t* chars) + : StringView(reinterpret_cast(chars)) {} ++#endif + + #if DCHECK_IS_ON() + ~StringView(); +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/wtf/text/WTFString.h qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/third_party/WebKit/Source/platform/wtf/text/WTFString.h +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/wtf/text/WTFString.h 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/third_party/WebKit/Source/platform/wtf/text/WTFString.h 2017-12-26 00:33:00.427431253 +0100 +@@ -36,6 +36,8 @@ + #include + #include + ++#include "third_party/icu/source/common/unicode/uvernum.h" ++ + #ifdef __OBJC__ + #include + #endif +@@ -82,8 +84,13 @@ + + // Construct a string with UTF-16 data, from a null-terminated source. + String(const UChar*); ++#if U_ICU_VERSION_MAJOR_NUM < 59 + String(const char16_t* chars) + : String(reinterpret_cast(chars)) {} ++#else ++ String(const uint16_t* chars) ++ : String(reinterpret_cast(chars)) {} ++#endif + + // Construct a string with latin1 data. + String(const LChar* characters, unsigned length); +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/ui/base/accelerators/accelerator.cc qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/ui/base/accelerators/accelerator.cc +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/ui/base/accelerators/accelerator.cc 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/ui/base/accelerators/accelerator.cc 2017-12-26 00:02:54.958444442 +0100 +@@ -225,7 +225,7 @@ + key = LOWORD(::MapVirtualKeyW(key_code_, MAPVK_VK_TO_CHAR)); + shortcut += key; + #elif defined(USE_AURA) || defined(OS_MACOSX) +- const uint16_t c = DomCodeToUsLayoutCharacter( ++ const base::char16 c = DomCodeToUsLayoutCharacter( + UsLayoutKeyboardCodeToDomCode(key_code_), false); + if (c != 0) + shortcut += +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/ui/base/l10n/l10n_util.cc qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/ui/base/l10n/l10n_util.cc +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/ui/base/l10n/l10n_util.cc 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/ui/base/l10n/l10n_util.cc 2017-12-26 00:02:54.959444427 +0100 +@@ -581,7 +581,7 @@ + + int actual_size = uloc_getDisplayName( + locale_code.c_str(), display_locale.c_str(), +- base::WriteInto(&display_name, kBufferSize), kBufferSize - 1, &error); ++ (UChar*)base::WriteInto(&display_name, kBufferSize), kBufferSize - 1, &error); + DCHECK(U_SUCCESS(error)); + display_name.resize(actual_size); + } +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/ui/base/l10n/time_format.cc qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/ui/base/l10n/time_format.cc +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/ui/base/l10n/time_format.cc 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/ui/base/l10n/time_format.cc 2017-12-26 00:02:54.959444427 +0100 +@@ -141,7 +141,7 @@ + DCHECK_GT(capacity, 1); + base::string16 result; + UErrorCode error = U_ZERO_ERROR; +- time_string.extract(static_cast(base::WriteInto(&result, capacity)), ++ time_string.extract(reinterpret_cast(base::WriteInto(&result, capacity)), + capacity, error); + DCHECK(U_SUCCESS(error)); + return result; +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/ui/base/x/selection_utils.cc qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/ui/base/x/selection_utils.cc +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/ui/base/x/selection_utils.cc 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/ui/base/x/selection_utils.cc 2017-12-26 00:02:54.959444427 +0100 +@@ -207,8 +207,8 @@ + // If the data starts with 0xFEFF, i.e., Byte Order Mark, assume it is + // UTF-16, otherwise assume UTF-8. + if (size >= 2 && +- reinterpret_cast(data)[0] == 0xFEFF) { +- markup.assign(reinterpret_cast(data) + 1, ++ reinterpret_cast(data)[0] == 0xFEFF) { ++ markup.assign(reinterpret_cast(data) + 1, + (size / 2) - 1); + } else { + base::UTF8ToUTF16(reinterpret_cast(data), size, &markup); +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/url/url_canon_icu.cc qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/url/url_canon_icu.cc +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/url/url_canon_icu.cc 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/url/url_canon_icu.cc 2017-12-26 00:02:54.959444427 +0100 +@@ -133,7 +133,7 @@ + UErrorCode err = U_ZERO_ERROR; + char* dest = &output->data()[begin_offset]; + int required_capacity = ucnv_fromUChars(converter_, dest, dest_capacity, +- input, input_len, &err); ++ (const UChar*)input, input_len, &err); + if (err != U_BUFFER_OVERFLOW_ERROR) { + output->set_length(begin_offset + required_capacity); + return; +@@ -170,7 +170,7 @@ + while (true) { + UErrorCode err = U_ZERO_ERROR; + UIDNAInfo info = UIDNA_INFO_INITIALIZER; +- int output_length = uidna_nameToASCII(uidna, src, src_len, output->data(), ++ int output_length = uidna_nameToASCII(uidna, (const UChar*)src, src_len, (UChar*)output->data(), + output->capacity(), &info, &err); + if (U_SUCCESS(err) && info.errors == 0) { + output->set_length(output_length); +diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/v8/src/runtime/runtime-intl.cc qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/v8/src/runtime/runtime-intl.cc +--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/v8/src/runtime/runtime-intl.cc 2017-11-28 14:06:53.000000000 +0100 ++++ qtwebengine-everywhere-src-5.10.0-icu59/src/3rdparty/chromium/v8/src/runtime/runtime-intl.cc 2017-12-26 00:38:34.568625756 +0100 +@@ -43,6 +43,7 @@ + #include "unicode/ucurr.h" + #include "unicode/uloc.h" + #include "unicode/unistr.h" ++#include "unicode/ustring.h" + #include "unicode/unum.h" + #include "unicode/uvernum.h" + #include "unicode/uversion.h"