diff --git a/spdy/core/spdy_frame_builder.h b/spdy/core/spdy_frame_builder.h
index c569c8c..e1dc32b 100644
--- a/spdy/core/spdy_frame_builder.h
+++ b/spdy/core/spdy_frame_builder.h
@@ -15,10 +15,13 @@
 #include "net/third_party/quiche/src/spdy/platform/api/spdy_endianness_util.h"
 #include "net/third_party/quiche/src/spdy/platform/api/spdy_export.h"
 #include "net/third_party/quiche/src/spdy/platform/api/spdy_string_piece.h"
-#include "net/third_party/quiche/src/spdy/platform/api/spdy_test_utils_prod.h"
 
 namespace spdy {
 
+namespace test {
+class SpdyFrameBuilderPeer;
+}  // namespace test
+
 // This class provides facilities for basic binary value packing
 // into Spdy frames.
 //
@@ -101,9 +104,7 @@
   bool WriteBytes(const void* data, uint32_t data_len);
 
  private:
-  SPDY_FRIEND_TEST(SpdyFrameBuilderTest, GetWritableBuffer);
-  SPDY_FRIEND_TEST(SpdyFrameBuilderTest, GetWritableOutput);
-  SPDY_FRIEND_TEST(SpdyFrameBuilderTest, GetWritableOutputNegative);
+  friend class test::SpdyFrameBuilderPeer;
 
   // Populates this frame with a HTTP2 frame prefix with type and length
   // information.
diff --git a/spdy/core/spdy_frame_builder_test.cc b/spdy/core/spdy_frame_builder_test.cc
index 97d10f1..11d3c7b 100644
--- a/spdy/core/spdy_frame_builder_test.cc
+++ b/spdy/core/spdy_frame_builder_test.cc
@@ -10,9 +10,25 @@
 #include "net/third_party/quiche/src/spdy/core/array_output_buffer.h"
 #include "net/third_party/quiche/src/spdy/core/spdy_framer.h"
 #include "net/third_party/quiche/src/spdy/core/spdy_protocol.h"
+#include "net/third_party/quiche/src/spdy/platform/api/spdy_export.h"
 
 namespace spdy {
 
+namespace test {
+
+class SPDY_EXPORT_PRIVATE SpdyFrameBuilderPeer {
+ public:
+  static char* GetWritableBuffer(SpdyFrameBuilder* builder, size_t length) {
+    return builder->GetWritableBuffer(length);
+  }
+
+  static char* GetWritableOutput(SpdyFrameBuilder* builder,
+                                 size_t desired_length,
+                                 size_t* actual_length) {
+    return builder->GetWritableOutput(desired_length, actual_length);
+  }
+};
+
 namespace {
 
 const int64_t kSize = 64 * 1024;
@@ -25,7 +41,8 @@
 TEST(SpdyFrameBuilderTest, GetWritableBuffer) {
   const size_t kBuilderSize = 10;
   SpdyFrameBuilder builder(kBuilderSize);
-  char* writable_buffer = builder.GetWritableBuffer(kBuilderSize);
+  char* writable_buffer =
+      SpdyFrameBuilderPeer::GetWritableBuffer(&builder, kBuilderSize);
   memset(writable_buffer, ~1, kBuilderSize);
   EXPECT_TRUE(builder.Seek(kBuilderSize));
   SpdySerializedFrame frame(builder.take());
@@ -42,7 +59,8 @@
   const size_t kBuilderSize = 10;
   SpdyFrameBuilder builder(kBuilderSize, &output);
   size_t actual_size = 0;
-  char* writable_buffer = builder.GetWritableOutput(kBuilderSize, &actual_size);
+  char* writable_buffer = SpdyFrameBuilderPeer::GetWritableOutput(
+      &builder, kBuilderSize, &actual_size);
   memset(writable_buffer, ~1, kBuilderSize);
   EXPECT_TRUE(builder.Seek(kBuilderSize));
   SpdySerializedFrame frame(output.Begin(), kBuilderSize, false);
@@ -59,10 +77,11 @@
   const size_t kBuilderSize = 10;
   SpdyFrameBuilder builder(kBuilderSize, &output);
   size_t actual_size = 0;
-  char* writable_buffer = builder.GetWritableOutput(kBuilderSize, &actual_size);
-  builder.GetWritableOutput(kBuilderSize, &actual_size);
+  char* writable_buffer = SpdyFrameBuilderPeer::GetWritableOutput(
+      &builder, kBuilderSize, &actual_size);
   EXPECT_EQ(0u, actual_size);
   EXPECT_EQ(nullptr, writable_buffer);
 }
 
+}  // namespace test
 }  // namespace spdy
diff --git a/spdy/platform/api/spdy_test_utils_prod.h b/spdy/platform/api/spdy_test_utils_prod.h
deleted file mode 100644
index 1466770..0000000
--- a/spdy/platform/api/spdy_test_utils_prod.h
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2019 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.
-
-#ifndef QUICHE_SPDY_PLATFORM_API_SPDY_TEST_UTILS_PROD_H_
-#define QUICHE_SPDY_PLATFORM_API_SPDY_TEST_UTILS_PROD_H_
-
-#include "net/spdy/platform/impl/spdy_test_utils_prod_impl.h"
-
-#define SPDY_FRIEND_TEST SPDY_FRIEND_TEST_IMPL
-
-#endif  // QUICHE_SPDY_PLATFORM_API_SPDY_TEST_UTILS_PROD_H_
