Rename StringWriter to FixedStringWriter

It makes it clearer that it writes the data into a pre-existing buffer rather than allocating a string.
diff --git a/Android.bp b/Android.bp
index 104a3af..381b325 100644
--- a/Android.bp
+++ b/Android.bp
@@ -12375,6 +12375,7 @@
         "src/base/base64_unittest.cc",
         "src/base/bits_unittest.cc",
         "src/base/circular_queue_unittest.cc",
+        "src/base/fixed_string_writer_unittest.cc",
         "src/base/flags_unittest.cc",
         "src/base/flat_hash_map_unittest.cc",
         "src/base/flat_set_unittest.cc",
@@ -12399,7 +12400,6 @@
         "src/base/string_utils_unittest.cc",
         "src/base/string_view_splitter_unittest.cc",
         "src/base/string_view_unittest.cc",
-        "src/base/string_writer_unittest.cc",
         "src/base/subprocess_unittest.cc",
         "src/base/task_runner_unittest.cc",
         "src/base/temp_file_unittest.cc",
diff --git a/BUILD b/BUILD
index 5ac196e..ccb583d 100644
--- a/BUILD
+++ b/BUILD
@@ -835,6 +835,7 @@
         "include/perfetto/ext/base/endian.h",
         "include/perfetto/ext/base/event_fd.h",
         "include/perfetto/ext/base/file_utils.h",
+        "include/perfetto/ext/base/fixed_string_writer.h",
         "include/perfetto/ext/base/flags.h",
         "include/perfetto/ext/base/flat_hash_map.h",
         "include/perfetto/ext/base/fnv_hash.h",
@@ -862,7 +863,6 @@
         "include/perfetto/ext/base/string_utils.h",
         "include/perfetto/ext/base/string_view.h",
         "include/perfetto/ext/base/string_view_splitter.h",
-        "include/perfetto/ext/base/string_writer.h",
         "include/perfetto/ext/base/subprocess.h",
         "include/perfetto/ext/base/sys_types.h",
         "include/perfetto/ext/base/temp_file.h",
diff --git a/include/perfetto/ext/base/BUILD.gn b/include/perfetto/ext/base/BUILD.gn
index 62ec0c7..0c3f792 100644
--- a/include/perfetto/ext/base/BUILD.gn
+++ b/include/perfetto/ext/base/BUILD.gn
@@ -27,6 +27,7 @@
     "endian.h",
     "event_fd.h",
     "file_utils.h",
+    "fixed_string_writer.h",
     "flags.h",
     "flat_hash_map.h",
     "fnv_hash.h",
@@ -54,7 +55,6 @@
     "string_utils.h",
     "string_view.h",
     "string_view_splitter.h",
-    "string_writer.h",
     "subprocess.h",
     "sys_types.h",
     "temp_file.h",
diff --git a/include/perfetto/ext/base/string_writer.h b/include/perfetto/ext/base/fixed_string_writer.h
similarity index 95%
rename from include/perfetto/ext/base/string_writer.h
rename to include/perfetto/ext/base/fixed_string_writer.h
index 587b2f9..64747af 100644
--- a/include/perfetto/ext/base/string_writer.h
+++ b/include/perfetto/ext/base/fixed_string_writer.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef INCLUDE_PERFETTO_EXT_BASE_STRING_WRITER_H_
-#define INCLUDE_PERFETTO_EXT_BASE_STRING_WRITER_H_
+#ifndef INCLUDE_PERFETTO_EXT_BASE_FIXED_STRING_WRITER_H_
+#define INCLUDE_PERFETTO_EXT_BASE_FIXED_STRING_WRITER_H_
 
 #include <string.h>
 
@@ -34,10 +34,10 @@
 // A helper class which writes formatted data to a string buffer.
 // This is used in the trace processor where we write O(GBs) of strings and
 // sprintf is too slow.
-class StringWriter {
+class FixedStringWriter {
  public:
   // Creates a string buffer from a char buffer and length.
-  StringWriter(char* buffer, size_t size) : buffer_(buffer), size_(size) {}
+  FixedStringWriter(char* buffer, size_t size) : buffer_(buffer), size_(size) {}
 
   // Appends n instances of a char to the buffer.
   void AppendChar(char in, size_t n = 1) {
@@ -180,4 +180,4 @@
 }  // namespace base
 }  // namespace perfetto
 
-#endif  // INCLUDE_PERFETTO_EXT_BASE_STRING_WRITER_H_
+#endif  // INCLUDE_PERFETTO_EXT_BASE_FIXED_STRING_WRITER_H_
diff --git a/src/base/BUILD.gn b/src/base/BUILD.gn
index de12aba..403578f 100644
--- a/src/base/BUILD.gn
+++ b/src/base/BUILD.gn
@@ -212,6 +212,7 @@
     "base64_unittest.cc",
     "bits_unittest.cc",
     "circular_queue_unittest.cc",
+    "fixed_string_writer_unittest.cc",
     "flags_unittest.cc",
     "flat_hash_map_unittest.cc",
     "flat_set_unittest.cc",
@@ -235,7 +236,6 @@
     "string_utils_unittest.cc",
     "string_view_splitter_unittest.cc",
     "string_view_unittest.cc",
-    "string_writer_unittest.cc",
     "task_runner_unittest.cc",
     "temp_file_unittest.cc",
     "thread_checker_unittest.cc",
diff --git a/src/base/string_writer_unittest.cc b/src/base/fixed_string_writer_unittest.cc
similarity index 73%
rename from src/base/string_writer_unittest.cc
rename to src/base/fixed_string_writer_unittest.cc
index 1df52bf..c49e0da 100644
--- a/src/base/string_writer_unittest.cc
+++ b/src/base/fixed_string_writer_unittest.cc
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include "perfetto/ext/base/string_writer.h"
+#include "perfetto/ext/base/fixed_string_writer.h"
 
 #include "test/gtest_and_gmock.h"
 
@@ -22,111 +22,111 @@
 namespace base {
 namespace {
 
-TEST(StringWriterTest, BasicCases) {
+TEST(FixedStringWriterTest, BasicCases) {
   char buffer[128];
   {
-    base::StringWriter writer(buffer, sizeof(buffer));
+    base::FixedStringWriter writer(buffer, sizeof(buffer));
     writer.AppendChar('0');
     ASSERT_EQ(writer.GetStringView().ToStdString(), "0");
   }
   {
-    base::StringWriter writer(buffer, sizeof(buffer));
+    base::FixedStringWriter writer(buffer, sizeof(buffer));
     writer.AppendInt(132545);
     ASSERT_EQ(writer.GetStringView().ToStdString(), "132545");
   }
   {
-    base::StringWriter writer(buffer, sizeof(buffer));
+    base::FixedStringWriter writer(buffer, sizeof(buffer));
     writer.AppendUnsignedInt(523);
     ASSERT_EQ(writer.GetStringView().ToStdString(), "523");
   }
   {
-    base::StringWriter writer(buffer, sizeof(buffer));
+    base::FixedStringWriter writer(buffer, sizeof(buffer));
     writer.AppendPaddedInt<'0', 3>(0);
     ASSERT_EQ(writer.GetStringView().ToStdString(), "000");
   }
   {
-    base::StringWriter writer(buffer, sizeof(buffer));
+    base::FixedStringWriter writer(buffer, sizeof(buffer));
     writer.AppendPaddedInt<'0', 1>(1);
     ASSERT_EQ(writer.GetStringView().ToStdString(), "1");
   }
   {
-    base::StringWriter writer(buffer, sizeof(buffer));
+    base::FixedStringWriter writer(buffer, sizeof(buffer));
     writer.AppendPaddedInt<'0', 3>(1);
     ASSERT_EQ(writer.GetStringView().ToStdString(), "001");
   }
   {
-    base::StringWriter writer(buffer, sizeof(buffer));
+    base::FixedStringWriter writer(buffer, sizeof(buffer));
     writer.AppendPaddedInt<'0', 0>(1);
     ASSERT_EQ(writer.GetStringView().ToStdString(), "1");
   }
   {
-    base::StringWriter writer(buffer, sizeof(buffer));
+    base::FixedStringWriter writer(buffer, sizeof(buffer));
     writer.AppendPaddedInt<' ', 5>(123);
     ASSERT_EQ(writer.GetStringView().ToStdString(), "  123");
   }
   {
-    base::StringWriter writer(buffer, sizeof(buffer));
+    base::FixedStringWriter writer(buffer, sizeof(buffer));
     writer.AppendPaddedUnsignedInt<' ', 5>(123);
     ASSERT_EQ(writer.GetStringView().ToStdString(), "  123");
   }
   {
-    base::StringWriter writer(buffer, sizeof(buffer));
+    base::FixedStringWriter writer(buffer, sizeof(buffer));
     writer.AppendDouble(123.25);
     ASSERT_EQ(writer.GetStringView().ToStdString(), "123.250000");
   }
   {
-    base::StringWriter writer(buffer, sizeof(buffer));
+    base::FixedStringWriter writer(buffer, sizeof(buffer));
     writer.AppendInt(std::numeric_limits<int64_t>::min());
     ASSERT_EQ(writer.GetStringView().ToStdString(), "-9223372036854775808");
   }
   {
-    base::StringWriter writer(buffer, sizeof(buffer));
+    base::FixedStringWriter writer(buffer, sizeof(buffer));
     writer.AppendInt(std::numeric_limits<int64_t>::max());
     ASSERT_EQ(writer.GetStringView().ToStdString(), "9223372036854775807");
   }
   {
-    base::StringWriter writer(buffer, sizeof(buffer));
+    base::FixedStringWriter writer(buffer, sizeof(buffer));
     writer.AppendUnsignedInt(std::numeric_limits<uint64_t>::max());
     ASSERT_EQ(writer.GetStringView().ToStdString(), "18446744073709551615");
   }
   {
-    base::StringWriter writer(buffer, sizeof(buffer));
+    base::FixedStringWriter writer(buffer, sizeof(buffer));
     writer.AppendBool(true);
     ASSERT_EQ(writer.GetStringView().ToStdString(), "true");
   }
   {
-    base::StringWriter writer(buffer, sizeof(buffer));
+    base::FixedStringWriter writer(buffer, sizeof(buffer));
     writer.AppendBool(false);
     ASSERT_EQ(writer.GetStringView().ToStdString(), "false");
   }
 
   constexpr char kTestStr[] = "test";
   {
-    base::StringWriter writer(buffer, sizeof(buffer));
+    base::FixedStringWriter writer(buffer, sizeof(buffer));
     writer.AppendLiteral(kTestStr);
     ASSERT_EQ(writer.GetStringView().ToStdString(), kTestStr);
   }
   {
-    base::StringWriter writer(buffer, sizeof(buffer));
+    base::FixedStringWriter writer(buffer, sizeof(buffer));
     writer.AppendString(kTestStr, sizeof(kTestStr) - 1);
     ASSERT_EQ(writer.GetStringView().ToStdString(), kTestStr);
   }
   {
-    base::StringWriter writer(buffer, sizeof(buffer));
+    base::FixedStringWriter writer(buffer, sizeof(buffer));
     writer.AppendString(kTestStr);
     ASSERT_EQ(writer.GetStringView().ToStdString(), kTestStr);
   }
   {
-    base::StringWriter writer(buffer, sizeof(buffer));
+    base::FixedStringWriter writer(buffer, sizeof(buffer));
     writer.AppendChar('x', sizeof(buffer));
     ASSERT_EQ(writer.GetStringView().ToStdString(),
               std::string(sizeof(buffer), 'x').c_str());
   }
 }
 
-TEST(StringWriterTest, WriteAllTypes) {
+TEST(FixedStringWriterTest, WriteAllTypes) {
   char buffer[128];
-  base::StringWriter writer(buffer, sizeof(buffer));
+  base::FixedStringWriter writer(buffer, sizeof(buffer));
   writer.AppendChar('0');
   writer.AppendInt(132545);
   writer.AppendUnsignedInt(523);
diff --git a/src/profiling/symbolizer/breakpad_parser.cc b/src/profiling/symbolizer/breakpad_parser.cc
index 5f767b7..b409bb7 100644
--- a/src/profiling/symbolizer/breakpad_parser.cc
+++ b/src/profiling/symbolizer/breakpad_parser.cc
@@ -19,9 +19,9 @@
 
 #include "perfetto/base/logging.h"
 #include "perfetto/ext/base/file_utils.h"
+#include "perfetto/ext/base/fixed_string_writer.h"
 #include "perfetto/ext/base/string_splitter.h"
 #include "perfetto/ext/base/string_utils.h"
-#include "perfetto/ext/base/string_writer.h"
 
 namespace perfetto {
 namespace profiling {
@@ -235,7 +235,8 @@
   // considered a part of the function name and will be appended to the buffer
   // in |func_name_writer|.
   std::unique_ptr<char[]> joined_string(new char[current_line.size()]);
-  base::StringWriter func_name_writer(joined_string.get(), current_line.size());
+  base::FixedStringWriter func_name_writer(joined_string.get(),
+                                           current_line.size());
   bool first_token = true;
   while (words.Next()) {
     if (!first_token) {
diff --git a/src/tools/dump_ftrace_stats/main.cc b/src/tools/dump_ftrace_stats/main.cc
index 9841b53..37f09aa 100644
--- a/src/tools/dump_ftrace_stats/main.cc
+++ b/src/tools/dump_ftrace_stats/main.cc
@@ -17,10 +17,10 @@
 #include <signal.h>
 
 #include "perfetto/ext/base/file_utils.h"
+#include "perfetto/ext/base/fixed_string_writer.h"
 #include "perfetto/ext/base/lock_free_task_runner.h"
 #include "perfetto/ext/base/string_splitter.h"
 #include "perfetto/ext/base/string_utils.h"
-#include "perfetto/ext/base/string_writer.h"
 #include "perfetto/ext/base/utils.h"
 
 namespace perfetto {
@@ -78,7 +78,7 @@
     char buffer[1024];
     base::StringSplitter splitter(std::move(text), '\n');
     while (splitter.Next()) {
-      base::StringWriter writer(buffer, base::ArraySize(buffer));
+      base::FixedStringWriter writer(buffer, base::ArraySize(buffer));
       writer.AppendLiteral("C|");
       writer.AppendInt(getpid());
       writer.AppendLiteral("|");
diff --git a/src/trace_processor/importers/proto/gpu_event_parser.cc b/src/trace_processor/importers/proto/gpu_event_parser.cc
index 85dc817..1aceb16 100644
--- a/src/trace_processor/importers/proto/gpu_event_parser.cc
+++ b/src/trace_processor/importers/proto/gpu_event_parser.cc
@@ -25,9 +25,9 @@
 #include <vector>
 
 #include "perfetto/base/logging.h"
+#include "perfetto/ext/base/fixed_string_writer.h"
 #include "perfetto/ext/base/string_utils.h"
 #include "perfetto/ext/base/string_view.h"
-#include "perfetto/ext/base/string_writer.h"
 #include "perfetto/protozero/field.h"
 #include "src/trace_processor/importers/common/args_tracker.h"
 #include "src/trace_processor/importers/common/event_tracker.h"
@@ -179,7 +179,7 @@
       StringId unit_id = kNullStringId;
       if (spec.has_numerator_units() || spec.has_denominator_units()) {
         char buffer[1024];
-        base::StringWriter unit(buffer, sizeof(buffer));
+        base::FixedStringWriter unit(buffer, sizeof(buffer));
         for (auto number = spec.numerator_units(); number; ++number) {
           if (unit.pos()) {
             unit.AppendChar(':');
@@ -343,7 +343,7 @@
     return kNullStringId;
   }
   char buf[256];
-  base::StringWriter writer(buf, sizeof(buf));
+  base::FixedStringWriter writer(buf, sizeof(buf));
   uint32_t bit_index = 0;
   bool first = true;
   for (auto it = event.render_subpass_index_mask(); it; ++it) {
diff --git a/src/trace_processor/importers/proto/proto_trace_parser_impl.cc b/src/trace_processor/importers/proto/proto_trace_parser_impl.cc
index 57080b8..8af38e9 100644
--- a/src/trace_processor/importers/proto/proto_trace_parser_impl.cc
+++ b/src/trace_processor/importers/proto/proto_trace_parser_impl.cc
@@ -24,10 +24,10 @@
 #include <vector>
 
 #include "perfetto/base/logging.h"
+#include "perfetto/ext/base/fixed_string_writer.h"
 #include "perfetto/ext/base/metatrace_events.h"
 #include "perfetto/ext/base/string_utils.h"
 #include "perfetto/ext/base/string_view.h"
-#include "perfetto/ext/base/string_writer.h"
 #include "perfetto/trace_processor/trace_blob_view.h"
 #include "src/trace_processor/containers/null_term_string_view.h"
 #include "src/trace_processor/importers/common/args_tracker.h"
@@ -176,7 +176,7 @@
       args.AddArgsTo(id).AddArg(name_id, value);
 
       char buffer[2048];
-      base::StringWriter writer(buffer, sizeof(buffer));
+      base::FixedStringWriter writer(buffer, sizeof(buffer));
       writer.AppendString("cr-");
       // If we have data from multiple Chrome instances, append a suffix
       // to differentiate them.
diff --git a/src/trace_processor/importers/proto/track_event_event_importer.h b/src/trace_processor/importers/proto/track_event_event_importer.h
index eb397c1..dd39813 100644
--- a/src/trace_processor/importers/proto/track_event_event_importer.h
+++ b/src/trace_processor/importers/proto/track_event_event_importer.h
@@ -27,11 +27,11 @@
 
 #include "perfetto/base/logging.h"
 #include "perfetto/base/status.h"
+#include "perfetto/ext/base/fixed_string_writer.h"
 #include "perfetto/ext/base/status_macros.h"
 #include "perfetto/ext/base/status_or.h"
 #include "perfetto/ext/base/string_utils.h"
 #include "perfetto/ext/base/string_view.h"
-#include "perfetto/ext/base/string_writer.h"
 #include "perfetto/protozero/field.h"
 #include "perfetto/protozero/proto_decoder.h"
 #include "perfetto/public/compiler.h"
@@ -261,7 +261,7 @@
         category_id = storage_->InternString(decoder->name());
       } else {
         char buffer[32];
-        base::StringWriter writer(buffer, sizeof(buffer));
+        base::FixedStringWriter writer(buffer, sizeof(buffer));
         writer.AppendLiteral("unknown(");
         writer.AppendUnsignedInt(category_iids[0]);
         writer.AppendChar(')');
diff --git a/src/trace_processor/perfetto_sql/intrinsics/functions/to_ftrace.cc b/src/trace_processor/perfetto_sql/intrinsics/functions/to_ftrace.cc
index 58a7544..ce8c006 100644
--- a/src/trace_processor/perfetto_sql/intrinsics/functions/to_ftrace.cc
+++ b/src/trace_processor/perfetto_sql/intrinsics/functions/to_ftrace.cc
@@ -25,8 +25,8 @@
 
 #include "perfetto/base/logging.h"
 #include "perfetto/base/status.h"
+#include "perfetto/ext/base/fixed_string_writer.h"
 #include "perfetto/ext/base/string_view.h"
-#include "perfetto/ext/base/string_writer.h"
 #include "perfetto/public/compiler.h"
 #include "perfetto/trace_processor/basic_types.h"
 #include "src/trace_processor/containers/null_term_string_view.h"
@@ -80,7 +80,7 @@
                  tables::ArgTable::ConstCursor*,
                  NullTermStringView event_name,
                  std::vector<std::optional<uint32_t>>* field_id_to_arg_index,
-                 base::StringWriter*);
+                 base::FixedStringWriter*);
 
   void SerializeArgs();
 
@@ -155,7 +155,7 @@
 
   uint32_t start_row_ = 0;
 
-  base::StringWriter* writer_ = nullptr;
+  base::FixedStringWriter* writer_ = nullptr;
 };
 
 ArgsSerializer::ArgsSerializer(
@@ -164,7 +164,7 @@
     tables::ArgTable::ConstCursor* cursor,
     NullTermStringView event_name,
     std::vector<std::optional<uint32_t>>* field_id_to_arg_index,
-    base::StringWriter* writer)
+    base::FixedStringWriter* writer)
     : storage_(context->storage.get()),
       context_(context),
       cursor_(cursor),
@@ -632,7 +632,7 @@
   const auto& raw = storage_->ftrace_event_table();
 
   char line[4096];
-  base::StringWriter writer(line, sizeof(line));
+  base::FixedStringWriter writer(line, sizeof(line));
 
   auto row = raw[raw_row];
   StringId event_name_id = row.name();
@@ -662,7 +662,7 @@
 }
 
 void SystraceSerializer::SerializePrefix(uint32_t raw_row,
-                                         base::StringWriter* writer) {
+                                         base::FixedStringWriter* writer) {
   const auto& raw = storage_->ftrace_event_table();
   const auto& cpu_table = storage_->cpu_table();
 
diff --git a/src/trace_processor/perfetto_sql/intrinsics/functions/to_ftrace.h b/src/trace_processor/perfetto_sql/intrinsics/functions/to_ftrace.h
index a2bdbd8..f0154d4 100644
--- a/src/trace_processor/perfetto_sql/intrinsics/functions/to_ftrace.h
+++ b/src/trace_processor/perfetto_sql/intrinsics/functions/to_ftrace.h
@@ -24,8 +24,8 @@
 #include <vector>
 
 #include "perfetto/base/status.h"
+#include "perfetto/ext/base/fixed_string_writer.h"
 #include "perfetto/ext/base/flat_hash_map.h"
-#include "perfetto/ext/base/string_writer.h"
 #include "perfetto/trace_processor/basic_types.h"
 #include "src/trace_processor/perfetto_sql/intrinsics/functions/sql_function.h"
 #include "src/trace_processor/storage/trace_storage.h"
@@ -46,7 +46,7 @@
   using StringIdMap =
       base::FlatHashMap<StringId, std::vector<std::optional<uint32_t>>>;
 
-  void SerializePrefix(uint32_t raw_row, base::StringWriter* writer);
+  void SerializePrefix(uint32_t raw_row, base::FixedStringWriter* writer);
 
   StringIdMap proto_id_to_arg_index_by_event_;
   const TraceStorage* storage_ = nullptr;
diff --git a/src/trace_processor/types/gfp_flags.cc b/src/trace_processor/types/gfp_flags.cc
index a27ab10..b73fed6 100644
--- a/src/trace_processor/types/gfp_flags.cc
+++ b/src/trace_processor/types/gfp_flags.cc
@@ -216,7 +216,7 @@
 
 void WriteGfpFlag(uint64_t value,
                   std::optional<VersionNumber> version,
-                  base::StringWriter* writer) {
+                  base::FixedStringWriter* writer) {
   // On all kernel versions if this flag is not set, return GFP_NOWAIT.
   if (value == 0) {
     writer->AppendString("GFP_NOWAIT");
diff --git a/src/trace_processor/types/gfp_flags.h b/src/trace_processor/types/gfp_flags.h
index 04936a8..70f11b4 100644
--- a/src/trace_processor/types/gfp_flags.h
+++ b/src/trace_processor/types/gfp_flags.h
@@ -19,7 +19,7 @@
 
 #include <optional>
 
-#include "perfetto/ext/base/string_writer.h"
+#include "perfetto/ext/base/fixed_string_writer.h"
 #include "src/trace_processor/types/version_number.h"
 
 namespace perfetto {
@@ -30,7 +30,7 @@
 // flag.
 void WriteGfpFlag(uint64_t value,
                   std::optional<VersionNumber> version,
-                  base::StringWriter* writer);
+                  base::FixedStringWriter* writer);
 
 }  // namespace trace_processor
 }  // namespace perfetto
diff --git a/src/traceconv/trace_to_systrace.cc b/src/traceconv/trace_to_systrace.cc
index d4c596a..08331c9 100644
--- a/src/traceconv/trace_to_systrace.cc
+++ b/src/traceconv/trace_to_systrace.cc
@@ -27,8 +27,8 @@
 
 #include "perfetto/base/build_config.h"
 #include "perfetto/base/logging.h"
+#include "perfetto/ext/base/fixed_string_writer.h"
 #include "perfetto/ext/base/string_utils.h"
-#include "perfetto/ext/base/string_writer.h"
 #include "perfetto/ext/base/utils.h"
 #include "perfetto/trace_processor/trace_processor.h"
 #include "src/traceconv/utils.h"
@@ -85,7 +85,7 @@
 inline void FormatProcess(uint32_t pid,
                           uint32_t ppid,
                           const base::StringView& name,
-                          base::StringWriter* writer) {
+                          base::FixedStringWriter* writer) {
   writer->AppendLiteral("root             ");
   writer->AppendInt(pid);
   writer->AppendLiteral("     ");
@@ -98,7 +98,7 @@
 inline void FormatThread(uint32_t tid,
                          uint32_t tgid,
                          const base::StringView& name,
-                         base::StringWriter* writer) {
+                         base::FixedStringWriter* writer) {
   writer->AppendLiteral("root         ");
   writer->AppendInt(tgid);
   writer->AppendChar(' ');
@@ -124,7 +124,7 @@
     char buffer[2048];
     auto iterator = tp_->ExecuteQuery(sql);
     for (uint32_t rows = 0; iterator.Next(); rows++) {
-      base::StringWriter line_writer(buffer, base::ArraySize(buffer));
+      base::FixedStringWriter line_writer(buffer, base::ArraySize(buffer));
       callback(&iterator, &line_writer);
 
       if (global_writer_.pos() + line_writer.pos() >= global_writer_.size()) {
@@ -155,7 +155,7 @@
 
   trace_processor::TraceProcessor* tp_ = nullptr;
   base::PagedMemory buffer_;
-  base::StringWriter global_writer_;
+  base::FixedStringWriter global_writer_;
   TraceWriter* trace_writer_;
 };
 
@@ -167,7 +167,7 @@
 
   static const char kRawEventsCountSql[] = "select count(1) from ftrace_event";
   uint32_t raw_events = 0;
-  auto e_callback = [&raw_events](Iterator* it, base::StringWriter*) {
+  auto e_callback = [&raw_events](Iterator* it, base::FixedStringWriter*) {
     raw_events = static_cast<uint32_t>(it->Get(0).long_value);
   };
   if (!q_writer.RunQuery(kRawEventsCountSql, e_callback))
@@ -186,7 +186,7 @@
   fflush(stderr);
 
   auto raw_callback = [wrapped_in_json](Iterator* it,
-                                        base::StringWriter* writer) {
+                                        base::FixedStringWriter* writer) {
     const char* line = it->Get(0 /* col */).string_value;
     if (wrapped_in_json) {
       for (uint32_t i = 0; line[i] != '\0'; i++) {
@@ -310,7 +310,7 @@
     // TODO(lalitm): change this query to actually use ppid when it is exposed
     // by the process table.
     static const char kPSql[] = "select pid, 0 as ppid, name from process";
-    auto p_callback = [](Iterator* it, base::StringWriter* writer) {
+    auto p_callback = [](Iterator* it, base::FixedStringWriter* writer) {
       uint32_t pid = static_cast<uint32_t>(it->Get(0 /* col */).long_value);
       uint32_t ppid = static_cast<uint32_t>(it->Get(1 /* col */).long_value);
       const auto& name_col = it->Get(2 /* col */);
@@ -328,7 +328,7 @@
     static const char kTSql[] =
         "select tid, COALESCE(upid, 0), thread.name "
         "from thread left join process using (upid)";
-    auto t_callback = [](Iterator* it, base::StringWriter* writer) {
+    auto t_callback = [](Iterator* it, base::FixedStringWriter* writer) {
       uint32_t tid = static_cast<uint32_t>(it->Get(0 /* col */).long_value);
       uint32_t tgid = static_cast<uint32_t>(it->Get(1 /* col */).long_value);
       const auto& name_col = it->Get(2 /* col */);