2020-07-19 13:49:44 -04:00
|
|
|
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
|
|
|
|
|
|
|
|
((window) => {
|
2020-09-16 16:22:43 -04:00
|
|
|
const core = window.Deno.core;
|
2020-07-19 13:49:44 -04:00
|
|
|
|
|
|
|
function opQuery(desc) {
|
2020-09-16 16:22:43 -04:00
|
|
|
return core.jsonOpSync("op_query_permission", desc).state;
|
2020-07-19 13:49:44 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
function opRevoke(desc) {
|
2020-09-16 16:22:43 -04:00
|
|
|
return core.jsonOpSync("op_revoke_permission", desc).state;
|
2020-07-19 13:49:44 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
function opRequest(desc) {
|
2020-09-16 16:22:43 -04:00
|
|
|
return core.jsonOpSync("op_request_permission", desc).state;
|
2020-07-19 13:49:44 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
class PermissionStatus {
|
|
|
|
constructor(state) {
|
|
|
|
this.state = state;
|
|
|
|
}
|
|
|
|
// TODO(kt3k): implement onchange handler
|
|
|
|
}
|
|
|
|
|
|
|
|
class Permissions {
|
|
|
|
query(desc) {
|
|
|
|
const state = opQuery(desc);
|
|
|
|
return Promise.resolve(new PermissionStatus(state));
|
|
|
|
}
|
|
|
|
|
|
|
|
revoke(desc) {
|
|
|
|
const state = opRevoke(desc);
|
|
|
|
return Promise.resolve(new PermissionStatus(state));
|
|
|
|
}
|
|
|
|
|
|
|
|
request(desc) {
|
|
|
|
const state = opRequest(desc);
|
|
|
|
return Promise.resolve(new PermissionStatus(state));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
const permissions = new Permissions();
|
|
|
|
|
|
|
|
window.__bootstrap.permissions = {
|
|
|
|
permissions,
|
|
|
|
Permissions,
|
|
|
|
PermissionStatus,
|
|
|
|
};
|
|
|
|
})(this);
|