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