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_url_request_job.h" | 5 #include "content/browser/service_worker/service_worker_url_request_job.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 #include <limits> | 9 #include <limits> |
10 #include <map> | 10 #include <map> |
(...skipping 586 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
597 | 597 |
598 if (fetch_result == SERVICE_WORKER_FETCH_EVENT_RESULT_FALLBACK) { | 598 if (fetch_result == SERVICE_WORKER_FETCH_EVENT_RESULT_FALLBACK) { |
599 ServiceWorkerMetrics::RecordFallbackedRequestMode(request_mode_); | 599 ServiceWorkerMetrics::RecordFallbackedRequestMode(request_mode_); |
600 // When the request_mode is |CORS| or |CORS-with-forced-preflight| and the | 600 // When the request_mode is |CORS| or |CORS-with-forced-preflight| and the |
601 // origin of the request URL is different from the security origin of the | 601 // origin of the request URL is different from the security origin of the |
602 // document, we can't simply fallback to the network in the browser process. | 602 // document, we can't simply fallback to the network in the browser process. |
603 // It is because the CORS preflight logic is implemented in the renderer. So | 603 // It is because the CORS preflight logic is implemented in the renderer. So |
604 // we returns a fall_back_required response to the renderer. | 604 // we returns a fall_back_required response to the renderer. |
605 if ((request_mode_ == FETCH_REQUEST_MODE_CORS || | 605 if ((request_mode_ == FETCH_REQUEST_MODE_CORS || |
606 request_mode_ == FETCH_REQUEST_MODE_CORS_WITH_FORCED_PREFLIGHT) && | 606 request_mode_ == FETCH_REQUEST_MODE_CORS_WITH_FORCED_PREFLIGHT) && |
607 delegate_->GetRequestingOrigin() != request()->url().GetOrigin()) { | 607 !request()->initiator().IsSameOriginWith( |
| 608 url::Origin(request()->url()))) { |
608 fall_back_required_ = true; | 609 fall_back_required_ = true; |
609 RecordResult(ServiceWorkerMetrics::REQUEST_JOB_FALLBACK_FOR_CORS); | 610 RecordResult(ServiceWorkerMetrics::REQUEST_JOB_FALLBACK_FOR_CORS); |
610 CreateResponseHeader( | 611 CreateResponseHeader( |
611 400, "Service Worker Fallback Required", ServiceWorkerHeaderMap()); | 612 400, "Service Worker Fallback Required", ServiceWorkerHeaderMap()); |
612 CommitResponseHeader(); | 613 CommitResponseHeader(); |
613 return; | 614 return; |
614 } | 615 } |
615 // Change the response type and restart the request to fallback to | 616 // Change the response type and restart the request to fallback to |
616 // the network. | 617 // the network. |
617 RecordResult(ServiceWorkerMetrics::REQUEST_JOB_FALLBACK_RESPONSE); | 618 RecordResult(ServiceWorkerMetrics::REQUEST_JOB_FALLBACK_RESPONSE); |
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
828 base::TimeTicks() /* service_worker_ready_time */); | 829 base::TimeTicks() /* service_worker_ready_time */); |
829 return; | 830 return; |
830 } | 831 } |
831 delegate_->OnStartCompleted(true /* was_fetched_via_service_worker */, | 832 delegate_->OnStartCompleted(true /* was_fetched_via_service_worker */, |
832 fall_back_required_, response_url_, | 833 fall_back_required_, response_url_, |
833 service_worker_response_type_, worker_start_time_, | 834 service_worker_response_type_, worker_start_time_, |
834 worker_ready_time_); | 835 worker_ready_time_); |
835 } | 836 } |
836 | 837 |
837 } // namespace content | 838 } // namespace content |
OLD | NEW |