10#include "gmock/gmock.h"
11#include "gtest/gtest.h"
18class MockDelegate :
public PlatformView::Delegate {
20 OnPlatformViewCreated,
21 (std::unique_ptr<Surface>),
23 MOCK_METHOD(
void, OnPlatformViewDestroyed, (), (
override));
24 MOCK_METHOD(
void, OnPlatformViewScheduleFrame, (), (
override));
26 OnPlatformViewAddView,
28 const ViewportMetrics& viewport_metrics,
32 OnPlatformViewRemoveView,
36 OnPlatformViewSendViewFocusEvent,
37 (
const ViewFocusEvent& event),
40 OnPlatformViewSetNextFrameCallback,
44 OnPlatformViewSetViewportMetrics,
45 (int64_t
view_id,
const ViewportMetrics& metrics),
48 OnPlatformViewDispatchPlatformMessage,
49 (std::unique_ptr<PlatformMessage>
message),
52 OnPlatformViewDispatchPointerDataPacket,
53 (std::unique_ptr<PointerDataPacket> packet),
55 MOCK_METHOD(HitTestResponse,
56 OnPlatformViewHitTest,
60 OnPlatformViewDispatchSemanticsAction,
67 OnPlatformViewSetSemanticsEnabled,
71 OnPlatformViewSetAccessibilityFeatures,
75 OnPlatformViewRegisterTexture,
76 (std::shared_ptr<Texture>
texture),
79 OnPlatformViewUnregisterTexture,
83 OnPlatformViewMarkTextureFrameAvailable,
88 (intptr_t loading_unit_id,
89 std::unique_ptr<const fml::Mapping> snapshot_data,
90 std::unique_ptr<const fml::Mapping> snapshot_instructions),
93 LoadDartDeferredLibraryError,
94 (intptr_t loading_unit_id,
95 const std::string error_message,
99 UpdateAssetResolverByType,
100 (std::unique_ptr<AssetResolver> updated_asset_resolver,
103 MOCK_METHOD(
const Settings&,
104 OnPlatformViewGetSettings,
111 MOCK_METHOD(
void, Complete, (std::unique_ptr<fml::Mapping>
data), (
override));
112 MOCK_METHOD(
void, CompleteEmpty, (), (
override));
116TEST(PlatformViewEmbedderTest, HasPlatformMessageHandler) {
120 "HasPlatformMessageHandler", thread_host.
platform_thread->GetTaskRunner(),
121 nullptr,
nullptr,
nullptr);
124 MockDelegate delegate;
127 std::shared_ptr<EmbedderExternalViewEmbedder> external_view_embedder;
128 auto embedder = std::make_unique<PlatformViewEmbedder>(
129 delegate, task_runners, software_dispatch_table,
130 platform_dispatch_table, external_view_embedder);
132 ASSERT_TRUE(embedder->GetPlatformMessageHandler());
138TEST(PlatformViewEmbedderTest, Dispatches) {
142 "HasPlatformMessageHandler", thread_host.
platform_thread->GetTaskRunner(),
143 nullptr,
nullptr,
nullptr);
144 bool did_call =
false;
145 std::unique_ptr<PlatformViewEmbedder> embedder;
149 &did_call, &embedder] {
150 MockDelegate delegate;
154 [&did_call](std::unique_ptr<PlatformMessage>
message) {
157 std::shared_ptr<EmbedderExternalViewEmbedder> external_view_embedder;
158 embedder = std::make_unique<PlatformViewEmbedder>(
159 delegate, task_runners, software_dispatch_table,
160 platform_dispatch_table, external_view_embedder);
161 auto platform_message_handler = embedder->GetPlatformMessageHandler();
163 fml::MakeRefCounted<MockResponse>();
164 std::unique_ptr<PlatformMessage>
message =
165 std::make_unique<PlatformMessage>(
"foo", response);
166 platform_message_handler->HandlePlatformMessage(std::move(
message));
173 thread_host.
platform_thread->GetTaskRunner()->PostTask([&latch, &embedder] {
180 EXPECT_TRUE(did_call);
183TEST(PlatformViewEmbedderTest, DeletionDisabledDispatch) {
187 "HasPlatformMessageHandler", thread_host.
platform_thread->GetTaskRunner(),
188 nullptr,
nullptr,
nullptr);
189 bool did_call =
false;
194 MockDelegate delegate;
198 [&did_call](std::unique_ptr<PlatformMessage>
message) {
201 std::shared_ptr<EmbedderExternalViewEmbedder> external_view_embedder;
202 auto embedder = std::make_unique<PlatformViewEmbedder>(
203 delegate, task_runners, software_dispatch_table,
204 platform_dispatch_table, external_view_embedder);
205 auto platform_message_handler = embedder->GetPlatformMessageHandler();
207 fml::MakeRefCounted<MockResponse>();
208 std::unique_ptr<PlatformMessage>
message =
209 std::make_unique<PlatformMessage>(
"foo", response);
210 platform_message_handler->HandlePlatformMessage(std::move(
message));
219 [&latch] { latch.
Signal(); });
223 EXPECT_FALSE(did_call);
AssetResolverType
Identifies the type of AssetResolver an instance is.
fml::RefPtr< fml::TaskRunner > GetPlatformTaskRunner() const
A Mapping like NonOwnedMapping, but uses Free as its release proc.
virtual void PostTask(const fml::closure &task) override
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args
G_BEGIN_DECLS FlutterViewId view_id
FlutterDesktopBinaryReply callback
std::string GetCurrentTestName()
Gets the name of the currently running test. This is useful in generating logs or assets based on tes...
TEST(NativeAssetsManagerTest, NoAvailableAssets)
static void LoadDartDeferredLibrary(JNIEnv *env, jobject obj, jlong shell_holder, jint jLoadingUnitId, jobjectArray jSearchPaths)
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot data
std::function< void()> closure
impeller::ShaderType type
The collection of all the threads used by the engine.
std::unique_ptr< fml::Thread > platform_thread