Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
android_shell_holder_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 <memory>
6
8#include "gmock/gmock.h"
9#include "gtest/gtest.h"
11
12namespace flutter {
13namespace testing {
14namespace {
15class MockPlatformViewAndroidJNI : public PlatformViewAndroidJNI {
16 public:
17 MOCK_METHOD(void,
18 FlutterViewHandlePlatformMessage,
19 (std::unique_ptr<flutter::PlatformMessage> message,
20 int responseId),
21 (override));
22 MOCK_METHOD(void,
23 FlutterViewHandlePlatformMessageResponse,
24 (int responseId, std::unique_ptr<fml::Mapping> data),
25 (override));
26 MOCK_METHOD(void,
27 FlutterViewUpdateSemantics,
28 (std::vector<uint8_t> buffer,
29 std::vector<std::string> strings,
30 std::vector<std::vector<uint8_t>> string_attribute_args),
31 (override));
32 MOCK_METHOD(void,
33 FlutterViewSetSemanticsTreeEnabled,
34 (bool enabled),
35 (override));
36 MOCK_METHOD(void,
37 FlutterViewSetApplicationLocale,
38 (const std::string locale),
39 (override));
40 MOCK_METHOD(void,
41 FlutterViewUpdateCustomAccessibilityActions,
42 (std::vector<uint8_t> actions_buffer,
43 std::vector<std::string> strings),
44 (override));
45 MOCK_METHOD(void, FlutterViewOnFirstFrame, (), (override));
46 MOCK_METHOD(void, FlutterViewOnPreEngineRestart, (), (override));
47 MOCK_METHOD(void,
48 SurfaceTextureAttachToGLContext,
49 (JavaLocalRef surface_texture, int textureId),
50 (override));
51 MOCK_METHOD(bool,
52 SurfaceTextureShouldUpdate,
53 (JavaLocalRef surface_texture),
54 (override));
55 MOCK_METHOD(void,
56 SurfaceTextureUpdateTexImage,
57 (JavaLocalRef surface_texture),
58 (override));
59 MOCK_METHOD(SkM44,
60 SurfaceTextureGetTransformMatrix,
61 (JavaLocalRef surface_texture),
62 (override));
63 MOCK_METHOD(void,
64 SurfaceTextureDetachFromGLContext,
65 (JavaLocalRef surface_texture),
66 (override));
67 MOCK_METHOD(JavaLocalRef,
68 ImageProducerTextureEntryAcquireLatestImage,
69 (JavaLocalRef image_texture_entry),
70 (override));
71 MOCK_METHOD(JavaLocalRef,
72 ImageGetHardwareBuffer,
74 (override));
75 MOCK_METHOD(void, ImageClose, (JavaLocalRef image), (override));
76 MOCK_METHOD(void,
77 HardwareBufferClose,
78 (JavaLocalRef hardware_buffer),
79 (override));
80 MOCK_METHOD(void,
81 FlutterViewOnDisplayPlatformView,
82 (int view_id,
83 int x,
84 int y,
85 int width,
86 int height,
87 int viewWidth,
88 int viewHeight,
89 MutatorsStack mutators_stack),
90 (override));
91 MOCK_METHOD(void,
92 FlutterViewDisplayOverlaySurface,
93 (int surface_id, int x, int y, int width, int height),
94 (override));
95 MOCK_METHOD(void, FlutterViewBeginFrame, (), (override));
96 MOCK_METHOD(void, FlutterViewEndFrame, (), (override));
97 MOCK_METHOD(std::unique_ptr<PlatformViewAndroidJNI::OverlayMetadata>,
98 FlutterViewCreateOverlaySurface,
99 (),
100 (override));
101 MOCK_METHOD(void, FlutterViewDestroyOverlaySurfaces, (), (override));
102 MOCK_METHOD(ASurfaceTransaction*, createTransaction, (), (override));
103 MOCK_METHOD(void, swapTransaction, (), (override));
104 MOCK_METHOD(void, applyTransaction, (), (override));
105 MOCK_METHOD(void, destroyOverlaySurface2, (), (override));
106 MOCK_METHOD(std::unique_ptr<PlatformViewAndroidJNI::OverlayMetadata>,
107 createOverlaySurface2,
108 (),
109 (override));
110 MOCK_METHOD(void,
111 onDisplayPlatformView2,
112 (int32_t view_id,
113 int32_t x,
114 int32_t y,
115 int32_t width,
116 int32_t height,
117 int32_t viewWidth,
118 int32_t viewHeight,
119 MutatorsStack mutators_stack),
120 (override));
121 MOCK_METHOD(void, hidePlatformView2, (int32_t view_id), (override));
122 MOCK_METHOD(void, onEndFrame2, (), (override));
123 MOCK_METHOD(void, showOverlaySurface2, (), (override));
124 MOCK_METHOD(void, hideOverlaySurface2, (), (override));
125 MOCK_METHOD(std::unique_ptr<std::vector<std::string>>,
126 FlutterViewComputePlatformResolvedLocale,
127 (std::vector<std::string> supported_locales_data),
128 (override));
129 MOCK_METHOD(double, GetDisplayRefreshRate, (), (override));
130 MOCK_METHOD(double, GetDisplayWidth, (), (override));
131 MOCK_METHOD(double, GetDisplayHeight, (), (override));
132 MOCK_METHOD(double, GetDisplayDensity, (), (override));
133 MOCK_METHOD(bool,
134 RequestDartDeferredLibrary,
135 (int loading_unit_id),
136 (override));
137 MOCK_METHOD(double,
138 FlutterViewGetScaledFontSize,
139 (double font_size, int configuration_id),
140 (const, override));
141 MOCK_METHOD(void,
142 MaybeResizeSurfaceView,
143 (int32_t width, int32_t height),
144 (const, override));
145};
146
147class MockPlatformMessageResponse : public PlatformMessageResponse {
148 public:
150 return fml::AdoptRef(new MockPlatformMessageResponse());
151 }
152 MOCK_METHOD(void, Complete, (std::unique_ptr<fml::Mapping> data), (override));
153 MOCK_METHOD(void, CompleteEmpty, (), (override));
154};
155} // namespace
156
158 Settings settings;
159 settings.enable_software_rendering = false;
160 auto jni = std::make_shared<MockPlatformViewAndroidJNI>();
161 auto holder = std::make_unique<AndroidShellHolder>(
163 EXPECT_NE(holder.get(), nullptr);
164 EXPECT_TRUE(holder->IsValid());
165 EXPECT_NE(holder->GetPlatformView().get(), nullptr);
166 auto window = fml::MakeRefCounted<AndroidNativeWindow>(
167 nullptr, /*is_fake_window=*/true);
168 holder->GetPlatformView()->NotifyCreated(window);
169}
170
171TEST(AndroidShellHolder, HandlePlatformMessage) {
172 Settings settings;
173 settings.enable_software_rendering = false;
174 auto jni = std::make_shared<MockPlatformViewAndroidJNI>();
175 auto holder = std::make_unique<AndroidShellHolder>(
177 EXPECT_NE(holder.get(), nullptr);
178 EXPECT_TRUE(holder->IsValid());
179 EXPECT_NE(holder->GetPlatformView().get(), nullptr);
180 auto window = fml::MakeRefCounted<AndroidNativeWindow>(
181 nullptr, /*is_fake_window=*/true);
182 holder->GetPlatformView()->NotifyCreated(window);
183 EXPECT_TRUE(holder->GetPlatformMessageHandler());
184 size_t data_size = 4;
185 fml::MallocMapping bytes =
186 fml::MallocMapping(static_cast<uint8_t*>(malloc(data_size)), data_size);
188 MockPlatformMessageResponse::Create();
189 auto message = std::make_unique<PlatformMessage>(
190 /*channel=*/"foo", /*data=*/std::move(bytes), /*response=*/response);
191 int response_id = 1;
192 EXPECT_CALL(*jni,
193 FlutterViewHandlePlatformMessage(::testing::_, response_id));
194 EXPECT_CALL(*response, CompleteEmpty());
195 holder->GetPlatformMessageHandler()->HandlePlatformMessage(
196 std::move(message));
197 holder->GetPlatformMessageHandler()
198 ->InvokePlatformMessageEmptyResponseCallback(response_id);
199}
200
201TEST(AndroidShellHolder, CreateWithMergedPlatformAndUIThread) {
202 Settings settings;
203 auto jni = std::make_shared<MockPlatformViewAndroidJNI>();
204 auto holder = std::make_unique<AndroidShellHolder>(
206 auto window = fml::MakeRefCounted<AndroidNativeWindow>(
207 nullptr, /*is_fake_window=*/true);
208 holder->GetPlatformView()->NotifyCreated(window);
209
210 EXPECT_EQ(
211 holder->GetShellForTesting()->GetTaskRunners().GetUITaskRunner(),
212 holder->GetShellForTesting()->GetTaskRunners().GetPlatformTaskRunner());
213}
214
215TEST(AndroidShellHolder, CreateWithUnMergedPlatformAndUIThread) {
216 Settings settings;
219 auto jni = std::make_shared<MockPlatformViewAndroidJNI>();
220 auto holder = std::make_unique<AndroidShellHolder>(
222 auto window = fml::MakeRefCounted<AndroidNativeWindow>(
223 nullptr, /*is_fake_window=*/true);
224 holder->GetPlatformView()->NotifyCreated(window);
225
226 EXPECT_NE(
227 holder->GetShellForTesting()->GetTaskRunners().GetUITaskRunner(),
228 holder->GetShellForTesting()->GetTaskRunners().GetPlatformTaskRunner());
229}
230
231} // namespace testing
232} // namespace flutter
This is the Android owner of the core engine Shell.
A Mapping like NonOwnedMapping, but uses Free as its release proc.
Definition mapping.h:144
int32_t x
FlutterVulkanImage * image
GLFWwindow * window
Definition main.cc:60
const char * message
G_BEGIN_DECLS FlutterViewId view_id
double y
TEST(NativeAssetsManagerTest, NoAvailableAssets)
std::nullptr_t JavaLocalRef
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot data
Definition switch_defs.h:36
RefPtr< T > AdoptRef(T *ptr)
Definition ref_ptr.h:227
ScopedObject< Object > Create(CtorArgs &&... args)
Definition object.h:161
int32_t height
int32_t width
bool enable_software_rendering
Definition settings.h:317
MergedPlatformUIThread merged_platform_ui_thread
Definition settings.h:379
Scalar font_size