summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--base/stringprintf.cc12
-rw-r--r--base/stringprintf.h11
-rw-r--r--base/stringprintf_unittest.cc10
-rw-r--r--chrome/browser/diagnostics/diagnostics_main.cc16
-rw-r--r--chrome/common/metrics/experiments_helper.cc5
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);
}