Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3080)

Unified Diff: content/renderer/service_worker/service_worker_context_client.cc

Issue 2790433003: Support redirect responses for NavigationPreload (Closed)
Patch Set: incorporated falken's comment Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/service_worker/service_worker_context_client.cc
diff --git a/content/renderer/service_worker/service_worker_context_client.cc b/content/renderer/service_worker/service_worker_context_client.cc
index 461469d67f79d24bfdfdcb53985c11e0c700cea6..ab400ee2f4ffc7356a21373c6772a8e7f50a2e0a 100644
--- a/content/renderer/service_worker/service_worker_context_client.cc
+++ b/content/renderer/service_worker/service_worker_context_client.cc
@@ -51,6 +51,7 @@
#include "content/renderer/service_worker/service_worker_type_util.h"
#include "ipc/ipc_message.h"
#include "ipc/ipc_message_macros.h"
+#include "net/http/http_response_headers.h"
#include "third_party/WebKit/public/platform/URLConversion.h"
#include "third_party/WebKit/public/platform/WebMessagePortChannel.h"
#include "third_party/WebKit/public/platform/WebReferrerPolicy.h"
@@ -381,9 +382,21 @@ class ServiceWorkerContextClient::NavigationPreloadRequest final
void OnReceiveRedirect(const net::RedirectInfo& redirect_info,
const ResourceResponseHead& response_head) override {
+ DCHECK(!response_);
+ DCHECK(net::HttpResponseHeaders::IsRedirectResponseCode(
+ response_head.headers->response_code()));
+
+ ServiceWorkerContextClient* client =
+ ServiceWorkerContextClient::ThreadSpecificInstance();
+ if (!client)
+ return;
+ response_ = base::MakeUnique<blink::WebURLResponse>();
+ WebURLLoaderImpl::PopulateURLResponse(url_, response_head, response_.get(),
+ false /* report_security_info */);
+ client->OnNavigationPreloadResponse(fetch_event_id_, std::move(response_),
+ nullptr);
// This will delete |this|.
- ReportErrorToClient(
- "Service Worker navigation preload doesn't support redirects.");
+ client->OnNavigationPreloadComplete(fetch_event_id_);
}
void OnDataDownloaded(int64_t data_length,

Powered by Google App Engine
This is Rietveld 408576698