gecko-dev/widget/GfxInfoFeatureStatusDefs.h
Andrew Osmond f6f0434b71 Bug 1921554 - Generate gfx blocklist features/status/etc list to create downloadable blocklist bindings. r=bradwerth,jnicol
This patch turns the various nsIGfxInfo::FEATURE_* constants into macros
that can be included to generate C++ code at runtime. This has been done
to automatically generate the necessary bindings for the downloadable
blocklist. This way we will never miss adding the necessary
prerequisities as we have in the past.

Differential Revision: https://phabricator.services.mozilla.com/D224056
2024-10-05 15:10:32 +00:00

41 lines
2.1 KiB
C

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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/. */
// NOTE: No include guard. This is meant to be included to generate different
// code based on how GFXINFO_FEATURE_STATUS is defined, possibly multiple times
// in a single translation unit.
/* clang-format off */
// Note that the order of these is important. The downloadable blocklist values
// are cached inside of preferences which store the enum value as an integer.
// This means we cannot reorder these statuses and can only append new values to
// the end.
/* The driver is safe to the best of our knowledge */
GFXINFO_FEATURE_STATUS(STATUS_OK)
/* We don't know the status of the feature yet. The analysis probably hasn't finished yet. */
GFXINFO_FEATURE_STATUS(STATUS_UNKNOWN)
/* This feature is blocked on this driver version. Updating driver will typically unblock it. */
GFXINFO_FEATURE_STATUS(BLOCKED_DRIVER_VERSION)
/* This feature is blocked on this device, regardless of driver version.
* Typically means we hit too many driver crashes without a good reason to hope for them to
* get fixed soon. */
GFXINFO_FEATURE_STATUS(BLOCKED_DEVICE)
/* This feature is available and can be used, but is not suggested (e.g. shouldn't be used by default */
GFXINFO_FEATURE_STATUS(DISCOURAGED)
/* This feature is blocked on this OS version. */
GFXINFO_FEATURE_STATUS(BLOCKED_OS_VERSION)
/* This feature is blocked because of mismatched driver versions. */
GFXINFO_FEATURE_STATUS(BLOCKED_MISMATCHED_VERSION)
/* This feature is blocked due to not being on the allowlist. */
GFXINFO_FEATURE_STATUS(DENIED)
/* This feature is safe to be on this device due to the allowlist. */
GFXINFO_FEATURE_STATUS(ALLOW_ALWAYS)
/* This feature is safe to be on this device due to the allowlist, depending on qualified/experiment status. */
GFXINFO_FEATURE_STATUS(ALLOW_QUALIFIED)
/* This feature failed in a startup test, e.g. due to a crashing driver. */
GFXINFO_FEATURE_STATUS(BLOCKED_PLATFORM_TEST)