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,
107 MOCK_METHOD(std::shared_ptr<fml::BasicTaskRunner>,
108 OnPlatformViewGetShutdownSafeIOTaskRunner,
115 MOCK_METHOD(
void, Complete, (std::unique_ptr<fml::Mapping>
data), (
override));
116 MOCK_METHOD(
void, CompleteEmpty, (), (
override));
120TEST(PlatformViewEmbedderTest, HasPlatformMessageHandler) {
124 "HasPlatformMessageHandler", thread_host.
platform_thread->GetTaskRunner(),
125 nullptr,
nullptr,
nullptr);
128 MockDelegate delegate;
131 std::shared_ptr<EmbedderExternalViewEmbedder> external_view_embedder;
132 auto embedder = std::make_unique<PlatformViewEmbedder>(
133 delegate, task_runners, software_dispatch_table,
134 platform_dispatch_table, external_view_embedder);
136 ASSERT_TRUE(embedder->GetPlatformMessageHandler());
142TEST(PlatformViewEmbedderTest, Dispatches) {
146 "HasPlatformMessageHandler", thread_host.
platform_thread->GetTaskRunner(),
147 nullptr,
nullptr,
nullptr);
148 bool did_call =
false;
149 std::unique_ptr<PlatformViewEmbedder> embedder;
153 &did_call, &embedder] {
154 MockDelegate delegate;
158 [&did_call](std::unique_ptr<PlatformMessage>
message) {
161 std::shared_ptr<EmbedderExternalViewEmbedder> external_view_embedder;
162 embedder = std::make_unique<PlatformViewEmbedder>(
163 delegate, task_runners, software_dispatch_table,
164 platform_dispatch_table, external_view_embedder);
165 auto platform_message_handler = embedder->GetPlatformMessageHandler();
167 fml::MakeRefCounted<MockResponse>();
168 std::unique_ptr<PlatformMessage>
message =
169 std::make_unique<PlatformMessage>(
"foo", response);
170 platform_message_handler->HandlePlatformMessage(std::move(
message));
177 thread_host.
platform_thread->GetTaskRunner()->PostTask([&latch, &embedder] {
184 EXPECT_TRUE(did_call);
187TEST(PlatformViewEmbedderTest, DeletionDisabledDispatch) {
191 "HasPlatformMessageHandler", thread_host.
platform_thread->GetTaskRunner(),
192 nullptr,
nullptr,
nullptr);
193 bool did_call =
false;
198 MockDelegate delegate;
202 [&did_call](std::unique_ptr<PlatformMessage>
message) {
205 std::shared_ptr<EmbedderExternalViewEmbedder> external_view_embedder;
206 auto embedder = std::make_unique<PlatformViewEmbedder>(
207 delegate, task_runners, software_dispatch_table,
208 platform_dispatch_table, external_view_embedder);
209 auto platform_message_handler = embedder->GetPlatformMessageHandler();
211 fml::MakeRefCounted<MockResponse>();
212 std::unique_ptr<PlatformMessage>
message =
213 std::make_unique<PlatformMessage>(
"foo", response);
214 platform_message_handler->HandlePlatformMessage(std::move(
message));
223 [&latch] { latch.
Signal(); });
227 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