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),
56 OnPlatformViewDispatchSemanticsAction,
63 OnPlatformViewSetSemanticsEnabled,
67 OnPlatformViewSetAccessibilityFeatures,
71 OnPlatformViewRegisterTexture,
72 (std::shared_ptr<Texture>
texture),
75 OnPlatformViewUnregisterTexture,
79 OnPlatformViewMarkTextureFrameAvailable,
84 (intptr_t loading_unit_id,
85 std::unique_ptr<const fml::Mapping> snapshot_data,
86 std::unique_ptr<const fml::Mapping> snapshot_instructions),
89 LoadDartDeferredLibraryError,
90 (intptr_t loading_unit_id,
91 const std::string error_message,
95 UpdateAssetResolverByType,
96 (std::unique_ptr<AssetResolver> updated_asset_resolver,
99 MOCK_METHOD(
const Settings&,
100 OnPlatformViewGetSettings,
107 MOCK_METHOD(
void, Complete, (std::unique_ptr<fml::Mapping>
data), (
override));
108 MOCK_METHOD(
void, CompleteEmpty, (), (
override));
112TEST(PlatformViewEmbedderTest, HasPlatformMessageHandler) {
116 "HasPlatformMessageHandler", thread_host.
platform_thread->GetTaskRunner(),
117 nullptr,
nullptr,
nullptr);
120 MockDelegate delegate;
123 std::shared_ptr<EmbedderExternalViewEmbedder> external_view_embedder;
124 auto embedder = std::make_unique<PlatformViewEmbedder>(
125 delegate, task_runners, software_dispatch_table,
126 platform_dispatch_table, external_view_embedder);
128 ASSERT_TRUE(embedder->GetPlatformMessageHandler());
134TEST(PlatformViewEmbedderTest, Dispatches) {
138 "HasPlatformMessageHandler", thread_host.
platform_thread->GetTaskRunner(),
139 nullptr,
nullptr,
nullptr);
140 bool did_call =
false;
141 std::unique_ptr<PlatformViewEmbedder> embedder;
145 &did_call, &embedder] {
146 MockDelegate delegate;
150 [&did_call](std::unique_ptr<PlatformMessage>
message) {
153 std::shared_ptr<EmbedderExternalViewEmbedder> external_view_embedder;
154 embedder = std::make_unique<PlatformViewEmbedder>(
155 delegate, task_runners, software_dispatch_table,
156 platform_dispatch_table, external_view_embedder);
157 auto platform_message_handler = embedder->GetPlatformMessageHandler();
159 fml::MakeRefCounted<MockResponse>();
160 std::unique_ptr<PlatformMessage>
message =
161 std::make_unique<PlatformMessage>(
"foo", response);
162 platform_message_handler->HandlePlatformMessage(std::move(
message));
169 thread_host.
platform_thread->GetTaskRunner()->PostTask([&latch, &embedder] {
176 EXPECT_TRUE(did_call);
179TEST(PlatformViewEmbedderTest, DeletionDisabledDispatch) {
183 "HasPlatformMessageHandler", thread_host.
platform_thread->GetTaskRunner(),
184 nullptr,
nullptr,
nullptr);
185 bool did_call =
false;
190 MockDelegate delegate;
194 [&did_call](std::unique_ptr<PlatformMessage>
message) {
197 std::shared_ptr<EmbedderExternalViewEmbedder> external_view_embedder;
198 auto embedder = std::make_unique<PlatformViewEmbedder>(
199 delegate, task_runners, software_dispatch_table,
200 platform_dispatch_table, external_view_embedder);
201 auto platform_message_handler = embedder->GetPlatformMessageHandler();
203 fml::MakeRefCounted<MockResponse>();
204 std::unique_ptr<PlatformMessage>
message =
205 std::make_unique<PlatformMessage>(
"foo", response);
206 platform_message_handler->HandlePlatformMessage(std::move(
message));
215 [&latch] { latch.
Signal(); });
219 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 GBytes * message
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
The collection of all the threads used by the engine.
std::unique_ptr< fml::Thread > platform_thread