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

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

Issue 862053002: Fix referrer policy handling in service workers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: updates Created 5 years, 11 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_url_request_job.h" 5 #include "content/browser/service_worker/service_worker_url_request_job.h"
6 6
7 #include <map> 7 #include <map>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/bind.h" 11 #include "base/bind.h"
12 #include "base/guid.h" 12 #include "base/guid.h"
13 #include "base/profiler/scoped_tracker.h" 13 #include "base/profiler/scoped_tracker.h"
14 #include "base/strings/stringprintf.h" 14 #include "base/strings/stringprintf.h"
15 #include "base/time/time.h" 15 #include "base/time/time.h"
16 #include "content/browser/resource_context_impl.h" 16 #include "content/browser/resource_context_impl.h"
17 #include "content/browser/service_worker/service_worker_fetch_dispatcher.h" 17 #include "content/browser/service_worker/service_worker_fetch_dispatcher.h"
18 #include "content/browser/service_worker/service_worker_provider_host.h" 18 #include "content/browser/service_worker/service_worker_provider_host.h"
19 #include "content/browser/streams/stream.h" 19 #include "content/browser/streams/stream.h"
20 #include "content/browser/streams/stream_context.h" 20 #include "content/browser/streams/stream_context.h"
21 #include "content/browser/streams/stream_registry.h" 21 #include "content/browser/streams/stream_registry.h"
22 #include "content/common/resource_request_body.h" 22 #include "content/common/resource_request_body.h"
23 #include "content/common/service_worker/service_worker_types.h" 23 #include "content/common/service_worker/service_worker_types.h"
24 #include "content/public/browser/blob_handle.h" 24 #include "content/public/browser/blob_handle.h"
25 #include "content/public/browser/resource_request_info.h" 25 #include "content/public/browser/resource_request_info.h"
26 #include "content/public/browser/service_worker_context.h" 26 #include "content/public/browser/service_worker_context.h"
27 #include "content/public/common/referrer.h"
27 #include "net/base/net_errors.h" 28 #include "net/base/net_errors.h"
28 #include "net/http/http_request_headers.h" 29 #include "net/http/http_request_headers.h"
29 #include "net/http/http_response_headers.h" 30 #include "net/http/http_response_headers.h"
30 #include "net/http/http_response_info.h" 31 #include "net/http/http_response_info.h"
31 #include "net/http/http_util.h" 32 #include "net/http/http_util.h"
32 #include "storage/browser/blob/blob_data_handle.h" 33 #include "storage/browser/blob/blob_data_handle.h"
33 #include "storage/browser/blob/blob_storage_context.h" 34 #include "storage/browser/blob/blob_storage_context.h"
34 #include "storage/browser/blob/blob_url_request_job_factory.h" 35 #include "storage/browser/blob/blob_url_request_job_factory.h"
35 #include "ui/base/page_transition_types.h" 36 #include "ui/base/page_transition_types.h"
36 37
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 request->url = request_->url(); 388 request->url = request_->url();
388 request->method = request_->method(); 389 request->method = request_->method();
389 const net::HttpRequestHeaders& headers = request_->extra_request_headers(); 390 const net::HttpRequestHeaders& headers = request_->extra_request_headers();
390 for (net::HttpRequestHeaders::Iterator it(headers); it.GetNext();) { 391 for (net::HttpRequestHeaders::Iterator it(headers); it.GetNext();) {
391 if (ServiceWorkerContext::IsExcludedHeaderNameForFetchEvent(it.name())) 392 if (ServiceWorkerContext::IsExcludedHeaderNameForFetchEvent(it.name()))
392 continue; 393 continue;
393 request->headers[it.name()] = it.value(); 394 request->headers[it.name()] = it.value();
394 } 395 }
395 request->blob_uuid = blob_uuid; 396 request->blob_uuid = blob_uuid;
396 request->blob_size = blob_size; 397 request->blob_size = blob_size;
397 request->referrer = GURL(request_->referrer());
398 request->credentials_mode = credentials_mode_; 398 request->credentials_mode = credentials_mode_;
399 const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request_); 399 const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request_);
400 if (info) { 400 if (info) {
401 request->is_reload = ui::PageTransitionCoreTypeIs( 401 request->is_reload = ui::PageTransitionCoreTypeIs(
402 info->GetPageTransition(), ui::PAGE_TRANSITION_RELOAD); 402 info->GetPageTransition(), ui::PAGE_TRANSITION_RELOAD);
403 request->referrer =
404 Referrer(GURL(request_->referrer()), info->GetReferrerPolicy());
405 } else {
406 CHECK(
407 request_->referrer_policy() ==
408 net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE);
409 request->referrer =
410 Referrer(GURL(request_->referrer()), blink::WebReferrerPolicyDefault);
403 } 411 }
404 return request.Pass(); 412 return request.Pass();
405 } 413 }
406 414
407 bool ServiceWorkerURLRequestJob::CreateRequestBodyBlob(std::string* blob_uuid, 415 bool ServiceWorkerURLRequestJob::CreateRequestBodyBlob(std::string* blob_uuid,
408 uint64* blob_size) { 416 uint64* blob_size) {
409 if (!body_.get() || !blob_storage_context_) 417 if (!body_.get() || !blob_storage_context_)
410 return false; 418 return false;
411 419
412 std::vector<const ResourceRequestBody::Element*> resolved_elements; 420 std::vector<const ResourceRequestBody::Element*> resolved_elements;
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
619 } 627 }
620 if (!waiting_stream_url_.is_empty()) { 628 if (!waiting_stream_url_.is_empty()) {
621 StreamRegistry* stream_registry = 629 StreamRegistry* stream_registry =
622 GetStreamContextForResourceContext(resource_context_)->registry(); 630 GetStreamContextForResourceContext(resource_context_)->registry();
623 stream_registry->RemoveRegisterObserver(waiting_stream_url_); 631 stream_registry->RemoveRegisterObserver(waiting_stream_url_);
624 stream_registry->AbortPendingStream(waiting_stream_url_); 632 stream_registry->AbortPendingStream(waiting_stream_url_);
625 } 633 }
626 } 634 }
627 635
628 } // namespace content 636 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/service_worker/service_worker_cache_unittest.cc ('k') | content/common/service_worker/service_worker_types.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698