diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/l10n_util.cc | 21 | ||||
-rw-r--r-- | app/l10n_util.h | 2 | ||||
-rw-r--r-- | app/l10n_util_unittest.cc | 17 |
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) { |