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

Unified Diff: content/browser/service_worker/service_worker_fetch_dispatcher.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/browser/service_worker/service_worker_fetch_dispatcher.cc
diff --git a/content/browser/service_worker/service_worker_fetch_dispatcher.cc b/content/browser/service_worker/service_worker_fetch_dispatcher.cc
index 7017787fc0db354558c02f84c6423dbdc2aefdf5..888ed10928d3c60e542fee2cc1da01b103a62da4 100644
--- a/content/browser/service_worker/service_worker_fetch_dispatcher.cc
+++ b/content/browser/service_worker/service_worker_fetch_dispatcher.cc
@@ -132,6 +132,8 @@ class DelegatingURLLoaderClient final : public mojom::URLLoaderClient {
ResourceRequestCompletionStatus status;
status.error_code = net::ERR_ABORTED;
client_->OnComplete(status);
+ AddDevToolsCallback(
+ base::Bind(&NotifyNavigationPreloadCompletedOnUI, status));
}
}
@@ -166,7 +168,16 @@ class DelegatingURLLoaderClient final : public mojom::URLLoaderClient {
}
void OnReceiveRedirect(const net::RedirectInfo& redirect_info,
const ResourceResponseHead& head) override {
+ completed_ = true;
+ // When the server returns a redirect response, we only send
+ // OnReceiveRedirect IPC and don't send OnComplete IPC. The service worker
+ // will clean up the preload request when OnReceiveRedirect() is called.
client_->OnReceiveRedirect(redirect_info, head);
+ AddDevToolsCallback(
+ base::Bind(&NotifyNavigationPreloadResponseReceivedOnUI, url_, head));
+ ResourceRequestCompletionStatus status;
+ AddDevToolsCallback(
+ base::Bind(&NotifyNavigationPreloadCompletedOnUI, status));
}
void OnStartLoadingResponseBody(
mojo::ScopedDataPipeConsumerHandle body) override {
@@ -174,8 +185,10 @@ class DelegatingURLLoaderClient final : public mojom::URLLoaderClient {
}
void OnComplete(
const ResourceRequestCompletionStatus& completion_status) override {
- client_->OnComplete(completion_status);
+ if (completed_)
+ return;
completed_ = true;
+ client_->OnComplete(completion_status);
AddDevToolsCallback(
base::Bind(&NotifyNavigationPreloadCompletedOnUI, completion_status));
}

Powered by Google App Engine
This is Rietveld 408576698