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

Unified Diff: content/browser/service_worker/service_worker_response_info.cc

Issue 1867293004: Set service worker response info data for foreign fetch intercepted fetches. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@ff-check-origin
Patch Set: address comment Created 4 years, 8 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_response_info.cc
diff --git a/content/browser/service_worker/service_worker_response_info.cc b/content/browser/service_worker/service_worker_response_info.cc
new file mode 100644
index 0000000000000000000000000000000000000000..aafb657db99cb5048f4d3e9ce3d51ac73023de7b
--- /dev/null
+++ b/content/browser/service_worker/service_worker_response_info.cc
@@ -0,0 +1,101 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/browser/service_worker/service_worker_response_info.h"
+
+#include "content/public/common/resource_response_info.h"
+#include "net/url_request/url_request.h"
+
+namespace content {
+
+namespace {
+
+int kUserDataKey; // Only address is used, value is not important.
+
+} // namespace
+
+// static
+ServiceWorkerResponseInfo* ServiceWorkerResponseInfo::ForRequest(
+ net::URLRequest* request,
+ bool create) {
+ ServiceWorkerResponseInfo* info = static_cast<ServiceWorkerResponseInfo*>(
+ request->GetUserData(&kUserDataKey));
+ if (!info && create) {
+ info = new ServiceWorkerResponseInfo();
+ request->SetUserData(&kUserDataKey, info);
+ }
+ return info;
+}
+
+// static
+void ServiceWorkerResponseInfo::ResetDataForRequest(net::URLRequest* request) {
+ ServiceWorkerResponseInfo* info = ForRequest(request);
+ if (info)
+ info->ResetData();
+}
+
+void ServiceWorkerResponseInfo::GetExtraResponseInfo(
+ ResourceResponseInfo* response_info) const {
+ response_info->was_fetched_via_service_worker =
+ was_fetched_via_service_worker_;
+ response_info->was_fallback_required_by_service_worker =
+ was_fallback_required_;
+ response_info->original_url_via_service_worker =
+ original_url_via_service_worker_;
+ response_info->response_type_via_service_worker =
+ response_type_via_service_worker_;
+ response_info->service_worker_start_time = service_worker_start_time_;
+ response_info->service_worker_ready_time = service_worker_ready_time_;
+ response_info->is_in_cache_storage = response_is_in_cache_storage_;
+ response_info->cache_storage_cache_name = response_cache_storage_cache_name_;
+}
+
+void ServiceWorkerResponseInfo::OnPrepareToRestart(
+ base::TimeTicks service_worker_start_time,
+ base::TimeTicks service_worker_ready_time) {
+ ResetData();
+
+ // Update times, if not already set by a previous Job.
+ if (service_worker_start_time_.is_null()) {
+ service_worker_start_time_ = service_worker_start_time;
+ service_worker_ready_time_ = service_worker_ready_time;
+ }
+}
+
+void ServiceWorkerResponseInfo::OnStartCompleted(
+ bool was_fetched_via_service_worker,
+ bool was_fallback_required,
+ const GURL& original_url_via_service_worker,
+ blink::WebServiceWorkerResponseType response_type_via_service_worker,
+ base::TimeTicks service_worker_start_time,
+ base::TimeTicks service_worker_ready_time,
+ bool response_is_in_cache_storage,
+ const std::string& response_cache_storage_cache_name) {
+ was_fetched_via_service_worker_ = was_fetched_via_service_worker;
+ was_fallback_required_ = was_fallback_required;
+ original_url_via_service_worker_ = original_url_via_service_worker;
+ response_type_via_service_worker_ = response_type_via_service_worker;
+ response_is_in_cache_storage_ = response_is_in_cache_storage;
+ response_cache_storage_cache_name_ = response_cache_storage_cache_name;
+
+ // Update times, if not already set by a previous Job.
+ if (service_worker_start_time_.is_null()) {
+ service_worker_start_time_ = service_worker_start_time;
+ service_worker_ready_time_ = service_worker_ready_time;
+ }
+}
+
+void ServiceWorkerResponseInfo::ResetData() {
+ was_fetched_via_service_worker_ = false;
+ was_fallback_required_ = false;
+ original_url_via_service_worker_ = GURL();
+ response_type_via_service_worker_ =
+ blink::WebServiceWorkerResponseTypeDefault;
+ response_is_in_cache_storage_ = false;
+ response_cache_storage_cache_name_ = std::string();
+}
+
+ServiceWorkerResponseInfo::ServiceWorkerResponseInfo() {}
+
+} // namespace content

Powered by Google App Engine
This is Rietveld 408576698