feat: add session.setPermissionCheckHandler (#13925)

* feat: add session.setPermissionCheckHandler to handle syncornous permission checks vs requests

* spec: add tests for session.setPermissionCheckHandler

* docs: add docs for session.setPermissionCheckHandler

* feat: add mediaType to media permission checks

* chore: cleanup check impl
This commit is contained in:
Samuel Attard 2018-08-29 02:05:08 +12:00 committed by Charles Kerr
parent afdb6c5f90
commit 68da311ed1
10 changed files with 142 additions and 1 deletions

View file

@ -31,9 +31,14 @@ class AtomPermissionManager : public content::PermissionManager {
content::PermissionType,
const StatusCallback&,
const base::DictionaryValue&)>;
using CheckHandler = base::Callback<bool(content::WebContents*,
content::PermissionType,
const GURL& requesting_origin,
const base::DictionaryValue&)>;
// Handler to dispatch permission requests in JS.
void SetPermissionRequestHandler(const RequestHandler& handler);
void SetPermissionCheckHandler(const CheckHandler& handler);
// content::PermissionManager:
int RequestPermission(
@ -67,6 +72,11 @@ class AtomPermissionManager : public content::PermissionManager {
const base::Callback<
void(const std::vector<blink::mojom::PermissionStatus>&)>& callback);
bool CheckPermissionWithDetails(content::PermissionType permission,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
const base::DictionaryValue* details) const;
protected:
void OnPermissionResponse(int request_id,
int permission_id,
@ -93,6 +103,7 @@ class AtomPermissionManager : public content::PermissionManager {
using PendingRequestsMap = base::IDMap<std::unique_ptr<PendingRequest>>;
RequestHandler request_handler_;
CheckHandler check_handler_;
PendingRequestsMap pending_requests_;