Index: content/browser/service_worker/service_worker_url_job_wrapper.cc |
diff --git a/content/browser/service_worker/service_worker_url_job_wrapper.cc b/content/browser/service_worker/service_worker_url_job_wrapper.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7761fc753b79c9cc14588588c03b6b1e77ffb51d |
--- /dev/null |
+++ b/content/browser/service_worker/service_worker_url_job_wrapper.cc |
@@ -0,0 +1,101 @@ |
+// Copyright 2017 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_url_job_wrapper.h" |
+ |
+#include "base/command_line.h" |
+#include "content/public/browser/resource_request_info.h" |
+#include "content/public/common/browser_side_navigation_policy.h" |
+#include "content/public/common/content_switches.h" |
+ |
+namespace content { |
+ |
+ServiceWorkerURLJobWrapper::ServiceWorkerURLJobWrapper( |
+ base::WeakPtr<ServiceWorkerURLRequestJob> url_request_job) |
+ : url_request_job_(std::move(url_request_job)), url_loader_(nullptr) {} |
+ |
+ServiceWorkerURLJobWrapper::ServiceWorkerURLJobWrapper( |
+ ServiceWorkerControlleeURLLoader* url_loader) |
+ : url_loader_(url_loader) { |
+ DCHECK(IsBrowserSideNavigationEnabled() && |
+ base::CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kEnableNetworkService)); |
+} |
+ |
+ServiceWorkerURLJobWrapper::~ServiceWorkerURLJobWrapper() {} |
+ |
+void ServiceWorkerURLJobWrapper::FallbackToNetwork() { |
+ if (url_loader_) { |
+ NOTIMPLEMENTED(); |
+ } else { |
+ url_request_job_->FallbackToNetwork(); |
+ } |
+} |
+ |
+void ServiceWorkerURLJobWrapper::FallbackToNetworkOrRenderer() { |
+ if (url_loader_) { |
+ NOTIMPLEMENTED(); |
+ } else { |
+ url_request_job_->FallbackToNetworkOrRenderer(); |
+ } |
+} |
+ |
+void ServiceWorkerURLJobWrapper::ForwardToServiceWorker() { |
+ if (url_loader_) { |
+ NOTIMPLEMENTED(); |
+ } else { |
+ url_request_job_->ForwardToServiceWorker(); |
+ } |
+} |
+ |
+bool ServiceWorkerURLJobWrapper::ShouldFallbackToNetwork() { |
+ if (url_loader_) { |
+ NOTIMPLEMENTED(); |
+ return false; |
+ } else { |
+ return url_request_job_->ShouldFallbackToNetwork(); |
+ } |
+} |
+ |
+ui::PageTransition ServiceWorkerURLJobWrapper::GetPageTransition() { |
+ if (url_loader_) { |
+ NOTIMPLEMENTED(); |
+ return ui::PAGE_TRANSITION_LINK; |
+ } else { |
+ const ResourceRequestInfo* info = |
+ ResourceRequestInfo::ForRequest(url_request_job_->request()); |
+ // ResourceRequestInfo may not be set in some tests. |
+ if (!info) |
+ return ui::PAGE_TRANSITION_LINK; |
+ return info->GetPageTransition(); |
+ } |
+} |
+ |
+size_t ServiceWorkerURLJobWrapper::GetURLChainSize() const { |
+ if (url_loader_) { |
+ NOTIMPLEMENTED(); |
+ return 0; |
+ } else { |
+ return url_request_job_->request()->url_chain().size(); |
+ } |
+} |
+ |
+void ServiceWorkerURLJobWrapper::FailDueToLostController() { |
+ if (url_loader_) { |
+ NOTIMPLEMENTED(); |
+ } else { |
+ url_request_job_->FailDueToLostController(); |
+ } |
+} |
+ |
+bool ServiceWorkerURLJobWrapper::WasCanceled() const { |
+ if (url_loader_) { |
+ NOTIMPLEMENTED(); |
+ return true; |
+ } else { |
+ return !url_request_job_; |
+ } |
+} |
+ |
+} // namespace content |