Commit 5321036d authored by Kenichi Ishibashi's avatar Kenichi Ishibashi Committed by Commit Bot

service worker: Separate CreateHttpResponseInfoAndCheckHeaders

This CL moves header checks from
CreateHttpResponseInfoAndCheckHeaders() into a separate function.
This is a preparation to remove HttpResponseInfo dependencies from
ServiceWorkerNewScriptLoader and
ServiceWorkerSingleScriptUpdateChecker. These classes will stop
converting URLResponseHead but still need to check headers.


Bug: 1060076
Change-Id: I1484e2523f42e8e7779b06f0be6cb0119de6101f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2107032
Auto-Submit: Kenichi Ishibashi <bashi@chromium.org>
Commit-Queue: Hiroki Nakagawa <nhiroki@chromium.org>
Reviewed-by: default avatarHiroki Nakagawa <nhiroki@chromium.org>
Cr-Commit-Position: refs/heads/master@{#752362}
parent b3427104
......@@ -17,7 +17,7 @@ namespace content {
namespace service_worker_loader_helpers {
std::unique_ptr<net::HttpResponseInfo> CreateHttpResponseInfoAndCheckHeaders(
bool CheckResponseHead(
const network::mojom::URLResponseHead& response_head,
blink::ServiceWorkerStatusCode* out_service_worker_status,
network::URLLoaderCompletionStatus* out_completion_status,
......@@ -30,7 +30,7 @@ std::unique_ptr<net::HttpResponseInfo> CreateHttpResponseInfoAndCheckHeaders(
ServiceWorkerConsts::kServiceWorkerBadHTTPResponseError,
response_head.headers->response_code());
*out_service_worker_status = blink::ServiceWorkerStatusCode::kErrorNetwork;
return nullptr;
return false;
}
if (net::IsCertStatusError(response_head.cert_status) &&
......@@ -40,7 +40,7 @@ std::unique_ptr<net::HttpResponseInfo> CreateHttpResponseInfoAndCheckHeaders(
net::MapCertStatusToNetError(response_head.cert_status));
*out_error_message = ServiceWorkerConsts::kServiceWorkerSSLError;
*out_service_worker_status = blink::ServiceWorkerStatusCode::kErrorNetwork;
return nullptr;
return false;
}
// Remain consistent with logic in
......@@ -57,6 +57,19 @@ std::unique_ptr<net::HttpResponseInfo> CreateHttpResponseInfoAndCheckHeaders(
ServiceWorkerConsts::kServiceWorkerBadMIMEError,
response_head.mime_type.c_str());
*out_service_worker_status = blink::ServiceWorkerStatusCode::kErrorSecurity;
return false;
}
return true;
}
std::unique_ptr<net::HttpResponseInfo> CreateHttpResponseInfoAndCheckHeaders(
const network::mojom::URLResponseHead& response_head,
blink::ServiceWorkerStatusCode* out_service_worker_status,
network::URLLoaderCompletionStatus* out_completion_status,
std::string* out_error_message) {
if (!CheckResponseHead(response_head, out_service_worker_status,
out_completion_status, out_error_message)) {
return nullptr;
}
......
......@@ -26,9 +26,19 @@ namespace content {
namespace service_worker_loader_helpers {
// Creates net::HttpResponseInfo from |response_head|. If |response_head| is
// invalid as a service worker script (e.g. bad mime type), returns nullptr and
// sets error code and a message.
// Check if |response_head| is a valid response for a service worker script
// (e.g. bad mime type). Status codes and error message will be set when the
// response is invalid.
bool CheckResponseHead(
const network::mojom::URLResponseHead& response_head,
blink::ServiceWorkerStatusCode* out_service_worker_status,
network::URLLoaderCompletionStatus* out_completion_status,
std::string* out_error_message);
// Creates net::HttpResponseInfo from |response_head|. Returns nullptr when the
// response is invalid.
// TODO(crbug.com/1060076): Remove this once HttpResponseInfo dependencies are
// gone.
std::unique_ptr<net::HttpResponseInfo> CreateHttpResponseInfoAndCheckHeaders(
const network::mojom::URLResponseHead& response_head,
blink::ServiceWorkerStatusCode* out_service_worker_status,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment