OLD | NEW |
---|---|
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_controllee_request_handl er.h" | 5 #include "content/browser/service_worker/service_worker_controllee_request_handl er.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/trace_event/trace_event.h" | 10 #include "base/trace_event/trace_event.h" |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
205 job_->FallbackToNetwork(); | 205 job_->FallbackToNetwork(); |
206 TRACE_EVENT_ASYNC_END2( | 206 TRACE_EVENT_ASYNC_END2( |
207 "ServiceWorker", | 207 "ServiceWorker", |
208 "ServiceWorkerControlleeRequestHandler::PrepareForMainResource", | 208 "ServiceWorkerControlleeRequestHandler::PrepareForMainResource", |
209 job_.get(), | 209 job_.get(), |
210 "Status", status, | 210 "Status", status, |
211 "Info", "ServiceWorker is blocked"); | 211 "Info", "ServiceWorker is blocked"); |
212 return; | 212 return; |
213 } | 213 } |
214 | 214 |
215 if (!provider_host_->is_parent_frame_secure()) { | |
216 std::set<std::string> schemes; | |
217 GetContentClient() | |
218 ->browser() | |
219 ->GetSchemesBypassingSecureContextCheckWhitelist(&schemes); | |
220 if (schemes.find(provider_host_->document_url().scheme()) == | |
Marijn Kruisselbrink
2016/06/02 22:44:43
Would it make sense to combine both the is_parent_
falken
2016/06/03 08:22:05
I like that and ended up adopting your patch, than
| |
221 schemes.end()) { | |
222 // TODO(falken): Figure out a way to surface in the page's DevTools | |
223 // console that the service worker was blocked for security. | |
224 job_->FallbackToNetwork(); | |
225 TRACE_EVENT_ASYNC_END1( | |
226 "ServiceWorker", | |
227 "ServiceWorkerControlleeRequestHandler::PrepareForMainResource", | |
228 job_.get(), "Info", "Insecure context"); | |
229 return; | |
230 } | |
231 } | |
232 | |
215 if (need_to_update) { | 233 if (need_to_update) { |
216 force_update_started_ = true; | 234 force_update_started_ = true; |
217 context_->UpdateServiceWorker( | 235 context_->UpdateServiceWorker( |
218 registration.get(), true /* force_bypass_cache */, | 236 registration.get(), true /* force_bypass_cache */, |
219 true /* skip_script_comparison */, provider_host_.get(), | 237 true /* skip_script_comparison */, provider_host_.get(), |
220 base::Bind(&self::DidUpdateRegistration, weak_factory_.GetWeakPtr(), | 238 base::Bind(&self::DidUpdateRegistration, weak_factory_.GetWeakPtr(), |
221 registration)); | 239 registration)); |
222 return; | 240 return; |
223 } | 241 } |
224 | 242 |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
407 DCHECK(provider_host_); | 425 DCHECK(provider_host_); |
408 // Detach the controller so subresource requests also skip the worker. | 426 // Detach the controller so subresource requests also skip the worker. |
409 provider_host_->NotifyControllerLost(); | 427 provider_host_->NotifyControllerLost(); |
410 } | 428 } |
411 | 429 |
412 void ServiceWorkerControlleeRequestHandler::ClearJob() { | 430 void ServiceWorkerControlleeRequestHandler::ClearJob() { |
413 job_.reset(); | 431 job_.reset(); |
414 } | 432 } |
415 | 433 |
416 } // namespace content | 434 } // namespace content |
OLD | NEW |