diff --git a/quic/core/frames/quic_max_stream_id_frame.cc b/quic/core/frames/quic_max_stream_id_frame.cc
deleted file mode 100644
index 19270e8..0000000
--- a/quic/core/frames/quic_max_stream_id_frame.cc
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2016 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.
-
-#include "net/third_party/quiche/src/quic/core/frames/quic_max_stream_id_frame.h"
-
-namespace quic {
-
-QuicMaxStreamIdFrame::QuicMaxStreamIdFrame()
-    : QuicInlinedFrame(MAX_STREAM_ID_FRAME),
-      control_frame_id(kInvalidControlFrameId) {}
-
-QuicMaxStreamIdFrame::QuicMaxStreamIdFrame(QuicControlFrameId control_frame_id,
-                                           QuicStreamId max_stream_id)
-    : QuicInlinedFrame(MAX_STREAM_ID_FRAME),
-      control_frame_id(control_frame_id),
-      max_stream_id(max_stream_id) {}
-
-std::ostream& operator<<(std::ostream& os, const QuicMaxStreamIdFrame& frame) {
-  os << "{ control_frame_id: " << frame.control_frame_id
-     << ", stream_id: " << frame.max_stream_id << " }\n";
-  return os;
-}
-
-}  // namespace quic
diff --git a/quic/core/frames/quic_max_stream_id_frame.h b/quic/core/frames/quic_max_stream_id_frame.h
deleted file mode 100644
index 6177687..0000000
--- a/quic/core/frames/quic_max_stream_id_frame.h
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2016 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_QUIC_CORE_FRAMES_QUIC_MAX_STREAM_ID_FRAME_H_
-#define QUICHE_QUIC_CORE_FRAMES_QUIC_MAX_STREAM_ID_FRAME_H_
-
-#include <ostream>
-
-#include "net/third_party/quiche/src/quic/core/frames/quic_inlined_frame.h"
-#include "net/third_party/quiche/src/quic/core/quic_constants.h"
-#include "net/third_party/quiche/src/quic/core/quic_types.h"
-#include "net/third_party/quiche/src/quic/platform/api/quic_export.h"
-
-namespace quic {
-
-// IETF format MAX_STREAM_ID frame.
-// This frame is used by the sender to inform the peer of the largest
-// stream id that the peer may open and that the sender will accept.
-struct QUIC_EXPORT_PRIVATE QuicMaxStreamIdFrame
-    : public QuicInlinedFrame<QuicMaxStreamIdFrame> {
-  QuicMaxStreamIdFrame();
-  QuicMaxStreamIdFrame(QuicControlFrameId control_frame_id,
-                       QuicStreamId max_stream_id);
-
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
-      std::ostream& os,
-      const QuicMaxStreamIdFrame& frame);
-
-  // A unique identifier of this control frame. 0 when this frame is received,
-  // and non-zero when sent.
-  QuicControlFrameId control_frame_id;
-
-  // The maximum stream id to support.
-  QuicStreamId max_stream_id;
-};
-
-}  // namespace quic
-
-#endif  // QUICHE_QUIC_CORE_FRAMES_QUIC_MAX_STREAM_ID_FRAME_H_
diff --git a/quic/core/frames/quic_stream_id_blocked_frame.cc b/quic/core/frames/quic_stream_id_blocked_frame.cc
deleted file mode 100644
index 627ad2a..0000000
--- a/quic/core/frames/quic_stream_id_blocked_frame.cc
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2016 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.
-
-#include "net/third_party/quiche/src/quic/core/frames/quic_stream_id_blocked_frame.h"
-
-namespace quic {
-
-QuicStreamIdBlockedFrame::QuicStreamIdBlockedFrame()
-    : QuicInlinedFrame(STREAM_ID_BLOCKED_FRAME),
-      control_frame_id(kInvalidControlFrameId) {}
-
-QuicStreamIdBlockedFrame::QuicStreamIdBlockedFrame(
-    QuicControlFrameId control_frame_id,
-    QuicStreamId stream_id)
-    : QuicInlinedFrame(STREAM_ID_BLOCKED_FRAME),
-      control_frame_id(control_frame_id),
-      stream_id(stream_id) {}
-
-std::ostream& operator<<(std::ostream& os,
-                         const QuicStreamIdBlockedFrame& frame) {
-  os << "{ control_frame_id: " << frame.control_frame_id
-     << ", stream id: " << frame.stream_id << " }\n";
-  return os;
-}
-
-}  // namespace quic
diff --git a/quic/core/frames/quic_stream_id_blocked_frame.h b/quic/core/frames/quic_stream_id_blocked_frame.h
deleted file mode 100644
index f9ccca2..0000000
--- a/quic/core/frames/quic_stream_id_blocked_frame.h
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2016 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_QUIC_CORE_FRAMES_QUIC_STREAM_ID_BLOCKED_FRAME_H_
-#define QUICHE_QUIC_CORE_FRAMES_QUIC_STREAM_ID_BLOCKED_FRAME_H_
-
-#include <ostream>
-
-#include "net/third_party/quiche/src/quic/core/frames/quic_inlined_frame.h"
-#include "net/third_party/quiche/src/quic/core/quic_constants.h"
-#include "net/third_party/quiche/src/quic/core/quic_types.h"
-#include "net/third_party/quiche/src/quic/platform/api/quic_export.h"
-
-namespace quic {
-
-// IETF format STREAM_ID_BLOCKED frame.
-// The sender uses this to inform the peer that the sender wished to
-// open a new stream but was blocked from doing so due due to the
-// maximum stream ID limit set by the peer (via a MAX_STREAM_ID frame)
-struct QUIC_EXPORT_PRIVATE QuicStreamIdBlockedFrame
-    : public QuicInlinedFrame<QuicStreamIdBlockedFrame> {
-  QuicStreamIdBlockedFrame();
-  QuicStreamIdBlockedFrame(QuicControlFrameId control_frame_id,
-                           QuicStreamId stream_id);
-
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
-      std::ostream& os,
-      const QuicStreamIdBlockedFrame& frame);
-
-  // A unique identifier of this control frame. 0 when this frame is received,
-  // and non-zero when sent.
-  QuicControlFrameId control_frame_id;
-
-  QuicStreamId stream_id;
-};
-
-}  // namespace quic
-
-#endif  // QUICHE_QUIC_CORE_FRAMES_QUIC_STREAM_ID_BLOCKED_FRAME_H_
diff --git a/quic/core/quic_stream_id_manager_test.cc b/quic/core/quic_stream_id_manager_test.cc
index 47b97cc..164e911 100644
--- a/quic/core/quic_stream_id_manager_test.cc
+++ b/quic/core/quic_stream_id_manager_test.cc
@@ -202,10 +202,10 @@
   // If bidi, Crypto stream default created  at start up, it is one
   // more stream to account for since initialization is "number of
   // request/responses" & crypto is added in to that, not streams.
-  EXPECT_EQ(kDefaultMaxStreamsPerConnection + (GetParam() ? 1 : 0),
+  EXPECT_EQ(kDefaultMaxStreamsPerConnection + (GetParam() ? 1u : 0u),
             stream_id_manager_->outgoing_max_streams());
   // Test is predicated on having 1 static stream going if bidi, 0 if not...)
-  EXPECT_EQ((GetParam() ? 1u : 0),
+  EXPECT_EQ((GetParam() ? 1u : 0u),
             stream_id_manager_->outgoing_static_stream_count());
 
   EXPECT_EQ(kDefaultMaxStreamsPerConnection,
@@ -243,7 +243,7 @@
   // If bidi, Crypto stream default created  at start up, it is one
   // more stream to account for since initialization is "number of
   // request/responses" & crypto is added in to that, not streams.
-  EXPECT_EQ(implementation_max - 1u + (GetParam() ? 1 : 0),
+  EXPECT_EQ(implementation_max - 1u + (GetParam() ? 1u : 0u),
             stream_id_manager_->outgoing_max_streams());
 
   stream_id_manager_->AdjustMaxOpenOutgoingStreams(implementation_max);
@@ -275,7 +275,7 @@
             stream_id_manager_->incoming_initial_max_open_streams());
   EXPECT_EQ(implementation_max - 1u,
             stream_id_manager_->incoming_actual_max_streams());
-  EXPECT_EQ((implementation_max - 1u) / 2,
+  EXPECT_EQ((implementation_max - 1u) / 2u,
             stream_id_manager_->max_streams_window());
 
   stream_id_manager_->SetMaxOpenIncomingStreams(implementation_max);
@@ -296,7 +296,7 @@
             stream_id_manager_->incoming_initial_max_open_streams());
   EXPECT_EQ(implementation_max,
             stream_id_manager_->incoming_actual_max_streams());
-  EXPECT_EQ(implementation_max / 2, stream_id_manager_->max_streams_window());
+  EXPECT_EQ(implementation_max / 2u, stream_id_manager_->max_streams_window());
 }
 
 // Check the case of the stream count in a STREAMS_BLOCKED frame is less than
@@ -399,7 +399,7 @@
 
   frame.unidirectional = IsUnidi();
   EXPECT_TRUE(stream_id_manager_->OnMaxStreamsFrame(frame));
-  EXPECT_EQ(initial_stream_count - 1,
+  EXPECT_EQ(initial_stream_count - 1u,
             stream_id_manager_->outgoing_max_streams());
 
   QuicStreamCount save_outgoing_max_streams =
@@ -417,7 +417,7 @@
   frame.stream_count = initial_stream_count + 1;
   EXPECT_TRUE(stream_id_manager_->OnMaxStreamsFrame(frame));
 
-  EXPECT_EQ(initial_stream_count + 1,
+  EXPECT_EQ(initial_stream_count + 1u,
             stream_id_manager_->outgoing_max_streams());
 }
 
@@ -455,10 +455,10 @@
   // stream
   stream_id_manager_->OnStreamClosed(
       QuicStreamIdManagerPeer::GetFirstIncomingStreamId(stream_id_manager_));
-  EXPECT_EQ(actual_stream_count + 1,
+  EXPECT_EQ(actual_stream_count + 1u,
             stream_id_manager_->incoming_actual_max_streams());
   EXPECT_EQ(stream_id_manager_->incoming_actual_max_streams(),
-            stream_id_manager_->incoming_advertised_max_streams() + 1);
+            stream_id_manager_->incoming_advertised_max_streams() + 1u);
 
   // Now simulate receiving a STREAMS_BLOCKED frame...
   // Changing the actual maximum, above, forces a MAX_STREAMS frame to be
@@ -496,7 +496,7 @@
   // If bidi, Crypto stream default created  at start up, it is one
   // more stream to account for since initialization is "number of
   // request/responses" & crypto is added in to that, not streams.
-  EXPECT_EQ(number_of_streams + (IsBidi() ? 1 : 0),
+  EXPECT_EQ(number_of_streams + (IsBidi() ? 1u : 0u),
             stream_id_manager_->outgoing_max_streams());
   while (number_of_streams) {
     EXPECT_TRUE(stream_id_manager_->CanOpenNextOutgoingStream());
@@ -515,7 +515,7 @@
   // If bidi, Crypto stream default created  at start up, it is one
   // more stream to account for since initialization is "number of
   // request/responses" & crypto is added in to that, not streams.
-  EXPECT_EQ(kDefaultMaxStreamsPerConnection + (IsBidi() ? 1 : 0),
+  EXPECT_EQ(kDefaultMaxStreamsPerConnection + (IsBidi() ? 1u : 0u),
             session_->save_frame().max_streams_frame.stream_count);
   // If we try to get the next id (above the limit), it should cause a quic-bug.
   EXPECT_QUIC_BUG(
@@ -630,7 +630,7 @@
   // stream.
   stream_id_manager_->RegisterStaticStream(first_dynamic);
   // Should go up by 1 stream/stream id.
-  EXPECT_EQ(actual_max + 1, stream_id_manager_->incoming_actual_max_streams());
+  EXPECT_EQ(actual_max + 1u, stream_id_manager_->incoming_actual_max_streams());
 }
 
 // Check that the OnMaxStreamFrame logic properly handles all the
@@ -648,7 +648,7 @@
   // maximum
   frame.stream_count = max_stream_count - 10;
   EXPECT_TRUE(stream_id_manager_->OnMaxStreamsFrame(frame));
-  EXPECT_EQ(max_stream_count - 10, stream_id_manager_->outgoing_max_streams());
+  EXPECT_EQ(max_stream_count - 10u, stream_id_manager_->outgoing_max_streams());
 
   // Now check if the offered count is larger than the max.
   // The count should be pegged at the max.
@@ -783,7 +783,7 @@
   // more stream to account for since initialization is "number of
   // request/responses" & crypto is added in to that, not streams.
   // Since this is the server, the stream is incoming.
-  EXPECT_EQ(kDefaultMaxStreamsPerConnection + (IsBidi() ? 1 : 0),
+  EXPECT_EQ(kDefaultMaxStreamsPerConnection + (IsBidi() ? 1u : 0u),
             stream_id_manager_->incoming_actual_max_streams());
   EXPECT_EQ(kDefaultMaxStreamsPerConnection,
             stream_id_manager_->outgoing_max_streams());
@@ -838,7 +838,7 @@
   // implementation maximum,
   frame.stream_count = max_stream_count - 10;
   EXPECT_TRUE(stream_id_manager_->OnMaxStreamsFrame(frame));
-  EXPECT_EQ(max_stream_count - 10, stream_id_manager_->outgoing_max_streams());
+  EXPECT_EQ(max_stream_count - 10u, stream_id_manager_->outgoing_max_streams());
 
   // Check the case where the offered stream count is greater than the
   // implementation maximum. The count should peg at the maximum.
diff --git a/quic/core/uber_quic_stream_id_manager.cc b/quic/core/uber_quic_stream_id_manager.cc
index 63abc3f..e2261a0 100644
--- a/quic/core/uber_quic_stream_id_manager.cc
+++ b/quic/core/uber_quic_stream_id_manager.cc
@@ -8,14 +8,6 @@
 #include "net/third_party/quiche/src/quic/core/quic_utils.h"
 
 namespace quic {
-namespace {
-
-Perspective Reverse(Perspective perspective) {
-  return perspective == Perspective::IS_SERVER ? Perspective::IS_CLIENT
-                                               : Perspective::IS_SERVER;
-}
-
-}  // namespace
 
 UberQuicStreamIdManager::UberQuicStreamIdManager(
     QuicSession* session,
