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

Side by Side Diff: content/browser/webui/url_data_manager_backend.cc

Issue 1217503012: Avoid cross-origin iframe issues when loading PDF in print preview (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/webui/url_data_manager_backend.h" 5 #include "content/browser/webui/url_data_manager_backend.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 if (!url.is_valid()) { 75 if (!url.is_valid()) {
76 NOTREACHED(); 76 NOTREACHED();
77 return false; 77 return false;
78 } 78 }
79 79
80 return true; 80 return true;
81 } 81 }
82 82
83 // Parse |url| to get the path which will be used to resolve the request. The 83 // Parse |url| to get the path which will be used to resolve the request. The
84 // path is the remaining portion after the scheme and hostname. 84 // path is the remaining portion after the scheme and hostname.
85 void URLToRequestPath(const GURL& url, std::string* path) { 85 std::string URLToRequestPath(const GURL& url) {
Charlie Reis 2015/07/16 19:25:03 Why can't we just use GURL::path()? This seems to
raymes 2015/07/17 01:58:29 I don't know the answer to that, I didn't write th
Charlie Reis 2015/07/17 23:45:22 Wow, this goes back to the initial commit: https:/
raymes 2015/07/20 06:46:22 I no longer change this file in the latest patchse
86 const std::string& spec = url.possibly_invalid_spec(); 86 const std::string& spec = url.possibly_invalid_spec();
87 const url::Parsed& parsed = url.parsed_for_possibly_invalid_spec(); 87 const url::Parsed& parsed = url.parsed_for_possibly_invalid_spec();
88 // + 1 to skip the slash at the beginning of the path. 88 // + 1 to skip the slash at the beginning of the path.
89 int offset = parsed.CountCharactersBefore(url::Parsed::PATH, false) + 1; 89 int offset = parsed.CountCharactersBefore(url::Parsed::PATH, false) + 1;
90 90
91 std::string path;
91 if (offset < static_cast<int>(spec.size())) 92 if (offset < static_cast<int>(spec.size()))
92 path->assign(spec.substr(offset)); 93 path = spec.substr(offset);
94
95 // Remove the query string if there is one.
96 return path.substr(0, path.find_last_of('?'));
93 } 97 }
94 98
95 // Returns a value of 'Origin:' header for the |request| if the header is set. 99 // Returns a value of 'Origin:' header for the |request| if the header is set.
96 // Otherwise returns an empty string. 100 // Otherwise returns an empty string.
97 std::string GetOriginHeaderValue(const net::URLRequest* request) { 101 std::string GetOriginHeaderValue(const net::URLRequest* request) {
98 std::string result; 102 std::string result;
99 if (request->extra_request_headers().GetHeader( 103 if (request->extra_request_headers().GetHeader(
100 net::HttpRequestHeaders::kOrigin, &result)) 104 net::HttpRequestHeaders::kOrigin, &result))
101 return result; 105 return result;
102 net::HttpRequestHeaders headers; 106 net::HttpRequestHeaders headers;
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after
578 if (!CheckURLIsValid(request->url())) 582 if (!CheckURLIsValid(request->url()))
579 return false; 583 return false;
580 584
581 URLDataSourceImpl* source = GetDataSourceFromURL(request->url()); 585 URLDataSourceImpl* source = GetDataSourceFromURL(request->url());
582 if (!source) 586 if (!source)
583 return false; 587 return false;
584 588
585 if (!source->source()->ShouldServiceRequest(request)) 589 if (!source->source()->ShouldServiceRequest(request))
586 return false; 590 return false;
587 591
588 std::string path; 592 std::string path = URLToRequestPath(request->url());
589 URLToRequestPath(request->url(), &path);
590 source->source()->WillServiceRequest(request, &path); 593 source->source()->WillServiceRequest(request, &path);
591 594
592 // Save this request so we know where to send the data. 595 // Save this request so we know where to send the data.
593 RequestID request_id = next_request_id_++; 596 RequestID request_id = next_request_id_++;
594 pending_requests_.insert(std::make_pair(request_id, job)); 597 pending_requests_.insert(std::make_pair(request_id, job));
595 598
596 job->set_allow_caching(source->source()->AllowCaching()); 599 job->set_allow_caching(source->source()->AllowCaching());
597 job->set_add_content_security_policy( 600 job->set_add_content_security_policy(
598 source->source()->ShouldAddContentSecurityPolicy()); 601 source->source()->ShouldAddContentSecurityPolicy());
599 job->set_content_security_policy_object_source( 602 job->set_content_security_policy_object_source(
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
764 767
765 } // namespace 768 } // namespace
766 769
767 net::URLRequestJobFactory::ProtocolHandler* 770 net::URLRequestJobFactory::ProtocolHandler*
768 CreateDevToolsProtocolHandler(content::ResourceContext* resource_context, 771 CreateDevToolsProtocolHandler(content::ResourceContext* resource_context,
769 bool is_incognito) { 772 bool is_incognito) {
770 return new DevToolsJobFactory(resource_context, is_incognito); 773 return new DevToolsJobFactory(resource_context, is_incognito);
771 } 774 }
772 775
773 } // namespace content 776 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698