diff --git a/http2/decoder/http2_frame_decoder_listener.h b/http2/decoder/http2_frame_decoder_listener.h
index b875122..b877098 100644
--- a/http2/decoder/http2_frame_decoder_listener.h
+++ b/http2/decoder/http2_frame_decoder_listener.h
@@ -302,51 +302,51 @@
   // SpdyFramer's exact states.
   bool OnFrameHeader(const Http2FrameHeader& header) override;
 
-  void OnDataStart(const Http2FrameHeader& header) override {}
-  void OnDataPayload(const char* data, size_t len) override {}
+  void OnDataStart(const Http2FrameHeader& /*header*/) override {}
+  void OnDataPayload(const char* /*data*/, size_t /*len*/) override {}
   void OnDataEnd() override {}
-  void OnHeadersStart(const Http2FrameHeader& header) override {}
-  void OnHeadersPriority(const Http2PriorityFields& priority) override {}
-  void OnHpackFragment(const char* data, size_t len) override {}
+  void OnHeadersStart(const Http2FrameHeader& /*header*/) override {}
+  void OnHeadersPriority(const Http2PriorityFields& /*priority*/) override {}
+  void OnHpackFragment(const char* /*data*/, size_t /*len*/) override {}
   void OnHeadersEnd() override {}
-  void OnPriorityFrame(const Http2FrameHeader& header,
-                       const Http2PriorityFields& priority) override {}
-  void OnContinuationStart(const Http2FrameHeader& header) override {}
+  void OnPriorityFrame(const Http2FrameHeader& /*header*/,
+                       const Http2PriorityFields& /*priority*/) override {}
+  void OnContinuationStart(const Http2FrameHeader& /*header*/) override {}
   void OnContinuationEnd() override {}
-  void OnPadLength(size_t trailing_length) override {}
-  void OnPadding(const char* padding, size_t skipped_length) override {}
-  void OnRstStream(const Http2FrameHeader& header,
-                   Http2ErrorCode error_code) override {}
-  void OnSettingsStart(const Http2FrameHeader& header) override {}
-  void OnSetting(const Http2SettingFields& setting_fields) override {}
+  void OnPadLength(size_t /*trailing_length*/) override {}
+  void OnPadding(const char* /*padding*/, size_t /*skipped_length*/) override {}
+  void OnRstStream(const Http2FrameHeader& /*header*/,
+                   Http2ErrorCode /*error_code*/) override {}
+  void OnSettingsStart(const Http2FrameHeader& /*header*/) override {}
+  void OnSetting(const Http2SettingFields& /*setting_fields*/) override {}
   void OnSettingsEnd() override {}
-  void OnSettingsAck(const Http2FrameHeader& header) override {}
-  void OnPushPromiseStart(const Http2FrameHeader& header,
-                          const Http2PushPromiseFields& promise,
-                          size_t total_padding_length) override {}
+  void OnSettingsAck(const Http2FrameHeader& /*header*/) override {}
+  void OnPushPromiseStart(const Http2FrameHeader& /*header*/,
+                          const Http2PushPromiseFields& /*promise*/,
+                          size_t /*total_padding_length*/) override {}
   void OnPushPromiseEnd() override {}
-  void OnPing(const Http2FrameHeader& header,
-              const Http2PingFields& ping) override {}
-  void OnPingAck(const Http2FrameHeader& header,
-                 const Http2PingFields& ping) override {}
-  void OnGoAwayStart(const Http2FrameHeader& header,
-                     const Http2GoAwayFields& goaway) override {}
-  void OnGoAwayOpaqueData(const char* data, size_t len) override {}
+  void OnPing(const Http2FrameHeader& /*header*/,
+              const Http2PingFields& /*ping*/) override {}
+  void OnPingAck(const Http2FrameHeader& /*header*/,
+                 const Http2PingFields& /*ping*/) override {}
+  void OnGoAwayStart(const Http2FrameHeader& /*header*/,
+                     const Http2GoAwayFields& /*goaway*/) override {}
+  void OnGoAwayOpaqueData(const char* /*data*/, size_t /*len*/) override {}
   void OnGoAwayEnd() override {}
-  void OnWindowUpdate(const Http2FrameHeader& header,
-                      uint32_t increment) override {}
-  void OnAltSvcStart(const Http2FrameHeader& header,
-                     size_t origin_length,
-                     size_t value_length) override {}
-  void OnAltSvcOriginData(const char* data, size_t len) override {}
-  void OnAltSvcValueData(const char* data, size_t len) override {}
+  void OnWindowUpdate(const Http2FrameHeader& /*header*/,
+                      uint32_t /*increment*/) override {}
+  void OnAltSvcStart(const Http2FrameHeader& /*header*/,
+                     size_t /*origin_length*/,
+                     size_t /*value_length*/) override {}
+  void OnAltSvcOriginData(const char* /*data*/, size_t /*len*/) override {}
+  void OnAltSvcValueData(const char* /*data*/, size_t /*len*/) override {}
   void OnAltSvcEnd() override {}
-  void OnUnknownStart(const Http2FrameHeader& header) override {}
-  void OnUnknownPayload(const char* data, size_t len) override {}
+  void OnUnknownStart(const Http2FrameHeader& /*header*/) override {}
+  void OnUnknownPayload(const char* /*data*/, size_t /*len*/) override {}
   void OnUnknownEnd() override {}
-  void OnPaddingTooLong(const Http2FrameHeader& header,
-                        size_t missing_length) override {}
-  void OnFrameSizeError(const Http2FrameHeader& header) override {}
+  void OnPaddingTooLong(const Http2FrameHeader& /*header*/,
+                        size_t /*missing_length*/) override {}
+  void OnFrameSizeError(const Http2FrameHeader& /*header*/) override {}
 };
 
 static_assert(!std::is_abstract<Http2FrameDecoderNoOpListener>(),
