Index: content/public/browser/resource_dispatcher_host.h |
diff --git a/content/public/browser/resource_dispatcher_host.h b/content/public/browser/resource_dispatcher_host.h |
index 3bdd0cae132f4bb9dbd61c3066db169bf5e1bbf0..eafcb2df0bae8442bcbd18eb1571c991cda6b918 100644 |
--- a/content/public/browser/resource_dispatcher_host.h |
+++ b/content/public/browser/resource_dispatcher_host.h |
@@ -8,6 +8,7 @@ |
#include <stdint.h> |
#include <memory> |
+#include <string> |
#include "base/callback_forward.h" |
#include "content/common/content_export.h" |
@@ -27,6 +28,16 @@ class RenderFrameHost; |
class CONTENT_EXPORT ResourceDispatcherHost { |
public: |
+ // This enum indicates how access checks are made on registered URL origins. |
+ // Please see the RegisterOriginForAccessChecks() method for more |
+ // information. |
+ enum OriginAccessCheckMask { |
+ DENY_FOR_NON_OWNERS = 0x0, // Denied for non owner processes. |
Charlie Reis
2016/08/09 02:07:48
What's an owner process? (We'll need to elaborate
|
+ ALLOW_EVERYTHING = 0x1, // No access checks performed. |
+ ALLOW_REGISTERED_ACCESS = 0x2, // Only registered processes allowed. |
+ ACCESS_CHECK_MASK_LAST = ALLOW_REGISTERED_ACCESS, |
+ }; |
+ |
// Returns the singleton instance of the ResourceDispatcherHost. |
static ResourceDispatcherHost* Get(); |
@@ -51,6 +62,45 @@ class CONTENT_EXPORT ResourceDispatcherHost { |
// Clears the ResourceDispatcherHostLoginDelegate associated with the request. |
virtual void ClearLoginDelegateForRequest(net::URLRequest* request) = 0; |
+ // Specifies a scheme to be access checked. By default all schemes are |
+ // allowed. Access check here means that any process claiming to have |
+ // committed a URL within the scheme has to be registered via the |
+ // AddProcessForOrigin() method below. |
+ virtual void AddSchemeForAccessCheck(const std::string& scheme) = 0; |
+ |
+ // The following 4 methods add or remove access information for the url |
+ // origin passed in. Please note that the scheme has to be registered for |
+ // access check via a call to the AddSchemeForAccessCheck() method above. |
+ |
+ // Sets up access information for the |origin| passed in. This is eventually |
+ // used to grant or deny access to the origin. By default owner processes |
Charlie Reis
2016/08/09 02:07:48
It's not clear what an owner process is.
|
+ // can commit to the origin. The |access_check_mask| flag controls the |
+ // access check behavior for other processes. Please see the definition of |
+ // OriginAccessCheckMask for more information. |
+ virtual void RegisterOriginForAccessChecks( |
+ const ResourceContext* context, |
+ const std::string& origin, |
+ OriginAccessCheckMask access_check_mask) = 0; |
+ |
+ // Removes access information for the url |origin| passed in. |
+ virtual void UnregisterOriginForAccessChecks(const ResourceContext* context, |
+ const std::string& origin) = 0; |
+ |
+ // Adds |process_id| to the list of processes allowed to access the |origin|. |
+ // The |owner_process| flag indicates whether the process owns the |origin|. |
Charlie Reis
2016/08/09 02:07:48
We'll need more guidance on what to pass for owner
|
+ virtual void AddProcessForOrigin(const ResourceContext* context, |
+ const std::string& origin, |
+ int process_id, |
+ bool owner_process) = 0; |
+ |
+ // Removes |process_id| from the list of processes allowed to access the |
+ // |origin|. The |owner_process| flag indicates whether the process owns the |
+ // |origin|. |
+ virtual void RemoveProcessForOrigin(const ResourceContext* context, |
+ const std::string& origin, |
+ int process_id, |
+ bool owner_proces) = 0; |
Charlie Reis
2016/08/09 02:07:48
Do we need the flag on removal as well? What happ
|
+ |
protected: |
virtual ~ResourceDispatcherHost() {} |
}; |