Add NUM_VALUES for enums and size for structs (see #3836)

API versioning requires that enumerations end with a count value
(`*_NUM_VALUES`) and structs begin with a size value (`size_t size`).
Wrapper templates are updated to support structs with different size
values indicating different versions.

To test:
Run `ceftests --gtest_filter=ApiVersionTest.StructVersion*`
This commit is contained in:
Marshall Greenblatt
2025-01-09 19:14:53 -05:00
parent ee5cec12d2
commit 81a5005bc0
43 changed files with 777 additions and 228 deletions

View File

@ -183,9 +183,10 @@ CefRefPtr<CefRequest> CefRequest::Create() {
CefRequestImpl::CefRequestImpl() {
// Verify that our enum matches Chromium's values.
static_assert(static_cast<int>(REFERRER_POLICY_LAST_VALUE) ==
static_cast<int>(net::ReferrerPolicy::MAX),
"enum mismatch");
static_assert(
static_cast<int>(REFERRER_POLICY_NUM_VALUES) - 1 ==
static_cast<int>(net::ReferrerPolicy::MAX),
"Enum values in cef_referrer_policy_t must match net::ReferrerPolicy");
base::AutoLock lock_scope(lock_);
Reset();
@ -751,6 +752,8 @@ CefRequestImpl::NetReferrerPolicyToBlinkReferrerPolicy(
return network::mojom::ReferrerPolicy::kStrictOrigin;
case REFERRER_POLICY_NO_REFERRER:
return network::mojom::ReferrerPolicy::kNever;
case REFERRER_POLICY_NUM_VALUES:
break;
}
DCHECK(false);
return network::mojom::ReferrerPolicy::kDefault;