diff options
-rw-r--r-- | base/stringprintf.cc | 12 | ||||
-rw-r--r-- | base/stringprintf.h | 11 | ||||
-rw-r--r-- | base/stringprintf_unittest.cc | 10 | ||||
-rw-r--r-- | chrome/browser/diagnostics/diagnostics_main.cc | 16 | ||||
-rw-r--r-- | chrome/common/metrics/experiments_helper.cc | 5 |
5 files changed, 43 insertions, 11 deletions
diff --git a/base/stringprintf.cc b/base/stringprintf.cc index 5607d39..79c6562 100644 --- a/base/stringprintf.cc +++ b/base/stringprintf.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -26,12 +26,14 @@ inline int vsnprintfT(char* buffer, return base::vsnprintf(buffer, buf_size, format, argptr); } +#if !defined(OS_ANDROID) inline int vsnprintfT(wchar_t* buffer, size_t buf_size, const wchar_t* format, va_list argptr) { return base::vswprintf(buffer, buf_size, format, argptr); } +#endif // Templatized backend for StringPrintF/StringAppendF. This does not finalize // the va_list, the caller is expected to do that. @@ -116,6 +118,7 @@ std::string StringPrintf(const char* format, ...) { return result; } +#if !defined(OS_ANDROID) std::wstring StringPrintf(const wchar_t* format, ...) { va_list ap; va_start(ap, format); @@ -124,6 +127,7 @@ std::wstring StringPrintf(const wchar_t* format, ...) { va_end(ap); return result; } +#endif std::string StringPrintV(const char* format, va_list ap) { std::string result; @@ -140,6 +144,7 @@ const std::string& SStringPrintf(std::string* dst, const char* format, ...) { return *dst; } +#if !defined(OS_ANDROID) const std::wstring& SStringPrintf(std::wstring* dst, const wchar_t* format, ...) { va_list ap; @@ -149,6 +154,7 @@ const std::wstring& SStringPrintf(std::wstring* dst, va_end(ap); return *dst; } +#endif void StringAppendF(std::string* dst, const char* format, ...) { va_list ap; @@ -157,19 +163,23 @@ void StringAppendF(std::string* dst, const char* format, ...) { va_end(ap); } +#if !defined(OS_ANDROID) void StringAppendF(std::wstring* dst, const wchar_t* format, ...) { va_list ap; va_start(ap, format); StringAppendV(dst, format, ap); va_end(ap); } +#endif void StringAppendV(std::string* dst, const char* format, va_list ap) { StringAppendVT(dst, format, ap); } +#if !defined(OS_ANDROID) void StringAppendV(std::wstring* dst, const wchar_t* format, va_list ap) { StringAppendVT(dst, format, ap); } +#endif } // namespace base diff --git a/base/stringprintf.h b/base/stringprintf.h index 40ad107..9a99237 100644 --- a/base/stringprintf.h +++ b/base/stringprintf.h @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -17,8 +17,11 @@ namespace base { // Return a C++ string given printf-like input. BASE_EXPORT std::string StringPrintf(const char* format, ...) PRINTF_FORMAT(1, 2); +// OS_ANDROID's libc does not support wchar_t, so several overloads are omitted. +#if !defined(OS_ANDROID) BASE_EXPORT std::wstring StringPrintf(const wchar_t* format, ...) WPRINTF_FORMAT(1, 2); +#endif // Return a C++ string given vprintf-like input. BASE_EXPORT std::string StringPrintV(const char* format, va_list ap) @@ -28,25 +31,31 @@ BASE_EXPORT std::string StringPrintV(const char* format, va_list ap) BASE_EXPORT const std::string& SStringPrintf(std::string* dst, const char* format, ...) PRINTF_FORMAT(2, 3); +#if !defined(OS_ANDROID) BASE_EXPORT const std::wstring& SStringPrintf(std::wstring* dst, const wchar_t* format, ...) WPRINTF_FORMAT(2, 3); +#endif // Append result to a supplied string. BASE_EXPORT void StringAppendF(std::string* dst, const char* format, ...) PRINTF_FORMAT(2, 3); +#if !defined(OS_ANDROID) // TODO(evanm): this is only used in a few places in the code; // replace with string16 version. BASE_EXPORT void StringAppendF(std::wstring* dst, const wchar_t* format, ...) WPRINTF_FORMAT(2, 3); +#endif // Lower-level routine that takes a va_list and appends to a specified // string. All other routines are just convenience wrappers around it. BASE_EXPORT void StringAppendV(std::string* dst, const char* format, va_list ap) PRINTF_FORMAT(2, 0); +#if !defined(OS_ANDROID) BASE_EXPORT void StringAppendV(std::wstring* dst, const wchar_t* format, va_list ap) WPRINTF_FORMAT(2, 0); +#endif } // namespace base diff --git a/base/stringprintf_unittest.cc b/base/stringprintf_unittest.cc index 6f4458b..305d24a 100644 --- a/base/stringprintf_unittest.cc +++ b/base/stringprintf_unittest.cc @@ -28,7 +28,9 @@ TEST(StringPrintfTest, StringPrintfEmpty) { TEST(StringPrintfTest, StringPrintfMisc) { EXPECT_EQ("123hello w", StringPrintf("%3d%2s %1c", 123, "hello", 'w')); +#if !defined(OS_ANDROID) EXPECT_EQ(L"123hello w", StringPrintf(L"%3d%2ls %1lc", 123, L"hello", 'w')); +#endif } TEST(StringPrintfTest, StringAppendfEmptyString) { @@ -36,9 +38,11 @@ TEST(StringPrintfTest, StringAppendfEmptyString) { StringAppendF(&value, "%s", ""); EXPECT_EQ("Hello", value); +#if !defined(OS_ANDROID) std::wstring valuew(L"Hello"); StringAppendF(&valuew, L"%ls", L""); EXPECT_EQ(L"Hello", valuew); +#endif } TEST(StringPrintfTest, StringAppendfString) { @@ -46,9 +50,11 @@ TEST(StringPrintfTest, StringAppendfString) { StringAppendF(&value, " %s", "World"); EXPECT_EQ("Hello World", value); +#if !defined(OS_ANDROID) std::wstring valuew(L"Hello"); StringAppendF(&valuew, L" %ls", L"World"); EXPECT_EQ(L"Hello World", valuew); +#endif } TEST(StringPrintfTest, StringAppendfInt) { @@ -56,9 +62,11 @@ TEST(StringPrintfTest, StringAppendfInt) { StringAppendF(&value, " %d", 123); EXPECT_EQ("Hello 123", value); +#if !defined(OS_ANDROID) std::wstring valuew(L"Hello"); StringAppendF(&valuew, L" %d", 123); EXPECT_EQ(L"Hello 123", valuew); +#endif } // Make sure that lengths exactly around the initial buffer size are handled @@ -79,10 +87,12 @@ TEST(StringPrintfTest, StringPrintfBounds) { SStringPrintf(&out, "%s", src); EXPECT_STREQ(src, out.c_str()); +#if !defined(OS_ANDROID) srcw[kSrcLen - i] = 0; std::wstring outw; SStringPrintf(&outw, L"%ls", srcw); EXPECT_STREQ(srcw, outw.c_str()); +#endif } } diff --git a/chrome/browser/diagnostics/diagnostics_main.cc b/chrome/browser/diagnostics/diagnostics_main.cc index 96212e4..cc6ab83 100644 --- a/chrome/browser/diagnostics/diagnostics_main.cc +++ b/chrome/browser/diagnostics/diagnostics_main.cc @@ -215,6 +215,10 @@ class TestWriter { return console_->Write(txt); } + bool WriteInfoText(const std::string& txt) { + return WriteInfoText(UTF8ToWide(txt)); + } + // Write a result block. It consist of two lines. The first line // has [PASS] or [FAIL] with |name| and the second line has // the text in |extra|. @@ -243,10 +247,10 @@ class TestWriter { DISALLOW_COPY_AND_ASSIGN(TestWriter); }; -std::wstring PrintableUSCurrentTime() { +std::string PrintableUSCurrentTime() { base::Time::Exploded exploded = {0}; base::Time::Now().UTCExplode(&exploded); - return base::StringPrintf(L"%d:%d:%d.%d:%d:%d", + return base::StringPrintf("%d:%d:%d.%d:%d:%d", exploded.year, exploded.month, exploded.day_of_month, @@ -269,8 +273,8 @@ class TestController : public DiagnosticsModel::Observer { // Run all the diagnostics of |model| and invoke the view as the model // callbacks arrive. void Run(DiagnosticsModel* model) { - std::wstring title(L"Chrome Diagnostics Mode ("); - writer_->WriteInfoText(title.append(PrintableUSCurrentTime()) + L")\n"); + writer_->WriteInfoText(L"Chrome Diagnostics Mode ("); + writer_->WriteInfoText(PrintableUSCurrentTime() + ")\n"); if (!model) { writer_->WriteResult(false, L"Diagnostics start", L"model is null"); return; @@ -283,7 +287,7 @@ class TestController : public DiagnosticsModel::Observer { ResourceBundle::InitSharedInstanceWithLocale(std::string(), NULL); int count = model->GetTestAvailableCount(); writer_->WriteInfoText(base::StringPrintf( - L"%d available test(s)\n\n", count)); + "%d available test(s)\n\n", count)); model->RunAll(this); } @@ -303,7 +307,7 @@ class TestController : public DiagnosticsModel::Observer { virtual void OnDoneAll(DiagnosticsModel* model) { if (writer_->failures() > 0) { writer_->WriteInfoText(base::StringPrintf( - L"DONE. %d failure(s)\n\n", writer_->failures())); + "DONE. %d failure(s)\n\n", writer_->failures())); } else { writer_->WriteInfoText(L"DONE\n\n"); } diff --git a/chrome/common/metrics/experiments_helper.cc b/chrome/common/metrics/experiments_helper.cc index 27f0235..79cd707 100644 --- a/chrome/common/metrics/experiments_helper.cc +++ b/chrome/common/metrics/experiments_helper.cc @@ -156,9 +156,8 @@ void SetChildProcessLoggingExperimentList() { GetFieldTrialSelectedGroupIds(&name_group_ids); std::vector<string16> experiment_strings(name_group_ids.size()); for (size_t i = 0; i < name_group_ids.size(); ++i) { - // Wish there was a StringPrintf for string16... :-( - experiment_strings[i] = WideToUTF16(base::StringPrintf( - L"%x-%x", name_group_ids[i].name, name_group_ids[i].group)); + experiment_strings[i] = UTF8ToUTF16(base::StringPrintf( + "%x-%x", name_group_ids[i].name, name_group_ids[i].group)); } child_process_logging::SetExperimentList(experiment_strings); } |