mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-20 00:35:44 +00:00
b5a2bda7ee
This will mean that in places like the tight loop in GetTypeIndex() we would no longer require calling strlen() on the input type argument once per loop iteration. Depends on D20236 Differential Revision: https://phabricator.services.mozilla.com/D20237 --HG-- extra : moz-landing-system : lando
60 lines
1.8 KiB
C++
60 lines
1.8 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#include "PermissionUtils.h"
|
|
|
|
namespace mozilla {
|
|
namespace dom {
|
|
|
|
static const nsLiteralCString kPermissionTypes[] = {
|
|
// clang-format off
|
|
NS_LITERAL_CSTRING("geo"),
|
|
NS_LITERAL_CSTRING("desktop-notification"),
|
|
// Alias `push` to `desktop-notification`.
|
|
NS_LITERAL_CSTRING("desktop-notification"),
|
|
NS_LITERAL_CSTRING("persistent-storage")
|
|
// clang-format on
|
|
};
|
|
|
|
// `-1` for the last null entry.
|
|
const size_t kPermissionNameCount =
|
|
MOZ_ARRAY_LENGTH(PermissionNameValues::strings) - 1;
|
|
|
|
static_assert(MOZ_ARRAY_LENGTH(kPermissionTypes) == kPermissionNameCount,
|
|
"kPermissionTypes and PermissionName count should match");
|
|
|
|
const nsLiteralCString& PermissionNameToType(PermissionName aName) {
|
|
MOZ_ASSERT((size_t)aName < ArrayLength(kPermissionTypes));
|
|
return kPermissionTypes[static_cast<size_t>(aName)];
|
|
}
|
|
|
|
Maybe<PermissionName> TypeToPermissionName(const nsACString& aType) {
|
|
for (size_t i = 0; i < ArrayLength(kPermissionTypes); ++i) {
|
|
if (kPermissionTypes[i].Equals(aType)) {
|
|
return Some(static_cast<PermissionName>(i));
|
|
}
|
|
}
|
|
|
|
return Nothing();
|
|
}
|
|
|
|
PermissionState ActionToPermissionState(uint32_t aAction) {
|
|
switch (aAction) {
|
|
case nsIPermissionManager::ALLOW_ACTION:
|
|
return PermissionState::Granted;
|
|
|
|
case nsIPermissionManager::DENY_ACTION:
|
|
return PermissionState::Denied;
|
|
|
|
default:
|
|
case nsIPermissionManager::PROMPT_ACTION:
|
|
return PermissionState::Prompt;
|
|
}
|
|
}
|
|
|
|
} // namespace dom
|
|
} // namespace mozilla
|