diff --git a/quiche/http2/hpack/decoder/hpack_decoder_listener.cc b/quiche/http2/hpack/decoder/hpack_decoder_listener.cc
index 75a5969..4b4f34b 100644
--- a/quiche/http2/hpack/decoder/hpack_decoder_listener.cc
+++ b/quiche/http2/hpack/decoder/hpack_decoder_listener.cc
@@ -13,8 +13,8 @@
 HpackDecoderNoOpListener::~HpackDecoderNoOpListener() = default;
 
 void HpackDecoderNoOpListener::OnHeaderListStart() {}
-void HpackDecoderNoOpListener::OnHeader(const std::string& /*name*/,
-                                        const std::string& /*value*/) {}
+void HpackDecoderNoOpListener::OnHeader(absl::string_view /*name*/,
+                                        absl::string_view /*value*/) {}
 void HpackDecoderNoOpListener::OnHeaderListEnd() {}
 void HpackDecoderNoOpListener::OnHeaderErrorDetected(
     absl::string_view /*error_message*/) {}
diff --git a/quiche/http2/hpack/decoder/hpack_decoder_listener.h b/quiche/http2/hpack/decoder/hpack_decoder_listener.h
index 37564a4..e1888b6 100644
--- a/quiche/http2/hpack/decoder/hpack_decoder_listener.h
+++ b/quiche/http2/hpack/decoder/hpack_decoder_listener.h
@@ -27,7 +27,7 @@
   // Called for each header name-value pair that is decoded, in the order they
   // appear in the HPACK block. Multiple values for a given key will be emitted
   // as multiple calls to OnHeader.
-  virtual void OnHeader(const std::string& name, const std::string& value) = 0;
+  virtual void OnHeader(absl::string_view name, absl::string_view value) = 0;
 
   // OnHeaderListEnd is called after successfully decoding an HPACK block into
   // an HTTP/2 header list. Will only be called once per block, even if it
@@ -47,7 +47,7 @@
   ~HpackDecoderNoOpListener() override;
 
   void OnHeaderListStart() override;
-  void OnHeader(const std::string& name, const std::string& value) override;
+  void OnHeader(absl::string_view name, absl::string_view value) override;
   void OnHeaderListEnd() override;
   void OnHeaderErrorDetected(absl::string_view error_message) override;
 
diff --git a/quiche/http2/hpack/decoder/hpack_decoder_state_test.cc b/quiche/http2/hpack/decoder/hpack_decoder_state_test.cc
index 419dd8d..a5354e7 100644
--- a/quiche/http2/hpack/decoder/hpack_decoder_state_test.cc
+++ b/quiche/http2/hpack/decoder/hpack_decoder_state_test.cc
@@ -36,8 +36,8 @@
 class MockHpackDecoderListener : public HpackDecoderListener {
  public:
   MOCK_METHOD(void, OnHeaderListStart, (), (override));
-  MOCK_METHOD(void, OnHeader,
-              (const std::string& name, const std::string& value), (override));
+  MOCK_METHOD(void, OnHeader, (absl::string_view name, absl::string_view value),
+              (override));
   MOCK_METHOD(void, OnHeaderListEnd, (), (override));
   MOCK_METHOD(void, OnHeaderErrorDetected, (absl::string_view error_message),
               (override));
diff --git a/quiche/http2/hpack/decoder/hpack_decoder_test.cc b/quiche/http2/hpack/decoder/hpack_decoder_test.cc
index 0840203..2b16d82 100644
--- a/quiche/http2/hpack/decoder/hpack_decoder_test.cc
+++ b/quiche/http2/hpack/decoder/hpack_decoder_test.cc
@@ -62,8 +62,8 @@
 class MockHpackDecoderListener : public HpackDecoderListener {
  public:
   MOCK_METHOD(void, OnHeaderListStart, (), (override));
-  MOCK_METHOD(void, OnHeader,
-              (const std::string& name, const std::string& value), (override));
+  MOCK_METHOD(void, OnHeader, (absl::string_view name, absl::string_view value),
+              (override));
   MOCK_METHOD(void, OnHeaderListEnd, (), (override));
   MOCK_METHOD(void, OnHeaderErrorDetected, (absl::string_view error_message),
               (override));
@@ -91,7 +91,7 @@
   // Called for each header name-value pair that is decoded, in the order they
   // appear in the HPACK block. Multiple values for a given key will be emitted
   // as multiple calls to OnHeader.
-  void OnHeader(const std::string& name, const std::string& value) override {
+  void OnHeader(absl::string_view name, absl::string_view value) override {
     ASSERT_TRUE(saw_start_);
     ASSERT_FALSE(saw_end_);
     header_entries_.emplace_back(name, value);
diff --git a/quiche/spdy/core/hpack/hpack_decoder_adapter.cc b/quiche/spdy/core/hpack/hpack_decoder_adapter.cc
index 0a9b5a4..6e7d2c5 100644
--- a/quiche/spdy/core/hpack/hpack_decoder_adapter.cc
+++ b/quiche/spdy/core/hpack/hpack_decoder_adapter.cc
@@ -133,8 +133,8 @@
   handler_->OnHeaderBlockStart();
 }
 
-void HpackDecoderAdapter::ListenerAdapter::OnHeader(const std::string& name,
-                                                    const std::string& value) {
+void HpackDecoderAdapter::ListenerAdapter::OnHeader(absl::string_view name,
+                                                    absl::string_view value) {
   QUICHE_DVLOG(2) << "HpackDecoderAdapter::ListenerAdapter::OnHeader:\n name: "
                   << name << "\n value: " << value;
   total_uncompressed_bytes_ += name.size() + value.size();
diff --git a/quiche/spdy/core/hpack/hpack_decoder_adapter.h b/quiche/spdy/core/hpack/hpack_decoder_adapter.h
index ce0f251..ce3220e 100644
--- a/quiche/spdy/core/hpack/hpack_decoder_adapter.h
+++ b/quiche/spdy/core/hpack/hpack_decoder_adapter.h
@@ -96,7 +96,7 @@
 
     // From HpackDecoderListener
     void OnHeaderListStart() override;
-    void OnHeader(const std::string& name, const std::string& value) override;
+    void OnHeader(absl::string_view name, absl::string_view value) override;
     void OnHeaderListEnd() override;
     void OnHeaderErrorDetected(absl::string_view error_message) override;
 
diff --git a/quiche/spdy/core/http2_header_block_hpack_listener.h b/quiche/spdy/core/http2_header_block_hpack_listener.h
index ec509c2..b5cc0ee 100644
--- a/quiche/spdy/core/http2_header_block_hpack_listener.h
+++ b/quiche/spdy/core/http2_header_block_hpack_listener.h
@@ -24,7 +24,7 @@
     hpack_error_ = false;
   }
 
-  void OnHeader(const std::string& name, const std::string& value) override {
+  void OnHeader(absl::string_view name, absl::string_view value) override {
     header_block_.AppendValueOrAddHeader(name, value);
   }
 
