summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/l10n_util.cc21
-rw-r--r--app/l10n_util.h2
-rw-r--r--app/l10n_util_unittest.cc17
3 files changed, 19 insertions, 21 deletions
diff --git a/app/l10n_util.cc b/app/l10n_util.cc
index a77af25..148151d 100644
--- a/app/l10n_util.cc
+++ b/app/l10n_util.cc
@@ -44,9 +44,6 @@ static const FilePath::CharType kLocaleFileExtension[] = L".dll";
static const FilePath::CharType kLocaleFileExtension[] = ".pak";
#endif
-// Added to the end of strings that are too big in TrucateString.
-static const wchar_t* const kElideString = L"\x2026";
-
static const char* const kAcceptLanguageList[] = {
"af", // Afrikaans
"am", // Amharic
@@ -681,27 +678,25 @@ std::wstring GetStringF(int message_id, int64 a) {
return GetStringF(message_id, UTF8ToWide(base::Int64ToString(a)));
}
-std::wstring TruncateString(const std::wstring& string, size_t length) {
+string16 TruncateString(const string16& string, size_t length) {
if (string.size() <= length)
// String fits, return it.
return string;
if (length == 0) {
- // No room for the ellide string, return an empty string.
- return std::wstring(L"");
+ // No room for the elide string, return an empty string.
+ return string16();
}
size_t max = length - 1;
+ // Added to the end of strings that are too big.
+ static const char16 kElideString[] = { 0x2026, 0 };
+
if (max == 0) {
// Just enough room for the elide string.
return kElideString;
}
-#if defined(WCHAR_T_IS_UTF32)
- const string16 string_utf16 = WideToUTF16(string);
-#else
- const std::wstring &string_utf16 = string;
-#endif
// Use a line iterator to find the first boundary.
UErrorCode status = U_ZERO_ERROR;
scoped_ptr<icu::RuleBasedBreakIterator> bi(
@@ -710,14 +705,14 @@ std::wstring TruncateString(const std::wstring& string, size_t length) {
icu::Locale::getDefault(), status)));
if (U_FAILURE(status))
return string.substr(0, max) + kElideString;
- bi->setText(string_utf16.c_str());
+ bi->setText(string.c_str());
int32_t index = bi->preceding(static_cast<int32_t>(max));
if (index == icu::BreakIterator::DONE) {
index = static_cast<int32_t>(max);
} else {
// Found a valid break (may be the beginning of the string). Now use
// a character iterator to find the previous non-whitespace character.
- icu::StringCharacterIterator char_iterator(string_utf16.c_str());
+ icu::StringCharacterIterator char_iterator(string.c_str());
if (index == 0) {
// No valid line breaks. Start at the end again. This ensures we break
// on a valid character boundary.
diff --git a/app/l10n_util.h b/app/l10n_util.h
index 54328e7..a1519b5 100644
--- a/app/l10n_util.h
+++ b/app/l10n_util.h
@@ -163,7 +163,7 @@ std::wstring GetStringF(int message_id, int64 a);
// character (unicode character 0x2026) to render ...
// The supplied string is returned if the string has length characters or
// less.
-std::wstring TruncateString(const std::wstring& string, size_t length);
+string16 TruncateString(const string16& string, size_t length);
// Returns the lower case equivalent of string.
string16 ToLower(const string16& string);
diff --git a/app/l10n_util_unittest.cc b/app/l10n_util_unittest.cc
index 8d48813..fa4cc24 100644
--- a/app/l10n_util_unittest.cc
+++ b/app/l10n_util_unittest.cc
@@ -61,30 +61,33 @@ TEST_F(L10nUtilTest, DISABLED_GetString) {
#endif // defined(OS_WIN)
TEST_F(L10nUtilTest, TruncateString) {
- std::wstring string(L"foooooey bxxxar baz");
+ string16 string = ASCIIToUTF16("foooooey bxxxar baz");
// Make sure it doesn't modify the string if length > string length.
EXPECT_EQ(string, l10n_util::TruncateString(string, 100));
// Test no characters.
- EXPECT_EQ(L"", l10n_util::TruncateString(string, 0));
+ EXPECT_EQ(L"", UTF16ToWide(l10n_util::TruncateString(string, 0)));
// Test 1 character.
- EXPECT_EQ(L"\x2026", l10n_util::TruncateString(string, 1));
+ EXPECT_EQ(L"\x2026", UTF16ToWide(l10n_util::TruncateString(string, 1)));
// Test adds ... at right spot when there is enough room to break at a
// word boundary.
- EXPECT_EQ(L"foooooey\x2026", l10n_util::TruncateString(string, 14));
+ EXPECT_EQ(L"foooooey\x2026",
+ UTF16ToWide(l10n_util::TruncateString(string, 14)));
// Test adds ... at right spot when there is not enough space in first word.
- EXPECT_EQ(L"f\x2026", l10n_util::TruncateString(string, 2));
+ EXPECT_EQ(L"f\x2026", UTF16ToWide(l10n_util::TruncateString(string, 2)));
// Test adds ... at right spot when there is not enough room to break at a
// word boundary.
- EXPECT_EQ(L"foooooey\x2026", l10n_util::TruncateString(string, 11));
+ EXPECT_EQ(L"foooooey\x2026",
+ UTF16ToWide(l10n_util::TruncateString(string, 11)));
// Test completely truncates string if break is on initial whitespace.
- EXPECT_EQ(L"\x2026", l10n_util::TruncateString(L" ", 2));
+ EXPECT_EQ(L"\x2026",
+ UTF16ToWide(l10n_util::TruncateString(ASCIIToUTF16(" "), 2)));
}
void SetICUDefaultLocale(const std::string& locale_string) {