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

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

Issue 269373002: Store the service worker script and its imports on first load... kinda (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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_context_request_handler.cc
diff --git a/content/browser/service_worker/service_worker_context_request_handler.cc b/content/browser/service_worker/service_worker_context_request_handler.cc
index cd6c200f718c6f3c864fec626548ab933a8648d1..cd4ce5a05d03a465ebe766a6f9f0f47c5306c042 100644
--- a/content/browser/service_worker/service_worker_context_request_handler.cc
+++ b/content/browser/service_worker/service_worker_context_request_handler.cc
@@ -4,9 +4,12 @@
#include "content/browser/service_worker/service_worker_context_request_handler.h"
+#include "content/browser/service_worker/service_worker_context_core.h"
#include "content/browser/service_worker/service_worker_provider_host.h"
#include "content/browser/service_worker/service_worker_read_from_cache_job.h"
+#include "content/browser/service_worker/service_worker_storage.h"
#include "content/browser/service_worker/service_worker_version.h"
+#include "content/browser/service_worker/service_worker_write_to_cache_job.h"
#include "net/url_request/url_request.h"
namespace content {
@@ -26,7 +29,10 @@ ServiceWorkerContextRequestHandler::~ServiceWorkerContextRequestHandler() {
net::URLRequestJob* ServiceWorkerContextRequestHandler::MaybeCreateJob(
net::URLRequest* request,
net::NetworkDelegate* network_delegate) {
- if (!provider_host_ || !version_)
+ if (!provider_host_ || !version_ || !context_)
+ return NULL;
+
+ if (request->url_chain().size() > 1)
return NULL;
kinuko 2014/05/08 08:00:24 Is this to abort (fall back to net) redirected req
michaeln 2014/05/08 22:27:24 This is to always send redirected requests thru th
// We only use the script cache for main script loading and
@@ -40,8 +46,12 @@ net::URLRequestJob* ServiceWorkerContextRequestHandler::MaybeCreateJob(
}
if (ShouldAddToScriptCache(request->url())) {
- return NULL;
- // TODO(michaeln): return new ServiceWorkerWriteToCacheJob();
+ int64 response_id = context_->storage()->NewResourceId();
+ if (response_id == kInvalidServiceWorkerResponseId)
+ return NULL;
+ version_->AddToScriptCache(request->url(), response_id);
+ return new ServiceWorkerWriteToCacheJob(
+ request, network_delegate, context_, version_, response_id);
}
int64 response_id = kInvalidServiceWorkerResponseId;
@@ -56,9 +66,9 @@ net::URLRequestJob* ServiceWorkerContextRequestHandler::MaybeCreateJob(
bool ServiceWorkerContextRequestHandler::ShouldAddToScriptCache(
const GURL& url) {
- // TODO(michaeln): Ensure the transition to INSTALLING can't
- // happen prior to the initial eval completion.
- if (version_->status() != ServiceWorkerVersion::NEW)
+ // TODO(michaeln): Stop caching imports after the initial eval.
+ if (version_->status() != ServiceWorkerVersion::NEW &&
+ version_->status() != ServiceWorkerVersion::INSTALLING)
return false;
return version_->LookupInScriptCache(url) == kInvalidServiceWorkerResponseId;
}

Powered by Google App Engine
This is Rietveld 408576698