Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Namespaces | Macros | Functions
embedder_frozen_unittests.cc File Reference
#include "flutter/shell/platform/embedder/embedder.h"
#include "flutter/shell/platform/embedder/tests/embedder_frozen.h"
#include "flutter/testing/testing.h"

Go to the source code of this file.

Namespaces

namespace  flutter
 
namespace  flutter::testing
 

Macros

#define ASSERT_EQ_OFFSET(type1, type2, member)    ASSERT_EQ(offsetof(type1, member), offsetof(type2, member))
 

Functions

 flutter::testing::TEST (EmbedderFrozen, FlutterTransformationIsFrozen)
 
 flutter::testing::TEST (EmbedderFrozen, FlutterRectIsFrozen)
 
 flutter::testing::TEST (EmbedderFrozen, FlutterPointIsFrozen)
 
 flutter::testing::TEST (EmbedderFrozen, FlutterDamageIsFrozen)
 
 flutter::testing::TEST (EmbedderFrozen, FlutterSemanticsNodeIsFrozen)
 
 flutter::testing::TEST (EmbedderFrozen, FlutterSemanticsCustomActionIsFrozen)
 

Macro Definition Documentation

◆ ASSERT_EQ_OFFSET

#define ASSERT_EQ_OFFSET (   type1,
  type2,
  member 
)     ASSERT_EQ(offsetof(type1, member), offsetof(type2, member))

Definition at line 14 of file embedder_frozen_unittests.cc.

19 {
20 ASSERT_EQ_OFFSET(FlutterTransformation, FrozenFlutterTransformation, scaleX);
21 ASSERT_EQ_OFFSET(FlutterTransformation, FrozenFlutterTransformation, skewX);
22 ASSERT_EQ_OFFSET(FlutterTransformation, FrozenFlutterTransformation, transX);
23 ASSERT_EQ_OFFSET(FlutterTransformation, FrozenFlutterTransformation, skewY);
24 ASSERT_EQ_OFFSET(FlutterTransformation, FrozenFlutterTransformation, scaleY);
25 ASSERT_EQ_OFFSET(FlutterTransformation, FrozenFlutterTransformation, transY);
26 ASSERT_EQ_OFFSET(FlutterTransformation, FrozenFlutterTransformation, pers0);
27 ASSERT_EQ_OFFSET(FlutterTransformation, FrozenFlutterTransformation, pers1);
28 ASSERT_EQ_OFFSET(FlutterTransformation, FrozenFlutterTransformation, pers2);
29}
30
31// New members must not be added to `FlutterRect` as it would
32// break the ABI of `FlutterSemanticsNode` and `FlutterDamage`.
33// See: https://github.com/flutter/flutter/issues/121176
34// See: https://github.com/flutter/flutter/issues/121347
35TEST(EmbedderFrozen, FlutterRectIsFrozen) {
36 ASSERT_EQ_OFFSET(FlutterRect, FrozenFlutterRect, left);
37 ASSERT_EQ_OFFSET(FlutterRect, FrozenFlutterRect, top);
38 ASSERT_EQ_OFFSET(FlutterRect, FrozenFlutterRect, right);
39 ASSERT_EQ_OFFSET(FlutterRect, FrozenFlutterRect, bottom);
40}
41
42// New members must not be added to `FlutterPoint` as it would
43// break the ABI of `FlutterLayer`.
44TEST(EmbedderFrozen, FlutterPointIsFrozen) {
45 ASSERT_EQ_OFFSET(FlutterPoint, FrozenFlutterPoint, x);
46 ASSERT_EQ_OFFSET(FlutterPoint, FrozenFlutterPoint, y);
47}
48
49// New members must not be added to `FlutterDamage` as it would
50// break the ABI of `FlutterPresentInfo`.
51TEST(EmbedderFrozen, FlutterDamageIsFrozen) {
52 ASSERT_EQ_OFFSET(FlutterDamage, FrozenFlutterDamage, struct_size);
53 ASSERT_EQ_OFFSET(FlutterDamage, FrozenFlutterDamage, num_rects);
54 ASSERT_EQ_OFFSET(FlutterDamage, FrozenFlutterDamage, damage);
55}
56
57// New members must not be added to `FlutterSemanticsNode`
58// as it would break the ABI of `FlutterSemanticsUpdate`.
59// See: https://github.com/flutter/flutter/issues/121176
60TEST(EmbedderFrozen, FlutterSemanticsNodeIsFrozen) {
61 ASSERT_EQ(sizeof(FlutterSemanticsNode), sizeof(FrozenFlutterSemanticsNode));
62
63 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode,
64 struct_size);
65 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode, id);
66 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode, flags);
67 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode, actions);
68 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode,
69 text_selection_base);
70 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode,
71 text_selection_extent);
72 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode,
73 scroll_child_count);
74 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode,
75 scroll_index);
76 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode,
77 scroll_position);
78 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode,
79 scroll_extent_max);
80 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode,
81 scroll_extent_min);
82 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode, elevation);
83 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode, thickness);
84 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode, label);
85 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode, hint);
86 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode, value);
87 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode,
88 increased_value);
89 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode,
90 decreased_value);
91 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode,
92 text_direction);
93 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode, rect);
94 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode, transform);
95 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode,
96 child_count);
97 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode,
98 children_in_traversal_order);
99 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode,
100 children_in_hit_test_order);
101 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode,
102 custom_accessibility_actions_count);
103 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode,
104 custom_accessibility_actions);
105 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode,
106 platform_view_id);
107 ASSERT_EQ_OFFSET(FlutterSemanticsNode, FrozenFlutterSemanticsNode, tooltip);
108}
109
110// New members must not be added to `FlutterSemanticsCustomAction`
111// as it would break the ABI of `FlutterSemanticsUpdate`.
112// See: https://github.com/flutter/flutter/issues/121176
113TEST(EmbedderFrozen, FlutterSemanticsCustomActionIsFrozen) {
114 ASSERT_EQ(sizeof(FlutterSemanticsCustomAction),
115 sizeof(FrozenFlutterSemanticsCustomAction));
116
118 FrozenFlutterSemanticsCustomAction, struct_size);
120 FrozenFlutterSemanticsCustomAction, id);
122 FrozenFlutterSemanticsCustomAction, override_action);
124 FrozenFlutterSemanticsCustomAction, label);
126 FrozenFlutterSemanticsCustomAction, hint);
127}
128
129} // namespace testing
130} // namespace flutter
#define TEST(S, s, D, expected)
static bool left(const SkPoint &p0, const SkPoint &p1)
static bool right(const SkPoint &p0, const SkPoint &p1)
#define ASSERT_EQ_OFFSET(type1, type2, member)
FlutterSemanticsFlag flags
double y
double x
static SkColor4f transform(SkColor4f c, SkColorSpace *src, SkColorSpace *dst)
Definition p3.cpp:47
A structure to represent a damage region.
Definition embedder.h:458
A structure to represent a 2D point.
Definition embedder.h:443
A structure to represent a rectangle.
Definition embedder.h:435