Remove base::SStringPrintf().
Very few callers gained efficiency from this, and removing it will make
converting to absl::StrFormat() easier.
Bug: 1371963
Change-Id: Ie14fc399cc90dfb3dfb991e0a7415b9c933808b1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4772120
Owners-Override: Nico Weber <thakis@chromium.org>
Code-Coverage: findit-for-me@appspot.gserviceaccount.com <findit-for-me@appspot.gserviceaccount.com>
Reviewed-by: Nico Weber <thakis@chromium.org>
Commit-Queue: Nico Weber <thakis@chromium.org>
Auto-Submit: Peter Kasting <pkasting@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1183907}
diff --git a/base/strings/stringprintf.cc b/base/strings/stringprintf.cc
index 4ac965a..36a8b41 100644
--- a/base/strings/stringprintf.cc
+++ b/base/strings/stringprintf.cc
@@ -152,38 +152,6 @@
return result;
}
-const std::string& SStringPrintf(std::string* dst, const char* format, ...) {
- va_list ap;
- va_start(ap, format);
- dst->clear();
- StringAppendV(dst, format, ap);
- va_end(ap);
- return *dst;
-}
-
-#if BUILDFLAG(IS_WIN)
-const std::wstring& SStringPrintf(std::wstring* dst,
- const wchar_t* format, ...) {
- va_list ap;
- va_start(ap, format);
- dst->clear();
- StringAppendV(dst, format, ap);
- va_end(ap);
- return *dst;
-}
-
-const std::u16string& SStringPrintf(std::u16string* dst,
- const char16_t* format,
- ...) {
- va_list ap;
- va_start(ap, format);
- dst->clear();
- StringAppendV(dst, format, ap);
- va_end(ap);
- return *dst;
-}
-#endif
-
void StringAppendF(std::string* dst, const char* format, ...) {
va_list ap;
va_start(ap, format);
diff --git a/base/strings/stringprintf.h b/base/strings/stringprintf.h
index 7894c49..54e55dbdb 100644
--- a/base/strings/stringprintf.h
+++ b/base/strings/stringprintf.h
@@ -21,8 +21,7 @@
#if BUILDFLAG(IS_WIN)
// Note: Unfortunately compile time checking of the format string for UTF-16
// strings is not supported by any compiler, thus these functions should be used
-// carefully and sparingly. Also applies to SStringPrintf and StringAppendV
-// below.
+// carefully and sparingly. Also applies to StringAppendV below.
[[nodiscard]] BASE_EXPORT std::wstring StringPrintf(const wchar_t* format, ...)
WPRINTF_FORMAT(1, 2);
[[nodiscard]] BASE_EXPORT std::u16string StringPrintf(const char16_t* format,
@@ -34,19 +33,6 @@
va_list ap)
PRINTF_FORMAT(1, 0);
-// Store result into a supplied string and return it.
-BASE_EXPORT const std::string& SStringPrintf(std::string* dst,
- const char* format,
- ...) PRINTF_FORMAT(2, 3);
-#if BUILDFLAG(IS_WIN)
-BASE_EXPORT const std::wstring& SStringPrintf(std::wstring* dst,
- const wchar_t* format,
- ...) WPRINTF_FORMAT(2, 3);
-BASE_EXPORT const std::u16string& SStringPrintf(std::u16string* dst,
- const char16_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);
diff --git a/base/strings/stringprintf_unittest.cc b/base/strings/stringprintf_unittest.cc
index 270afe1..bd5da840 100644
--- a/base/strings/stringprintf_unittest.cc
+++ b/base/strings/stringprintf_unittest.cc
@@ -105,22 +105,14 @@
for (int i = 1; i < 3; i++) {
src[kSrcLen - i] = 0;
std::string out;
- SStringPrintf(&out, "%s", src);
- EXPECT_STREQ(src, out.c_str());
+ EXPECT_EQ(src, StringPrintf("%s", src));
#if BUILDFLAG(IS_WIN)
srcw[kSrcLen - i] = 0;
- std::wstring outw;
- SStringPrintf(&outw, L"%ls", srcw);
- EXPECT_STREQ(srcw, outw.c_str());
+ EXPECT_EQ(srcw, StringPrintf(L"%ls", srcw));
src16[kSrcLen - i] = 0;
- std::u16string out16;
- SStringPrintf(&out16, u"%ls", src16);
- // EXPECT_STREQ does not support const char16_t* strings yet.
- // Dispatch to the const wchar_t* overload instead.
- EXPECT_STREQ(reinterpret_cast<const wchar_t*>(src16),
- reinterpret_cast<const wchar_t*>(out16.c_str()));
+ EXPECT_EQ(src16, StringPrintf(u"%ls", src16));
#endif
}
}
@@ -134,9 +126,6 @@
const char fmt[] = "%sB%sB%sB%sB%sB%sB%s";
- std::string out;
- SStringPrintf(&out, fmt, src, src, src, src, src, src, src);
-
const int kRefSize = 320000;
char* ref = new char[kRefSize];
#if BUILDFLAG(IS_WIN)
@@ -145,7 +134,7 @@
snprintf(ref, kRefSize, fmt, src, src, src, src, src, src, src);
#endif
- EXPECT_STREQ(ref, out.c_str());
+ EXPECT_EQ(ref, StringPrintf(fmt, src, src, src, src, src, src, src));
delete[] ref;
}
@@ -178,10 +167,7 @@
src[i] = 'a';
src[kBufLen - 1] = 0;
- std::string out;
- SStringPrintf(&out, "%s", src);
-
- EXPECT_STREQ(src, out.c_str());
+ EXPECT_EQ(src, StringPrintf("%s", src));
}
#if BUILDFLAG(IS_WIN)
@@ -190,9 +176,7 @@
invalid[0] = 0xffff;
invalid[1] = 0;
- std::wstring out;
- SStringPrintf(&out, L"%ls", invalid);
- EXPECT_STREQ(invalid, out.c_str());
+ EXPECT_EQ(invalid, StringPrintf(L"%ls", invalid));
}
#endif
diff --git a/base/trace_event/memory_allocator_dump.cc b/base/trace_event/memory_allocator_dump.cc
index 2dcc8a7a..49ce0136 100644
--- a/base/trace_event/memory_allocator_dump.cc
+++ b/base/trace_event/memory_allocator_dump.cc
@@ -64,7 +64,6 @@
}
void MemoryAllocatorDump::AsValueInto(TracedValue* value) const {
- std::string string_conversion_buffer;
value->BeginDictionaryWithCopiedName(absolute_name_);
value->SetString("guid", guid_.ToString());
value->BeginDictionary("attrs");
@@ -73,11 +72,9 @@
value->BeginDictionaryWithCopiedName(entry.name);
switch (entry.entry_type) {
case Entry::kUint64:
- SStringPrintf(&string_conversion_buffer, "%" PRIx64,
- entry.value_uint64);
value->SetString("type", kTypeScalar);
value->SetString("units", entry.units);
- value->SetString("value", string_conversion_buffer);
+ value->SetString("value", StringPrintf("%" PRIx64, entry.value_uint64));
break;
case Entry::kString:
value->SetString("type", kTypeString);
diff --git a/chrome/browser/android/history_report/delta_file_backend_leveldb.cc b/chrome/browser/android/history_report/delta_file_backend_leveldb.cc
index 5f69945..a05f152 100644
--- a/chrome/browser/android/history_report/delta_file_backend_leveldb.cc
+++ b/chrome/browser/android/history_report/delta_file_backend_leveldb.cc
@@ -52,12 +52,9 @@
entry.set_type(type);
entry.set_url(url);
leveldb::WriteOptions writeOptions;
- std::string key;
- base::SStringPrintf(&key, "%" PRId64, seq_no);
- leveldb::Status status = db->Put(
- writeOptions,
- leveldb::Slice(key),
- leveldb::Slice(entry.SerializeAsString()));
+ leveldb::Status status =
+ db->Put(writeOptions, leveldb::Slice(base::NumberToString(seq_no)),
+ leveldb::Slice(entry.SerializeAsString()));
if (!status.ok())
LOG(WARNING) << "Save Change failed " << status.ToString();
}
@@ -162,9 +159,7 @@
lower_bound = max_seq_no - 1;
leveldb::WriteBatch updates;
for (int64_t seq_no = min_seq_no; seq_no <= lower_bound; ++seq_no) {
- std::string key;
- base::SStringPrintf(&key, "%" PRId64, seq_no);
- updates.Delete(leveldb::Slice(key));
+ updates.Delete(leveldb::Slice(base::NumberToString(seq_no)));
}
leveldb::WriteOptions write_options;
@@ -187,9 +182,7 @@
entry.set_seq_no(seq_no);
entry.set_url(*it);
entry.set_type("add");
- std::string key;
- base::SStringPrintf(&key, "%" PRId64, seq_no);
- updates.Put(leveldb::Slice(key),
+ updates.Put(leveldb::Slice(base::NumberToString(seq_no)),
leveldb::Slice(entry.SerializeAsString()));
++seq_no;
}
@@ -206,14 +199,12 @@
int32_t limit) {
if (!EnsureInitialized())
return std::make_unique<std::vector<DeltaFileEntryWithData>>();
- std::string start;
- base::SStringPrintf(&start, "%" PRId64, last_seq_no + 1);
leveldb::ReadOptions options;
std::unique_ptr<leveldb::Iterator> db_it(db_->NewIterator(options));
- std::unique_ptr<std::vector<DeltaFileEntryWithData>> result(
- new std::vector<DeltaFileEntryWithData>());
+ auto result = std::make_unique<std::vector<DeltaFileEntryWithData>>();
int32_t count = 0;
- for (db_it->Seek(start); db_it->Valid() && count < limit; db_it->Next()) {
+ for (db_it->Seek(base::NumberToString(last_seq_no + 1));
+ db_it->Valid() && count < limit; db_it->Next()) {
DeltaFileEntry entry;
leveldb::Slice value_slice = db_it->value();
if (!entry.ParseFromArray(value_slice.data(), value_slice.size()))
@@ -261,7 +252,7 @@
return true;
auto* dump = pmd->CreateAllocatorDump(
- base::StringPrintf("history/delta_file_service/leveldb_0x%" PRIXPTR,
+ base::StringPrintf("history/delta_file_service/leveldb_%#" PRIXPTR,
reinterpret_cast<uintptr_t>(db_.get())));
dump->AddScalar(base::trace_event::MemoryAllocatorDump::kNameSize,
base::trace_event::MemoryAllocatorDump::kUnitsBytes,
diff --git a/chrome/browser/ash/accessibility/spoken_feedback_app_list_browsertest.cc b/chrome/browser/ash/accessibility/spoken_feedback_app_list_browsertest.cc
index cd2d95c9..0fb9ad1 100644
--- a/chrome/browser/ash/accessibility/spoken_feedback_app_list_browsertest.cc
+++ b/chrome/browser/ash/accessibility/spoken_feedback_app_list_browsertest.cc
@@ -599,9 +599,8 @@
// page because the bubble launcher apps grid is scrollable, not paged.
sm_.Call([this]() { SendKeyPressWithControl(ui::VKEY_RIGHT); });
- std::string expected_text;
- sm_.ExpectSpeech(base::SStringPrintf(
- &expected_text, "Moved to row 1, column %d.", test_item_index + 2));
+ sm_.ExpectSpeech(
+ base::StringPrintf("Moved to row 1, column %d.", test_item_index + 2));
sm_.Replay();
}
@@ -627,43 +626,38 @@
sm_.Call([this]() { SendKeyPressWithControl(ui::VKEY_RIGHT); });
sm_.ExpectNextSpeechIsNot("Alert");
- std::string expected_text;
- sm_.ExpectSpeech(base::SStringPrintf(&expected_text,
- "Moved to row 1, column %d.",
- column_after_horizontal_move));
+ sm_.ExpectSpeech(base::StringPrintf("Moved to row 1, column %d.",
+ column_after_horizontal_move));
// Move the focused item down.
sm_.Call([this]() { SendKeyPressWithControl(ui::VKEY_DOWN); });
sm_.ExpectNextSpeechIsNot("Alert");
- sm_.ExpectSpeech(base::SStringPrintf(&expected_text,
- "Moved to row 2, column %d.",
- column_after_horizontal_move));
+ sm_.ExpectSpeech(base::StringPrintf("Moved to row 2, column %d.",
+ column_after_horizontal_move));
// Move the focused item down.
sm_.Call([this]() { SendKeyPressWithControl(ui::VKEY_DOWN); });
sm_.ExpectNextSpeechIsNot("Alert");
- sm_.ExpectSpeech(base::SStringPrintf(&expected_text,
- "Moved to row 3, column %d.",
- column_after_horizontal_move));
+ sm_.ExpectSpeech(base::StringPrintf("Moved to row 3, column %d.",
+ column_after_horizontal_move));
// Move the focused item down.
sm_.Call([this]() { SendKeyPressWithControl(ui::VKEY_DOWN); });
sm_.ExpectNextSpeechIsNot("Alert");
- sm_.ExpectSpeech(base::SStringPrintf(&expected_text,
- "Moved to row 4, column %d.",
- column_after_horizontal_move));
+ sm_.ExpectSpeech(base::StringPrintf("Moved to row 4, column %d.",
+ column_after_horizontal_move));
// Move the focused item left.
sm_.Call([this]() { SendKeyPressWithControl(ui::VKEY_LEFT); });
sm_.ExpectNextSpeechIsNot("Alert");
- sm_.ExpectSpeech(base::SStringPrintf(
- &expected_text, "Moved to row 4, column %d.", original_column));
+ sm_.ExpectSpeech(
+ base::StringPrintf("Moved to row 4, column %d.", original_column));
// Move the focused item back up.
sm_.Call([this]() { SendKeyPressWithControl(ui::VKEY_UP); });
sm_.ExpectNextSpeechIsNot("Alert");
- sm_.ExpectSpeech(base::SStringPrintf(
- &expected_text, "Moved to row 3, column %d.", original_column));
+ sm_.ExpectSpeech(
+ base::StringPrintf("Moved to row 3, column %d.", original_column));
sm_.Replay();
}
@@ -693,9 +687,8 @@
sm_.ExpectSpeech("Button");
sm_.ExpectNextSpeechIsNot("Alert");
- std::string expected_text;
- sm_.ExpectSpeech(base::SStringPrintf(
- &expected_text, "Moved to row 1, column %d.", test_item_index + 1));
+ sm_.ExpectSpeech(
+ base::StringPrintf("Moved to row 1, column %d.", test_item_index + 1));
sm_.Replay();
}
diff --git a/chrome/browser/extensions/api/proxy/proxy_api.cc b/chrome/browser/extensions/api/proxy/proxy_api.cc
index 5ecb620..0d43a09 100644
--- a/chrome/browser/extensions/api/proxy/proxy_api.cc
+++ b/chrome/browser/extensions/api/proxy/proxy_api.cc
@@ -72,13 +72,10 @@
base::Value::Dict dict;
dict.Set(kProxyEventFatalKey, false);
dict.Set(kProxyEventErrorKey, net::ErrorToString(net::ERR_PAC_SCRIPT_FAILED));
- std::string error_msg;
+ std::string error_msg = base::UTF16ToUTF8(error);
if (line_number != -1) {
- base::SStringPrintf(&error_msg,
- "line: %d: %s",
- line_number, base::UTF16ToUTF8(error).c_str());
- } else {
- error_msg = base::UTF16ToUTF8(error);
+ error_msg =
+ base::StringPrintf("line: %d: %s", line_number, error_msg.c_str());
}
dict.Set(kProxyEventDetailsKey, error_msg);
args.Append(base::Value(std::move(dict)));
diff --git a/chrome/installer/gcapi/gcapi_omaha_experiment.cc b/chrome/installer/gcapi/gcapi_omaha_experiment.cc
index f40ee4e..856bd0a 100644
--- a/chrome/installer/gcapi/gcapi_omaha_experiment.cc
+++ b/chrome/installer/gcapi/gcapi_omaha_experiment.cc
@@ -87,11 +87,9 @@
base::Time instance_time = base::Time::FromTimeT(instance_time_value);
- std::wstring gcapi_experiment_label;
- base::SStringPrintf(&gcapi_experiment_label, L"%ls=%ls_%d|%ls", label.c_str(),
- brand_code, GetCurrentRlzWeek(instance_time),
- BuildExperimentDateString(instance_time).c_str());
- return gcapi_experiment_label;
+ return base::StringPrintf(L"%ls=%ls_%d|%ls", label.c_str(), brand_code,
+ GetCurrentRlzWeek(instance_time),
+ BuildExperimentDateString(instance_time).c_str());
}
} // namespace gcapi_internals
diff --git a/components/crash/content/app/breakpad_win.cc b/components/crash/content/app/breakpad_win.cc
index 6bffc171..776c39a 100644
--- a/components/crash/content/app/breakpad_win.cc
+++ b/components/crash/content/app/breakpad_win.cc
@@ -186,29 +186,29 @@
// Returns a string containing a list of all modifiers for the loaded profile.
std::wstring GetProfileType() {
- std::wstring profile_type;
DWORD profile_bits = 0;
- if (::GetProfileType(&profile_bits)) {
- static const struct {
- DWORD bit;
- const wchar_t* name;
- } kBitNames[] = {
- { PT_MANDATORY, L"mandatory" },
- { PT_ROAMING, L"roaming" },
- { PT_TEMPORARY, L"temporary" },
- };
- for (size_t i = 0; i < std::size(kBitNames); ++i) {
- const DWORD this_bit = kBitNames[i].bit;
- if ((profile_bits & this_bit) != 0) {
- profile_type.append(kBitNames[i].name);
- profile_bits &= ~this_bit;
- if (profile_bits != 0)
- profile_type.append(L", ");
+ if (!::GetProfileType(&profile_bits)) {
+ return base::StringPrintf(L"error %u", ::GetLastError());
+ }
+
+ std::wstring profile_type;
+ static const struct {
+ DWORD bit;
+ const wchar_t* name;
+ } kBitNames[] = {
+ {PT_MANDATORY, L"mandatory"},
+ {PT_ROAMING, L"roaming"},
+ {PT_TEMPORARY, L"temporary"},
+ };
+ for (size_t i = 0; i < std::size(kBitNames); ++i) {
+ const DWORD this_bit = kBitNames[i].bit;
+ if ((profile_bits & this_bit) != 0) {
+ profile_type.append(kBitNames[i].name);
+ profile_bits &= ~this_bit;
+ if (profile_bits != 0) {
+ profile_type.append(L", ");
}
}
- } else {
- DWORD last_error = ::GetLastError();
- base::SStringPrintf(&profile_type, L"error %u", last_error);
}
return profile_type;
}
diff --git a/components/storage_monitor/volume_mount_watcher_win.cc b/components/storage_monitor/volume_mount_watcher_win.cc
index f3e5372..eb880505b9 100644
--- a/components/storage_monitor/volume_mount_watcher_win.cc
+++ b/components/storage_monitor/volume_mount_watcher_win.cc
@@ -220,7 +220,6 @@
base::OnceCallback<void(StorageMonitor::EjectStatus)> callback,
scoped_refptr<base::SequencedTaskRunner> task_runner,
int iteration) {
- base::FilePath::StringType volume_name;
base::FilePath::CharType drive_letter = device.value()[0];
// Don't try to eject if the path isn't a simple one -- we're not
// sure how to do that yet. Need to figure out how to eject volumes mounted
@@ -232,7 +231,8 @@
base::BindOnce(std::move(callback), StorageMonitor::EJECT_FAILURE));
return;
}
- base::SStringPrintf(&volume_name, L"\\\\.\\%lc:", drive_letter);
+ base::FilePath::StringType volume_name =
+ base::StringPrintf(L"\\\\.\\%lc:", drive_letter);
base::win::ScopedHandle volume_handle(CreateFile(
volume_name.c_str(), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
diff --git a/content/common/webid/identity_url_loader_throttle_unittest.cc b/content/common/webid/identity_url_loader_throttle_unittest.cc
index f9bc337..0e887e67 100644
--- a/content/common/webid/identity_url_loader_throttle_unittest.cc
+++ b/content/common/webid/identity_url_loader_throttle_unittest.cc
@@ -70,18 +70,16 @@
throttle->WillStartRequest(&request, &defer);
EXPECT_FALSE(defer);
- std::string header;
- if (is_google_header) {
- base::SStringPrintf(
- &header,
- "Google-Accounts-Sign%s: email=\"foo@example.com\", sessionindex=0, "
- "obfuscatedid=123\n",
- signin_status == IdpSigninStatus::kSignedIn ? "In" : "Out");
- } else {
- base::SStringPrintf(
- &header, "idp-signin-status: action=sign%s; type=idp; foo=bar",
- signin_status == IdpSigninStatus::kSignedIn ? "in" : "out-all");
- }
+ std::string header =
+ is_google_header
+ ? base::StringPrintf(
+ "Google-Accounts-Sign%s: email=\"foo@example.com\", "
+ "sessionindex=0, "
+ "obfuscatedid=123\n",
+ signin_status == IdpSigninStatus::kSignedIn ? "In" : "Out")
+ : base::StringPrintf(
+ "idp-signin-status: action=sign%s; type=idp; foo=bar",
+ signin_status == IdpSigninStatus::kSignedIn ? "in" : "out-all");
network::mojom::URLResponseHead response_head;
response_head.headers = net::HttpResponseHeaders::TryToCreate(
diff --git a/media/gpu/test/video_frame_file_writer.cc b/media/gpu/test/video_frame_file_writer.cc
index 38a73f0d..5a99338 100644
--- a/media/gpu/test/video_frame_file_writer.cc
+++ b/media/gpu/test/video_frame_file_writer.cc
@@ -146,10 +146,10 @@
size_t frame_index) {
DCHECK_CALLED_ON_VALID_SEQUENCE(writer_thread_sequence_checker_);
- base::FilePath::StringType filename;
const gfx::Size& visible_size = video_frame->visible_rect().size();
- base::SStringPrintf(&filename, FILE_PATH_LITERAL("frame_%04zu_%dx%d"),
- frame_index, visible_size.width(), visible_size.height());
+ base::FilePath::StringType filename =
+ base::StringPrintf(FILE_PATH_LITERAL("frame_%04zu_%dx%d"), frame_index,
+ visible_size.width(), visible_size.height());
if (!output_file_prefix_.empty())
filename = output_file_prefix_ + FILE_PATH_LITERAL("_") + filename;
diff --git a/net/cert/x509_util_nss.cc b/net/cert/x509_util_nss.cc
index 77c84a6e8..0cddbb5 100644
--- a/net/cert/x509_util_nss.cc
+++ b/net/cert/x509_util_nss.cc
@@ -72,7 +72,7 @@
while (SEC_CertNicknameConflict(temp_nickname.c_str(),
const_cast<SECItem*>(subject),
CERT_GetDefaultCertDB())) {
- base::SStringPrintf(&new_name, "%s #%d", nickname.c_str(), index++);
+ new_name = base::StringPrintf("%s #%d", nickname.c_str(), index++);
temp_nickname = token_name + new_name;
}
diff --git a/rlz/lib/rlz_lib.cc b/rlz/lib/rlz_lib.cc
index 1114c65..c92e300 100644
--- a/rlz/lib/rlz_lib.cc
+++ b/rlz/lib/rlz_lib.cc
@@ -464,11 +464,9 @@
if (0 == response_length)
return true; // Empty response - no parsing.
- std::string events_variable;
- std::string stateful_events_variable;
- base::SStringPrintf(&events_variable, "%s: ", kEventsCgiVariable);
- base::SStringPrintf(&stateful_events_variable, "%s: ",
- kStatefulEventsCgiVariable);
+ std::string events_variable = base::StringPrintf("%s: ", kEventsCgiVariable);
+ std::string stateful_events_variable =
+ base::StringPrintf("%s: ", kStatefulEventsCgiVariable);
int rlz_cgi_length = strlen(kRlzCgiVariable);
diff --git a/services/resource_coordinator/memory_instrumentation/queued_request_dispatcher.cc b/services/resource_coordinator/memory_instrumentation/queued_request_dispatcher.cc
index fd4c3305..0322a49 100644
--- a/services/resource_coordinator/memory_instrumentation/queued_request_dispatcher.cc
+++ b/services/resource_coordinator/memory_instrumentation/queued_request_dispatcher.cc
@@ -93,8 +93,6 @@
std::vector<base::StringPiece>* path) {
// Don't dump the root node.
if (!path->empty()) {
- std::string string_conversion_buffer;
-
std::string name = base::JoinString(*path, "/");
value->BeginDictionaryWithCopiedName(name);
@@ -107,10 +105,9 @@
value->BeginDictionaryWithCopiedName(name_to_entry.first);
switch (entry.type) {
case GlobalNodeGraph::Node::Entry::kUInt64:
- base::SStringPrintf(&string_conversion_buffer, "%" PRIx64,
- entry.value_uint64);
value->SetString("type", RawMemoryGraphNode::kTypeScalar);
- value->SetString("value", string_conversion_buffer);
+ value->SetString("value",
+ base::StringPrintf("%" PRIx64, entry.value_uint64));
break;
case GlobalNodeGraph::Node::Entry::kString:
value->SetString("type", RawMemoryGraphNode::kTypeString);
diff --git a/tools/android/memdump/memdump.cc b/tools/android/memdump/memdump.cc
index 9881985d..3b2e6dc 100644
--- a/tools/android/memdump/memdump.cc
+++ b/tools/android/memdump/memdump.cc
@@ -380,7 +380,6 @@
const std::vector<ProcessMemory>& processes_memory) {
const int KB_PER_PAGE = kPageSize >> 10;
std::vector<int> totals_app_shared(processes_memory.size());
- std::string buf;
std::cout << "pid\tprivate\t\tshared_app\tshared_other (KB)\n";
for (std::vector<ProcessMemory>::const_iterator memory_it =
processes_memory.begin();
@@ -400,19 +399,15 @@
double total_app_shared = 0;
for (size_t i = 0; i < totals_app_shared.size(); ++i)
total_app_shared += static_cast<double>(totals_app_shared[i]) / (i + 2);
- base::SStringPrintf(
- &buf, "%d\t%d\t\t%d\t\t%d\n",
- process_memory.pid,
- total_private * KB_PER_PAGE,
+ std::cout << base::StringPrintf(
+ "%d\t%d\t\t%d\t\t%d\n", process_memory.pid, total_private * KB_PER_PAGE,
static_cast<int>(total_app_shared) * KB_PER_PAGE,
total_other_shared * KB_PER_PAGE);
- std::cout << buf;
}
}
void DumpProcessesMemoryMapsInExtendedFormat(
const std::vector<ProcessMemory>& processes_memory) {
- std::string buf;
std::string app_shared_buf;
for (std::vector<ProcessMemory>::const_iterator memory_it =
processes_memory.begin();
@@ -425,15 +420,13 @@
const MemoryMap& memory_map = *map_it;
app_shared_buf.clear();
AppendAppSharedField(memory_map.app_shared_pages, &app_shared_buf);
- base::SStringPrintf(
- &buf,
- "%" PRIx64 "-%" PRIx64 " %s %" PRIx64 " private_unevictable=%d "
+ std::cout << base::StringPrintf(
+ "%" PRIx64 "-%" PRIx64 " %s %" PRIx64
+ " private_unevictable=%d "
"private=%d shared_app=%s shared_other_unevictable=%d "
"shared_other=%d \"%s\" [%s]\n",
- memory_map.start_address,
- memory_map.end_address,
- memory_map.flags.c_str(),
- memory_map.offset,
+ memory_map.start_address, memory_map.end_address,
+ memory_map.flags.c_str(), memory_map.offset,
memory_map.private_pages.unevictable_count * kPageSize,
memory_map.private_pages.total_count * kPageSize,
app_shared_buf.c_str(),
@@ -441,7 +434,6 @@
memory_map.other_shared_pages.total_count * kPageSize,
memory_map.name.c_str(),
memory_map.committed_pages_bits.AsB64String().c_str());
- std::cout << buf;
}
}
}
diff --git a/ui/events/blink/web_input_event_traits.cc b/ui/events/blink/web_input_event_traits.cc
index cc2fc4b..e0844d87 100644
--- a/ui/events/blink/web_input_event_traits.cc
+++ b/ui/events/blink/web_input_event_traits.cc
@@ -14,7 +14,6 @@
#include "third_party/blink/public/common/input/web_touch_event.h"
using base::StringAppendF;
-using base::SStringPrintf;
using blink::WebGestureEvent;
using blink::WebInputEvent;
using blink::WebKeyboardEvent;
@@ -107,47 +106,37 @@
event.rotation_angle, event.tilt_x, event.tilt_y);
}
-struct WebInputEventToString {
- template <class EventType>
- bool Execute(const WebInputEvent& event, std::string* result) const {
- SStringPrintf(result, "%s (Time: %lf, Modifiers: %d)\n",
- WebInputEvent::GetName(event.GetType()),
- event.TimeStamp().since_origin().InSecondsF(),
- event.GetModifiers());
- const EventType& typed_event = static_cast<const EventType&>(event);
- ApppendEventDetails(typed_event, result);
- return true;
- }
-};
-
-template <typename Operator, typename ArgIn, typename ArgOut>
-bool Apply(Operator op,
- WebInputEvent::Type type,
- const ArgIn& arg_in,
- ArgOut* arg_out) {
- if (WebInputEvent::IsPointerEventType(type))
- return op.template Execute<WebPointerEvent>(arg_in, arg_out);
- else if (WebInputEvent::IsMouseEventType(type))
- return op.template Execute<WebMouseEvent>(arg_in, arg_out);
- else if (type == WebInputEvent::Type::kMouseWheel)
- return op.template Execute<WebMouseWheelEvent>(arg_in, arg_out);
- else if (WebInputEvent::IsKeyboardEventType(type))
- return op.template Execute<WebKeyboardEvent>(arg_in, arg_out);
- else if (WebInputEvent::IsTouchEventType(type))
- return op.template Execute<WebTouchEvent>(arg_in, arg_out);
- else if (WebInputEvent::IsGestureEventType(type))
- return op.template Execute<WebGestureEvent>(arg_in, arg_out);
-
- NOTREACHED() << "Unknown webkit event type " << type;
- return false;
+template <typename EventType>
+std::string Execute(const WebInputEvent& event) {
+ std::string result = base::StringPrintf(
+ "%s (Time: %lf, Modifiers: %d)\n",
+ WebInputEvent::GetName(event.GetType()),
+ event.TimeStamp().since_origin().InSecondsF(), event.GetModifiers());
+ ApppendEventDetails(static_cast<const EventType&>(event), &result);
+ return result;
}
} // namespace
std::string WebInputEventTraits::ToString(const WebInputEvent& event) {
- std::string result;
- Apply(WebInputEventToString(), event.GetType(), event, &result);
- return result;
+ const WebInputEvent::Type type = event.GetType();
+ if (WebInputEvent::IsPointerEventType(type)) {
+ return Execute<WebPointerEvent>(event);
+ }
+ if (WebInputEvent::IsMouseEventType(type)) {
+ return Execute<WebMouseEvent>(event);
+ }
+ if (type == WebInputEvent::Type::kMouseWheel) {
+ return Execute<WebMouseWheelEvent>(event);
+ }
+ if (WebInputEvent::IsKeyboardEventType(type)) {
+ return Execute<WebKeyboardEvent>(event);
+ }
+ if (WebInputEvent::IsTouchEventType(type)) {
+ return Execute<WebTouchEvent>(event);
+ }
+ CHECK(WebInputEvent::IsGestureEventType(type));
+ return Execute<WebGestureEvent>(event);
}
bool WebInputEventTraits::ShouldBlockEventStream(const WebInputEvent& event) {