summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJimi Huotari <chiitoo@gentoo.org>2018-03-16 16:28:03 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2018-05-23 13:31:33 +0200
commit4641ad76e87c5c50f6dd9f0890afddf6260fccc9 (patch)
treee9cf104a1333ffac1c2fd8ff2161af53dd956190
parent876c25d3fe6ff2478a7212e4afff2463fcf638cc (diff)
downloadqtwebengine-chromium-4641ad76e87c5c50f6dd9f0890afddf6260fccc9.tar.gz
Fix compilation with system ICU 59
This is basically commit 363741cffb565dd6cfc2f95054c25a434b101dba from 56-based, with the required modifications due to code changes. Borrowing the original commit message: ICU 59 changed the UChar type to be char16_t instead of uint16_t and that causes a mismatch of types all over Chromium. Unfortunately the upstream patches can not be used as Chromium only got part way in https://codereview.chromium.org/2740673002, and then gave up and simply patched their copy of ICU 59 to not change that. Task-number: QTBUG-65090 Change-Id: Icbe46fa33bf56fc3a5aedd5b6004fc029fa24930 Reviewed-by: Jimi Huotari <chiitoo@gentoo.org> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
-rw-r--r--chromium/base/i18n/bidi_line_iterator.cc2
-rw-r--r--chromium/base/i18n/break_iterator.cc8
-rw-r--r--chromium/base/i18n/case_conversion.cc4
-rw-r--r--chromium/base/i18n/icu_string_conversions.cc4
-rw-r--r--chromium/base/i18n/rtl.cc8
-rw-r--r--chromium/base/i18n/string_search.cc7
-rw-r--r--chromium/base/i18n/unicodestring.h2
-rw-r--r--chromium/components/url_formatter/idn_spoof_checker.cc4
-rw-r--r--chromium/components/url_formatter/url_formatter.cc2
-rw-r--r--chromium/content/child/browser_font_resource_trusted.cc3
-rw-r--r--chromium/ppapi/proxy/pdf_resource.cc8
-rw-r--r--chromium/third_party/blink/renderer/platform/exported/file_path_conversion.cc2
-rw-r--r--chromium/third_party/blink/renderer/platform/exported/url_conversion.cc2
-rw-r--r--chromium/third_party/blink/renderer/platform/exported/web_string.cc4
-rw-r--r--chromium/third_party/blink/renderer/platform/graphics/logging_canvas.cc2
-rw-r--r--chromium/third_party/blink/renderer/platform/link_hash.cc2
-rw-r--r--chromium/third_party/blink/renderer/platform/weborigin/kurl.cc14
-rw-r--r--chromium/third_party/blink/renderer/platform/weborigin/security_origin.cc2
-rw-r--r--chromium/third_party/blink/renderer/platform/wtf/text/atomic_string.h2
-rw-r--r--chromium/third_party/blink/renderer/platform/wtf/text/string_view.h2
-rw-r--r--chromium/third_party/blink/renderer/platform/wtf/text/wtf_string.h10
-rw-r--r--chromium/ui/base/l10n/l10n_util.cc2
-rw-r--r--chromium/ui/base/l10n/time_format.cc2
-rw-r--r--chromium/url/url_canon_icu.cc4
24 files changed, 58 insertions, 44 deletions
diff --git a/chromium/base/i18n/bidi_line_iterator.cc b/chromium/base/i18n/bidi_line_iterator.cc
index 3f7f8686614..7b171585aba 100644
--- a/chromium/base/i18n/bidi_line_iterator.cc
+++ b/chromium/base/i18n/bidi_line_iterator.cc
@@ -89,7 +89,7 @@ bool BiDiLineIterator::Open(const string16& text,
return false;
}
- ubidi_setPara(bidi_, text.data(), static_cast<int>(text.length()),
+ ubidi_setPara(bidi_, reinterpret_cast<const UChar*>(text.data()), static_cast<int>(text.length()),
GetParagraphLevelForDirection(direction), nullptr, &error);
return (U_SUCCESS(error));
}
diff --git a/chromium/base/i18n/break_iterator.cc b/chromium/base/i18n/break_iterator.cc
index 251cd002e7b..82c48272dd2 100644
--- a/chromium/base/i18n/break_iterator.cc
+++ b/chromium/base/i18n/break_iterator.cc
@@ -57,9 +57,9 @@ bool BreakIterator::Init() {
return false;
}
if (break_type_ == RULE_BASED) {
- iter_ = ubrk_openRules(rules_.c_str(),
+ iter_ = ubrk_openRules(reinterpret_cast<const UChar*>(rules_.c_str()),
static_cast<int32_t>(rules_.length()),
- string_.data(),
+ reinterpret_cast<const UChar*>(string_.data()),
static_cast<int32_t>(string_.size()),
&parse_error,
&status);
@@ -68,7 +68,7 @@ bool BreakIterator::Init() {
<< parse_error.line << ", offset " << parse_error.offset;
}
} else {
- iter_ = ubrk_open(break_type, nullptr, string_.data(),
+ iter_ = ubrk_open(break_type, nullptr, reinterpret_cast<const UChar*>(string_.data()),
static_cast<int32_t>(string_.size()), &status);
if (U_FAILURE(status)) {
NOTREACHED() << "ubrk_open failed for type " << break_type
@@ -123,7 +123,7 @@ bool BreakIterator::Advance() {
bool BreakIterator::SetText(const base::char16* text, const size_t length) {
UErrorCode status = U_ZERO_ERROR;
ubrk_setText(static_cast<UBreakIterator*>(iter_),
- text, length, &status);
+ reinterpret_cast<const UChar*>(text), length, &status);
pos_ = 0; // implicit when ubrk_setText is done
prev_ = npos;
if (U_FAILURE(status)) {
diff --git a/chromium/base/i18n/case_conversion.cc b/chromium/base/i18n/case_conversion.cc
index a4a104cf97e..0ae4c3bea74 100644
--- a/chromium/base/i18n/case_conversion.cc
+++ b/chromium/base/i18n/case_conversion.cc
@@ -64,8 +64,8 @@ string16 CaseMap(StringPiece16 string, CaseMapperFunction case_mapper) {
// 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<int32_t>(dest.size()),
- string.data(), saturated_cast<int32_t>(string.size()),
+ reinterpret_cast<UChar*>(&dest[0]), saturated_cast<int32_t>(dest.size()),
+ reinterpret_cast<const UChar*>(string.data()), saturated_cast<int32_t>(string.size()),
&error);
dest.resize(new_length);
} while (error == U_BUFFER_OVERFLOW_ERROR);
diff --git a/chromium/base/i18n/icu_string_conversions.cc b/chromium/base/i18n/icu_string_conversions.cc
index 6ec99803a81..2fc27212083 100644
--- a/chromium/base/i18n/icu_string_conversions.cc
+++ b/chromium/base/i18n/icu_string_conversions.cc
@@ -151,7 +151,7 @@ bool UTF16ToCodepage(const string16& utf16,
if (!U_SUCCESS(status))
return false;
- return ConvertFromUTF16(converter, utf16.c_str(),
+ return ConvertFromUTF16(converter, reinterpret_cast<const UChar*>(utf16.c_str()),
static_cast<int>(utf16.length()), on_error, encoded);
}
@@ -178,7 +178,7 @@ bool CodepageToUTF16(const std::string& encoded,
SetUpErrorHandlerForToUChars(on_error, converter, &status);
std::unique_ptr<char16[]> buffer(new char16[uchar_max_length]);
- int actual_size = ucnv_toUChars(converter, buffer.get(),
+ int actual_size = ucnv_toUChars(converter, reinterpret_cast<UChar*>(buffer.get()),
static_cast<int>(uchar_max_length), encoded.data(),
static_cast<int>(encoded.length()), &status);
ucnv_close(converter);
diff --git a/chromium/base/i18n/rtl.cc b/chromium/base/i18n/rtl.cc
index bba0d449cb6..b1db86f8ed3 100644
--- a/chromium/base/i18n/rtl.cc
+++ b/chromium/base/i18n/rtl.cc
@@ -217,7 +217,7 @@ TextDirection GetTextDirectionForLocale(const char* locale_name) {
}
TextDirection GetFirstStrongCharacterDirection(const string16& text) {
- const UChar* string = text.c_str();
+ const UChar* string = reinterpret_cast<const UChar*>(text.c_str());
size_t length = text.length();
size_t position = 0;
while (position < length) {
@@ -233,7 +233,7 @@ TextDirection GetFirstStrongCharacterDirection(const string16& text) {
}
TextDirection GetLastStrongCharacterDirection(const string16& text) {
- const UChar* string = text.c_str();
+ const UChar* string = reinterpret_cast<const UChar*>(text.c_str());
size_t position = text.length();
while (position > 0) {
UChar32 character;
@@ -248,7 +248,7 @@ TextDirection GetLastStrongCharacterDirection(const string16& text) {
}
TextDirection GetStringDirection(const string16& text) {
- const UChar* string = text.c_str();
+ const UChar* string = reinterpret_cast<const UChar*>(text.c_str());
size_t length = text.length();
size_t position = 0;
@@ -398,7 +398,7 @@ void SanitizeUserSuppliedString(string16* text) {
}
bool StringContainsStrongRTLChars(const string16& text) {
- const UChar* string = text.c_str();
+ const UChar* string = reinterpret_cast<const UChar*>(text.c_str());
size_t length = text.length();
size_t position = 0;
while (position < length) {
diff --git a/chromium/base/i18n/string_search.cc b/chromium/base/i18n/string_search.cc
index 2f6fee4fe61..df28d0f3ddb 100644
--- a/chromium/base/i18n/string_search.cc
+++ b/chromium/base/i18n/string_search.cc
@@ -20,8 +20,9 @@ FixedPatternStringSearchIgnoringCaseAndAccents(const string16& find_this)
const string16& dummy = find_this_;
UErrorCode status = U_ZERO_ERROR;
- search_ = usearch_open(find_this_.data(), find_this_.size(), dummy.data(),
- dummy.size(), uloc_getDefault(),
+ search_ = usearch_open(reinterpret_cast<const UChar*>(find_this_.data()), find_this_.size(),
+ reinterpret_cast<const UChar*>(dummy.data()), dummy.size(),
+ uloc_getDefault(),
nullptr, // breakiter
&status);
if (U_SUCCESS(status)) {
@@ -40,7 +41,7 @@ FixedPatternStringSearchIgnoringCaseAndAccents::
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<const UChar *>(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 --git a/chromium/base/i18n/unicodestring.h b/chromium/base/i18n/unicodestring.h
index b62c5264deb..bb5233c4865 100644
--- a/chromium/base/i18n/unicodestring.h
+++ b/chromium/base/i18n/unicodestring.h
@@ -18,7 +18,7 @@ namespace i18n {
inline string16 UnicodeStringToString16(const icu::UnicodeString& unistr) {
#if U_ICU_VERSION_MAJOR_NUM >= 59
- return base::string16(icu::toUCharPtr(unistr.getBuffer()),
+ return base::string16(reinterpret_cast<const char16*>(unistr.getBuffer()),
static_cast<size_t>(unistr.length()));
#else
return base::string16(unistr.getBuffer(),
diff --git a/chromium/components/url_formatter/idn_spoof_checker.cc b/chromium/components/url_formatter/idn_spoof_checker.cc
index 97b11719004..bee2d5b044b 100644
--- a/chromium/components/url_formatter/idn_spoof_checker.cc
+++ b/chromium/components/url_formatter/idn_spoof_checker.cc
@@ -199,14 +199,14 @@ bool IDNSpoofChecker::SafeToDisplayAsUnicode(base::StringPiece16 label,
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<int32_t>(label.size()), nullptr, &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<int32_t>(label.size()));
// A punycode label with 'xn--' prefix is not subject to the URL
diff --git a/chromium/components/url_formatter/url_formatter.cc b/chromium/components/url_formatter/url_formatter.cc
index 42f438eb067..016d2fe2414 100644
--- a/chromium/components/url_formatter/url_formatter.cc
+++ b/chromium/components/url_formatter/url_formatter.cc
@@ -374,7 +374,7 @@ bool IDNToUnicodeOneComponent(const base::char16* comp,
// 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<int32_t>(comp_len), &(*out)[original_length],
+ uidna, (const UChar*)comp, static_cast<int32_t>(comp_len), (UChar*)&(*out)[original_length],
output_length, &info, &status);
} while ((status == U_BUFFER_OVERFLOW_ERROR && info.errors == 0));
diff --git a/chromium/content/child/browser_font_resource_trusted.cc b/chromium/content/child/browser_font_resource_trusted.cc
index fb4a65c7f5e..56985bd5433 100644
--- a/chromium/content/child/browser_font_resource_trusted.cc
+++ b/chromium/content/child/browser_font_resource_trusted.cc
@@ -76,8 +76,7 @@ class TextRunCollection {
} else {
bidi_ = ubidi_open();
UErrorCode uerror = U_ZERO_ERROR;
- ubidi_setPara(bidi_, text_.data(), text_.size(), run.rtl, nullptr,
- &uerror);
+ ubidi_setPara(bidi_, reinterpret_cast<const UChar*>(text_.data()), text_.size(), run.rtl, nullptr, &uerror);
if (U_SUCCESS(uerror))
num_runs_ = ubidi_countRuns(bidi_, &uerror);
}
diff --git a/chromium/ppapi/proxy/pdf_resource.cc b/chromium/ppapi/proxy/pdf_resource.cc
index 75e0f3fe75e..c195237c6ee 100644
--- a/chromium/ppapi/proxy/pdf_resource.cc
+++ b/chromium/ppapi/proxy/pdf_resource.cc
@@ -59,10 +59,10 @@ void PDFResource::SearchString(const unsigned short* input_string,
uint32_t* count) {
if (locale_.empty())
locale_ = GetLocale();
- const base::char16* string =
- reinterpret_cast<const base::char16*>(input_string);
- const base::char16* term =
- reinterpret_cast<const base::char16*>(input_term);
+ const UChar* string =
+ reinterpret_cast<const UChar*>(input_string);
+ const UChar* term =
+ reinterpret_cast<const UChar*>(input_term);
UErrorCode status = U_ZERO_ERROR;
UStringSearch* searcher = usearch_open(term, -1, string, -1, locale_.c_str(),
diff --git a/chromium/third_party/blink/renderer/platform/exported/file_path_conversion.cc b/chromium/third_party/blink/renderer/platform/exported/file_path_conversion.cc
index ad589bdfad6..2d19fb14073 100644
--- a/chromium/third_party/blink/renderer/platform/exported/file_path_conversion.cc
+++ b/chromium/third_party/blink/renderer/platform/exported/file_path_conversion.cc
@@ -19,7 +19,7 @@ base::FilePath WebStringToFilePath(const WebString& web_string) {
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 --git a/chromium/third_party/blink/renderer/platform/exported/url_conversion.cc b/chromium/third_party/blink/renderer/platform/exported/url_conversion.cc
index 4b149343d90..4cba8904f1d 100644
--- a/chromium/third_party/blink/renderer/platform/exported/url_conversion.cc
+++ b/chromium/third_party/blink/renderer/platform/exported/url_conversion.cc
@@ -23,7 +23,7 @@ GURL WebStringToGURL(const WebString& web_string) {
}
// 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 --git a/chromium/third_party/blink/renderer/platform/exported/web_string.cc b/chromium/third_party/blink/renderer/platform/exported/web_string.cc
index cddf917e560..28346feca51 100644
--- a/chromium/third_party/blink/renderer/platform/exported/web_string.cc
+++ b/chromium/third_party/blink/renderer/platform/exported/web_string.cc
@@ -57,7 +57,7 @@ WebString& WebString::operator=(const WebString&) = default;
WebString& WebString::operator=(WebString&&) = default;
WebString::WebString(const WebUChar* data, size_t len)
- : impl_(StringImpl::Create8BitIfPossible(data, len)) {}
+ : impl_(StringImpl::Create8BitIfPossible((const UChar*)data, len)) {}
void WebString::Reset() {
impl_ = nullptr;
@@ -76,7 +76,7 @@ const WebLChar* WebString::Data8() const {
}
const WebUChar* WebString::Data16() const {
- return impl_ && !Is8Bit() ? impl_->Characters16() : nullptr;
+ return impl_ && !Is8Bit() ? (const WebUChar*)impl_->Characters16() : nullptr;
}
std::string WebString::Utf8(UTF8ConversionMode mode) const {
diff --git a/chromium/third_party/blink/renderer/platform/graphics/logging_canvas.cc b/chromium/third_party/blink/renderer/platform/graphics/logging_canvas.cc
index 89b92fa9686..aa06984267c 100644
--- a/chromium/third_party/blink/renderer/platform/graphics/logging_canvas.cc
+++ b/chromium/third_party/blink/renderer/platform/graphics/logging_canvas.cc
@@ -531,7 +531,7 @@ String StringForUTF32LEText(const void* text, size_t byte_length) {
utf16 = icu::UnicodeString::fromUTF32(reinterpret_cast<const UChar32*>(text),
static_cast<int32_t>(byte_length));
#endif
- return String(icu::toUCharPtr(utf16.getBuffer()),
+ return String(utf16.getBuffer(),
static_cast<unsigned>(utf16.length()));
}
diff --git a/chromium/third_party/blink/renderer/platform/link_hash.cc b/chromium/third_party/blink/renderer/platform/link_hash.cc
index 17328c195dc..af088e28235 100644
--- a/chromium/third_party/blink/renderer/platform/link_hash.cc
+++ b/chromium/third_party/blink/renderer/platform/link_hash.cc
@@ -51,7 +51,7 @@ static bool ResolveRelative(const KURL& base,
relative_utf8.Data(), relative_utf8.length(), nullptr, buffer, &parsed);
}
return url::ResolveRelative(base_utf8.Data(), base_utf8.length(),
- base.GetParsed(), relative.Characters16(),
+ base.GetParsed(), (const base::char16*)relative.Characters16(),
relative.length(), nullptr, buffer, &parsed);
}
diff --git a/chromium/third_party/blink/renderer/platform/weborigin/kurl.cc b/chromium/third_party/blink/renderer/platform/weborigin/kurl.cc
index 09d31ec610b..02c670e8f4f 100644
--- a/chromium/third_party/blink/renderer/platform/weborigin/kurl.cc
+++ b/chromium/third_party/blink/renderer/platform/weborigin/kurl.cc
@@ -105,7 +105,7 @@ class KURLCharsetConverter final : public url::CharsetConverter {
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<int>(encoded.length()));
}
@@ -335,7 +335,7 @@ String KURL::LastPathComponent() const {
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.
@@ -365,7 +365,7 @@ unsigned short KURL::Port() const {
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 ||
@@ -658,7 +658,7 @@ bool KURL::IsHierarchical() const {
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) {
@@ -711,7 +711,7 @@ unsigned KURL::PathAfterLastSlash() const {
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;
}
@@ -725,7 +725,7 @@ bool ProtocolIs(const String& url, const char* protocol) {
return url::FindAndCompareScheme(AsURLChar8Subtle(url), url.length(),
protocol, nullptr);
}
- return url::FindAndCompareScheme(url.Characters16(), url.length(), protocol,
+ return url::FindAndCompareScheme((const base::char16*)url.Characters16(), url.length(), protocol,
nullptr);
}
@@ -758,7 +758,7 @@ void KURL::Init(const KURL& base,
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<int>(relative.length()),
charset_converter, &output, &parsed_);
}
diff --git a/chromium/third_party/blink/renderer/platform/weborigin/security_origin.cc b/chromium/third_party/blink/renderer/platform/weborigin/security_origin.cc
index ec5c4b4b106..513c2f34f1c 100644
--- a/chromium/third_party/blink/renderer/platform/weborigin/security_origin.cc
+++ b/chromium/third_party/blink/renderer/platform/weborigin/security_origin.cc
@@ -522,7 +522,7 @@ String SecurityOrigin::CanonicalizeHost(const String& host, bool* success) {
url::CanonicalizeHost(utf8.Data(), url::Component(0, utf8.length()),
&canon_output, &out_host);
} else {
- *success = url::CanonicalizeHost(host.Characters16(),
+ *success = url::CanonicalizeHost(reinterpret_cast<const base::char16 *>(host.Characters16()),
url::Component(0, host.length()),
&canon_output, &out_host);
}
diff --git a/chromium/third_party/blink/renderer/platform/wtf/text/atomic_string.h b/chromium/third_party/blink/renderer/platform/wtf/text/atomic_string.h
index 837d1a82a20..9b261a96c3e 100644
--- a/chromium/third_party/blink/renderer/platform/wtf/text/atomic_string.h
+++ b/chromium/third_party/blink/renderer/platform/wtf/text/atomic_string.h
@@ -66,8 +66,10 @@ class WTF_EXPORT AtomicString {
AtomicString(const LChar* chars, unsigned length);
AtomicString(const UChar* chars, unsigned length);
AtomicString(const UChar* chars);
+#if (U_ICU_VERSION_MAJOR_NUM < 59) || !defined(USING_SYSTEM_ICU)
AtomicString(const char16_t* chars)
: AtomicString(reinterpret_cast<const UChar*>(chars)) {}
+#endif
template <size_t inlineCapacity>
explicit AtomicString(const Vector<UChar, inlineCapacity>& vector)
diff --git a/chromium/third_party/blink/renderer/platform/wtf/text/string_view.h b/chromium/third_party/blink/renderer/platform/wtf/text/string_view.h
index ea7e299075d..1b1696f0aa5 100644
--- a/chromium/third_party/blink/renderer/platform/wtf/text/string_view.h
+++ b/chromium/third_party/blink/renderer/platform/wtf/text/string_view.h
@@ -83,8 +83,10 @@ class WTF_EXPORT StringView {
characters16_(chars),
length_(length) {}
StringView(const UChar* chars);
+#if (U_ICU_VERSION_MAJOR_NUM < 59) || !defined(USING_SYSTEM_ICU)
StringView(const char16_t* chars)
: StringView(reinterpret_cast<const UChar*>(chars)) {}
+#endif
#if DCHECK_IS_ON()
~StringView();
diff --git a/chromium/third_party/blink/renderer/platform/wtf/text/wtf_string.h b/chromium/third_party/blink/renderer/platform/wtf/text/wtf_string.h
index dc7153ed13c..683b3f3727c 100644
--- a/chromium/third_party/blink/renderer/platform/wtf/text/wtf_string.h
+++ b/chromium/third_party/blink/renderer/platform/wtf/text/wtf_string.h
@@ -35,6 +35,7 @@
#include "third_party/blink/renderer/platform/wtf/text/string_view.h"
#include "third_party/blink/renderer/platform/wtf/wtf_export.h"
+#include "third_party/icu/source/common/unicode/uvernum.h"
#ifdef __OBJC__
#include <objc/objc.h>
#endif
@@ -68,6 +69,10 @@ class WTF_EXPORT String {
// Construct a string with UTF-16 data.
String(const UChar* characters, unsigned length);
+#if (U_ICU_VERSION_MAJOR_NUM < 59) || !defined(USING_SYSTEM_ICU)
+ String(const char16_t* chars, unsigned length)
+ : String(reinterpret_cast<const UChar*>(chars), length) {}
+#endif
// Construct a string by copying the contents of a vector.
// This method will never create a null string. Vectors with size() == 0
@@ -81,8 +86,13 @@ class WTF_EXPORT String {
// Construct a string with UTF-16 data, from a null-terminated source.
String(const UChar*);
+#if (U_ICU_VERSION_MAJOR_NUM < 59) || !defined(USING_SYSTEM_ICU)
String(const char16_t* chars)
: String(reinterpret_cast<const UChar*>(chars)) {}
+#else
+ String(const uint16_t* chars)
+ : String(reinterpret_cast<const UChar*>(chars)) {}
+#endif
// Construct a string with latin1 data.
String(const LChar* characters, unsigned length);
diff --git a/chromium/ui/base/l10n/l10n_util.cc b/chromium/ui/base/l10n/l10n_util.cc
index 31b33c03f25..506c09a748a 100644
--- a/chromium/ui/base/l10n/l10n_util.cc
+++ b/chromium/ui/base/l10n/l10n_util.cc
@@ -583,7 +583,7 @@ base::string16 GetDisplayNameForLocale(const std::string& locale,
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 --git a/chromium/ui/base/l10n/time_format.cc b/chromium/ui/base/l10n/time_format.cc
index 58e4c9431bf..b91dc21c64c 100644
--- a/chromium/ui/base/l10n/time_format.cc
+++ b/chromium/ui/base/l10n/time_format.cc
@@ -140,7 +140,7 @@ base::string16 TimeFormat::DetailedWithMonthAndYear(
DCHECK_GT(capacity, 1);
base::string16 result;
UErrorCode error = U_ZERO_ERROR;
- time_string.extract(static_cast<UChar*>(base::WriteInto(&result, capacity)),
+ time_string.extract(reinterpret_cast<UChar*>(base::WriteInto(&result, capacity)),
capacity, error);
DCHECK(U_SUCCESS(error));
return result;
diff --git a/chromium/url/url_canon_icu.cc b/chromium/url/url_canon_icu.cc
index 254d7e44bd1..9b06e952bbf 100644
--- a/chromium/url/url_canon_icu.cc
+++ b/chromium/url/url_canon_icu.cc
@@ -137,7 +137,7 @@ void ICUCharsetConverter::ConvertFromUTF16(const base::char16* input,
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;
@@ -174,7 +174,7 @@ bool IDNToASCII(const base::char16* src, int src_len, CanonOutputW* output) {
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);