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

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

Issue 255413005: Mostly manual refactoring of ServiceWorkerRequestHandler into a base class and two derived classes,… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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_controllee_request_handler.cc
diff --git a/content/browser/service_worker/service_worker_request_handler.cc b/content/browser/service_worker/service_worker_controllee_request_handler.cc
similarity index 55%
copy from content/browser/service_worker/service_worker_request_handler.cc
copy to content/browser/service_worker/service_worker_controllee_request_handler.cc
index 2e3c5c4623350cef1e8ead5bc3a06fc3afdd739b..148ce443174481e11b288cbd84d5374aa2bbea08 100644
--- a/content/browser/service_worker/service_worker_request_handler.cc
+++ b/content/browser/service_worker/service_worker_controllee_request_handler.cc
@@ -2,10 +2,9 @@
// 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_request_handler.h"
+#include "content/browser/service_worker/service_worker_controllee_request_handler.h"
#include "content/browser/service_worker/service_worker_context_core.h"
-#include "content/browser/service_worker/service_worker_context_wrapper.h"
#include "content/browser/service_worker/service_worker_provider_host.h"
#include "content/browser/service_worker/service_worker_registration.h"
#include "content/browser/service_worker/service_worker_url_request_job.h"
@@ -15,76 +14,19 @@
namespace content {
-namespace {
-
-int kUserDataKey; // Key value is not important.
-
-class ServiceWorkerRequestInterceptor
- : public net::URLRequestJobFactory::ProtocolHandler {
- public:
- ServiceWorkerRequestInterceptor() {}
- virtual ~ServiceWorkerRequestInterceptor() {}
- virtual net::URLRequestJob* MaybeCreateJob(
- net::URLRequest* request,
- net::NetworkDelegate* network_delegate) const OVERRIDE {
- ServiceWorkerRequestHandler* handler =
- ServiceWorkerRequestHandler::GetHandler(request);
- if (!handler)
- return NULL;
- return handler->MaybeCreateJob(request, network_delegate);
- }
-
- private:
- DISALLOW_COPY_AND_ASSIGN(ServiceWorkerRequestInterceptor);
-};
-
-} // namespace
-
-void ServiceWorkerRequestHandler::InitializeHandler(
- net::URLRequest* request,
- ServiceWorkerContextWrapper* context_wrapper,
- int process_id,
- int provider_id,
- ResourceType::Type resource_type) {
- if (!ServiceWorkerUtils::IsFeatureEnabled())
- return;
-
- if (!context_wrapper || !context_wrapper->context() ||
- provider_id == kInvalidServiceWorkerProviderId) {
- return;
- }
-
- ServiceWorkerProviderHost* provider_host =
- context_wrapper->context()->GetProviderHost(process_id, provider_id);
- if (!provider_host)
- return;
-
- if (!provider_host->ShouldHandleRequest(resource_type))
- return;
-
- scoped_ptr<ServiceWorkerRequestHandler> handler(
- new ServiceWorkerRequestHandler(context_wrapper->context()->AsWeakPtr(),
- provider_host->AsWeakPtr(),
- resource_type));
- request->SetUserData(&kUserDataKey, handler.release());
-}
-
-ServiceWorkerRequestHandler* ServiceWorkerRequestHandler::GetHandler(
- net::URLRequest* request) {
- return reinterpret_cast<ServiceWorkerRequestHandler*>(
- request->GetUserData(&kUserDataKey));
-}
-
-scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
-ServiceWorkerRequestHandler::CreateInterceptor() {
- return make_scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>(
- new ServiceWorkerRequestInterceptor);
+ServiceWorkerControlleeRequestHandler::ServiceWorkerControlleeRequestHandler(
+ base::WeakPtr<ServiceWorkerContextCore> context,
+ base::WeakPtr<ServiceWorkerProviderHost> provider_host,
+ ResourceType::Type resource_type)
+ : ServiceWorkerRequestHandler(context, provider_host, resource_type),
+ weak_factory_(this) {
}
-ServiceWorkerRequestHandler::~ServiceWorkerRequestHandler() {
+ServiceWorkerControlleeRequestHandler::
+ ~ServiceWorkerControlleeRequestHandler() {
}
-net::URLRequestJob* ServiceWorkerRequestHandler::MaybeCreateJob(
+net::URLRequestJob* ServiceWorkerControlleeRequestHandler::MaybeCreateJob(
net::URLRequest* request,
net::NetworkDelegate* network_delegate) {
if (!context_ || !provider_host_) {
@@ -128,17 +70,8 @@ net::URLRequestJob* ServiceWorkerRequestHandler::MaybeCreateJob(
return job_.get();
}
-ServiceWorkerRequestHandler::ServiceWorkerRequestHandler(
- base::WeakPtr<ServiceWorkerContextCore> context,
- base::WeakPtr<ServiceWorkerProviderHost> provider_host,
- ResourceType::Type resource_type)
- : context_(context),
- provider_host_(provider_host),
- resource_type_(resource_type),
- weak_factory_(this) {
-}
-
-void ServiceWorkerRequestHandler::PrepareForMainResource(const GURL& url) {
+void ServiceWorkerControlleeRequestHandler::PrepareForMainResource(
+ const GURL& url) {
DCHECK(job_.get());
DCHECK(context_);
// The corresponding provider_host may already have associate version in
@@ -149,10 +82,11 @@ void ServiceWorkerRequestHandler::PrepareForMainResource(const GURL& url) {
context_->storage()->FindRegistrationForDocument(
url,
base::Bind(&self::DidLookupRegistrationForMainResource,
- weak_factory_.GetWeakPtr()));
+ weak_factory_.GetWeakPtr()));
}
-void ServiceWorkerRequestHandler::DidLookupRegistrationForMainResource(
+void
+ServiceWorkerControlleeRequestHandler::DidLookupRegistrationForMainResource(
ServiceWorkerStatusCode status,
const scoped_refptr<ServiceWorkerRegistration>& registration) {
DCHECK(job_.get());
@@ -161,13 +95,16 @@ void ServiceWorkerRequestHandler::DidLookupRegistrationForMainResource(
job_->FallbackToNetwork();
return;
}
+ // TODO(michaeln): should SetPendingVersion() even if no active version so
+ // so the versions in the pipeline (.installing, .waiting) show up in the
+ // attribute values.
DCHECK(registration);
provider_host_->SetActiveVersion(registration->active_version());
provider_host_->SetPendingVersion(registration->pending_version());
job_->ForwardToServiceWorker();
}
-void ServiceWorkerRequestHandler::PrepareForSubResource() {
+void ServiceWorkerControlleeRequestHandler::PrepareForSubResource() {
DCHECK(job_.get());
DCHECK(context_);
DCHECK(provider_host_->active_version());

Powered by Google App Engine
This is Rietveld 408576698