diff --git a/quic/core/quic_connection.h b/quic/core/quic_connection.h
index fb38d97..23910e5 100644
--- a/quic/core/quic_connection.h
+++ b/quic/core/quic_connection.h
@@ -163,6 +163,9 @@
   // change is allowed.
   virtual bool AllowSelfAddressChange() const = 0;
 
+  // Called to get current handshake state.
+  virtual HandshakeState GetHandshakeState() const = 0;
+
   // Called when an ACK is received with a larger |largest_acked| than
   // previously observed.
   virtual void OnForwardProgressConfirmed() = 0;
diff --git a/quic/core/quic_session.h b/quic/core/quic_session.h
index adeabb1..bd19714 100644
--- a/quic/core/quic_session.h
+++ b/quic/core/quic_session.h
@@ -129,6 +129,7 @@
   bool HasPendingHandshake() const override;
   void OnPathDegrading() override;
   bool AllowSelfAddressChange() const override;
+  HandshakeState GetHandshakeState() const override;
   void OnForwardProgressConfirmed() override;
   bool OnMaxStreamsFrame(const QuicMaxStreamsFrame& frame) override;
   bool OnStreamsBlockedFrame(const QuicStreamsBlockedFrame& frame) override;
@@ -156,7 +157,6 @@
   bool IsFrameOutstanding(const QuicFrame& frame) const override;
   bool HasUnackedCryptoData() const override;
   bool HasUnackedStreamData() const override;
-  HandshakeState GetHandshakeState() const override;
 
   // QuicStreamIdManager::DelegateInterface methods:
   void OnError(QuicErrorCode error_code, std::string error_details) override;
diff --git a/quic/core/session_notifier_interface.h b/quic/core/session_notifier_interface.h
index 4fb8b50..89b4a9c 100644
--- a/quic/core/session_notifier_interface.h
+++ b/quic/core/session_notifier_interface.h
@@ -40,9 +40,6 @@
 
   // Returns true if any stream is waiting for acks.
   virtual bool HasUnackedStreamData() const = 0;
-
-  // Returns current handshake state.
-  virtual HandshakeState GetHandshakeState() const = 0;
 };
 
 }  // namespace quic
diff --git a/quic/test_tools/quic_test_utils.h b/quic/test_tools/quic_test_utils.h
index d580ca9..30cbd5a 100644
--- a/quic/test_tools/quic_test_utils.h
+++ b/quic/test_tools/quic_test_utils.h
@@ -406,6 +406,7 @@
   MOCK_METHOD0(OnAckNeedsRetransmittableFrame, void());
   MOCK_METHOD0(SendPing, void());
   MOCK_CONST_METHOD0(AllowSelfAddressChange, bool());
+  MOCK_CONST_METHOD0(GetHandshakeState, HandshakeState());
   MOCK_METHOD0(OnForwardProgressConfirmed, void());
   MOCK_METHOD1(OnMaxStreamsFrame, bool(const QuicMaxStreamsFrame& frame));
   MOCK_METHOD1(OnStreamsBlockedFrame,
@@ -1124,7 +1125,6 @@
   MOCK_CONST_METHOD1(IsFrameOutstanding, bool(const QuicFrame&));
   MOCK_CONST_METHOD0(HasUnackedCryptoData, bool());
   MOCK_CONST_METHOD0(HasUnackedStreamData, bool());
-  MOCK_CONST_METHOD0(GetHandshakeState, HandshakeState());
 };
 
 // Creates a client session for testing.
diff --git a/quic/test_tools/simple_session_notifier.cc b/quic/test_tools/simple_session_notifier.cc
index 0b7fb7d..9e67c89 100644
--- a/quic/test_tools/simple_session_notifier.cc
+++ b/quic/test_tools/simple_session_notifier.cc
@@ -453,10 +453,6 @@
   return false;
 }
 
-HandshakeState SimpleSessionNotifier::GetHandshakeState() const {
-  return HANDSHAKE_COMPLETE;
-}
-
 bool SimpleSessionNotifier::OnControlFrameAcked(const QuicFrame& frame) {
   QuicControlFrameId id = GetControlFrameId(frame);
   if (id == kInvalidControlFrameId) {
diff --git a/quic/test_tools/simple_session_notifier.h b/quic/test_tools/simple_session_notifier.h
index c9b8964..b3d5d72 100644
--- a/quic/test_tools/simple_session_notifier.h
+++ b/quic/test_tools/simple_session_notifier.h
@@ -77,7 +77,6 @@
   bool IsFrameOutstanding(const QuicFrame& frame) const override;
   bool HasUnackedCryptoData() const override;
   bool HasUnackedStreamData() const override;
-  HandshakeState GetHandshakeState() const override;
 
  private:
   struct StreamState {
diff --git a/quic/test_tools/simulator/quic_endpoint.h b/quic/test_tools/simulator/quic_endpoint.h
index 9d4a22e..a65848f 100644
--- a/quic/test_tools/simulator/quic_endpoint.h
+++ b/quic/test_tools/simulator/quic_endpoint.h
@@ -75,6 +75,7 @@
   void OnAckNeedsRetransmittableFrame() override {}
   void SendPing() override {}
   bool AllowSelfAddressChange() const override;
+  HandshakeState GetHandshakeState() const override;
   void OnForwardProgressConfirmed() override {}
   bool OnMaxStreamsFrame(const QuicMaxStreamsFrame& /*frame*/) override {
     return true;
@@ -99,7 +100,6 @@
   bool IsFrameOutstanding(const QuicFrame& frame) const override;
   bool HasUnackedCryptoData() const override;
   bool HasUnackedStreamData() const override;
-  HandshakeState GetHandshakeState() const override;
   // End SessionNotifierInterface implementation.
 
  private:
