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_write_to_cache_job.h" | 5 #include "content/browser/service_worker/service_worker_write_to_cache_job.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
10 #include "base/trace_event/trace_event.h" | 10 #include "base/trace_event/trace_event.h" |
(...skipping 605 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
616 bool* defer) { | 616 bool* defer) { |
617 DCHECK_EQ(net_request_, request); | 617 DCHECK_EQ(net_request_, request); |
618 TRACE_EVENT0("ServiceWorker", | 618 TRACE_EVENT0("ServiceWorker", |
619 "ServiceWorkerWriteToCacheJob::OnBeforeNetworkStart"); | 619 "ServiceWorkerWriteToCacheJob::OnBeforeNetworkStart"); |
620 NotifyBeforeNetworkStart(defer); | 620 NotifyBeforeNetworkStart(defer); |
621 } | 621 } |
622 | 622 |
623 void ServiceWorkerWriteToCacheJob::OnResponseStarted( | 623 void ServiceWorkerWriteToCacheJob::OnResponseStarted( |
624 net::URLRequest* request) { | 624 net::URLRequest* request) { |
625 DCHECK_EQ(net_request_, request); | 625 DCHECK_EQ(net_request_, request); |
626 if (!context_) { | |
627 AsyncNotifyDoneHelper( | |
628 net::URLRequestStatus(net::URLRequestStatus::FAILED, net::ERR_FAILED), | |
629 kFetchScriptError); | |
630 return; | |
631 } | |
632 | |
626 if (!request->status().is_success()) { | 633 if (!request->status().is_success()) { |
627 AsyncNotifyDoneHelper(request->status(), kFetchScriptError); | 634 AsyncNotifyDoneHelper(request->status(), kFetchScriptError); |
628 return; | 635 return; |
629 } | 636 } |
630 if (request->GetResponseCode() / 100 != 2) { | 637 if (request->GetResponseCode() / 100 != 2) { |
631 std::string error_message = | 638 std::string error_message = |
632 base::StringPrintf(kBadHTTPResponseError, request->GetResponseCode()); | 639 base::StringPrintf(kBadHTTPResponseError, request->GetResponseCode()); |
633 AsyncNotifyDoneHelper(net::URLRequestStatus(net::URLRequestStatus::FAILED, | 640 AsyncNotifyDoneHelper(net::URLRequestStatus(net::URLRequestStatus::FAILED, |
634 net::ERR_INVALID_RESPONSE), | 641 net::ERR_INVALID_RESPONSE), |
635 error_message); | 642 error_message); |
636 // TODO(michaeln): Instead of error'ing immediately, send the net | 643 // TODO(michaeln): Instead of error'ing immediately, send the net |
637 // response to our consumer, just don't cache it? | 644 // response to our consumer, just don't cache it? |
638 return; | 645 return; |
639 } | 646 } |
647 | |
648 // Update |last_update_check| only when the request bypassed the browser | |
649 // cache. | |
650 if (version_->embedded_worker()->network_accessed_for_script()) { | |
nhiroki
2015/09/07 07:05:59
This seems always false because |OnNetworkAccessed
jungkees
2015/09/08 16:01:13
Thanks for spotting this! I replaced the condition
| |
651 ServiceWorkerRegistration* registration = | |
652 context_->GetLiveRegistration(version_->registration_id()); | |
653 DCHECK(registration); // We're registering or updating so must be there. | |
654 | |
655 registration->set_last_update_check(base::Time::Now()); | |
656 context_->storage()->UpdateLastUpdateCheckTime(registration); | |
657 } | |
658 | |
640 // OnSSLCertificateError is not called when the HTTPS connection is reused. | 659 // OnSSLCertificateError is not called when the HTTPS connection is reused. |
641 // So we check cert_status here. | 660 // So we check cert_status here. |
642 if (net::IsCertStatusError(request->ssl_info().cert_status)) { | 661 if (net::IsCertStatusError(request->ssl_info().cert_status)) { |
643 const net::HttpNetworkSession::Params* session_params = | 662 const net::HttpNetworkSession::Params* session_params = |
644 request->context()->GetNetworkSessionParams(); | 663 request->context()->GetNetworkSessionParams(); |
645 if (!session_params || !session_params->ignore_certificate_errors) { | 664 if (!session_params || !session_params->ignore_certificate_errors) { |
646 AsyncNotifyDoneHelper(net::URLRequestStatus(net::URLRequestStatus::FAILED, | 665 AsyncNotifyDoneHelper(net::URLRequestStatus(net::URLRequestStatus::FAILED, |
647 net::ERR_INSECURE_RESPONSE), | 666 net::ERR_INSECURE_RESPONSE), |
648 kSSLError); | 667 kSSLError); |
649 return; | 668 return; |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
816 DCHECK(!did_notify_finished_); | 835 DCHECK(!did_notify_finished_); |
817 int size = -1; | 836 int size = -1; |
818 if (status.is_success()) | 837 if (status.is_success()) |
819 size = writer_ ? writer_->amount_written() : 0; | 838 size = writer_ ? writer_->amount_written() : 0; |
820 version_->script_cache_map()->NotifyFinishedCaching(url_, size, status, | 839 version_->script_cache_map()->NotifyFinishedCaching(url_, size, status, |
821 status_message); | 840 status_message); |
822 did_notify_finished_ = true; | 841 did_notify_finished_ = true; |
823 } | 842 } |
824 | 843 |
825 } // namespace content | 844 } // namespace content |
OLD | NEW |