OLD | NEW |
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/child_process_security_policy_impl.h" | 5 #include "content/browser/child_process_security_policy_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
261 bool CanAccessDataForOrigin(const GURL& site_url) { | 261 bool CanAccessDataForOrigin(const GURL& site_url) { |
262 if (origin_lock_.is_empty()) | 262 if (origin_lock_.is_empty()) |
263 return true; | 263 return true; |
264 return origin_lock_ == site_url; | 264 return origin_lock_ == site_url; |
265 } | 265 } |
266 | 266 |
267 void LockToOrigin(const GURL& gurl) { | 267 void LockToOrigin(const GURL& gurl) { |
268 origin_lock_ = gurl; | 268 origin_lock_ = gurl; |
269 } | 269 } |
270 | 270 |
| 271 ChildProcessSecurityPolicyImpl::CheckOriginLockResult CheckOriginLock( |
| 272 const GURL& gurl) { |
| 273 if (origin_lock_.is_empty()) |
| 274 return ChildProcessSecurityPolicyImpl::CheckOriginLockResult::NO_LOCK; |
| 275 |
| 276 if (origin_lock_ == gurl) { |
| 277 return ChildProcessSecurityPolicyImpl::CheckOriginLockResult:: |
| 278 HAS_EQUAL_LOCK; |
| 279 } |
| 280 |
| 281 return ChildProcessSecurityPolicyImpl::CheckOriginLockResult:: |
| 282 HAS_WRONG_LOCK; |
| 283 } |
| 284 |
271 bool has_web_ui_bindings() const { | 285 bool has_web_ui_bindings() const { |
272 return enabled_bindings_ & BINDINGS_POLICY_WEB_UI; | 286 return enabled_bindings_ & BINDINGS_POLICY_WEB_UI; |
273 } | 287 } |
274 | 288 |
275 bool can_read_raw_cookies() const { | 289 bool can_read_raw_cookies() const { |
276 return can_read_raw_cookies_; | 290 return can_read_raw_cookies_; |
277 } | 291 } |
278 | 292 |
279 bool can_send_midi_sysex() const { | 293 bool can_send_midi_sysex() const { |
280 return can_send_midi_sysex_; | 294 return can_send_midi_sysex_; |
(...skipping 737 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1018 void ChildProcessSecurityPolicyImpl::LockToOrigin(int child_id, | 1032 void ChildProcessSecurityPolicyImpl::LockToOrigin(int child_id, |
1019 const GURL& gurl) { | 1033 const GURL& gurl) { |
1020 // "gurl" can be currently empty in some cases, such as file://blah. | 1034 // "gurl" can be currently empty in some cases, such as file://blah. |
1021 DCHECK(SiteInstanceImpl::GetSiteForURL(NULL, gurl) == gurl); | 1035 DCHECK(SiteInstanceImpl::GetSiteForURL(NULL, gurl) == gurl); |
1022 base::AutoLock lock(lock_); | 1036 base::AutoLock lock(lock_); |
1023 SecurityStateMap::iterator state = security_state_.find(child_id); | 1037 SecurityStateMap::iterator state = security_state_.find(child_id); |
1024 DCHECK(state != security_state_.end()); | 1038 DCHECK(state != security_state_.end()); |
1025 state->second->LockToOrigin(gurl); | 1039 state->second->LockToOrigin(gurl); |
1026 } | 1040 } |
1027 | 1041 |
| 1042 ChildProcessSecurityPolicyImpl::CheckOriginLockResult |
| 1043 ChildProcessSecurityPolicyImpl::CheckOriginLock(int child_id, |
| 1044 const GURL& site_url) { |
| 1045 base::AutoLock lock(lock_); |
| 1046 SecurityStateMap::iterator state = security_state_.find(child_id); |
| 1047 if (state == security_state_.end()) |
| 1048 return ChildProcessSecurityPolicyImpl::CheckOriginLockResult::NO_LOCK; |
| 1049 return state->second->CheckOriginLock(site_url); |
| 1050 } |
| 1051 |
1028 void ChildProcessSecurityPolicyImpl::GrantPermissionsForFileSystem( | 1052 void ChildProcessSecurityPolicyImpl::GrantPermissionsForFileSystem( |
1029 int child_id, | 1053 int child_id, |
1030 const std::string& filesystem_id, | 1054 const std::string& filesystem_id, |
1031 int permission) { | 1055 int permission) { |
1032 base::AutoLock lock(lock_); | 1056 base::AutoLock lock(lock_); |
1033 | 1057 |
1034 SecurityStateMap::iterator state = security_state_.find(child_id); | 1058 SecurityStateMap::iterator state = security_state_.find(child_id); |
1035 if (state == security_state_.end()) | 1059 if (state == security_state_.end()) |
1036 return; | 1060 return; |
1037 state->second->GrantPermissionsForFileSystem(filesystem_id, permission); | 1061 state->second->GrantPermissionsForFileSystem(filesystem_id, permission); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1088 } | 1112 } |
1089 } | 1113 } |
1090 | 1114 |
1091 bool ChildProcessSecurityPolicyImpl::IsIsolatedOrigin( | 1115 bool ChildProcessSecurityPolicyImpl::IsIsolatedOrigin( |
1092 const url::Origin& origin) { | 1116 const url::Origin& origin) { |
1093 base::AutoLock lock(lock_); | 1117 base::AutoLock lock(lock_); |
1094 return isolated_origins_.find(origin) != isolated_origins_.end(); | 1118 return isolated_origins_.find(origin) != isolated_origins_.end(); |
1095 } | 1119 } |
1096 | 1120 |
1097 } // namespace content | 1121 } // namespace content |
OLD | NEW |