| Index: content/browser/child_process_security_policy_impl.h
|
| diff --git a/content/browser/child_process_security_policy_impl.h b/content/browser/child_process_security_policy_impl.h
|
| index 82f0e9be22c660dd30f0c11eb4c58e775405cf78..5a18e35ded7f33d73842700c8985b1df010edebf 100644
|
| --- a/content/browser/child_process_security_policy_impl.h
|
| +++ b/content/browser/child_process_security_policy_impl.h
|
| @@ -19,6 +19,7 @@
|
| #include "content/public/browser/child_process_security_policy.h"
|
| #include "content/public/common/resource_type.h"
|
| #include "storage/common/fileapi/file_system_types.h"
|
| +#include "url/origin.h"
|
|
|
| class GURL;
|
|
|
| @@ -170,12 +171,41 @@ class CONTENT_EXPORT ChildProcessSecurityPolicyImpl
|
| // Returns true if sending system exclusive messages is allowed.
|
| bool CanSendMidiSysExMessage(int child_id);
|
|
|
| + // Add an origin to the list of origins that require process isolation.
|
| + // When making process model decisions for such origins, the full
|
| + // scheme+host+port tuple rather than scheme and eTLD+1 will be used.
|
| + // SiteInstances for these origins will also use the full origin as site URL.
|
| + //
|
| + // Note that |origin| must not be unique. URLs that render with
|
| + // unique origins, such as data: URLs, are not supported. Suborigins (see
|
| + // https://w3c.github.io/webappsec-suborigins/ -- not to be confused with
|
| + // subdomains) and non-standard schemes are also not supported. Sandboxed
|
| + // frames (e.g., <iframe sandbox>)
|
| + // *are* supported, since process placement decisions will be based on the
|
| + // URLs such frames navigate to, and not the origin of committed documents
|
| + // (which might be unique). If an isolated origin opens an about:blank
|
| + // popup, it will stay in the isolated origin's process. Nested URLs
|
| + // (filesystem: and blob:) retain process isolation behavior of their inner
|
| + // origin.
|
| + void AddIsolatedOrigin(const url::Origin& origin);
|
| +
|
| + // Register a set of isolated origins as specified on the command line with
|
| + // the --isolate-origins flag. |origin_list| is the flag's value, which
|
| + // contains the list of comma-separated scheme-host-port origins. See
|
| + // AddIsolatedOrigin for definition of an isolated origin.
|
| + void AddIsolatedOriginsFromCommandLine(const std::string& origin_list);
|
| +
|
| + // Helper to check whether an origin requires origin-wide process isolation.
|
| + bool IsIsolatedOrigin(const url::Origin& origin);
|
| +
|
| private:
|
| friend class ChildProcessSecurityPolicyInProcessBrowserTest;
|
| friend class ChildProcessSecurityPolicyTest;
|
| FRIEND_TEST_ALL_PREFIXES(ChildProcessSecurityPolicyInProcessBrowserTest,
|
| NoLeak);
|
| FRIEND_TEST_ALL_PREFIXES(ChildProcessSecurityPolicyTest, FilePermissions);
|
| + FRIEND_TEST_ALL_PREFIXES(ChildProcessSecurityPolicyTest,
|
| + IsolateOriginsFromCommandLine);
|
|
|
| class SecurityState;
|
|
|
| @@ -260,6 +290,12 @@ class CONTENT_EXPORT ChildProcessSecurityPolicyImpl
|
|
|
| FileSystemPermissionPolicyMap file_system_policy_map_;
|
|
|
| + // Tracks origins for which the entire origin should be treated as a site
|
| + // when making process model decisions, rather than the origin's scheme and
|
| + // eTLD+1. Each of these origins requires a dedicated process. This set is
|
| + // protected by |lock_|.
|
| + std::set<url::Origin> isolated_origins_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(ChildProcessSecurityPolicyImpl);
|
| };
|
|
|
|
|