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

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

Issue 2467833002: Implement redirect handling on MojoAsyncResourceHandler (Closed)
Patch Set: rebase Created 4 years, 1 month 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
« no previous file with comments | « content/common/url_request_redirect_info.typemap ('k') | third_party/WebKit/LayoutTests/TestExpectations » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 92d5424c7d61b2d8e651e358fd278b0a589e9cf8..ae4b7744cde34a9b6e0a8bf323234a7b513297a2 100644
--- a/content/renderer/service_worker/service_worker_context_client.cc
+++ b/content/renderer/service_worker/service_worker_context_client.cc
@@ -280,7 +280,15 @@ class ServiceWorkerContextClient::NavigationPreloadRequest final
blink::WebString::fromUTF8(header_value));
}
response_->setResponseTime(response_head.response_time.ToInternalValue());
- MaybeReportToClient();
+ MaybeReportResponseToClient();
+ }
+
+ void OnReceiveRedirect(const net::RedirectInfo& redirect_info,
+ const ResourceResponseHead& response_head) override {
+ // Cancel the request.
+ url_loader_ = nullptr;
+ ReportErrorToClient(
+ "Service Worker navigation preload doesn't suport redirect.");
}
void OnDataDownloaded(int64_t data_length,
@@ -292,7 +300,7 @@ class ServiceWorkerContextClient::NavigationPreloadRequest final
mojo::ScopedDataPipeConsumerHandle body) override {
DCHECK(!body_.is_valid());
body_ = std::move(body);
- MaybeReportToClient();
+ MaybeReportResponseToClient();
}
void OnComplete(const ResourceRequestCompletionStatus& status) override {
@@ -301,21 +309,11 @@ class ServiceWorkerContextClient::NavigationPreloadRequest final
if (result_reported_)
return;
DCHECK_NE(0, status.error_code);
- ServiceWorkerContextClient* client =
- ServiceWorkerContextClient::ThreadSpecificInstance();
- if (!client)
- return;
- client->OnNavigationPreloadError(
- fetch_event_id_,
- base::MakeUnique<blink::WebServiceWorkerError>(
- blink::WebServiceWorkerError::ErrorTypeNetwork,
- blink::WebString::fromUTF8(
- "Service Worker navigation preload network error.")));
- result_reported_ = true;
+ ReportErrorToClient("Service Worker navigation preload network error.");
}
private:
- void MaybeReportToClient() {
+ void MaybeReportResponseToClient() {
DCHECK(!result_reported_);
if (!response_ || !body_.is_valid())
return;
@@ -330,6 +328,18 @@ class ServiceWorkerContextClient::NavigationPreloadRequest final
result_reported_ = true;
}
+ void ReportErrorToClient(const char* error_message) {
+ ServiceWorkerContextClient* client =
+ ServiceWorkerContextClient::ThreadSpecificInstance();
+ if (!client)
+ return;
+ client->OnNavigationPreloadError(
+ fetch_event_id_, base::MakeUnique<blink::WebServiceWorkerError>(
+ blink::WebServiceWorkerError::ErrorTypeNetwork,
+ blink::WebString::fromUTF8(error_message)));
+ result_reported_ = true;
+ }
+
const int fetch_event_id_;
const GURL url_;
mojom::URLLoaderPtr url_loader_;
« no previous file with comments | « content/common/url_request_redirect_info.typemap ('k') | third_party/WebKit/LayoutTests/TestExpectations » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698