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

Unified Diff: net/http/http_response_info.cc

Issue 375513002: [ServiceWorker] Propagates ServiceWorker fetched response's URL and wasFetchedViaServiceWorker flag. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 6 years, 5 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: net/http/http_response_info.cc
diff --git a/net/http/http_response_info.cc b/net/http/http_response_info.cc
index be6fa4f8a1fa67ffabee94d2978c024565b9b03b..7980dc17a54b55e7a86dae09fe4fb773f2677162 100644
--- a/net/http/http_response_info.cc
+++ b/net/http/http_response_info.cc
@@ -91,6 +91,9 @@ enum {
// This bit is set if ssl_info has SCTs.
RESPONSE_INFO_HAS_SIGNED_CERTIFICATE_TIMESTAMPS = 1 << 20,
+ // This bit is set if the response was received via a ServiceWorker .
+ RESPONSE_INFO_WAS_SERVICE_WORKER = 1 << 21,
+
// TODO(darin): Add other bits to indicate alternate request methods.
// For now, we don't support storing those.
};
@@ -103,6 +106,7 @@ HttpResponseInfo::HttpResponseInfo()
was_npn_negotiated(false),
was_fetched_via_proxy(false),
did_use_http_auth(false),
+ was_fetched_via_service_worker(false),
connection_info(CONNECTION_INFO_UNKNOWN) {
}
@@ -115,6 +119,8 @@ HttpResponseInfo::HttpResponseInfo(const HttpResponseInfo& rhs)
was_fetched_via_proxy(rhs.was_fetched_via_proxy),
proxy_server(rhs.proxy_server),
did_use_http_auth(rhs.did_use_http_auth),
+ was_fetched_via_service_worker(rhs.was_fetched_via_service_worker),
+ original_url_via_service_worker(rhs.original_url_via_service_worker),
socket_address(rhs.socket_address),
npn_negotiated_protocol(rhs.npn_negotiated_protocol),
connection_info(rhs.connection_info),
@@ -140,6 +146,8 @@ HttpResponseInfo& HttpResponseInfo::operator=(const HttpResponseInfo& rhs) {
was_npn_negotiated = rhs.was_npn_negotiated;
was_fetched_via_proxy = rhs.was_fetched_via_proxy;
did_use_http_auth = rhs.did_use_http_auth;
+ was_fetched_via_service_worker = rhs.was_fetched_via_service_worker;
+ original_url_via_service_worker = rhs.original_url_via_service_worker;
socket_address = rhs.socket_address;
npn_negotiated_protocol = rhs.npn_negotiated_protocol;
connection_info = rhs.connection_info;
@@ -267,6 +275,14 @@ bool HttpResponseInfo::InitFromPickle(const Pickle& pickle,
}
}
+ // Read ServiceWorker info.
+ if (flags & RESPONSE_INFO_WAS_SERVICE_WORKER) {
+ std::string original_url;
+ if (!pickle.ReadString(&iter, &original_url))
+ return false;
+ original_url_via_service_worker = GURL(original_url);
+ }
+
was_fetched_via_spdy = (flags & RESPONSE_INFO_WAS_SPDY) != 0;
was_npn_negotiated = (flags & RESPONSE_INFO_WAS_NPN) != 0;
@@ -277,6 +293,9 @@ bool HttpResponseInfo::InitFromPickle(const Pickle& pickle,
did_use_http_auth = (flags & RESPONSE_INFO_USE_HTTP_AUTHENTICATION) != 0;
+ was_fetched_via_service_worker =
+ (flags & RESPONSE_INFO_WAS_SERVICE_WORKER) != 0;
+
return true;
}
@@ -310,6 +329,8 @@ void HttpResponseInfo::Persist(Pickle* pickle,
flags |= RESPONSE_INFO_USE_HTTP_AUTHENTICATION;
if (!ssl_info.signed_certificate_timestamps.empty())
flags |= RESPONSE_INFO_HAS_SIGNED_CERTIFICATE_TIMESTAMPS;
+ if (was_fetched_via_service_worker)
+ flags |= RESPONSE_INFO_WAS_SERVICE_WORKER;
pickle->WriteInt(flags);
pickle->WriteInt64(request_time.ToInternalValue());
@@ -359,6 +380,9 @@ void HttpResponseInfo::Persist(Pickle* pickle,
if (connection_info != CONNECTION_INFO_UNKNOWN)
pickle->WriteInt(static_cast<int>(connection_info));
+
+ if (was_fetched_via_service_worker)
+ pickle->WriteString(original_url_via_service_worker.spec());
}
HttpResponseInfo::ConnectionInfo HttpResponseInfo::ConnectionInfoFromNextProto(

Powered by Google App Engine
This is Rietveld 408576698