Flutter Engine
Loading...
Searching...
No Matches
embedder_frozen_unittests.cc
Go to the documentation of this file.
1
// Copyright 2013 The Flutter Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style license that can be
3
// found in the LICENSE file.
4
5
#include "
flutter/shell/platform/embedder/embedder.h
"
6
#include "
flutter/shell/platform/embedder/tests/embedder_frozen.h
"
7
#include "
flutter/testing/testing.h
"
8
9
namespace
flutter
{
10
namespace
testing {
11
12
// Assert that both types have the same member with the same offset.
13
// This prevents reordering of "frozen" embedder API struct members.
14
#define ASSERT_EQ_OFFSET(type1, type2, member) \
15
ASSERT_EQ(offsetof(type1, member), offsetof(type2, member))
16
17
// New members must not be added to `FlutterTransformation`
18
// as it would break the ABI of `FlutterSemanticsNode`.
19
// See: https://github.com/flutter/flutter/issues/121176
20
TEST
(EmbedderFrozen, FlutterTransformationIsFrozen) {
21
ASSERT_EQ_OFFSET
(
FlutterTransformation
,
FrozenFlutterTransformation
, scaleX);
22
ASSERT_EQ_OFFSET
(
FlutterTransformation
,
FrozenFlutterTransformation
, skewX);
23
ASSERT_EQ_OFFSET
(
FlutterTransformation
,
FrozenFlutterTransformation
, transX);
24
ASSERT_EQ_OFFSET
(
FlutterTransformation
,
FrozenFlutterTransformation
, skewY);
25
ASSERT_EQ_OFFSET
(
FlutterTransformation
,
FrozenFlutterTransformation
, scaleY);
26
ASSERT_EQ_OFFSET
(
FlutterTransformation
,
FrozenFlutterTransformation
, transY);
27
ASSERT_EQ_OFFSET
(
FlutterTransformation
,
FrozenFlutterTransformation
, pers0);
28
ASSERT_EQ_OFFSET
(
FlutterTransformation
,
FrozenFlutterTransformation
, pers1);
29
ASSERT_EQ_OFFSET
(
FlutterTransformation
,
FrozenFlutterTransformation
, pers2);
30
}
31
32
// New members must not be added to `FlutterRect` as it would
33
// break the ABI of `FlutterSemanticsNode` and `FlutterDamage`.
34
// See: https://github.com/flutter/flutter/issues/121176
35
// See: https://github.com/flutter/flutter/issues/121347
36
TEST
(EmbedderFrozen, FlutterRectIsFrozen) {
37
ASSERT_EQ_OFFSET
(
FlutterRect
,
FrozenFlutterRect
, left);
38
ASSERT_EQ_OFFSET
(
FlutterRect
,
FrozenFlutterRect
, top);
39
ASSERT_EQ_OFFSET
(
FlutterRect
,
FrozenFlutterRect
, right);
40
ASSERT_EQ_OFFSET
(
FlutterRect
,
FrozenFlutterRect
, bottom);
41
}
42
43
// New members must not be added to `FlutterPoint` as it would
44
// break the ABI of `FlutterLayer`.
45
TEST
(EmbedderFrozen, FlutterPointIsFrozen) {
46
ASSERT_EQ_OFFSET
(
FlutterPoint
,
FrozenFlutterPoint
,
x
);
47
ASSERT_EQ_OFFSET
(
FlutterPoint
,
FrozenFlutterPoint
,
y
);
48
}
49
50
// New members must not be added to `FlutterDamage` as it would
51
// break the ABI of `FlutterPresentInfo`.
52
TEST
(EmbedderFrozen, FlutterDamageIsFrozen) {
53
ASSERT_EQ_OFFSET
(
FlutterDamage
,
FrozenFlutterDamage
, struct_size);
54
ASSERT_EQ_OFFSET
(
FlutterDamage
,
FrozenFlutterDamage
, num_rects);
55
ASSERT_EQ_OFFSET
(
FlutterDamage
,
FrozenFlutterDamage
, damage);
56
}
57
58
// New members must not be added to `FlutterSemanticsNode`
59
// as it would break the ABI of `FlutterSemanticsUpdate`.
60
// See: https://github.com/flutter/flutter/issues/121176
61
TEST
(EmbedderFrozen, FlutterSemanticsNodeIsFrozen) {
62
ASSERT_EQ(
sizeof
(
FlutterSemanticsNode
),
sizeof
(
FrozenFlutterSemanticsNode
));
63
64
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
,
65
struct_size);
66
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
,
id
);
67
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
, flags);
68
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
, actions);
69
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
,
70
text_selection_base);
71
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
,
72
text_selection_extent);
73
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
,
74
scroll_child_count);
75
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
,
76
scroll_index);
77
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
,
78
scroll_position);
79
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
,
80
scroll_extent_max);
81
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
,
82
scroll_extent_min);
83
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
, elevation);
84
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
, thickness);
85
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
, label);
86
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
, hint);
87
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
,
value
);
88
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
,
89
increased_value);
90
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
,
91
decreased_value);
92
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
,
93
text_direction);
94
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
, rect);
95
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
,
transform
);
96
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
,
97
child_count);
98
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
,
99
children_in_traversal_order);
100
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
,
101
children_in_hit_test_order);
102
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
,
103
custom_accessibility_actions_count);
104
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
,
105
custom_accessibility_actions);
106
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
,
107
platform_view_id);
108
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
, tooltip);
109
ASSERT_EQ_OFFSET
(
FlutterSemanticsNode
,
FrozenFlutterSemanticsNode
,
110
heading_level);
111
}
112
113
// New members must not be added to `FlutterSemanticsCustomAction`
114
// as it would break the ABI of `FlutterSemanticsUpdate`.
115
// See: https://github.com/flutter/flutter/issues/121176
116
TEST
(EmbedderFrozen, FlutterSemanticsCustomActionIsFrozen) {
117
ASSERT_EQ(
sizeof
(
FlutterSemanticsCustomAction
),
118
sizeof
(
FrozenFlutterSemanticsCustomAction
));
119
120
ASSERT_EQ_OFFSET
(
FlutterSemanticsCustomAction
,
121
FrozenFlutterSemanticsCustomAction
, struct_size);
122
ASSERT_EQ_OFFSET
(
FlutterSemanticsCustomAction
,
123
FrozenFlutterSemanticsCustomAction
,
id
);
124
ASSERT_EQ_OFFSET
(
FlutterSemanticsCustomAction
,
125
FrozenFlutterSemanticsCustomAction
, override_action);
126
ASSERT_EQ_OFFSET
(
FlutterSemanticsCustomAction
,
127
FrozenFlutterSemanticsCustomAction
, label);
128
ASSERT_EQ_OFFSET
(
FlutterSemanticsCustomAction
,
129
FrozenFlutterSemanticsCustomAction
, hint);
130
}
131
132
}
// namespace testing
133
}
// namespace flutter
value
int32_t value
Definition
dl_golden_unittests.cc:459
x
int32_t x
Definition
dl_golden_unittests.cc:458
embedder.h
embedder_frozen.h
ASSERT_EQ_OFFSET
#define ASSERT_EQ_OFFSET(type1, type2, member)
Definition
embedder_frozen_unittests.cc:14
transform
Matrix transform
Definition
gaussian_blur_filter_contents.cc:214
y
double y
Definition
mouse-input-test.cc:83
flutter::testing::TEST
TEST(NativeAssetsManagerTest, NoAvailableAssets)
Definition
native_assets_unittests.cc:68
flutter
Definition
asset_manager.cc:10
FlutterDamage
A structure to represent a damage region.
Definition
embedder.h:664
FlutterPoint
A structure to represent a 2D point.
Definition
embedder.h:649
FlutterRect
A structure to represent a rectangle.
Definition
embedder.h:641
FlutterSemanticsCustomAction
Definition
embedder.h:1737
FlutterSemanticsNode
Definition
embedder.h:1530
FlutterTransformation
Definition
embedder.h:388
flutter::testing::FrozenFlutterDamage
Definition
embedder_frozen.h:60
flutter::testing::FrozenFlutterPoint
Definition
embedder_frozen.h:53
flutter::testing::FrozenFlutterRect
Definition
embedder_frozen.h:44
flutter::testing::FrozenFlutterSemanticsCustomAction
Definition
embedder_frozen.h:104
flutter::testing::FrozenFlutterSemanticsNode
Definition
embedder_frozen.h:69
flutter::testing::FrozenFlutterTransformation
Definition
embedder_frozen.h:28
testing.h
shell
platform
embedder
tests
embedder_frozen_unittests.cc
Generated on Wed Nov 5 2025 21:33:17 for Flutter Engine by
1.9.8