Gut QuicClientPushPromiseIndex.

Delegate interface will be removed in a separate CL, and the class will be
removed in yet another CL.

PiperOrigin-RevId: 571096643
diff --git a/build/source_list.bzl b/build/source_list.bzl
index d4ee29d..a5f0c9c 100644
--- a/build/source_list.bzl
+++ b/build/source_list.bzl
@@ -560,7 +560,6 @@
     "quic/core/http/http_decoder.cc",
     "quic/core/http/http_encoder.cc",
     "quic/core/http/quic_client_promised_info.cc",
-    "quic/core/http/quic_client_push_promise_index.cc",
     "quic/core/http/quic_header_list.cc",
     "quic/core/http/quic_headers_stream.cc",
     "quic/core/http/quic_receive_control_stream.cc",
@@ -1189,7 +1188,6 @@
     "quic/core/http/http_decoder_test.cc",
     "quic/core/http/http_encoder_test.cc",
     "quic/core/http/http_frames_test.cc",
-    "quic/core/http/quic_client_push_promise_index_test.cc",
     "quic/core/http/quic_header_list_test.cc",
     "quic/core/http/quic_headers_stream_test.cc",
     "quic/core/http/quic_receive_control_stream_test.cc",
diff --git a/build/source_list.gni b/build/source_list.gni
index 733583e..b9af29c 100644
--- a/build/source_list.gni
+++ b/build/source_list.gni
@@ -560,7 +560,6 @@
     "src/quiche/quic/core/http/http_decoder.cc",
     "src/quiche/quic/core/http/http_encoder.cc",
     "src/quiche/quic/core/http/quic_client_promised_info.cc",
-    "src/quiche/quic/core/http/quic_client_push_promise_index.cc",
     "src/quiche/quic/core/http/quic_header_list.cc",
     "src/quiche/quic/core/http/quic_headers_stream.cc",
     "src/quiche/quic/core/http/quic_receive_control_stream.cc",
@@ -1190,7 +1189,6 @@
     "src/quiche/quic/core/http/http_decoder_test.cc",
     "src/quiche/quic/core/http/http_encoder_test.cc",
     "src/quiche/quic/core/http/http_frames_test.cc",
-    "src/quiche/quic/core/http/quic_client_push_promise_index_test.cc",
     "src/quiche/quic/core/http/quic_header_list_test.cc",
     "src/quiche/quic/core/http/quic_headers_stream_test.cc",
     "src/quiche/quic/core/http/quic_receive_control_stream_test.cc",
diff --git a/build/source_list.json b/build/source_list.json
index 71f291f..f8b86d4 100644
--- a/build/source_list.json
+++ b/build/source_list.json
@@ -559,7 +559,6 @@
     "quiche/quic/core/http/http_decoder.cc",
     "quiche/quic/core/http/http_encoder.cc",
     "quiche/quic/core/http/quic_client_promised_info.cc",
-    "quiche/quic/core/http/quic_client_push_promise_index.cc",
     "quiche/quic/core/http/quic_header_list.cc",
     "quiche/quic/core/http/quic_headers_stream.cc",
     "quiche/quic/core/http/quic_receive_control_stream.cc",
@@ -1189,7 +1188,6 @@
     "quiche/quic/core/http/http_decoder_test.cc",
     "quiche/quic/core/http/http_encoder_test.cc",
     "quiche/quic/core/http/http_frames_test.cc",
-    "quiche/quic/core/http/quic_client_push_promise_index_test.cc",
     "quiche/quic/core/http/quic_header_list_test.cc",
     "quiche/quic/core/http/quic_headers_stream_test.cc",
     "quiche/quic/core/http/quic_receive_control_stream_test.cc",
diff --git a/quiche/quic/core/http/quic_client_promised_info.cc b/quiche/quic/core/http/quic_client_promised_info.cc
index 54369b8..bc1dabe 100644
--- a/quiche/quic/core/http/quic_client_promised_info.cc
+++ b/quiche/quic/core/http/quic_client_promised_info.cc
@@ -120,10 +120,4 @@
   return FinalValidation();
 }
 
-void QuicClientPromisedInfo::Cancel() {
-  // Don't fire OnRendezvousResult() for client initiated cancel.
-  client_request_delegate_ = nullptr;
-  Reset(QUIC_STREAM_CANCELLED);
-}
-
 }  // namespace quic
diff --git a/quiche/quic/core/http/quic_client_promised_info.h b/quiche/quic/core/http/quic_client_promised_info.h
index 84fbf4f..2adfc38 100644
--- a/quiche/quic/core/http/quic_client_promised_info.h
+++ b/quiche/quic/core/http/quic_client_promised_info.h
@@ -27,8 +27,7 @@
 // stream from the time a PUSH_PROMISE is received until rendezvous
 // between the promised response and the corresponding client request
 // is complete.
-class QUICHE_EXPORT QuicClientPromisedInfo
-    : public QuicClientPushPromiseIndex::TryHandle {
+class QUICHE_EXPORT QuicClientPromisedInfo {
  public:
   // Interface to QuicSpdyClientStream
   QuicClientPromisedInfo(QuicSpdyClientSessionBase* session, QuicStreamId id,
@@ -51,8 +50,6 @@
       const spdy::Http2HeaderBlock& headers,
       QuicClientPushPromiseIndex::Delegate* delegate);
 
-  void Cancel() override;
-
   void Reset(QuicRstStreamErrorCode error_code);
 
   // Client requests are initially associated to promises by matching
diff --git a/quiche/quic/core/http/quic_client_push_promise_index.cc b/quiche/quic/core/http/quic_client_push_promise_index.cc
deleted file mode 100644
index 00ac30a..0000000
--- a/quiche/quic/core/http/quic_client_push_promise_index.cc
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 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 "quiche/quic/core/http/quic_client_push_promise_index.h"
-
-#include <string>
-
-#include "quiche/quic/core/http/quic_client_promised_info.h"
-#include "quiche/quic/core/http/spdy_server_push_utils.h"
-
-namespace quic {
-
-QuicClientPushPromiseIndex::QuicClientPushPromiseIndex() {}
-
-QuicClientPushPromiseIndex::~QuicClientPushPromiseIndex() {}
-
-QuicClientPushPromiseIndex::TryHandle::~TryHandle() {}
-
-QuicClientPromisedInfo* QuicClientPushPromiseIndex::GetPromised(
-    const std::string& url) {
-  auto it = promised_by_url_.find(url);
-  if (it == promised_by_url_.end()) {
-    return nullptr;
-  }
-  return it->second;
-}
-
-QuicAsyncStatus QuicClientPushPromiseIndex::Try(
-    const spdy::Http2HeaderBlock& request,
-    QuicClientPushPromiseIndex::Delegate* delegate, TryHandle** handle) {
-  std::string url(SpdyServerPushUtils::GetPromisedUrlFromHeaders(request));
-  auto it = promised_by_url_.find(url);
-  if (it != promised_by_url_.end()) {
-    QuicClientPromisedInfo* promised = it->second;
-    QuicAsyncStatus rv = promised->HandleClientRequest(request, delegate);
-    if (rv == QUIC_PENDING) {
-      *handle = promised;
-    }
-    return rv;
-  }
-  return QUIC_FAILURE;
-}
-
-}  // namespace quic
diff --git a/quiche/quic/core/http/quic_client_push_promise_index.h b/quiche/quic/core/http/quic_client_push_promise_index.h
index 2492c23..740c1a5 100644
--- a/quiche/quic/core/http/quic_client_push_promise_index.h
+++ b/quiche/quic/core/http/quic_client_push_promise_index.h
@@ -5,8 +5,6 @@
 #ifndef QUICHE_QUIC_CORE_HTTP_QUIC_CLIENT_PUSH_PROMISE_INDEX_H_
 #define QUICHE_QUIC_CORE_HTTP_QUIC_CLIENT_PUSH_PROMISE_INDEX_H_
 
-#include <string>
-
 #include "quiche/quic/core/http/quic_spdy_client_session_base.h"
 #include "quiche/quic/core/quic_types.h"
 #include "quiche/quic/platform/api/quic_export.h"
@@ -14,12 +12,7 @@
 
 namespace quic {
 
-// QuicClientPushPromiseIndex is the interface to support rendezvous
-// between client requests and resources delivered via server push.
-// The same index can be shared across multiple sessions (e.g. for the
-// same browser users profile), since cross-origin pushes are allowed
-// (subject to authority constraints).
-
+// TODO(b/171463363): Remove.
 class QUICHE_EXPORT QuicClientPushPromiseIndex {
  public:
   // Delegate is used to complete the rendezvous that began with
@@ -47,51 +40,6 @@
     // retry purposes.
     virtual void OnRendezvousResult(QuicSpdyStream* stream) = 0;
   };
-
-  class QUICHE_EXPORT TryHandle {
-   public:
-    // Cancel the request.
-    virtual void Cancel() = 0;
-
-   protected:
-    TryHandle() {}
-    TryHandle(const TryHandle&) = delete;
-    TryHandle& operator=(const TryHandle&) = delete;
-    ~TryHandle();
-  };
-
-  QuicClientPushPromiseIndex();
-  QuicClientPushPromiseIndex(const QuicClientPushPromiseIndex&) = delete;
-  QuicClientPushPromiseIndex& operator=(const QuicClientPushPromiseIndex&) =
-      delete;
-  virtual ~QuicClientPushPromiseIndex();
-
-  // Called by client code, used to enforce affinity between requests
-  // for promised streams and the session the promise came from.
-  QuicClientPromisedInfo* GetPromised(const std::string& url);
-
-  // Called by client code, to initiate rendezvous between a request
-  // and a server push stream.  If |request|'s url is in the index,
-  // rendezvous will be attempted and may complete immediately or
-  // asynchronously.  If the matching promise and response headers
-  // have already arrived, the delegate's methods will fire
-  // recursively from within |Try()|.  Returns |QUIC_SUCCESS| if the
-  // rendezvous was a success. Returns |QUIC_FAILURE| if there was no
-  // matching promise, or if there was but the rendezvous has failed.
-  // Returns QUIC_PENDING if a matching promise was found, but the
-  // rendezvous needs to complete asynchronously because the promised
-  // response headers are not yet available.  If result is
-  // QUIC_PENDING, then |*handle| will set so that the caller may
-  // cancel the request if need be.  The caller does not inherit
-  // ownership of |*handle|, and it ceases to be valid if the caller
-  // invokes |handle->Cancel()| or if |delegate->OnReponse()| fires.
-  QuicAsyncStatus Try(const spdy::Http2HeaderBlock& request, Delegate* delegate,
-                      TryHandle** handle);
-
-  QuicPromisedByUrlMap* promised_by_url() { return &promised_by_url_; }
-
- private:
-  QuicPromisedByUrlMap promised_by_url_;
 };
 
 }  // namespace quic
diff --git a/quiche/quic/core/http/quic_client_push_promise_index_test.cc b/quiche/quic/core/http/quic_client_push_promise_index_test.cc
deleted file mode 100644
index 58104fd..0000000
--- a/quiche/quic/core/http/quic_client_push_promise_index_test.cc
+++ /dev/null
@@ -1,109 +0,0 @@
-// Copyright 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 "quiche/quic/core/http/quic_client_push_promise_index.h"
-
-#include <string>
-
-#include "quiche/quic/core/http/quic_spdy_client_session.h"
-#include "quiche/quic/core/http/spdy_server_push_utils.h"
-#include "quiche/quic/platform/api/quic_test.h"
-#include "quiche/quic/test_tools/crypto_test_utils.h"
-#include "quiche/quic/test_tools/mock_quic_client_promised_info.h"
-#include "quiche/quic/test_tools/quic_spdy_session_peer.h"
-#include "quiche/quic/test_tools/quic_test_utils.h"
-
-using testing::_;
-using testing::Return;
-using testing::StrictMock;
-
-namespace quic {
-namespace test {
-namespace {
-
-class MockQuicSpdyClientSession : public QuicSpdyClientSession {
- public:
-  explicit MockQuicSpdyClientSession(
-      const ParsedQuicVersionVector& supported_versions,
-      QuicConnection* connection,
-      QuicClientPushPromiseIndex* push_promise_index)
-      : QuicSpdyClientSession(DefaultQuicConfig(), supported_versions,
-                              connection,
-                              QuicServerId("example.com", 443, false),
-                              &crypto_config_, push_promise_index),
-        crypto_config_(crypto_test_utils::ProofVerifierForTesting()) {}
-  MockQuicSpdyClientSession(const MockQuicSpdyClientSession&) = delete;
-  MockQuicSpdyClientSession& operator=(const MockQuicSpdyClientSession&) =
-      delete;
-  ~MockQuicSpdyClientSession() override {}
-
- private:
-  QuicCryptoClientConfig crypto_config_;
-};
-
-class QuicClientPushPromiseIndexTest : public QuicTest {
- public:
-  QuicClientPushPromiseIndexTest()
-      : connection_(new StrictMock<MockQuicConnection>(
-            &helper_, &alarm_factory_, Perspective::IS_CLIENT)),
-        session_(connection_->supported_versions(), connection_, &index_),
-        promised_(&session_,
-                  GetNthServerInitiatedUnidirectionalStreamId(
-                      connection_->transport_version(), 0),
-                  url_) {
-    request_[":path"] = "/bar";
-    request_[":authority"] = "www.google.com";
-    request_[":method"] = "GET";
-    request_[":scheme"] = "https";
-    url_ = SpdyServerPushUtils::GetPromisedUrlFromHeaders(request_);
-  }
-
-  MockQuicConnectionHelper helper_;
-  MockAlarmFactory alarm_factory_;
-  StrictMock<MockQuicConnection>* connection_;
-  MockQuicSpdyClientSession session_;
-  QuicClientPushPromiseIndex index_;
-  spdy::Http2HeaderBlock request_;
-  std::string url_;
-  MockQuicClientPromisedInfo promised_;
-  QuicClientPushPromiseIndex::TryHandle* handle_;
-};
-
-TEST_F(QuicClientPushPromiseIndexTest, TryRequestSuccess) {
-  (*index_.promised_by_url())[url_] = &promised_;
-  EXPECT_CALL(promised_, HandleClientRequest(_, _))
-      .WillOnce(Return(QUIC_SUCCESS));
-  EXPECT_EQ(index_.Try(request_, nullptr, &handle_), QUIC_SUCCESS);
-}
-
-TEST_F(QuicClientPushPromiseIndexTest, TryRequestPending) {
-  (*index_.promised_by_url())[url_] = &promised_;
-  EXPECT_CALL(promised_, HandleClientRequest(_, _))
-      .WillOnce(Return(QUIC_PENDING));
-  EXPECT_EQ(index_.Try(request_, nullptr, &handle_), QUIC_PENDING);
-}
-
-TEST_F(QuicClientPushPromiseIndexTest, TryRequestFailure) {
-  (*index_.promised_by_url())[url_] = &promised_;
-  EXPECT_CALL(promised_, HandleClientRequest(_, _))
-      .WillOnce(Return(QUIC_FAILURE));
-  EXPECT_EQ(index_.Try(request_, nullptr, &handle_), QUIC_FAILURE);
-}
-
-TEST_F(QuicClientPushPromiseIndexTest, TryNoPromise) {
-  EXPECT_EQ(index_.Try(request_, nullptr, &handle_), QUIC_FAILURE);
-}
-
-TEST_F(QuicClientPushPromiseIndexTest, GetNoPromise) {
-  EXPECT_EQ(index_.GetPromised(url_), nullptr);
-}
-
-TEST_F(QuicClientPushPromiseIndexTest, GetPromise) {
-  (*index_.promised_by_url())[url_] = &promised_;
-  EXPECT_EQ(index_.GetPromised(url_), &promised_);
-}
-
-}  // namespace
-}  // namespace test
-}  // namespace quic