Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 22 additions & 5 deletions permission-status/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,13 @@
<button id="geolocation">
Geolocation
<div class="permission-status">
Permission status:
Permission status (from event):
<span id="geolocation-permission-status">⚫️ N/A</span>
</div>
<div class="permission-status">
Permission status (from query):
<span id="geolocation-permission-status-query">⚫️ N/A</span>
</div>
<div class="access-status">
Access status: <span id="geolocation-access-status">⚫️ unknown</span>
</div>
Expand All @@ -36,7 +40,12 @@
<button id="camera">
Camera
<div class="permission-status">
Permission status: <span id="camera-permission-status">⚫️ N/A</span>
Permission status (from event):
<span id="camera-permission-status">⚫️ N/A</span>
</div>
<div class="permission-status">
Permission status (from query):
<span id="camera-permission-status-query">⚫️ N/A</span>
</div>
<div class="access-status">
Access status: <span id="camera-access-status">⚫️ unknown</span>
Expand All @@ -48,9 +57,13 @@
<button id="microphone">
Microphone
<div class="permission-status">
Permission status:
Permission status (from event):
<span id="microphone-permission-status">⚫️ N/A</span>
</div>
<div class="permission-status">
Permission status (from query):
<span id="microphone-permission-status-query">⚫️ N/A</span>
</div>
<div class="access-status">
Access status: <span id="microphone-access-status">⚫️ unknown</span>
</div>
Expand All @@ -61,9 +74,13 @@
<button id="camera-microphone">
Camera + Microphone
<div class="permission-status">
Permission status:
Permission status (from event):
<span id="camera-microphone-permission-status">⚫️ N/A</span>
</div>
<div class="permission-status">
Permission status (from query):
<span id="camera-microphone-permission-status-query">⚫️ N/A</span>
</div>
<div class="access-status">
Access status:
<span id="camera-microphone-access-status">⚫️ unknown</span>
Expand Down Expand Up @@ -120,4 +137,4 @@ <h2>👩🏻‍💻 Demo instructions</h2>
<link rel="stylesheet" href="../third_party/github.css" />
</body>

</html>
</html>
33 changes: 29 additions & 4 deletions permission-status/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,15 @@ const API_ACCESS_STATUSES = {
};

// Display the Permissions API status (https://developer.mozilla.org/en-US/docs/Web/API/Permissions_API)
function updatePermissionsApiStatus(permissionName, permissionStatus) {
function updatePermissionsApiStatus(
permissionName,
permissionStatus,
fromQuery = false,
) {
const textToDisplay = API_STATUS_TO_DISPLAY_TEXT[permissionStatus];
document.querySelector(`#${permissionName}-permission-status`).innerText =
textToDisplay;
document.querySelector(
`#${permissionName}-permission-status${fromQuery ? "-query" : ""}`,
).innerText = textToDisplay;
}

// Display the feature access status (whether the feature can actually be accessed successfully in the browser)
Expand All @@ -32,10 +37,30 @@ function updateAccessStatus(permissionName, accessStatus, message) {
function successCallback(permissionName) {
return () => {
updateAccessStatus(permissionName, "success");
navigator.permissions
.query({ name: permissionName })
.then((permissionStatus) => {
updatePermissionsApiStatus(
permissionName,
permissionStatus.state,
true,
);
});
};
}
function errorCallback(permissionName) {
return (error) => updateAccessStatus(permissionName, "error", error.message);
return (error) => {
updateAccessStatus(permissionName, "error", error.message);
navigator.permissions
.query({ name: permissionName })
.then((permissionStatus) => {
updatePermissionsApiStatus(
permissionName,
permissionStatus.state,
true,
);
});
};
}

// Main
Expand Down