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

Side by Side Diff: content/browser/service_worker/service_worker_request_handler.cc

Issue 1181573010: ServiceWorker: Fix matching registration info missing during shift-reload. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: iterate living registrations Created 5 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/service_worker/service_worker_request_handler.h" 5 #include "content/browser/service_worker/service_worker_request_handler.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "content/browser/service_worker/service_worker_context_core.h" 9 #include "content/browser/service_worker/service_worker_context_core.h"
10 #include "content/browser/service_worker/service_worker_context_wrapper.h" 10 #include "content/browser/service_worker/service_worker_context_wrapper.h"
11 #include "content/browser/service_worker/service_worker_provider_host.h" 11 #include "content/browser/service_worker/service_worker_provider_host.h"
12 #include "content/browser/service_worker/service_worker_registration.h" 12 #include "content/browser/service_worker/service_worker_registration.h"
13 #include "content/browser/service_worker/service_worker_url_request_job.h" 13 #include "content/browser/service_worker/service_worker_url_request_job.h"
14 #include "content/browser/service_worker/service_worker_utils.h" 14 #include "content/browser/service_worker/service_worker_utils.h"
15 #include "content/common/resource_request_body.h" 15 #include "content/common/resource_request_body.h"
16 #include "content/common/service_worker/service_worker_types.h" 16 #include "content/common/service_worker/service_worker_types.h"
17 #include "content/public/browser/resource_context.h" 17 #include "content/public/browser/resource_context.h"
18 #include "net/base/load_flags.h"
18 #include "net/base/net_util.h" 19 #include "net/base/net_util.h"
19 #include "net/url_request/url_request.h" 20 #include "net/url_request/url_request.h"
20 #include "net/url_request/url_request_interceptor.h" 21 #include "net/url_request/url_request_interceptor.h"
21 #include "storage/browser/blob/blob_storage_context.h" 22 #include "storage/browser/blob/blob_storage_context.h"
22 23
23 namespace content { 24 namespace content {
24 25
25 namespace { 26 namespace {
26 27
27 int kUserDataKey; // Key value is not important. 28 int kUserDataKey; // Key value is not important.
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 74
74 ServiceWorkerProviderHost* provider_host = 75 ServiceWorkerProviderHost* provider_host =
75 context_wrapper->context()->GetProviderHost(process_id, provider_id); 76 context_wrapper->context()->GetProviderHost(process_id, provider_id);
76 if (!provider_host || !provider_host->IsContextAlive()) 77 if (!provider_host || !provider_host->IsContextAlive())
77 return; 78 return;
78 79
79 if (skip_service_worker) { 80 if (skip_service_worker) {
80 if (ServiceWorkerUtils::IsMainResourceType(resource_type)) { 81 if (ServiceWorkerUtils::IsMainResourceType(resource_type)) {
81 provider_host->SetDocumentUrl(net::SimplifyUrlForRequest(request->url())); 82 provider_host->SetDocumentUrl(net::SimplifyUrlForRequest(request->url()));
82 provider_host->SetTopmostFrameUrl(request->first_party_for_cookies()); 83 provider_host->SetTopmostFrameUrl(request->first_party_for_cookies());
84 // A page load with skip_service_worker should be triggered by
85 // shift-reload, so retain all live matching registrations.
86 DCHECK(request->load_flags() & net::LOAD_BYPASS_CACHE);
michaeln 2015/06/24 19:47:22 I'm not sure the dcheck is really appropriate, see
xiang 2015/06/25 05:37:32 The dcheck is on the assumption that when a main r
87 provider_host->CopyMatchingRegistrations();
83 } 88 }
84 return; 89 return;
85 } 90 }
86 91
87 scoped_ptr<ServiceWorkerRequestHandler> handler( 92 scoped_ptr<ServiceWorkerRequestHandler> handler(
88 provider_host->CreateRequestHandler(request_mode, 93 provider_host->CreateRequestHandler(request_mode,
89 credentials_mode, 94 credentials_mode,
90 resource_type, 95 resource_type,
91 request_context_type, 96 request_context_type,
92 frame_type, 97 frame_type,
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 ResourceType resource_type) 168 ResourceType resource_type)
164 : context_(context), 169 : context_(context),
165 provider_host_(provider_host), 170 provider_host_(provider_host),
166 blob_storage_context_(blob_storage_context), 171 blob_storage_context_(blob_storage_context),
167 resource_type_(resource_type), 172 resource_type_(resource_type),
168 old_process_id_(0), 173 old_process_id_(0),
169 old_provider_id_(kInvalidServiceWorkerProviderId) { 174 old_provider_id_(kInvalidServiceWorkerProviderId) {
170 } 175 }
171 176
172 } // namespace content 177 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698