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

@@ -7,22 +7,36 @@
#include "cef/libcef/browser/thread_util.h"
namespace {
static int CefCommandIdToChromeId(cef_text_field_commands_t command_id) {
static_assert(static_cast<int>(CEF_TFC_NUM_VALUES) - 1 ==
static_cast<int>(views::Textfield::kLastCommandId),
"Enum values in cef_text_field_commands_t must match "
"views::Textfield::MenuCommands");
switch (command_id) {
case cef_text_field_commands_t::CEF_TFC_CUT:
case CEF_TFC_UNKNOWN:
return 0;
case CEF_TFC_CUT:
return views::Textfield::kCut;
case cef_text_field_commands_t::CEF_TFC_COPY:
case CEF_TFC_COPY:
return views::Textfield::kCopy;
case cef_text_field_commands_t::CEF_TFC_PASTE:
case CEF_TFC_PASTE:
return views::Textfield::kPaste;
case cef_text_field_commands_t::CEF_TFC_UNDO:
return views::Textfield::kUndo;
case cef_text_field_commands_t::CEF_TFC_DELETE:
return views::Textfield::kDelete;
case cef_text_field_commands_t::CEF_TFC_SELECT_ALL:
case CEF_TFC_SELECT_ALL:
return views::Textfield::kSelectAll;
case CEF_TFC_SELECT_WORD:
return views::Textfield::kSelectWord;
case CEF_TFC_UNDO:
return views::Textfield::kUndo;
case CEF_TFC_DELETE:
return views::Textfield::kDelete;
case CEF_TFC_NUM_VALUES:
break;
}
DCHECK(false) << "Unsupported command ID " << command_id;
return 0;
}
} // namespace
// static

View File

@@ -351,7 +351,7 @@ SkColor GetColor(const views::View* view, ui::ColorId id) {
// Verify that our enum matches Chromium's values.
static_assert(static_cast<int>(CEF_ChromeColorsEnd) ==
static_cast<int>(kChromeColorsEnd),
"enum mismatch");
"Enum values in cef_color_id_t must match ChromeColorIds");
// |color_provider| will be nullptr if |view| has not yet been added to a
// Widget.

View File

@@ -471,6 +471,9 @@ void CefWindowView::CreateWidget(gfx::AcceleratedWidget parent_widget) {
params.show_state = ui::mojom::WindowShowState::kMinimized;
#endif
break;
case CEF_SHOW_STATE_NUM_VALUES:
DCHECK(false);
break;
}
bool is_menu = false;