Index: content/browser/child_process_security_policy_impl.cc |
diff --git a/content/browser/child_process_security_policy_impl.cc b/content/browser/child_process_security_policy_impl.cc |
index 28ce45ad809ad34567726a34478ff43627bf5f67..acd54fa5ff52686253b9686ebfb6b6ec6a032f34 100644 |
--- a/content/browser/child_process_security_policy_impl.cc |
+++ b/content/browser/child_process_security_policy_impl.cc |
@@ -14,6 +14,7 @@ |
#include "base/macros.h" |
#include "base/memory/ptr_util.h" |
#include "base/metrics/histogram_macros.h" |
+#include "base/strings/string_split.h" |
#include "base/strings/string_util.h" |
#include "build/build_config.h" |
#include "content/browser/site_instance_impl.h" |
@@ -255,6 +256,7 @@ class ChildProcessSecurityPolicyImpl::SecurityState { |
bool CanAccessDataForOrigin(const GURL& gurl) { |
if (origin_lock_.is_empty()) |
return true; |
+ |
Charlie Reis
2017/05/19 00:10:18
nit: No need for churn here.
alexmos
2017/05/24 00:19:56
Done.
|
// TODO(creis): We must pass the valid browser_context to convert hosted |
// apps URLs. Currently, hosted apps cannot set cookies in this mode. |
// See http://crbug.com/160576. |
@@ -929,6 +931,7 @@ bool ChildProcessSecurityPolicyImpl::CanAccessDataForOrigin(int child_id, |
// workaround for https://crbug.com/600441 |
return true; |
} |
+ |
Charlie Reis
2017/05/19 00:10:18
Or here.
alexmos
2017/05/24 00:19:56
Done.
|
return state->second->CanAccessDataForOrigin(gurl); |
} |
@@ -993,4 +996,30 @@ bool ChildProcessSecurityPolicyImpl::CanSendMidiSysExMessage(int child_id) { |
return state->second->can_send_midi_sysex(); |
} |
+void ChildProcessSecurityPolicyImpl::AddIsolatedOrigin( |
+ const url::Origin& origin) { |
+ DCHECK(!origin.unique()); |
Charlie Reis
2017/05/19 00:10:18
Maybe this should be a CHECK with an error message
alexmos
2017/05/24 00:19:56
Done. Good idea.
|
+ DCHECK(!IsIsolatedOrigin(origin)); |
Charlie Reis
2017/05/19 00:10:18
Same here, in case someone said --isolated-origins
alexmos
2017/05/24 00:19:56
Done. This particular one might go away with Safe
|
+ |
+ base::AutoLock lock(isolated_origins_lock_); |
+ isolated_origins_.insert(origin); |
+} |
+ |
+void ChildProcessSecurityPolicyImpl::AddIsolatedOriginsFromCommandLine( |
+ const std::string& origin_list) { |
+ for (const base::StringPiece& origin_piece : |
+ base::SplitStringPiece(origin_list, ",", base::TRIM_WHITESPACE, |
+ base::SPLIT_WANT_NONEMPTY)) { |
+ url::Origin origin((GURL(origin_piece))); |
+ if (!origin.unique()) |
+ AddIsolatedOrigin(origin); |
+ } |
+} |
+ |
+bool ChildProcessSecurityPolicyImpl::IsIsolatedOrigin( |
+ const url::Origin& origin) { |
+ base::AutoLock lock(isolated_origins_lock_); |
+ return isolated_origins_.find(origin) != isolated_origins_.end(); |
+} |
+ |
} // namespace content |