1111#include " flutter/runtime/dart_vm.h"
1212#include " flutter/runtime/dart_vm_lifecycle.h"
1313#include " flutter/runtime/isolate_configuration.h"
14+ // #include "flutter/runtime/runtime_controller.h"
1415#include " flutter/testing/dart_isolate_runner.h"
1516#include " flutter/testing/fixture_test.h"
1617#include " flutter/testing/testing.h"
1718#include " third_party/tonic/converter/dart_converter.h"
1819#include " third_party/tonic/scopes/dart_isolate_scope.h"
1920
21+ // #include "flutter/lib/ui/window/platform_configuration.h"
22+ #include " gmock/gmock.h"
23+
2024namespace flutter {
2125namespace testing {
2226
@@ -34,6 +38,114 @@ class DartIsolateTest : public FixtureTest {
3438 FML_DISALLOW_COPY_AND_ASSIGN (DartIsolateTest);
3539};
3640
41+ // class MockPlatformConfigurationClient : public PlatformConfigurationClient {
42+ // public:
43+ // // virtual std::string DefaultRouteName();
44+ // // virtual void ScheduleFrame();
45+ // // virtual void Render(Scene* scene);
46+ // // virtual void UpdateSemantics(SemanticsUpdate* update);
47+ // // virtual void HandlePlatformMessage(fml::RefPtr<PlatformMessage>
48+ // message);
49+ // // virtual FontCollection& GetFontCollection();
50+ // // virtual void UpdateIsolateDescription(const std::string isolate_name,
51+ // // int64_t isolate_port); virtual void SetNeedsReportTimings(bool value);
52+ // // virtual std::shared_ptr<const fml::Mapping> GetPersistentIsolateData();
53+ // // virtual std::unique_ptr<std::vector<std::string>>
54+ // // ComputePlatformResolvedLocale(const std::vector<std::string>&
55+ // // supported_locale_data); virtual void RequestDartDeferredLibrary(intptr_t
56+ // // loading_unit_id);
57+ // MOCK_METHOD0(DefaultRouteName, std::string());
58+ // MOCK_METHOD1(ScheduleFrame, void(bool));
59+ // MOCK_METHOD1(Render, void(std::unique_ptr<flutter::LayerTree>));
60+ // MOCK_METHOD2(UpdateSemantics,
61+ // void(SemanticsNodeUpdates, CustomAccessibilityActionUpdates));
62+ // MOCK_METHOD1(HandlePlatformMessage, void(fml::RefPtr<PlatformMessage>));
63+ // MOCK_METHOD0(GetFontCollection, FontCollection&());
64+ // MOCK_METHOD0(OnRootIsolateCreated, void());
65+ // MOCK_METHOD2(UpdateIsolateDescription, void(const std::string, int64_t));
66+ // MOCK_METHOD1(SetNeedsReportTimings, void(bool));
67+ // MOCK_METHOD1(ComputePlatformResolvedLocale,
68+ // std::unique_ptr<std::vector<std::string>>(
69+ // const std::vector<std::string>&));
70+ // MOCK_METHOD1(RequestDartDeferredLibrary, void(intptr_t));
71+ // }
72+
73+ // class MockRuntimeDelegate : public RuntimeDelegate {
74+ // public:
75+ // MOCK_METHOD0(DefaultRouteName, std::string());
76+ // MOCK_METHOD1(ScheduleFrame, void(bool));
77+ // MOCK_METHOD1(Render, void(std::unique_ptr<flutter::LayerTree>));
78+ // MOCK_METHOD2(UpdateSemantics,
79+ // void(SemanticsNodeUpdates, CustomAccessibilityActionUpdates));
80+ // MOCK_METHOD1(HandlePlatformMessage, void(fml::RefPtr<PlatformMessage>));
81+ // MOCK_METHOD0(GetFontCollection, FontCollection&());
82+ // MOCK_METHOD0(OnRootIsolateCreated, void());
83+ // MOCK_METHOD2(UpdateIsolateDescription, void(const std::string, int64_t));
84+ // MOCK_METHOD1(SetNeedsReportTimings, void(bool));
85+ // MOCK_METHOD1(ComputePlatformResolvedLocale,
86+ // std::unique_ptr<std::vector<std::string>>(
87+ // const std::vector<std::string>&));
88+ // MOCK_METHOD1(RequestDartDeferredLibrary, void(intptr_t));
89+ // };
90+
91+ // // class MockRuntimeController : public RuntimeController {
92+ // // public:
93+ // // MockRuntimeController(RuntimeDelegate& client, TaskRunners
94+ // p_task_runners)
95+ // // : RuntimeController(client, p_task_runners) {}
96+ // // MOCK_METHOD0(IsRootIsolateRunning, bool());
97+ // // MOCK_METHOD1(DispatchPlatformMessage,
98+ // bool(fml::RefPtr<PlatformMessage>));
99+ // // };
100+
101+ // TEST_F(DartIsolateTest, DartDeferredLoadPassesValue) {
102+ // ASSERT_FALSE(DartVMRef::IsInstanceRunning());
103+ // auto settings = CreateSettingsForFixture();
104+ // auto vm_ref = DartVMRef::Create(settings);
105+ // ASSERT_TRUE(vm_ref);
106+ // auto vm_data = vm_ref.GetVMData();
107+ // ASSERT_TRUE(vm_data);
108+ // TaskRunners task_runners(GetCurrentTestName(), //
109+ // GetCurrentTaskRunner(), //
110+ // GetCurrentTaskRunner(), //
111+ // GetCurrentTaskRunner(), //
112+ // GetCurrentTaskRunner() //
113+ // );
114+ // auto isolate_configuration =
115+ // IsolateConfiguration::InferFromSettings(settings);
116+ // std::unique_ptr<MockPlatformConfigurationClient> client =
117+ // std::make_unique<MockPlatformConfigurationClient>();
118+ // auto weak_isolate = DartIsolate::CreateRunningRootIsolate(
119+ // vm_data->GetSettings(), // settings
120+ // vm_data->GetIsolateSnapshot(), // isolate snapshot
121+ // std::move(task_runners), // task runners
122+ // std::move(client), // window
123+ // {}, // snapshot delegate
124+ // {}, // hint freed delegate
125+ // {}, // io manager
126+ // {}, // unref queue
127+ // {}, // image decoder
128+ // "main.dart", // advisory uri
129+ // "main", // advisory entrypoint
130+ // DartIsolate::Flags{}, // flags
131+ // settings.isolate_create_callback, // isolate create callback
132+ // settings.isolate_shutdown_callback, // isolate shutdown callback
133+ // "main", // dart entrypoint
134+ // std::nullopt, // dart entrypoint library
135+ // std::move(isolate_configuration) // isolate configuration
136+ // );
137+ // auto root_isolate = weak_isolate.lock();
138+ // ASSERT_TRUE(root_isolate);
139+ // ASSERT_EQ(root_isolate->GetPhase(), DartIsolate::Phase::Running);
140+ // size_t destruction_callback_count = 0;
141+ // root_isolate->AddIsolateShutdownCallback([&destruction_callback_count]() {
142+ // ASSERT_NE(Dart_CurrentIsolate(), nullptr);
143+ // destruction_callback_count++;
144+ // });
145+ // ASSERT_TRUE(root_isolate->Shutdown());
146+ // ASSERT_EQ(destruction_callback_count, 1u);
147+ // }
148+
37149TEST_F (DartIsolateTest, RootIsolateCreationAndShutdown) {
38150 ASSERT_FALSE (DartVMRef::IsInstanceRunning ());
39151 auto settings = CreateSettingsForFixture ();
0 commit comments