зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1640839 - Add MakeEnumeratedRange helper for WebIDL enums. r=mccr8,media-playback-reviewers,padenot
Differential Revision: https://phabricator.services.mozilla.com/D201343
This commit is contained in:
Родитель
394646db56
Коммит
4fed5f1271
|
@ -2075,8 +2075,8 @@ unsigned ChromeUtils::AliveUtilityProcesses(const GlobalObject&) {
|
|||
void ChromeUtils::GetAllPossibleUtilityActorNames(GlobalObject& aGlobal,
|
||||
nsTArray<nsCString>& aNames) {
|
||||
aNames.Clear();
|
||||
for (size_t i = 0; i < WebIDLUtilityActorNameValues::Count; ++i) {
|
||||
auto idlName = static_cast<UtilityActorName>(i);
|
||||
for (UtilityActorName idlName :
|
||||
MakeWebIDLEnumeratedRange<WebIDLUtilityActorName>()) {
|
||||
aNames.AppendElement(GetEnumString(idlName));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,6 +24,8 @@
|
|||
#include "mozilla/Array.h"
|
||||
#include "mozilla/Assertions.h"
|
||||
#include "mozilla/DeferredFinalize.h"
|
||||
#include "mozilla/EnumTypeTraits.h"
|
||||
#include "mozilla/EnumeratedRange.h"
|
||||
#include "mozilla/UniquePtr.h"
|
||||
#include "mozilla/dom/BindingCallContext.h"
|
||||
#include "mozilla/dom/BindingDeclarations.h"
|
||||
|
@ -1429,6 +1431,12 @@ inline const nsCString& GetEnumString(Enum stringId) {
|
|||
stringId)];
|
||||
}
|
||||
|
||||
template <typename Enum>
|
||||
constexpr mozilla::detail::EnumeratedRange<Enum> MakeWebIDLEnumeratedRange() {
|
||||
return MakeInclusiveEnumeratedRange(ContiguousEnumValues<Enum>::min,
|
||||
ContiguousEnumValues<Enum>::max);
|
||||
}
|
||||
|
||||
inline nsWrapperCache* GetWrapperCache(const ParentObject& aParentObject) {
|
||||
return aParentObject.mWrapperCache;
|
||||
}
|
||||
|
@ -3279,6 +3287,7 @@ already_AddRefed<Promise> CreateRejectedPromiseFromThrownException(
|
|||
} // namespace binding_detail
|
||||
|
||||
} // namespace dom
|
||||
|
||||
} // namespace mozilla
|
||||
|
||||
#endif /* mozilla_dom_BindingUtils_h__ */
|
||||
|
|
|
@ -945,6 +945,11 @@ the right validation for WebIDL enums. It uses a
|
|||
`mozilla::MaxContinuousEnumValue` that is generated for every WebIDL enum to
|
||||
implement the validation.
|
||||
|
||||
`mozilla::dom::MakeWebIDLEnumeratedRange` is a templated helper function in
|
||||
[`BindingUtils.h`](https://searchfox.org/mozilla-central/source/dom/bindings/BindingUtils.h)
|
||||
and exported to `mozilla/dom/BindingUtils.h` that can be used to create a
|
||||
`mozilla::EnumeratedRange` for a WebIDL enum.
|
||||
|
||||
#### Callback function types
|
||||
|
||||
Callback functions are represented as an object, inheriting from
|
||||
|
|
|
@ -401,9 +401,8 @@ CopyableTArray<MediaSessionAction> MediaStatusManager::GetSupportedActions()
|
|||
|
||||
MediaSessionInfo info =
|
||||
mMediaSessionInfoMap.Get(*mActiveMediaSessionContextId);
|
||||
const uint8_t actionNums = uint8_t(MediaSessionAction::EndGuard_);
|
||||
for (uint8_t actionValue = 0; actionValue < actionNums; actionValue++) {
|
||||
MediaSessionAction action = ConvertToMediaSessionAction(actionValue);
|
||||
for (MediaSessionAction action :
|
||||
MakeWebIDLEnumeratedRange<MediaSessionAction>()) {
|
||||
if (info.IsActionSupported(action)) {
|
||||
supportedActions.AppendElement(action);
|
||||
}
|
||||
|
|
|
@ -169,7 +169,7 @@ Adapter::Adapter(Instance* const aParent, WebGPUChild* const aBridge,
|
|||
auto ret = std::unordered_map<ffi::WGPUFeatures, dom::GPUFeatureName>{};
|
||||
|
||||
for (const auto feature :
|
||||
MakeEnumeratedRange(dom::GPUFeatureName::EndGuard_)) {
|
||||
dom::MakeWebIDLEnumeratedRange<dom::GPUFeatureName>()) {
|
||||
const auto bitForFeature = ToWGPUFeatures(feature);
|
||||
if (!bitForFeature) {
|
||||
// There are some features that don't have bits.
|
||||
|
|
|
@ -291,9 +291,8 @@ WebTask* WebTaskScheduler::GetNextTask() const {
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
for (uint32_t priority = static_cast<uint32_t>(TaskPriority::User_blocking);
|
||||
priority < static_cast<uint32_t>(TaskPriority::EndGuard_); ++priority) {
|
||||
if (auto queues = allQueues.Lookup(priority)) {
|
||||
for (TaskPriority priority : MakeWebIDLEnumeratedRange<TaskPriority>()) {
|
||||
if (auto queues = allQueues.Lookup(UnderlyingValue(priority))) {
|
||||
WebTaskQueue* oldestQueue = nullptr;
|
||||
MOZ_ASSERT(!queues.Data().IsEmpty());
|
||||
for (auto& webTaskQueue : queues.Data()) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче