| Index: content/browser/child_process_security_policy.cc
|
| ===================================================================
|
| --- content/browser/child_process_security_policy.cc (revision 113019)
|
| +++ content/browser/child_process_security_policy.cc (working copy)
|
| @@ -11,10 +11,12 @@
|
| #include "base/stl_util.h"
|
| #include "base/string_util.h"
|
| #include "content/browser/site_instance.h"
|
| +#include "content/public/browser/content_browser_client.h"
|
| #include "content/public/common/bindings_policy.h"
|
| #include "content/public/common/url_constants.h"
|
| #include "googleurl/src/gurl.h"
|
| #include "net/url_request/url_request.h"
|
| +#include "net/url_request/url_request_job_factory.h"
|
|
|
| static const int kReadFilePermissions =
|
| base::PLATFORM_FILE_OPEN |
|
| @@ -201,9 +203,9 @@
|
| web_safe_schemes_.insert(scheme);
|
| }
|
|
|
| -bool ChildProcessSecurityPolicy::IsWebSafeScheme(const std::string& scheme) {
|
| +bool ChildProcessSecurityPolicy::IsWebSafeScheme(
|
| + const std::string& scheme) const {
|
| base::AutoLock lock(lock_);
|
| -
|
| return (web_safe_schemes_.find(scheme) != web_safe_schemes_.end());
|
| }
|
|
|
| @@ -217,9 +219,9 @@
|
| pseudo_schemes_.insert(scheme);
|
| }
|
|
|
| -bool ChildProcessSecurityPolicy::IsPseudoScheme(const std::string& scheme) {
|
| +bool ChildProcessSecurityPolicy::IsPseudoScheme(
|
| + const std::string& scheme) const {
|
| base::AutoLock lock(lock_);
|
| -
|
| return (pseudo_schemes_.find(scheme) != pseudo_schemes_.end());
|
| }
|
|
|
| @@ -229,7 +231,8 @@
|
| disabled_schemes_ = schemes;
|
| }
|
|
|
| -bool ChildProcessSecurityPolicy::IsDisabledScheme(const std::string& scheme) {
|
| +bool ChildProcessSecurityPolicy::IsDisabledScheme(
|
| + const std::string& scheme) const {
|
| base::AutoLock lock(lock_);
|
| return disabled_schemes_.find(scheme) != disabled_schemes_.end();
|
| }
|
| @@ -349,7 +352,9 @@
|
| }
|
|
|
| bool ChildProcessSecurityPolicy::CanRequestURL(
|
| - int child_id, const GURL& url) {
|
| + int child_id,
|
| + const GURL& url,
|
| + const net::URLRequestJobFactory* job_factory) const {
|
| if (!url.is_valid())
|
| return false; // Can't request invalid URLs.
|
|
|
| @@ -370,7 +375,7 @@
|
| url.SchemeIs(chrome::kViewSourceScheme))
|
| return false;
|
|
|
| - return CanRequestURL(child_id, child_url);
|
| + return CanRequestURL(child_id, child_url, NULL);
|
| }
|
|
|
| if (LowerCaseEqualsASCII(url.spec(), chrome::kAboutBlankURL))
|
| @@ -382,13 +387,18 @@
|
| return false;
|
| }
|
|
|
| - if (!net::URLRequest::IsHandledURL(url))
|
| - return true; // This URL request is destined for ShellExecute.
|
| + if (job_factory) {
|
| + if (!job_factory->IsHandledURL(url))
|
| + return true;
|
| + } else {
|
| + if (!content::GetContentClient()->browser()->IsHandledURL(url))
|
| + return true;
|
| + }
|
|
|
| {
|
| base::AutoLock lock(lock_);
|
|
|
| - SecurityStateMap::iterator state = security_state_.find(child_id);
|
| + SecurityStateMap::const_iterator state = security_state_.find(child_id);
|
| if (state == security_state_.end())
|
| return false;
|
|
|
|
|