| // Copyright 2013 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_FROZEN_H_ |
| #define FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_FROZEN_H_ |
| |
| #include "flutter/shell/platform/embedder/embedder.h" |
| |
| // NO CHANGES ARE PERMITTED TO THE STRUCTS IN THIS FILE. |
| // |
| // This file contains the subset of the embedder API that is "frozen". |
| // "Frozen" APIs are locked and must not be modified to guarantee |
| // forward and backward ABI compatibility. The order, type, and size |
| // of the struct members below must remain the same, and members must |
| // not be added nor removed. |
| // |
| // This file serves as a "golden test" for structs in embedder.h |
| // and contains a snapshot of the expected "frozen" API. Tests |
| // then verify that these structs match the actual embedder API. |
| |
| namespace flutter { |
| namespace testing { |
| |
| // New members must not be added to `FlutterTransformation` |
| // as it would break the ABI of `FlutterSemanticsNode`. |
| // See: https://github.com/flutter/flutter/issues/121176 |
| typedef struct { |
| double scaleX; |
| double skewX; |
| double transX; |
| double skewY; |
| double scaleY; |
| double transY; |
| double pers0; |
| double pers1; |
| double pers2; |
| } FrozenFlutterTransformation; |
| |
| // New members must not be added to `FlutterRect` as it would |
| // break the ABI of `FlutterSemanticsNode` and `FlutterDamage`. |
| // See: https://github.com/flutter/flutter/issues/121176 |
| // See: https://github.com/flutter/flutter/issues/121347 |
| typedef struct { |
| double left; |
| double top; |
| double right; |
| double bottom; |
| } FrozenFlutterRect; |
| |
| // New members must not be added to `FlutterPoint` as it would |
| // break the ABI of `FlutterLayer`. |
| typedef struct { |
| double x; |
| double y; |
| } FrozenFlutterPoint; |
| |
| // New members must not be added to `FlutterDamage` as it would |
| // break the ABI of `FlutterPresentInfo`. |
| typedef struct { |
| size_t struct_size; |
| size_t num_rects; |
| FrozenFlutterRect* damage; |
| } FrozenFlutterDamage; |
| |
| // New members must not be added to `FlutterSemanticsNode` |
| // as it would break the ABI of `FlutterSemanticsUpdate`. |
| // See: https://github.com/flutter/flutter/issues/121176 |
| typedef struct { |
| size_t struct_size; |
| int32_t id; |
| FlutterSemanticsFlag flags; |
| FlutterSemanticsAction actions; |
| int32_t text_selection_base; |
| int32_t text_selection_extent; |
| int32_t scroll_child_count; |
| int32_t scroll_index; |
| double scroll_position; |
| double scroll_extent_max; |
| double scroll_extent_min; |
| double elevation; |
| double thickness; |
| const char* label; |
| const char* hint; |
| const char* value; |
| const char* increased_value; |
| const char* decreased_value; |
| FlutterTextDirection text_direction; |
| FrozenFlutterRect rect; |
| FrozenFlutterTransformation transform; |
| size_t child_count; |
| const int32_t* children_in_traversal_order; |
| const int32_t* children_in_hit_test_order; |
| size_t custom_accessibility_actions_count; |
| const int32_t* custom_accessibility_actions; |
| FlutterPlatformViewIdentifier platform_view_id; |
| const char* tooltip; |
| } FrozenFlutterSemanticsNode; |
| |
| // New members must not be added to `FlutterSemanticsCustomAction` |
| // as it would break the ABI of `FlutterSemanticsUpdate`. |
| // See: https://github.com/flutter/flutter/issues/121176 |
| typedef struct { |
| size_t struct_size; |
| int32_t id; |
| FlutterSemanticsAction override_action; |
| const char* label; |
| const char* hint; |
| } FrozenFlutterSemanticsCustomAction; |
| |
| } // namespace testing |
| } // namespace flutter |
| |
| #endif // FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_FROZEN_H_ |