Remove unused server push code from QuicBackendResponse and QuicMemoryCacheBackend.

PiperOrigin-RevId: 578884553
diff --git a/quiche/quic/test_tools/quic_test_backend.cc b/quiche/quic/test_tools/quic_test_backend.cc
index 4383f23..9f45e86 100644
--- a/quiche/quic/test_tools/quic_test_backend.cc
+++ b/quiche/quic/test_tools/quic_test_backend.cc
@@ -13,6 +13,7 @@
 #include "quiche/quic/core/web_transport_interface.h"
 #include "quiche/quic/test_tools/web_transport_resets_backend.h"
 #include "quiche/quic/tools/web_transport_test_visitors.h"
+#include "quiche/common/platform/api/quiche_googleurl.h"
 
 namespace quic {
 namespace test {
diff --git a/quiche/quic/tools/quic_backend_response.cc b/quiche/quic/tools/quic_backend_response.cc
index 8a54204..0c0cb3a 100644
--- a/quiche/quic/tools/quic_backend_response.cc
+++ b/quiche/quic/tools/quic_backend_response.cc
@@ -6,20 +6,6 @@
 
 namespace quic {
 
-QuicBackendResponse::ServerPushInfo::ServerPushInfo(
-    QuicUrl request_url, spdy::Http2HeaderBlock headers,
-    spdy::SpdyPriority priority, std::string body)
-    : request_url(request_url),
-      headers(std::move(headers)),
-      priority(priority),
-      body(body) {}
-
-QuicBackendResponse::ServerPushInfo::ServerPushInfo(const ServerPushInfo& other)
-    : request_url(other.request_url),
-      headers(other.headers.Clone()),
-      priority(other.priority),
-      body(other.body) {}
-
 QuicBackendResponse::QuicBackendResponse()
     : response_type_(REGULAR_RESPONSE), delay_(QuicTime::Delta::Zero()) {}
 
diff --git a/quiche/quic/tools/quic_backend_response.h b/quiche/quic/tools/quic_backend_response.h
index 6d1b105..6223e48 100644
--- a/quiche/quic/tools/quic_backend_response.h
+++ b/quiche/quic/tools/quic_backend_response.h
@@ -7,9 +7,7 @@
 
 #include "absl/strings/string_view.h"
 #include "quiche/quic/core/quic_time.h"
-#include "quiche/quic/tools/quic_url.h"
 #include "quiche/spdy/core/http2_header_block.h"
-#include "quiche/spdy/core/spdy_protocol.h"
 
 namespace quic {
 
@@ -17,20 +15,6 @@
 // fetched by the QuicSimpleServerBackend
 class QuicBackendResponse {
  public:
-  // A ServerPushInfo contains path of the push request and everything needed in
-  // comprising a response for the push request.
-  // TODO(b/171463363): Remove.
-  struct ServerPushInfo {
-    ServerPushInfo(QuicUrl request_url, spdy::Http2HeaderBlock headers,
-                   spdy::SpdyPriority priority, std::string body);
-    ServerPushInfo(const ServerPushInfo& other);
-
-    QuicUrl request_url;
-    spdy::Http2HeaderBlock headers;
-    spdy::SpdyPriority priority;
-    std::string body;
-  };
-
   enum SpecialResponseType {
     REGULAR_RESPONSE,      // Send the headers and body like a server should.
     CLOSE_CONNECTION,      // Close the connection (sending the close packet).
diff --git a/quiche/quic/tools/quic_memory_cache_backend.cc b/quiche/quic/tools/quic_memory_cache_backend.cc
index 0fe984d..95a8421 100644
--- a/quiche/quic/tools/quic_memory_cache_backend.cc
+++ b/quiche/quic/tools/quic_memory_cache_backend.cc
@@ -170,7 +170,6 @@
   return it->second.get();
 }
 
-using ServerPushInfo = QuicBackendResponse::ServerPushInfo;
 using SpecialResponseType = QuicBackendResponse::SpecialResponseType;
 
 void QuicMemoryCacheBackend::AddSimpleResponse(absl::string_view host,
@@ -183,13 +182,6 @@
   AddResponse(host, path, std::move(response_headers), body);
 }
 
-void QuicMemoryCacheBackend::AddSimpleResponseWithServerPushResources(
-    absl::string_view host, absl::string_view path, int response_code,
-    absl::string_view body, std::list<ServerPushInfo> push_resources) {
-  AddSimpleResponse(host, path, response_code, body);
-  MaybeAddServerPushResources(host, path, push_resources);
-}
-
 void QuicMemoryCacheBackend::AddDefaultResponse(QuicBackendResponse* response) {
   QuicWriterMutexLock lock(&response_mutex_);
   default_response_.reset(response);
@@ -268,7 +260,6 @@
         << "Can't read QuicMemoryCacheBackend directory: " << cache_directory;
     return false;
   }
-  std::list<std::unique_ptr<ResourceFile>> resource_files;
   for (const auto& filename : files) {
     std::unique_ptr<ResourceFile> resource_file(new ResourceFile(filename));
 
@@ -290,26 +281,6 @@
 
     AddResponse(resource_file->host(), resource_file->path(),
                 resource_file->spdy_headers().Clone(), resource_file->body());
-
-    resource_files.push_back(std::move(resource_file));
-  }
-
-  for (const auto& resource_file : resource_files) {
-    std::list<ServerPushInfo> push_resources;
-    for (const auto& push_url : resource_file->push_urls()) {
-      QuicUrl url(push_url);
-      const QuicBackendResponse* response = GetResponse(url.host(), url.path());
-      if (!response) {
-        QUIC_BUG(quic_bug_10932_2)
-            << "Push URL '" << push_url << "' not found.";
-        return false;
-      }
-      push_resources.push_back(ServerPushInfo(url, response->headers().Clone(),
-                                              kV3LowestPriority,
-                                              (std::string(response->body()))));
-    }
-    MaybeAddServerPushResources(resource_file->host(), resource_file->path(),
-                                push_resources);
   }
 
   cache_initialized_ = true;
@@ -364,20 +335,6 @@
 void QuicMemoryCacheBackend::CloseBackendResponseStream(
     QuicSimpleServerBackend::RequestHandler* /*quic_stream*/) {}
 
-std::list<ServerPushInfo> QuicMemoryCacheBackend::GetServerPushResources(
-    std::string request_url) {
-  QuicWriterMutexLock lock(&response_mutex_);
-
-  std::list<ServerPushInfo> resources;
-  auto resource_range = server_push_resources_.equal_range(request_url);
-  for (auto it = resource_range.first; it != resource_range.second; ++it) {
-    resources.push_back(it->second);
-  }
-  QUIC_DVLOG(1) << "Found " << resources.size() << " push resources for "
-                << request_url;
-  return resources;
-}
-
 QuicMemoryCacheBackend::WebTransportResponse
 QuicMemoryCacheBackend::ProcessWebTransportRequest(
     const spdy::Http2HeaderBlock& request_headers,
@@ -450,58 +407,4 @@
   return host_string + std::string(path);
 }
 
-void QuicMemoryCacheBackend::MaybeAddServerPushResources(
-    absl::string_view request_host, absl::string_view request_path,
-    std::list<ServerPushInfo> push_resources) {
-  std::string request_url = GetKey(request_host, request_path);
-
-  for (const auto& push_resource : push_resources) {
-    if (PushResourceExistsInCache(request_url, push_resource)) {
-      continue;
-    }
-
-    QUIC_DVLOG(1) << "Add request-resource association: request url "
-                  << request_url << " push url "
-                  << push_resource.request_url.ToString()
-                  << " response headers "
-                  << push_resource.headers.DebugString();
-    {
-      QuicWriterMutexLock lock(&response_mutex_);
-      server_push_resources_.insert(std::make_pair(request_url, push_resource));
-    }
-    std::string host = push_resource.request_url.host();
-    if (host.empty()) {
-      host = std::string(request_host);
-    }
-    std::string path = push_resource.request_url.path();
-    bool found_existing_response = false;
-    {
-      QuicWriterMutexLock lock(&response_mutex_);
-      found_existing_response = responses_.contains(GetKey(host, path));
-    }
-    if (!found_existing_response) {
-      // Add a server push response to responses map, if it is not in the map.
-      absl::string_view body = push_resource.body;
-      QUIC_DVLOG(1) << "Add response for push resource: host " << host
-                    << " path " << path;
-      AddResponse(host, path, push_resource.headers.Clone(), body);
-    }
-  }
-}
-
-bool QuicMemoryCacheBackend::PushResourceExistsInCache(
-    std::string original_request_url, ServerPushInfo resource) {
-  QuicWriterMutexLock lock(&response_mutex_);
-  auto resource_range =
-      server_push_resources_.equal_range(original_request_url);
-  for (auto it = resource_range.first; it != resource_range.second; ++it) {
-    ServerPushInfo push_resource = it->second;
-    if (push_resource.request_url.ToString() ==
-        resource.request_url.ToString()) {
-      return true;
-    }
-  }
-  return false;
-}
-
 }  // namespace quic
diff --git a/quiche/quic/tools/quic_memory_cache_backend.h b/quiche/quic/tools/quic_memory_cache_backend.h
index ccdaf59..930ef58 100644
--- a/quiche/quic/tools/quic_memory_cache_backend.h
+++ b/quiche/quic/tools/quic_memory_cache_backend.h
@@ -16,7 +16,6 @@
 #include "quiche/quic/platform/api/quic_mutex.h"
 #include "quiche/quic/tools/quic_backend_response.h"
 #include "quiche/quic/tools/quic_simple_server_backend.h"
-#include "quiche/quic/tools/quic_url.h"
 #include "quiche/spdy/core/http2_header_block.h"
 #include "quiche/spdy/core/spdy_framer.h"
 
@@ -84,16 +83,6 @@
   void AddSimpleResponse(absl::string_view host, absl::string_view path,
                          int response_code, absl::string_view body);
 
-  // Add a simple response to the cache as AddSimpleResponse() does, and add
-  // some server push resources(resource path, corresponding response status and
-  // path) associated with it.
-  // Push resource implicitly come from the same host.
-  // TODO(b/171463363): Remove.
-  void AddSimpleResponseWithServerPushResources(
-      absl::string_view host, absl::string_view path, int response_code,
-      absl::string_view body,
-      std::list<QuicBackendResponse::ServerPushInfo> push_resources);
-
   // Add a response to the cache.
   void AddResponse(absl::string_view host, absl::string_view path,
                    spdy::Http2HeaderBlock response_headers,
@@ -137,11 +126,6 @@
 
   void EnableWebTransport();
 
-  // Find all the server push resources associated with |request_url|.
-  // TODO(b/171463363): Remove.
-  std::list<QuicBackendResponse::ServerPushInfo> GetServerPushResources(
-      std::string request_url);
-
   // Implements the functions for interface QuicSimpleServerBackend
   // |cache_cirectory| can be generated using `wget -p --save-headers <url>`.
   bool InitializeBackend(const std::string& cache_directory) override;
@@ -167,19 +151,6 @@
 
   std::string GetKey(absl::string_view host, absl::string_view path) const;
 
-  // Add some server push urls with given responses for specified
-  // request if these push resources are not associated with this request yet.
-  // TODO(b/171463363): Remove.
-  void MaybeAddServerPushResources(
-      absl::string_view request_host, absl::string_view request_path,
-      std::list<QuicBackendResponse::ServerPushInfo> push_resources);
-
-  // Check if push resource(push_host/push_path) associated with given request
-  // url already exists in server push map.
-  // TODO(b/171463363): Remove.
-  bool PushResourceExistsInCache(std::string original_request_url,
-                                 QuicBackendResponse::ServerPushInfo resource);
-
   // Cached responses.
   absl::flat_hash_map<std::string, std::unique_ptr<QuicBackendResponse>>
       responses_ QUIC_GUARDED_BY(response_mutex_);
@@ -192,11 +163,6 @@
   std::unique_ptr<QuicBackendResponse> generate_bytes_response_
       QUIC_GUARDED_BY(response_mutex_);
 
-  // A map from request URL to associated server push responses (if any).
-  // TODO(b/171463363): Remove.
-  std::multimap<std::string, QuicBackendResponse::ServerPushInfo>
-      server_push_resources_ QUIC_GUARDED_BY(response_mutex_);
-
   // Protects against concurrent access from test threads setting responses, and
   // server threads accessing those responses.
   mutable QuicMutex response_mutex_;
diff --git a/quiche/quic/tools/quic_memory_cache_backend_test.cc b/quiche/quic/tools/quic_memory_cache_backend_test.cc
index a75b46e..465df3d 100644
--- a/quiche/quic/tools/quic_memory_cache_backend_test.cc
+++ b/quiche/quic/tools/quic_memory_cache_backend_test.cc
@@ -18,7 +18,6 @@
 
 namespace {
 using Response = QuicBackendResponse;
-using ServerPushInfo = QuicBackendResponse::ServerPushInfo;
 }  // namespace
 
 class QuicMemoryCacheBackendTest : public QuicTest {
@@ -183,82 +182,5 @@
   EXPECT_EQ("200", response->headers().find(":status")->second);
 }
 
-TEST_F(QuicMemoryCacheBackendTest, AddSimpleResponseWithServerPushResources) {
-  std::string request_host = "www.foo.com";
-  std::string response_body("hello response");
-  const size_t kNumResources = 5;
-  int NumResources = 5;
-  std::list<ServerPushInfo> push_resources;
-  std::string scheme = "http";
-  for (int i = 0; i < NumResources; ++i) {
-    std::string path = absl::StrCat("/server_push_src", i);
-    std::string url = scheme + "://" + request_host + path;
-    QuicUrl resource_url(url);
-    std::string body =
-        absl::StrCat("This is server push response body for ", path);
-    spdy::Http2HeaderBlock response_headers;
-    response_headers[":status"] = "200";
-    response_headers["content-length"] = absl::StrCat(body.size());
-    push_resources.push_back(
-        ServerPushInfo(resource_url, response_headers.Clone(), i, body));
-  }
-
-  cache_.AddSimpleResponseWithServerPushResources(
-      request_host, "/", 200, response_body, push_resources);
-
-  std::string request_url = request_host + "/";
-  std::list<ServerPushInfo> resources =
-      cache_.GetServerPushResources(request_url);
-  ASSERT_EQ(kNumResources, resources.size());
-  for (const auto& push_resource : push_resources) {
-    ServerPushInfo resource = resources.front();
-    EXPECT_EQ(resource.request_url.ToString(),
-              push_resource.request_url.ToString());
-    EXPECT_EQ(resource.priority, push_resource.priority);
-    resources.pop_front();
-  }
-}
-
-TEST_F(QuicMemoryCacheBackendTest, GetServerPushResourcesAndPushResponses) {
-  std::string request_host = "www.foo.com";
-  std::string response_body("hello response");
-  const size_t kNumResources = 4;
-  int NumResources = 4;
-  std::string scheme = "http";
-  std::string push_response_status[kNumResources] = {"200", "200", "301",
-                                                     "404"};
-  std::list<ServerPushInfo> push_resources;
-  for (int i = 0; i < NumResources; ++i) {
-    std::string path = absl::StrCat("/server_push_src", i);
-    std::string url = scheme + "://" + request_host + path;
-    QuicUrl resource_url(url);
-    std::string body = "This is server push response body for " + path;
-    spdy::Http2HeaderBlock response_headers;
-    response_headers[":status"] = push_response_status[i];
-    response_headers["content-length"] = absl::StrCat(body.size());
-    push_resources.push_back(
-        ServerPushInfo(resource_url, response_headers.Clone(), i, body));
-  }
-  cache_.AddSimpleResponseWithServerPushResources(
-      request_host, "/", 200, response_body, push_resources);
-  std::string request_url = request_host + "/";
-  std::list<ServerPushInfo> resources =
-      cache_.GetServerPushResources(request_url);
-  ASSERT_EQ(kNumResources, resources.size());
-  int i = 0;
-  for (const auto& push_resource : push_resources) {
-    QuicUrl url = resources.front().request_url;
-    std::string host = url.host();
-    std::string path = url.path();
-    const Response* response = cache_.GetResponse(host, path);
-    ASSERT_TRUE(response);
-    ASSERT_TRUE(response->headers().contains(":status"));
-    EXPECT_EQ(push_response_status[i++],
-              response->headers().find(":status")->second);
-    EXPECT_EQ(push_resource.body, response->body());
-    resources.pop_front();
-  }
-}
-
 }  // namespace test
 }  // namespace quic