diff --git a/quiche/http2/decoder/payload_decoders/altsvc_payload_decoder.cc b/quiche/http2/decoder/payload_decoders/altsvc_payload_decoder.cc
index 45c3cbd..e2efeea 100644
--- a/quiche/http2/decoder/payload_decoders/altsvc_payload_decoder.cc
+++ b/quiche/http2/decoder/payload_decoders/altsvc_payload_decoder.cc
@@ -37,8 +37,7 @@
 }
 
 DecodeStatus AltSvcPayloadDecoder::StartDecodingPayload(
-    FrameDecoderState* state,
-    DecodeBuffer* db) {
+    FrameDecoderState* state, DecodeBuffer* db) {
   HTTP2_DVLOG(2) << "AltSvcPayloadDecoder::StartDecodingPayload: "
                  << state->frame_header();
   QUICHE_DCHECK_EQ(Http2FrameType::ALTSVC, state->frame_header().type);
@@ -52,8 +51,7 @@
 }
 
 DecodeStatus AltSvcPayloadDecoder::ResumeDecodingPayload(
-    FrameDecoderState* state,
-    DecodeBuffer* db) {
+    FrameDecoderState* state, DecodeBuffer* db) {
   const Http2FrameHeader& frame_header = state->frame_header();
   HTTP2_DVLOG(2) << "AltSvcPayloadDecoder::ResumeDecodingPayload: "
                  << frame_header;
diff --git a/quiche/http2/decoder/payload_decoders/altsvc_payload_decoder_test.cc b/quiche/http2/decoder/payload_decoders/altsvc_payload_decoder_test.cc
index de7ca33..18b7253 100644
--- a/quiche/http2/decoder/payload_decoders/altsvc_payload_decoder_test.cc
+++ b/quiche/http2/decoder/payload_decoders/altsvc_payload_decoder_test.cc
@@ -38,8 +38,7 @@
 namespace {
 
 struct Listener : public FramePartsCollector {
-  void OnAltSvcStart(const Http2FrameHeader& header,
-                     size_t origin_length,
+  void OnAltSvcStart(const Http2FrameHeader& header, size_t origin_length,
                      size_t value_length) override {
     HTTP2_VLOG(1) << "OnAltSvcStart header: " << header
                   << "; origin_length=" << origin_length
@@ -70,8 +69,7 @@
 
 class AltSvcPayloadDecoderTest
     : public AbstractPayloadDecoderTest<AltSvcPayloadDecoder,
-                                        AltSvcPayloadDecoderPeer,
-                                        Listener> {};
+                                        AltSvcPayloadDecoderPeer, Listener> {};
 
 // Confirm we get an error if the payload is not long enough to hold
 // Http2AltSvcFields and the indicated length of origin.
@@ -99,8 +97,7 @@
   const uint32_t value_length_;
 };
 
-INSTANTIATE_TEST_SUITE_P(VariousOriginAndValueLengths,
-                         AltSvcPayloadLengthTests,
+INSTANTIATE_TEST_SUITE_P(VariousOriginAndValueLengths, AltSvcPayloadLengthTests,
                          ::testing::Combine(::testing::Values(0, 1, 3, 65535),
                                             ::testing::Values(0, 1, 3, 65537)));
 
diff --git a/quiche/http2/decoder/payload_decoders/continuation_payload_decoder.cc b/quiche/http2/decoder/payload_decoders/continuation_payload_decoder.cc
index 8d161f3..b6f3539 100644
--- a/quiche/http2/decoder/payload_decoders/continuation_payload_decoder.cc
+++ b/quiche/http2/decoder/payload_decoders/continuation_payload_decoder.cc
@@ -15,8 +15,7 @@
 namespace http2 {
 
 DecodeStatus ContinuationPayloadDecoder::StartDecodingPayload(
-    FrameDecoderState* state,
-    DecodeBuffer* db) {
+    FrameDecoderState* state, DecodeBuffer* db) {
   const Http2FrameHeader& frame_header = state->frame_header();
   const uint32_t total_length = frame_header.payload_length;
 
@@ -32,8 +31,7 @@
 }
 
 DecodeStatus ContinuationPayloadDecoder::ResumeDecodingPayload(
-    FrameDecoderState* state,
-    DecodeBuffer* db) {
+    FrameDecoderState* state, DecodeBuffer* db) {
   HTTP2_DVLOG(2) << "ContinuationPayloadDecoder::ResumeDecodingPayload"
                  << "  remaining_payload=" << state->remaining_payload()
                  << "  db->Remaining=" << db->Remaining();
diff --git a/quiche/http2/decoder/payload_decoders/continuation_payload_decoder_test.cc b/quiche/http2/decoder/payload_decoders/continuation_payload_decoder_test.cc
index c2c6293..33e0e33 100644
--- a/quiche/http2/decoder/payload_decoders/continuation_payload_decoder_test.cc
+++ b/quiche/http2/decoder/payload_decoders/continuation_payload_decoder_test.cc
@@ -55,9 +55,8 @@
 };
 
 class ContinuationPayloadDecoderTest
-    : public AbstractPayloadDecoderTest<ContinuationPayloadDecoder,
-                                        ContinuationPayloadDecoderPeer,
-                                        Listener>,
+    : public AbstractPayloadDecoderTest<
+          ContinuationPayloadDecoder, ContinuationPayloadDecoderPeer, Listener>,
       public ::testing::WithParamInterface<uint32_t> {
  protected:
   ContinuationPayloadDecoderTest() : length_(GetParam()) {
@@ -68,8 +67,7 @@
   const uint32_t length_;
 };
 
-INSTANTIATE_TEST_SUITE_P(VariousLengths,
-                         ContinuationPayloadDecoderTest,
+INSTANTIATE_TEST_SUITE_P(VariousLengths, ContinuationPayloadDecoderTest,
                          ::testing::Values(0, 1, 2, 3, 4, 5, 6));
 
 TEST_P(ContinuationPayloadDecoderTest, ValidLength) {
diff --git a/quiche/http2/decoder/payload_decoders/data_payload_decoder_test.cc b/quiche/http2/decoder/payload_decoders/data_payload_decoder_test.cc
index 8d4b6fd..5bc9941 100644
--- a/quiche/http2/decoder/payload_decoders/data_payload_decoder_test.cc
+++ b/quiche/http2/decoder/payload_decoders/data_payload_decoder_test.cc
@@ -75,9 +75,8 @@
 };
 
 class DataPayloadDecoderTest
-    : public AbstractPaddablePayloadDecoderTest<DataPayloadDecoder,
-                                                DataPayloadDecoderPeer,
-                                                Listener> {
+    : public AbstractPaddablePayloadDecoderTest<
+          DataPayloadDecoder, DataPayloadDecoderPeer, Listener> {
  protected:
   AssertionResult CreateAndDecodeDataOfSize(size_t data_size) {
     Reset();
@@ -97,8 +96,7 @@
   }
 };
 
-INSTANTIATE_TEST_SUITE_P(VariousPadLengths,
-                         DataPayloadDecoderTest,
+INSTANTIATE_TEST_SUITE_P(VariousPadLengths, DataPayloadDecoderTest,
                          ::testing::Values(0, 1, 2, 3, 4, 254, 255, 256));
 
 TEST_P(DataPayloadDecoderTest, VariousDataPayloadSizes) {
diff --git a/quiche/http2/decoder/payload_decoders/goaway_payload_decoder.cc b/quiche/http2/decoder/payload_decoders/goaway_payload_decoder.cc
index 03caac2..a5627fa 100644
--- a/quiche/http2/decoder/payload_decoders/goaway_payload_decoder.cc
+++ b/quiche/http2/decoder/payload_decoders/goaway_payload_decoder.cc
@@ -37,8 +37,7 @@
 }
 
 DecodeStatus GoAwayPayloadDecoder::StartDecodingPayload(
-    FrameDecoderState* state,
-    DecodeBuffer* db) {
+    FrameDecoderState* state, DecodeBuffer* db) {
   HTTP2_DVLOG(2) << "GoAwayPayloadDecoder::StartDecodingPayload: "
                  << state->frame_header();
   QUICHE_DCHECK_EQ(Http2FrameType::GOAWAY, state->frame_header().type);
@@ -51,8 +50,7 @@
 }
 
 DecodeStatus GoAwayPayloadDecoder::ResumeDecodingPayload(
-    FrameDecoderState* state,
-    DecodeBuffer* db) {
+    FrameDecoderState* state, DecodeBuffer* db) {
   HTTP2_DVLOG(2)
       << "GoAwayPayloadDecoder::ResumeDecodingPayload: remaining_payload="
       << state->remaining_payload() << ", db->Remaining=" << db->Remaining();
diff --git a/quiche/http2/decoder/payload_decoders/goaway_payload_decoder_test.cc b/quiche/http2/decoder/payload_decoders/goaway_payload_decoder_test.cc
index ab113b0..6bbb527 100644
--- a/quiche/http2/decoder/payload_decoders/goaway_payload_decoder_test.cc
+++ b/quiche/http2/decoder/payload_decoders/goaway_payload_decoder_test.cc
@@ -60,8 +60,7 @@
 
 class GoAwayPayloadDecoderTest
     : public AbstractPayloadDecoderTest<GoAwayPayloadDecoder,
-                                        GoAwayPayloadDecoderPeer,
-                                        Listener> {};
+                                        GoAwayPayloadDecoderPeer, Listener> {};
 
 // Confirm we get an error if the payload is not long enough to hold
 // Http2GoAwayFields.
@@ -86,8 +85,7 @@
   const uint32_t length_;
 };
 
-INSTANTIATE_TEST_SUITE_P(VariousLengths,
-                         GoAwayOpaqueDataLengthTests,
+INSTANTIATE_TEST_SUITE_P(VariousLengths, GoAwayOpaqueDataLengthTests,
                          ::testing::Values(0, 1, 2, 3, 4, 5, 6));
 
 TEST_P(GoAwayOpaqueDataLengthTests, ValidLength) {
diff --git a/quiche/http2/decoder/payload_decoders/headers_payload_decoder.cc b/quiche/http2/decoder/payload_decoders/headers_payload_decoder.cc
index e64f959..5996d88 100644
--- a/quiche/http2/decoder/payload_decoders/headers_payload_decoder.cc
+++ b/quiche/http2/decoder/payload_decoders/headers_payload_decoder.cc
@@ -39,8 +39,7 @@
 }
 
 DecodeStatus HeadersPayloadDecoder::StartDecodingPayload(
-    FrameDecoderState* state,
-    DecodeBuffer* db) {
+    FrameDecoderState* state, DecodeBuffer* db) {
   const Http2FrameHeader& frame_header = state->frame_header();
   const uint32_t total_length = frame_header.payload_length;
 
@@ -97,8 +96,7 @@
 }
 
 DecodeStatus HeadersPayloadDecoder::ResumeDecodingPayload(
-    FrameDecoderState* state,
-    DecodeBuffer* db) {
+    FrameDecoderState* state, DecodeBuffer* db) {
   HTTP2_DVLOG(2) << "HeadersPayloadDecoder::ResumeDecodingPayload "
                  << "remaining_payload=" << state->remaining_payload()
                  << "; db->Remaining=" << db->Remaining();
diff --git a/quiche/http2/decoder/payload_decoders/headers_payload_decoder_test.cc b/quiche/http2/decoder/payload_decoders/headers_payload_decoder_test.cc
index f6f0df5..ed2959e 100644
--- a/quiche/http2/decoder/payload_decoders/headers_payload_decoder_test.cc
+++ b/quiche/http2/decoder/payload_decoders/headers_payload_decoder_test.cc
@@ -91,12 +91,10 @@
 };
 
 class HeadersPayloadDecoderTest
-    : public AbstractPaddablePayloadDecoderTest<HeadersPayloadDecoder,
-                                                HeadersPayloadDecoderPeer,
-                                                Listener> {};
+    : public AbstractPaddablePayloadDecoderTest<
+          HeadersPayloadDecoder, HeadersPayloadDecoderPeer, Listener> {};
 
-INSTANTIATE_TEST_SUITE_P(VariousPadLengths,
-                         HeadersPayloadDecoderTest,
+INSTANTIATE_TEST_SUITE_P(VariousPadLengths, HeadersPayloadDecoderTest,
                          ::testing::Values(0, 1, 2, 3, 4, 254, 255, 256));
 
 // Decode various sizes of (fake) HPACK payload, both with and without the
diff --git a/quiche/http2/decoder/payload_decoders/payload_decoder_base_test_util.cc b/quiche/http2/decoder/payload_decoders/payload_decoder_base_test_util.cc
index a0d488d..83062b5 100644
--- a/quiche/http2/decoder/payload_decoders/payload_decoder_base_test_util.cc
+++ b/quiche/http2/decoder/payload_decoders/payload_decoder_base_test_util.cc
@@ -76,8 +76,7 @@
 
 ::testing::AssertionResult
 PayloadDecoderBaseTest::DecodePayloadAndValidateSeveralWays(
-    absl::string_view payload,
-    Validator validator) {
+    absl::string_view payload, Validator validator) {
   VERIFY_TRUE(frame_header_is_set_);
   // Cap the payload to be decoded at the declared payload length. This is
   // required by the decoders' preconditions; they are designed on the
diff --git a/quiche/http2/decoder/payload_decoders/payload_decoder_base_test_util.h b/quiche/http2/decoder/payload_decoders/payload_decoder_base_test_util.h
index 5193688..5f59b76 100644
--- a/quiche/http2/decoder/payload_decoders/payload_decoder_base_test_util.h
+++ b/quiche/http2/decoder/payload_decoders/payload_decoder_base_test_util.h
@@ -82,8 +82,7 @@
   // Given the specified payload (without the common frame header), decode
   // it with several partitionings of the payload.
   ::testing::AssertionResult DecodePayloadAndValidateSeveralWays(
-      absl::string_view payload,
-      Validator validator);
+      absl::string_view payload, Validator validator);
 
   // TODO(jamessynge): Add helper method for verifying these are both non-zero,
   // and call the new method from tests that expect successful decoding.
@@ -190,8 +189,7 @@
   // will be decoded several times with different partitionings of the payload,
   // and after each the validator will be called.
   AssertionResult DecodePayloadAndValidateSeveralWays(
-      absl::string_view payload,
-      const FrameParts& expected) {
+      absl::string_view payload, const FrameParts& expected) {
     auto validator = [&expected, this]() -> AssertionResult {
       VERIFY_FALSE(listener_.IsInProgress());
       VERIFY_EQ(1u, listener_.size());
@@ -209,8 +207,7 @@
   // std::nullptr_t (not extra validation).
   template <typename WrappedValidator>
   ::testing::AssertionResult VerifyDetectsFrameSizeError(
-      absl::string_view payload,
-      const Http2FrameHeader& header,
+      absl::string_view payload, const Http2FrameHeader& header,
       WrappedValidator wrapped_validator) {
     set_frame_header(header);
     // If wrapped_validator is not a RandomDecoderTest::Validator, make it so.
@@ -246,10 +243,8 @@
   // The flags will be required_flags, PADDED if total_pad_length > 0, and some
   // randomly selected flag bits not excluded by FlagsAffectingPayloadDecoding.
   ::testing::AssertionResult VerifyDetectsMultipleFrameSizeErrors(
-      uint8_t required_flags,
-      absl::string_view unpadded_payload,
-      ApproveSize approve_size,
-      int total_pad_length) {
+      uint8_t required_flags, absl::string_view unpadded_payload,
+      ApproveSize approve_size, int total_pad_length) {
     // required_flags should come from those that are defined for the frame
     // type AND are those that affect the decoding of the payload (otherwise,
     // the flag shouldn't be required).
@@ -304,8 +299,7 @@
 
   // As above, but for frames without padding.
   ::testing::AssertionResult VerifyDetectsFrameSizeError(
-      uint8_t required_flags,
-      absl::string_view unpadded_payload,
+      uint8_t required_flags, absl::string_view unpadded_payload,
       const ApproveSize& approve_size) {
     Http2FrameType frame_type = DecoderPeer::FrameType();
     uint8_t known_flags = KnownFlagsMaskForFrameType(frame_type);
@@ -378,8 +372,7 @@
   // amount of missing padding is as specified. header.IsPadded must be true,
   // and the payload must be empty or the PadLength field must be too large.
   ::testing::AssertionResult VerifyDetectsPaddingTooLong(
-      absl::string_view payload,
-      const Http2FrameHeader& header,
+      absl::string_view payload, const Http2FrameHeader& header,
       size_t expected_missing_length) {
     set_frame_header(header);
     auto& listener = listener_;
diff --git a/quiche/http2/decoder/payload_decoders/ping_payload_decoder_test.cc b/quiche/http2/decoder/payload_decoders/ping_payload_decoder_test.cc
index 318c3bd..74c133a 100644
--- a/quiche/http2/decoder/payload_decoders/ping_payload_decoder_test.cc
+++ b/quiche/http2/decoder/payload_decoders/ping_payload_decoder_test.cc
@@ -53,8 +53,7 @@
 
 class PingPayloadDecoderTest
     : public AbstractPayloadDecoderTest<PingPayloadDecoder,
-                                        PingPayloadDecoderPeer,
-                                        Listener> {
+                                        PingPayloadDecoderPeer, Listener> {
  protected:
   Http2PingFields RandPingFields() {
     Http2PingFields fields;
diff --git a/quiche/http2/decoder/payload_decoders/priority_payload_decoder.cc b/quiche/http2/decoder/payload_decoders/priority_payload_decoder.cc
index 18e0ffc..191ba6c 100644
--- a/quiche/http2/decoder/payload_decoders/priority_payload_decoder.cc
+++ b/quiche/http2/decoder/payload_decoders/priority_payload_decoder.cc
@@ -13,8 +13,7 @@
 namespace http2 {
 
 DecodeStatus PriorityPayloadDecoder::StartDecodingPayload(
-    FrameDecoderState* state,
-    DecodeBuffer* db) {
+    FrameDecoderState* state, DecodeBuffer* db) {
   HTTP2_DVLOG(2) << "PriorityPayloadDecoder::StartDecodingPayload: "
                  << state->frame_header();
   QUICHE_DCHECK_EQ(Http2FrameType::PRIORITY, state->frame_header().type);
@@ -27,8 +26,7 @@
 }
 
 DecodeStatus PriorityPayloadDecoder::ResumeDecodingPayload(
-    FrameDecoderState* state,
-    DecodeBuffer* db) {
+    FrameDecoderState* state, DecodeBuffer* db) {
   HTTP2_DVLOG(2) << "PriorityPayloadDecoder::ResumeDecodingPayload"
                  << "  remaining_payload=" << state->remaining_payload()
                  << "  db->Remaining=" << db->Remaining();
diff --git a/quiche/http2/decoder/payload_decoders/priority_payload_decoder_test.cc b/quiche/http2/decoder/payload_decoders/priority_payload_decoder_test.cc
index 8b3db89..58e32df 100644
--- a/quiche/http2/decoder/payload_decoders/priority_payload_decoder_test.cc
+++ b/quiche/http2/decoder/payload_decoders/priority_payload_decoder_test.cc
@@ -49,8 +49,7 @@
 
 class PriorityPayloadDecoderTest
     : public AbstractPayloadDecoderTest<PriorityPayloadDecoder,
-                                        PriorityPayloadDecoderPeer,
-                                        Listener> {
+                                        PriorityPayloadDecoderPeer, Listener> {
  protected:
   Http2PriorityFields RandPriorityFields() {
     Http2PriorityFields fields;
diff --git a/quiche/http2/decoder/payload_decoders/priority_update_payload_decoder.cc b/quiche/http2/decoder/payload_decoders/priority_update_payload_decoder.cc
index 57796c6..5e11afa 100644
--- a/quiche/http2/decoder/payload_decoders/priority_update_payload_decoder.cc
+++ b/quiche/http2/decoder/payload_decoders/priority_update_payload_decoder.cc
@@ -37,8 +37,7 @@
 }
 
 DecodeStatus PriorityUpdatePayloadDecoder::StartDecodingPayload(
-    FrameDecoderState* state,
-    DecodeBuffer* db) {
+    FrameDecoderState* state, DecodeBuffer* db) {
   HTTP2_DVLOG(2) << "PriorityUpdatePayloadDecoder::StartDecodingPayload: "
                  << state->frame_header();
   QUICHE_DCHECK_EQ(Http2FrameType::PRIORITY_UPDATE, state->frame_header().type);
@@ -51,8 +50,7 @@
 }
 
 DecodeStatus PriorityUpdatePayloadDecoder::ResumeDecodingPayload(
-    FrameDecoderState* state,
-    DecodeBuffer* db) {
+    FrameDecoderState* state, DecodeBuffer* db) {
   HTTP2_DVLOG(2) << "PriorityUpdatePayloadDecoder::ResumeDecodingPayload: "
                     "remaining_payload="
                  << state->remaining_payload()
diff --git a/quiche/http2/decoder/payload_decoders/priority_update_payload_decoder_test.cc b/quiche/http2/decoder/payload_decoders/priority_update_payload_decoder_test.cc
index 1905c01..aa16912 100644
--- a/quiche/http2/decoder/payload_decoders/priority_update_payload_decoder_test.cc
+++ b/quiche/http2/decoder/payload_decoders/priority_update_payload_decoder_test.cc
@@ -91,8 +91,7 @@
   const uint32_t length_;
 };
 
-INSTANTIATE_TEST_SUITE_P(VariousLengths,
-                         PriorityUpdatePayloadLengthTests,
+INSTANTIATE_TEST_SUITE_P(VariousLengths, PriorityUpdatePayloadLengthTests,
                          ::testing::Values(0, 1, 2, 3, 4, 5, 6));
 
 TEST_P(PriorityUpdatePayloadLengthTests, ValidLength) {
diff --git a/quiche/http2/decoder/payload_decoders/push_promise_payload_decoder.cc b/quiche/http2/decoder/payload_decoders/push_promise_payload_decoder.cc
index b6caa6c..b80454b 100644
--- a/quiche/http2/decoder/payload_decoders/push_promise_payload_decoder.cc
+++ b/quiche/http2/decoder/payload_decoders/push_promise_payload_decoder.cc
@@ -36,8 +36,7 @@
 }
 
 DecodeStatus PushPromisePayloadDecoder::StartDecodingPayload(
-    FrameDecoderState* state,
-    DecodeBuffer* db) {
+    FrameDecoderState* state, DecodeBuffer* db) {
   const Http2FrameHeader& frame_header = state->frame_header();
   const uint32_t total_length = frame_header.payload_length;
 
@@ -63,8 +62,7 @@
 }
 
 DecodeStatus PushPromisePayloadDecoder::ResumeDecodingPayload(
-    FrameDecoderState* state,
-    DecodeBuffer* db) {
+    FrameDecoderState* state, DecodeBuffer* db) {
   HTTP2_DVLOG(2) << "UnknownPayloadDecoder::ResumeDecodingPayload"
                  << "  remaining_payload=" << state->remaining_payload()
                  << "  db->Remaining=" << db->Remaining();
diff --git a/quiche/http2/decoder/payload_decoders/push_promise_payload_decoder_test.cc b/quiche/http2/decoder/payload_decoders/push_promise_payload_decoder_test.cc
index 174fd33..d0e3a30 100644
--- a/quiche/http2/decoder/payload_decoders/push_promise_payload_decoder_test.cc
+++ b/quiche/http2/decoder/payload_decoders/push_promise_payload_decoder_test.cc
@@ -84,12 +84,11 @@
 };
 
 class PushPromisePayloadDecoderTest
-    : public AbstractPaddablePayloadDecoderTest<PushPromisePayloadDecoder,
-                                                PushPromisePayloadDecoderPeer,
-                                                Listener> {};
+    : public AbstractPaddablePayloadDecoderTest<
+          PushPromisePayloadDecoder, PushPromisePayloadDecoderPeer, Listener> {
+};
 
-INSTANTIATE_TEST_SUITE_P(VariousPadLengths,
-                         PushPromisePayloadDecoderTest,
+INSTANTIATE_TEST_SUITE_P(VariousPadLengths, PushPromisePayloadDecoderTest,
                          ::testing::Values(0, 1, 2, 3, 4, 254, 255, 256));
 
 // Payload contains the required Http2PushPromiseFields, followed by some
diff --git a/quiche/http2/decoder/payload_decoders/rst_stream_payload_decoder.cc b/quiche/http2/decoder/payload_decoders/rst_stream_payload_decoder.cc
index 11033f0..bb2e510 100644
--- a/quiche/http2/decoder/payload_decoders/rst_stream_payload_decoder.cc
+++ b/quiche/http2/decoder/payload_decoders/rst_stream_payload_decoder.cc
@@ -13,8 +13,7 @@
 namespace http2 {
 
 DecodeStatus RstStreamPayloadDecoder::StartDecodingPayload(
-    FrameDecoderState* state,
-    DecodeBuffer* db) {
+    FrameDecoderState* state, DecodeBuffer* db) {
   HTTP2_DVLOG(2) << "RstStreamPayloadDecoder::StartDecodingPayload: "
                  << state->frame_header();
   QUICHE_DCHECK_EQ(Http2FrameType::RST_STREAM, state->frame_header().type);
@@ -27,8 +26,7 @@
 }
 
 DecodeStatus RstStreamPayloadDecoder::ResumeDecodingPayload(
-    FrameDecoderState* state,
-    DecodeBuffer* db) {
+    FrameDecoderState* state, DecodeBuffer* db) {
   HTTP2_DVLOG(2) << "RstStreamPayloadDecoder::ResumeDecodingPayload"
                  << "  remaining_payload=" << state->remaining_payload()
                  << "  db->Remaining=" << db->Remaining();
diff --git a/quiche/http2/decoder/payload_decoders/rst_stream_payload_decoder_test.cc b/quiche/http2/decoder/payload_decoders/rst_stream_payload_decoder_test.cc
index c943667..42f9393 100644
--- a/quiche/http2/decoder/payload_decoders/rst_stream_payload_decoder_test.cc
+++ b/quiche/http2/decoder/payload_decoders/rst_stream_payload_decoder_test.cc
@@ -50,8 +50,7 @@
 
 class RstStreamPayloadDecoderTest
     : public AbstractPayloadDecoderTest<RstStreamPayloadDecoder,
-                                        RstStreamPayloadDecoderPeer,
-                                        Listener> {
+                                        RstStreamPayloadDecoderPeer, Listener> {
  protected:
   Http2RstStreamFields RandRstStreamFields() {
     Http2RstStreamFields fields;
diff --git a/quiche/http2/decoder/payload_decoders/settings_payload_decoder.cc b/quiche/http2/decoder/payload_decoders/settings_payload_decoder.cc
index d1b25a9..cf0905e 100644
--- a/quiche/http2/decoder/payload_decoders/settings_payload_decoder.cc
+++ b/quiche/http2/decoder/payload_decoders/settings_payload_decoder.cc
@@ -13,8 +13,7 @@
 namespace http2 {
 
 DecodeStatus SettingsPayloadDecoder::StartDecodingPayload(
-    FrameDecoderState* state,
-    DecodeBuffer* db) {
+    FrameDecoderState* state, DecodeBuffer* db) {
   const Http2FrameHeader& frame_header = state->frame_header();
   const uint32_t total_length = frame_header.payload_length;
 
@@ -40,8 +39,7 @@
 }
 
 DecodeStatus SettingsPayloadDecoder::ResumeDecodingPayload(
-    FrameDecoderState* state,
-    DecodeBuffer* db) {
+    FrameDecoderState* state, DecodeBuffer* db) {
   HTTP2_DVLOG(2) << "SettingsPayloadDecoder::ResumeDecodingPayload"
                  << "  remaining_payload=" << state->remaining_payload()
                  << "  db->Remaining=" << db->Remaining();
@@ -58,8 +56,7 @@
 }
 
 DecodeStatus SettingsPayloadDecoder::StartDecodingSettings(
-    FrameDecoderState* state,
-    DecodeBuffer* db) {
+    FrameDecoderState* state, DecodeBuffer* db) {
   HTTP2_DVLOG(2) << "SettingsPayloadDecoder::StartDecodingSettings"
                  << "  remaining_payload=" << state->remaining_payload()
                  << "  db->Remaining=" << db->Remaining();
diff --git a/quiche/http2/decoder/payload_decoders/settings_payload_decoder.h b/quiche/http2/decoder/payload_decoders/settings_payload_decoder.h
index 9f26c86..a9516ee 100644
--- a/quiche/http2/decoder/payload_decoders/settings_payload_decoder.h
+++ b/quiche/http2/decoder/payload_decoders/settings_payload_decoder.h
@@ -42,8 +42,7 @@
 
   // Decoding a single SETTING returned a status other than kDecodeDone; this
   // method just brings together the QUICHE_DCHECKs to reduce duplication.
-  DecodeStatus HandleNotDone(FrameDecoderState* state,
-                             DecodeBuffer* db,
+  DecodeStatus HandleNotDone(FrameDecoderState* state, DecodeBuffer* db,
                              DecodeStatus status);
 
   Http2SettingFields setting_fields_;
diff --git a/quiche/http2/decoder/payload_decoders/settings_payload_decoder_test.cc b/quiche/http2/decoder/payload_decoders/settings_payload_decoder_test.cc
index b0750d2..7c53cc7 100644
--- a/quiche/http2/decoder/payload_decoders/settings_payload_decoder_test.cc
+++ b/quiche/http2/decoder/payload_decoders/settings_payload_decoder_test.cc
@@ -70,8 +70,7 @@
 
 class SettingsPayloadDecoderTest
     : public AbstractPayloadDecoderTest<SettingsPayloadDecoder,
-                                        SettingsPayloadDecoderPeer,
-                                        Listener> {
+                                        SettingsPayloadDecoderPeer, Listener> {
  protected:
   Http2SettingFields RandSettingsFields() {
     Http2SettingFields fields;
diff --git a/quiche/http2/decoder/payload_decoders/unknown_payload_decoder.cc b/quiche/http2/decoder/payload_decoders/unknown_payload_decoder.cc
index 01d7040..f61d47d 100644
--- a/quiche/http2/decoder/payload_decoders/unknown_payload_decoder.cc
+++ b/quiche/http2/decoder/payload_decoders/unknown_payload_decoder.cc
@@ -15,8 +15,7 @@
 namespace http2 {
 
 DecodeStatus UnknownPayloadDecoder::StartDecodingPayload(
-    FrameDecoderState* state,
-    DecodeBuffer* db) {
+    FrameDecoderState* state, DecodeBuffer* db) {
   const Http2FrameHeader& frame_header = state->frame_header();
 
   HTTP2_DVLOG(2) << "UnknownPayloadDecoder::StartDecodingPayload: "
@@ -30,8 +29,7 @@
 }
 
 DecodeStatus UnknownPayloadDecoder::ResumeDecodingPayload(
-    FrameDecoderState* state,
-    DecodeBuffer* db) {
+    FrameDecoderState* state, DecodeBuffer* db) {
   HTTP2_DVLOG(2) << "UnknownPayloadDecoder::ResumeDecodingPayload "
                  << "remaining_payload=" << state->remaining_payload()
                  << "; db->Remaining=" << db->Remaining();
diff --git a/quiche/http2/decoder/payload_decoders/unknown_payload_decoder_test.cc b/quiche/http2/decoder/payload_decoders/unknown_payload_decoder_test.cc
index 72bd865..5651983 100644
--- a/quiche/http2/decoder/payload_decoders/unknown_payload_decoder_test.cc
+++ b/quiche/http2/decoder/payload_decoders/unknown_payload_decoder_test.cc
@@ -60,8 +60,7 @@
 
 class UnknownPayloadDecoderTest
     : public AbstractPayloadDecoderTest<UnknownPayloadDecoder,
-                                        UnknownPayloadDecoderPeer,
-                                        Listener,
+                                        UnknownPayloadDecoderPeer, Listener,
                                         SupportedFrameType>,
       public ::testing::WithParamInterface<uint32_t> {
  protected:
@@ -78,8 +77,7 @@
   const uint32_t length_;
 };
 
-INSTANTIATE_TEST_SUITE_P(VariousLengths,
-                         UnknownPayloadDecoderTest,
+INSTANTIATE_TEST_SUITE_P(VariousLengths, UnknownPayloadDecoderTest,
                          ::testing::Values(0, 1, 2, 3, 255, 256));
 
 TEST_P(UnknownPayloadDecoderTest, ValidLength) {
diff --git a/quiche/http2/decoder/payload_decoders/window_update_payload_decoder.cc b/quiche/http2/decoder/payload_decoders/window_update_payload_decoder.cc
index e509de4..cad7ef5 100644
--- a/quiche/http2/decoder/payload_decoders/window_update_payload_decoder.cc
+++ b/quiche/http2/decoder/payload_decoders/window_update_payload_decoder.cc
@@ -14,8 +14,7 @@
 namespace http2 {
 
 DecodeStatus WindowUpdatePayloadDecoder::StartDecodingPayload(
-    FrameDecoderState* state,
-    DecodeBuffer* db) {
+    FrameDecoderState* state, DecodeBuffer* db) {
   const Http2FrameHeader& frame_header = state->frame_header();
   const uint32_t total_length = frame_header.payload_length;
 
@@ -43,8 +42,7 @@
 }
 
 DecodeStatus WindowUpdatePayloadDecoder::ResumeDecodingPayload(
-    FrameDecoderState* state,
-    DecodeBuffer* db) {
+    FrameDecoderState* state, DecodeBuffer* db) {
   HTTP2_DVLOG(2) << "ResumeDecodingPayload: remaining_payload="
                  << state->remaining_payload()
                  << "; db->Remaining=" << db->Remaining();
