summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2017-06-09 14:04:45 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2017-06-13 10:29:50 +0000
commit363741cffb565dd6cfc2f95054c25a434b101dba (patch)
tree1aa4c36286f7c2481953cdf8c6f5e41c3977a938
parente38fb8ef1a23f886cda8ccabb456145ece787f54 (diff)
Fix compilation with system ICU 59
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-60886 Change-Id: I5d082a9ee47e34f37c33e6b27542aa7631933acc Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
-rw-r--r--chromium/base/BUILD.gn9
-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.cc8
-rw-r--r--chromium/base/i18n/message_formatter.cc5
-rw-r--r--chromium/base/i18n/number_formatting.cc5
-rw-r--r--chromium/base/i18n/rtl.cc8
-rw-r--r--chromium/base/i18n/string_compare.cc5
-rw-r--r--chromium/base/i18n/string_search.cc6
-rw-r--r--chromium/base/i18n/time_formatting.cc9
-rw-r--r--chromium/base/i18n/time_formatting_unittest.cc1
-rw-r--r--chromium/base/i18n/timezone.cc4
-rw-r--r--chromium/base/i18n/unicodestring.h28
-rw-r--r--chromium/components/autofill/core/browser/autofill_profile_comparator.cc3
-rw-r--r--chromium/components/autofill/core/browser/credit_card.cc5
-rw-r--r--chromium/components/url_formatter/url_formatter.cc6
-rw-r--r--chromium/content/browser/android/date_time_chooser_android.cc4
-rw-r--r--chromium/content/child/browser_font_resource_trusted.cc2
-rw-r--r--chromium/content/renderer/android/email_detector.cc4
-rw-r--r--chromium/net/ftp/ftp_util.cc5
-rw-r--r--chromium/net/third_party/mozilla_security_manager/nsPKCS12Blob.cpp2
-rw-r--r--chromium/ppapi/proxy/pdf_resource.cc8
-rw-r--r--chromium/third_party/WebKit/Source/platform/LinkHash.cpp2
-rw-r--r--chromium/third_party/WebKit/Source/platform/exported/FilePathConversion.cpp2
-rw-r--r--chromium/third_party/WebKit/Source/platform/exported/URLConversion.cpp2
-rw-r--r--chromium/third_party/WebKit/Source/platform/exported/WebString.cpp4
-rw-r--r--chromium/third_party/WebKit/Source/platform/weborigin/KURL.cpp14
-rw-r--r--chromium/third_party/WebKit/Source/platform/weborigin/SecurityOrigin.cpp2
-rw-r--r--chromium/third_party/WebKit/Source/wtf/text/AtomicString.h3
-rw-r--r--chromium/third_party/WebKit/Source/wtf/text/StringView.h2
-rw-r--r--chromium/third_party/WebKit/Source/wtf/text/WTFString.h7
-rw-r--r--chromium/third_party/sfntly/src/cpp/src/sample/chromium/subsetter_impl.cc1
-rw-r--r--chromium/ui/base/accelerators/accelerator.cc2
-rw-r--r--chromium/ui/base/l10n/l10n_util.cc2
-rw-r--r--chromium/ui/base/l10n/time_format.cc2
-rw-r--r--chromium/ui/base/x/selection_utils.cc4
-rw-r--r--chromium/url/url_canon_icu.cc4
-rw-r--r--chromium/v8/src/runtime/runtime-i18n.cc1
39 files changed, 125 insertions, 70 deletions
diff --git a/chromium/base/BUILD.gn b/chromium/base/BUILD.gn
index f2672cba792..97f62fd6992 100644
--- a/chromium/base/BUILD.gn
+++ b/chromium/base/BUILD.gn
@@ -103,6 +103,10 @@ if (is_nacl) {
configs += [ ":base_implementation" ]
+ if (!is_win) {
+ deps = [ "//third_party/icu:icuuc" ]
+ }
+
visibility = [ ":base" ]
}
}
@@ -1065,6 +1069,10 @@ component("base") {
":debugging_flags",
]
+ if (!is_win) {
+ public_deps += [ "//third_party/icu:icuuc" ]
+ }
+
# Needed for <atomic> if using newer C++ library than sysroot
if (!use_sysroot && (is_android || is_linux) && !use_qt) {
libs = [ "atomic" ]
@@ -1564,6 +1572,7 @@ component("i18n") {
"i18n/time_formatting.h",
"i18n/timezone.cc",
"i18n/timezone.h",
+ "i18n/unicodestring.h",
"i18n/utf8_validator_tables.cc",
"i18n/utf8_validator_tables.h",
]
diff --git a/chromium/base/i18n/bidi_line_iterator.cc b/chromium/base/i18n/bidi_line_iterator.cc
index 216129e8b88..e7121935f81 100644
--- a/chromium/base/i18n/bidi_line_iterator.cc
+++ b/chromium/base/i18n/bidi_line_iterator.cc
@@ -44,7 +44,7 @@ bool BiDiLineIterator::Open(const string16& text, TextDirection direction) {
bidi_ = ubidi_openSized(static_cast<int>(text.length()), 0, &error);
if (U_FAILURE(error))
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), NULL, &error);
return (U_SUCCESS(error) == TRUE);
}
diff --git a/chromium/base/i18n/break_iterator.cc b/chromium/base/i18n/break_iterator.cc
index 869390fec37..3ee6e7cf192 100644
--- a/chromium/base/i18n/break_iterator.cc
+++ b/chromium/base/i18n/break_iterator.cc
@@ -59,9 +59,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);
@@ -72,7 +72,7 @@ bool BreakIterator::Init() {
} else {
iter_ = ubrk_open(break_type,
NULL,
- string_.data(),
+ reinterpret_cast<const UChar*>(string_.data()),
static_cast<int32_t>(string_.size()),
&status);
if (U_FAILURE(status)) {
@@ -128,7 +128,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 9b7ce80537d..0ff369084f0 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 be82db2a956..1db3c508bb0 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);
@@ -205,8 +205,8 @@ bool ConvertToUtf8AndNormalize(const std::string& text,
string16 normalized_utf16;
std::unique_ptr<char16[]> buffer(new char16[max_length]);
int actual_length = unorm_normalize(
- utf16.c_str(), utf16.length(), UNORM_NFC, 0,
- buffer.get(), static_cast<int>(max_length), &status);
+ reinterpret_cast<const UChar*>(utf16.c_str()), utf16.length(), UNORM_NFC, 0,
+ reinterpret_cast<UChar*>(buffer.get()), static_cast<int>(max_length), &status);
if (!U_SUCCESS(status))
return false;
normalized_utf16.assign(buffer.get(), actual_length);
diff --git a/chromium/base/i18n/message_formatter.cc b/chromium/base/i18n/message_formatter.cc
index 702e51b94aa..6962a282975 100644
--- a/chromium/base/i18n/message_formatter.cc
+++ b/chromium/base/i18n/message_formatter.cc
@@ -4,6 +4,7 @@
#include "base/i18n/message_formatter.h"
+#include "base/i18n/unicodestring.h"
#include "base/logging.h"
#include "base/numerics/safe_conversions.h"
#include "base/time/time.h"
@@ -91,7 +92,7 @@ string16 MessageFormatter::FormatWithNumberedArgs(
<< u_errorName(error);
return string16();
}
- return string16(formatted.getBuffer(), formatted.length());
+ return i18n::UnicodeStringToString16(formatted);
}
string16 MessageFormatter::FormatWithNamedArgs(
@@ -134,7 +135,7 @@ string16 MessageFormatter::FormatWithNamedArgs(
<< u_errorName(error);
return string16();
}
- return string16(formatted.getBuffer(), formatted.length());
+ return i18n::UnicodeStringToString16(formatted);
}
} // namespace i18n
diff --git a/chromium/base/i18n/number_formatting.cc b/chromium/base/i18n/number_formatting.cc
index b5108334846..5a0503f77de 100644
--- a/chromium/base/i18n/number_formatting.cc
+++ b/chromium/base/i18n/number_formatting.cc
@@ -10,6 +10,7 @@
#include "base/format_macros.h"
#include "base/i18n/message_formatter.h"
+#include "base/i18n/unicodestring.h"
#include "base/lazy_instance.h"
#include "base/logging.h"
#include "base/strings/string_util.h"
@@ -60,7 +61,7 @@ string16 FormatNumber(int64_t number) {
icu::UnicodeString ustr;
number_format->format(number, ustr);
- return string16(ustr.getBuffer(), static_cast<size_t>(ustr.length()));
+ return i18n::UnicodeStringToString16(ustr);
}
string16 FormatDouble(double number, int fractional_digits) {
@@ -76,7 +77,7 @@ string16 FormatDouble(double number, int fractional_digits) {
icu::UnicodeString ustr;
number_format->format(number, ustr);
- return string16(ustr.getBuffer(), static_cast<size_t>(ustr.length()));
+ return i18n::UnicodeStringToString16(ustr);
}
string16 FormatPercent(int number) {
diff --git a/chromium/base/i18n/rtl.cc b/chromium/base/i18n/rtl.cc
index 095d66c6d8a..26d83599c95 100644
--- a/chromium/base/i18n/rtl.cc
+++ b/chromium/base/i18n/rtl.cc
@@ -198,7 +198,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) {
@@ -214,7 +214,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;
@@ -229,7 +229,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;
@@ -360,7 +360,7 @@ bool UnadjustStringForLocaleDirection(string16* text) {
#endif // !OS_WIN
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_compare.cc b/chromium/base/i18n/string_compare.cc
index 2851e7d2dce..649c28119fe 100644
--- a/chromium/base/i18n/string_compare.cc
+++ b/chromium/base/i18n/string_compare.cc
@@ -6,6 +6,7 @@
#include "base/logging.h"
#include "base/strings/utf_string_conversions.h"
+#include "third_party/icu/source/common/unicode/unistr.h"
namespace base {
namespace i18n {
@@ -17,8 +18,8 @@ UCollationResult CompareString16WithCollator(const icu::Collator& collator,
const string16& rhs) {
UErrorCode error = U_ZERO_ERROR;
UCollationResult result = collator.compare(
- static_cast<const UChar*>(lhs.c_str()), static_cast<int>(lhs.length()),
- static_cast<const UChar*>(rhs.c_str()), static_cast<int>(rhs.length()),
+ icu::UnicodeString(FALSE, lhs.c_str(), static_cast<int>(lhs.length())),
+ icu::UnicodeString(FALSE, rhs.c_str(), static_cast<int>(rhs.length())),
error);
DCHECK(U_SUCCESS(error));
return result;
diff --git a/chromium/base/i18n/string_search.cc b/chromium/base/i18n/string_search.cc
index 779e4d99765..2441c81d013 100644
--- a/chromium/base/i18n/string_search.cc
+++ b/chromium/base/i18n/string_search.cc
@@ -20,8 +20,8 @@ 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(),
+ search_ = usearch_open(reinterpret_cast<const UChar*>(find_this_.data()), find_this_.size(),
+ reinterpret_cast<const UChar*>(dummy.data()), dummy.size(),
uloc_getDefault(),
NULL, // breakiter
&status);
@@ -41,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/time_formatting.cc b/chromium/base/i18n/time_formatting.cc
index 024b86510b5..ae1c59eb411 100644
--- a/chromium/base/i18n/time_formatting.cc
+++ b/chromium/base/i18n/time_formatting.cc
@@ -8,6 +8,7 @@
#include <memory>
+#include "base/i18n/unicodestring.h"
#include "base/logging.h"
#include "base/strings/utf_string_conversions.h"
#include "base/time/time.h"
@@ -26,8 +27,7 @@ string16 TimeFormat(const icu::DateFormat* formatter,
icu::UnicodeString date_string;
formatter->format(static_cast<UDate>(time.ToDoubleT() * 1000), date_string);
- return string16(date_string.getBuffer(),
- static_cast<size_t>(date_string.length()));
+ return i18n::UnicodeStringToString16(date_string);
}
string16 TimeFormatWithoutAmPm(const icu::DateFormat* formatter,
@@ -46,8 +46,7 @@ string16 TimeFormatWithoutAmPm(const icu::DateFormat* formatter,
begin--;
time_string.removeBetween(begin, ampm_field.getEndIndex());
}
- return string16(time_string.getBuffer(),
- static_cast<size_t>(time_string.length()));
+ return i18n::UnicodeStringToString16(time_string);
}
icu::SimpleDateFormat CreateSimpleDateFormatter(const char* pattern) {
@@ -168,7 +167,7 @@ string16 TimeDurationFormat(const TimeDelta& time,
icu::UnicodeString formatted;
icu::FieldPosition ignore(icu::FieldPosition::DONT_CARE);
measure_format.formatMeasures(measures, 2, formatted, ignore, status);
- return base::string16(formatted.getBuffer(), formatted.length());
+ return i18n::UnicodeStringToString16(formatted);
}
HourClockType GetHourClockType() {
diff --git a/chromium/base/i18n/time_formatting_unittest.cc b/chromium/base/i18n/time_formatting_unittest.cc
index 51a48513aca..fa0ccf460a0 100644
--- a/chromium/base/i18n/time_formatting_unittest.cc
+++ b/chromium/base/i18n/time_formatting_unittest.cc
@@ -7,6 +7,7 @@
#include <memory>
#include "base/i18n/rtl.h"
+#include "base/i18n/unicodestring.h"
#include "base/strings/utf_string_conversions.h"
#include "base/test/icu_test_util.h"
#include "base/time/time.h"
diff --git a/chromium/base/i18n/timezone.cc b/chromium/base/i18n/timezone.cc
index e881c9d680f..95e7aee34c4 100644
--- a/chromium/base/i18n/timezone.cc
+++ b/chromium/base/i18n/timezone.cc
@@ -610,9 +610,9 @@ std::string CountryCodeForCurrentTimezone() {
std::unique_ptr<icu::TimeZone> zone(icu::TimeZone::createDefault());
icu::UnicodeString id;
zone->getID(id);
- string16 olson_code(id.getBuffer(), id.length());
+ std::string olson_code;
return TimezoneMap::GetInstance()->CountryCodeForTimezone(
- UTF16ToUTF8(olson_code));
+ id.toUTF8String(olson_code));
}
} // namespace base
diff --git a/chromium/base/i18n/unicodestring.h b/chromium/base/i18n/unicodestring.h
new file mode 100644
index 00000000000..abdfd53dd94
--- /dev/null
+++ b/chromium/base/i18n/unicodestring.h
@@ -0,0 +1,28 @@
+// Copyright (c) 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.
+
+#ifndef BASE_I18N_UNICODESTRING_H_
+#define BASE_I18N_UNICODESTRING_H_
+
+#include "base/strings/string16.h"
+#include "third_party/icu/source/common/unicode/unistr.h"
+#include "third_party/icu/source/common/unicode/uvernum.h"
+
+namespace base {
+namespace i18n {
+
+inline string16 UnicodeStringToString16(const icu::UnicodeString& unistr) {
+#if U_ICU_VERSION_MAJOR_NUM >= 59
+ return base::string16(reinterpret_cast<const char16*>(unistr.getBuffer()),
+ static_cast<size_t>(unistr.length()));
+#else
+ return base::string16(unistr.getBuffer(),
+ static_cast<size_t>(unistr.length()));
+#endif
+}
+
+} // namespace i18n
+} // namespace base
+
+#endif // BASE_UNICODESTRING_H_
diff --git a/chromium/components/autofill/core/browser/autofill_profile_comparator.cc b/chromium/components/autofill/core/browser/autofill_profile_comparator.cc
index edfe2450d67..227a5901c68 100644
--- a/chromium/components/autofill/core/browser/autofill_profile_comparator.cc
+++ b/chromium/components/autofill/core/browser/autofill_profile_comparator.cc
@@ -9,6 +9,7 @@
#include "base/i18n/case_conversion.h"
#include "base/i18n/char_iterator.h"
+#include "base/i18n/unicodestring.h"
#include "base/strings/string_piece.h"
#include "base/strings/string_split.h"
#include "base/strings/string_util.h"
@@ -128,7 +129,7 @@ base::string16 AutofillProfileComparator::NormalizeForComparison(
icu::UnicodeString value = icu::UnicodeString(result.data(), result.length());
transliterator_->transliterate(value);
- return base::string16(value.getBuffer(), value.length());
+ return base::i18n::UnicodeStringToString16(value);
}
bool AutofillProfileComparator::AreMergeable(const AutofillProfile& p1,
diff --git a/chromium/components/autofill/core/browser/credit_card.cc b/chromium/components/autofill/core/browser/credit_card.cc
index 75a34c75a26..5c418b41744 100644
--- a/chromium/components/autofill/core/browser/credit_card.cc
+++ b/chromium/components/autofill/core/browser/credit_card.cc
@@ -806,7 +806,8 @@ bool CreditCard::ConvertMonth(const base::string16& month,
int32_t num_months;
const icu::UnicodeString* months = date_format_symbols.getMonths(num_months);
for (int32_t i = 0; i < num_months; ++i) {
- const base::string16 icu_month(months[i].getBuffer(), months[i].length());
+ const base::string16 icu_month(
+ base::i18n::UnicodeStringToString16(months[i]));
if (compare.StringsEqual(icu_month, month)) {
*num = i + 1; // Adjust from 0-indexed to 1-indexed.
return true;
@@ -819,7 +820,7 @@ bool CreditCard::ConvertMonth(const base::string16& month,
base::string16 trimmed_month;
base::TrimString(month, ASCIIToUTF16("."), &trimmed_month);
for (int32_t i = 0; i < num_months; ++i) {
- base::string16 icu_month(months[i].getBuffer(), months[i].length());
+ base::string16 icu_month(base::i18n::UnicodeStringToString16(months[i]));
base::TrimString(icu_month, ASCIIToUTF16("."), &icu_month);
if (compare.StringsEqual(icu_month, trimmed_month)) {
*num = i + 1; // Adjust from 0-indexed to 1-indexed.
diff --git a/chromium/components/url_formatter/url_formatter.cc b/chromium/components/url_formatter/url_formatter.cc
index 3d5740fd377..20248eec80d 100644
--- a/chromium/components/url_formatter/url_formatter.cc
+++ b/chromium/components/url_formatter/url_formatter.cc
@@ -343,7 +343,7 @@ IDNSpoofChecker::IDNSpoofChecker() {
bool IDNSpoofChecker::Check(base::StringPiece16 label, bool is_tld_ascii) {
UErrorCode status = U_ZERO_ERROR;
- int32_t result = uspoof_check(checker_, label.data(),
+ int32_t result = uspoof_check(checker_, (const UChar*)label.data(),
base::checked_cast<int32_t>(label.size()),
NULL, &status);
// If uspoof_check fails (due to library failure), or if any of the checks
@@ -351,7 +351,7 @@ bool IDNSpoofChecker::Check(base::StringPiece16 label, bool is_tld_ascii) {
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
@@ -595,7 +595,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/browser/android/date_time_chooser_android.cc b/chromium/content/browser/android/date_time_chooser_android.cc
index ba20ad53bd5..28b6d03344f 100644
--- a/chromium/content/browser/android/date_time_chooser_android.cc
+++ b/chromium/content/browser/android/date_time_chooser_android.cc
@@ -9,6 +9,7 @@
#include "base/android/jni_android.h"
#include "base/android/jni_string.h"
#include "base/i18n/char_iterator.h"
+#include "base/i18n/unicodestring.h"
#include "content/common/date_time_suggestion.h"
#include "content/common/view_messages.h"
#include "content/public/browser/render_view_host.h"
@@ -36,8 +37,7 @@ base::string16 SanitizeSuggestionString(const base::string16& string) {
sanitized.append(c);
sanitized_iterator.Advance();
}
- return base::string16(sanitized.getBuffer(),
- static_cast<size_t>(sanitized.length()));
+ return base::i18n::UnicodeStringToString16(sanitized);
}
} // namespace
diff --git a/chromium/content/child/browser_font_resource_trusted.cc b/chromium/content/child/browser_font_resource_trusted.cc
index 30bae9f179b..0ad44015f98 100644
--- a/chromium/content/child/browser_font_resource_trusted.cc
+++ b/chromium/content/child/browser_font_resource_trusted.cc
@@ -75,7 +75,7 @@ class TextRunCollection {
} 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<const UChar*>(text_.data()), text_.size(), run.rtl, NULL, &uerror);
if (U_SUCCESS(uerror))
num_runs_ = ubidi_countRuns(bidi_, &uerror);
}
diff --git a/chromium/content/renderer/android/email_detector.cc b/chromium/content/renderer/android/email_detector.cc
index 564f3417305..1a0db8b07a8 100644
--- a/chromium/content/renderer/android/email_detector.cc
+++ b/chromium/content/renderer/android/email_detector.cc
@@ -62,8 +62,8 @@ bool EmailDetector::FindContent(const base::string16::const_iterator& begin,
DCHECK(U_SUCCESS(status));
icu::UnicodeString content_ustr(matcher->group(status));
DCHECK(U_SUCCESS(status));
- base::UTF16ToUTF8(content_ustr.getBuffer(), content_ustr.length(),
- content_text);
+ content_text->clear();
+ content_ustr.toUTF8String(*content_text);
return true;
}
diff --git a/chromium/net/ftp/ftp_util.cc b/chromium/net/ftp/ftp_util.cc
index 00b23b7c10b..e9331ab3818 100644
--- a/chromium/net/ftp/ftp_util.cc
+++ b/chromium/net/ftp/ftp_util.cc
@@ -9,6 +9,7 @@
#include "base/i18n/case_conversion.h"
#include "base/i18n/char_iterator.h"
+#include "base/i18n/unicodestring.h"
#include "base/logging.h"
#include "base/macros.h"
#include "base/memory/singleton.h"
@@ -175,8 +176,8 @@ class AbbreviatedMonthsMap {
format_symbols.getShortMonths(months_count);
for (int32_t month = 0; month < months_count; month++) {
- base::string16 month_name(months[month].getBuffer(),
- static_cast<size_t>(months[month].length()));
+ base::string16 month_name(
+ base::i18n::UnicodeStringToString16(months[month]));
// Ignore the case of the month names. The simplest way to handle that
// is to make everything lowercase.
diff --git a/chromium/net/third_party/mozilla_security_manager/nsPKCS12Blob.cpp b/chromium/net/third_party/mozilla_security_manager/nsPKCS12Blob.cpp
index 0cf3500c6d3..6a152ebfda0 100644
--- a/chromium/net/third_party/mozilla_security_manager/nsPKCS12Blob.cpp
+++ b/chromium/net/third_party/mozilla_security_manager/nsPKCS12Blob.cpp
@@ -58,7 +58,7 @@ namespace {
// 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 --git a/chromium/ppapi/proxy/pdf_resource.cc b/chromium/ppapi/proxy/pdf_resource.cc
index 565c23ddf86..ff3028ec483 100644
--- a/chromium/ppapi/proxy/pdf_resource.cc
+++ b/chromium/ppapi/proxy/pdf_resource.cc
@@ -58,10 +58,10 @@ void PDFResource::SearchString(const unsigned short* input_string,
PP_PrivateFindResult** results, int* 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/WebKit/Source/platform/LinkHash.cpp b/chromium/third_party/WebKit/Source/platform/LinkHash.cpp
index f397c9a9a86..36868d51b78 100644
--- a/chromium/third_party/WebKit/Source/platform/LinkHash.cpp
+++ b/chromium/third_party/WebKit/Source/platform/LinkHash.cpp
@@ -51,7 +51,7 @@ static bool resolveRelative(const KURL& base,
relativeUTF8.length(), 0, buffer, &parsed);
}
return url::ResolveRelative(baseUTF8.data(), baseUTF8.length(), base.parsed(),
- relative.characters16(), relative.length(), 0,
+ (const base::char16*)relative.characters16(), relative.length(), 0,
buffer, &parsed);
}
diff --git a/chromium/third_party/WebKit/Source/platform/exported/FilePathConversion.cpp b/chromium/third_party/WebKit/Source/platform/exported/FilePathConversion.cpp
index bd394f38940..295f31b247c 100644
--- a/chromium/third_party/WebKit/Source/platform/exported/FilePathConversion.cpp
+++ b/chromium/third_party/WebKit/Source/platform/exported/FilePathConversion.cpp
@@ -18,7 +18,7 @@ base::FilePath WebStringToFilePath(const WebString& webString) {
String str = webString;
if (!str.is8Bit()) {
return base::FilePath::FromUTF16Unsafe(
- base::StringPiece16(str.characters16(), str.length()));
+ base::StringPiece16((const base::char16*)str.characters16(), str.length()));
}
#if OS(POSIX)
diff --git a/chromium/third_party/WebKit/Source/platform/exported/URLConversion.cpp b/chromium/third_party/WebKit/Source/platform/exported/URLConversion.cpp
index bf01013aa24..ba3842a6498 100644
--- a/chromium/third_party/WebKit/Source/platform/exported/URLConversion.cpp
+++ b/chromium/third_party/WebKit/Source/platform/exported/URLConversion.cpp
@@ -23,7 +23,7 @@ GURL WebStringToGURL(const WebString& webString) {
}
// 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/WebKit/Source/platform/exported/WebString.cpp b/chromium/third_party/WebKit/Source/platform/exported/WebString.cpp
index 8e1c81c3d8a..de0cfb5f2ce 100644
--- a/chromium/third_party/WebKit/Source/platform/exported/WebString.cpp
+++ b/chromium/third_party/WebKit/Source/platform/exported/WebString.cpp
@@ -49,7 +49,7 @@ void WebString::assign(const WebString& other) {
}
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 {
@@ -65,7 +65,7 @@ const WebLChar* WebString::data8() const {
}
const WebUChar* WebString::data16() const {
- return !m_private.isNull() && !is8Bit() ? m_private->characters16() : 0;
+ return !m_private.isNull() && !is8Bit() ? (const WebUChar*)m_private->characters16() : 0;
}
std::string WebString::utf8() const {
diff --git a/chromium/third_party/WebKit/Source/platform/weborigin/KURL.cpp b/chromium/third_party/WebKit/Source/platform/weborigin/KURL.cpp
index 48edd0ef58e..1fa872b6adf 100644
--- a/chromium/third_party/WebKit/Source/platform/weborigin/KURL.cpp
+++ b/chromium/third_party/WebKit/Source/platform/weborigin/KURL.cpp
@@ -103,7 +103,7 @@ class KURLCharsetConverter final : public url::CharsetConverter {
int inputLength,
url::CanonOutput* output) override {
CString encoded = m_encoding->encode(
- String(input, inputLength), WTF::URLEncodedEntitiesForUnencodables);
+ String((const UChar*)input, inputLength), WTF::URLEncodedEntitiesForUnencodables);
output->Append(encoded.data(), static_cast<int>(encoded.length()));
}
@@ -326,7 +326,7 @@ String KURL::lastPathComponent() const {
if (m_string.is8Bit())
url::ExtractFileName(asURLChar8Subtle(m_string), path, &file);
else
- url::ExtractFileName(m_string.characters16(), path, &file);
+ url::ExtractFileName((const base::char16*)m_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.
@@ -355,7 +355,7 @@ unsigned short KURL::port() const {
ASSERT(!m_string.isNull());
int port = m_string.is8Bit()
? url::ParsePort(asURLChar8Subtle(m_string), m_parsed.port)
- : url::ParsePort(m_string.characters16(), m_parsed.port);
+ : url::ParsePort((const base::char16*)m_string.characters16(), m_parsed.port);
ASSERT(port != url::PORT_UNSPECIFIED); // Checked port.len <= 0 before.
if (port == url::PORT_INVALID ||
@@ -647,7 +647,7 @@ bool KURL::isHierarchical() const {
return false;
return m_string.is8Bit()
? url::IsStandard(asURLChar8Subtle(m_string), m_parsed.scheme)
- : url::IsStandard(m_string.characters16(), m_parsed.scheme);
+ : url::IsStandard((const base::char16*)m_string.characters16(), m_parsed.scheme);
}
bool equalIgnoringFragmentIdentifier(const KURL& a, const KURL& b) {
@@ -700,7 +700,7 @@ unsigned KURL::pathAfterLastSlash() const {
if (m_string.is8Bit())
url::ExtractFileName(asURLChar8Subtle(m_string), m_parsed.path, &filename);
else
- url::ExtractFileName(m_string.characters16(), m_parsed.path, &filename);
+ url::ExtractFileName((const base::char16*)m_string.characters16(), m_parsed.path, &filename);
return filename.begin;
}
@@ -711,7 +711,7 @@ bool protocolIs(const String& url, const char* protocol) {
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);
}
@@ -744,7 +744,7 @@ void KURL::init(const KURL& base,
charsetConverter, &output, &m_parsed);
} else {
m_isValid = url::ResolveRelative(baseUTF8.data(), baseUTF8.length(),
- base.m_parsed, relative.characters16(),
+ base.m_parsed, (const base::char16*)relative.characters16(),
clampTo<int>(relative.length()),
charsetConverter, &output, &m_parsed);
}
diff --git a/chromium/third_party/WebKit/Source/platform/weborigin/SecurityOrigin.cpp b/chromium/third_party/WebKit/Source/platform/weborigin/SecurityOrigin.cpp
index 2e08f00a30b..b0d6aad6538 100644
--- a/chromium/third_party/WebKit/Source/platform/weborigin/SecurityOrigin.cpp
+++ b/chromium/third_party/WebKit/Source/platform/weborigin/SecurityOrigin.cpp
@@ -610,7 +610,7 @@ String SecurityOrigin::canonicalizeHost(const String& host, bool* success) {
*success = url::CanonicalizeHost(
utf8.data(), url::Component(0, utf8.length()), &canonOutput, &outHost);
} else {
- *success = url::CanonicalizeHost(host.characters16(),
+ *success = url::CanonicalizeHost(reinterpret_cast<const base::char16 *>(host.characters16()),
url::Component(0, host.length()),
&canonOutput, &outHost);
}
diff --git a/chromium/third_party/WebKit/Source/wtf/text/AtomicString.h b/chromium/third_party/WebKit/Source/wtf/text/AtomicString.h
index 9fc2eb654dd..b09e5d9ad81 100644
--- a/chromium/third_party/WebKit/Source/wtf/text/AtomicString.h
+++ b/chromium/third_party/WebKit/Source/wtf/text/AtomicString.h
@@ -50,9 +50,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
AtomicString(const char16_t* chars)
: AtomicString(reinterpret_cast<const UChar*>(chars)) {}
-
+#endif
template <size_t inlineCapacity>
explicit AtomicString(const Vector<UChar, inlineCapacity>& vector)
: AtomicString(vector.data(), vector.size()) {}
diff --git a/chromium/third_party/WebKit/Source/wtf/text/StringView.h b/chromium/third_party/WebKit/Source/wtf/text/StringView.h
index 17680d9a28f..2bd0a5d190d 100644
--- a/chromium/third_party/WebKit/Source/wtf/text/StringView.h
+++ b/chromium/third_party/WebKit/Source/wtf/text/StringView.h
@@ -83,8 +83,10 @@ class WTF_EXPORT StringView {
m_characters16(chars),
m_length(length) {}
StringView(const UChar* chars);
+#if U_ICU_VERSION_MAJOR_NUM < 59
StringView(const char16_t* chars)
: StringView(reinterpret_cast<const UChar*>(chars)) {}
+#endif
#if DCHECK_IS_ON()
~StringView();
diff --git a/chromium/third_party/WebKit/Source/wtf/text/WTFString.h b/chromium/third_party/WebKit/Source/wtf/text/WTFString.h
index c2b55e4b312..7ca06f79aaf 100644
--- a/chromium/third_party/WebKit/Source/wtf/text/WTFString.h
+++ b/chromium/third_party/WebKit/Source/wtf/text/WTFString.h
@@ -35,6 +35,8 @@
#include <algorithm>
#include <iosfwd>
+#include "third_party/icu/source/common/unicode/uvernum.h"
+
#ifdef __OBJC__
#include <objc/objc.h>
#endif
@@ -84,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
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/third_party/sfntly/src/cpp/src/sample/chromium/subsetter_impl.cc b/chromium/third_party/sfntly/src/cpp/src/sample/chromium/subsetter_impl.cc
index c53e60729f5..91953270a27 100644
--- a/chromium/third_party/sfntly/src/cpp/src/sample/chromium/subsetter_impl.cc
+++ b/chromium/third_party/sfntly/src/cpp/src/sample/chromium/subsetter_impl.cc
@@ -23,6 +23,7 @@
#include <map>
#include <set>
+#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 --git a/chromium/ui/base/accelerators/accelerator.cc b/chromium/ui/base/accelerators/accelerator.cc
index f338a9501c1..b0ca945540d 100644
--- a/chromium/ui/base/accelerators/accelerator.cc
+++ b/chromium/ui/base/accelerators/accelerator.cc
@@ -216,7 +216,7 @@ base::string16 Accelerator::GetShortcutText() const {
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 --git a/chromium/ui/base/l10n/l10n_util.cc b/chromium/ui/base/l10n/l10n_util.cc
index 746931a3959..b7d7f618467 100644
--- a/chromium/ui/base/l10n/l10n_util.cc
+++ b/chromium/ui/base/l10n/l10n_util.cc
@@ -562,7 +562,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 1f03599ebfa..4820d63e314 100644
--- a/chromium/ui/base/l10n/time_format.cc
+++ b/chromium/ui/base/l10n/time_format.cc
@@ -109,7 +109,7 @@ base::string16 TimeFormat::Detailed(TimeFormat::Format format,
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/ui/base/x/selection_utils.cc b/chromium/ui/base/x/selection_utils.cc
index 2d57e496563..f8144c75ea6 100644
--- a/chromium/ui/base/x/selection_utils.cc
+++ b/chromium/ui/base/x/selection_utils.cc
@@ -230,8 +230,8 @@ base::string16 SelectionData::GetHtml() const {
// 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<const uint16_t*>(data)[0] == 0xFEFF) {
- markup.assign(reinterpret_cast<const uint16_t*>(data) + 1,
+ reinterpret_cast<const base::char16*>(data)[0] == 0xFEFF) {
+ markup.assign(reinterpret_cast<const base::char16*>(data) + 1,
(size / 2) - 1);
} else {
base::UTF8ToUTF16(reinterpret_cast<const char*>(data), size, &markup);
diff --git a/chromium/url/url_canon_icu.cc b/chromium/url/url_canon_icu.cc
index d0468cccaf1..ffa623f2648 100644
--- a/chromium/url/url_canon_icu.cc
+++ b/chromium/url/url_canon_icu.cc
@@ -133,7 +133,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;
@@ -170,7 +170,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);
diff --git a/chromium/v8/src/runtime/runtime-i18n.cc b/chromium/v8/src/runtime/runtime-i18n.cc
index d4574c2b686..bd240e2ba97 100644
--- a/chromium/v8/src/runtime/runtime-i18n.cc
+++ b/chromium/v8/src/runtime/runtime-i18n.cc
@@ -24,6 +24,7 @@
#include "third_party/icu/source/common/unicode/ucurr.h"
#include "third_party/icu/source/common/unicode/uloc.h"
#include "third_party/icu/source/common/unicode/unistr.h"
+#include "third_party/icu/source/common/unicode/ustring.h"
#include "third_party/icu/source/common/unicode/uversion.h"
#include "third_party/icu/source/i18n/unicode/calendar.h"
#include "third_party/icu/source/i18n/unicode/coll.h"