8
8
#include " flutter/shell/platform/embedder/test_utils/proc_table_replacement.h"
9
9
#include " flutter/shell/platform/windows/flutter_windows_view.h"
10
10
#include " flutter/shell/platform/windows/testing/engine_modifier.h"
11
+ #include " flutter/shell/platform/windows/testing/flutter_windows_engine_builder.h"
11
12
#include " flutter/shell/platform/windows/testing/mock_window_binding_handler.h"
12
13
#include " flutter/shell/platform/windows/testing/test_keyboard.h"
13
14
#include " flutter/shell/platform/windows/testing/windows_test.h"
21
22
namespace flutter {
22
23
namespace testing {
23
24
24
- namespace {
25
-
26
- // Returns an engine instance configured with dummy project path values.
27
- std::unique_ptr<FlutterWindowsEngine> GetTestEngine () {
28
- FlutterDesktopEngineProperties properties = {};
29
- properties.assets_path = L" C:\\ foo\\ flutter_assets" ;
30
- properties.icu_data_path = L" C:\\ foo\\ icudtl.dat" ;
31
- properties.aot_library_path = L" C:\\ foo\\ aot.so" ;
32
-
33
- std::vector<const char *> test_arguments = {" arg1" , " arg2" };
34
- properties.dart_entrypoint_argc = test_arguments.size ();
35
- properties.dart_entrypoint_argv = test_arguments.data ();
36
-
37
- FlutterProjectBundle project (properties);
38
- auto engine = std::make_unique<FlutterWindowsEngine>(project);
39
-
40
- EngineModifier modifier (engine.get ());
41
- // Force the non-AOT path unless overridden by the test.
42
- modifier.embedder_api ().RunsAOTCompiledDartCode = []() { return false ; };
43
-
44
- return engine;
45
- }
46
- } // namespace
47
-
48
25
class FlutterWindowsEngineTest : public WindowsTest {};
49
26
50
27
TEST_F (FlutterWindowsEngineTest, RunDoesExpectedInitialization) {
51
- std::unique_ptr<FlutterWindowsEngine> engine = GetTestEngine ();
28
+ FlutterWindowsEngineBuilder builder{GetContext ()};
29
+ builder.AddDartEntrypointArgument (" arg1" );
30
+ builder.AddDartEntrypointArgument (" arg2" );
31
+
32
+ std::unique_ptr<FlutterWindowsEngine> engine = builder.Build ();
52
33
EngineModifier modifier (engine.get ());
53
34
54
35
// The engine should be run with expected configuration values.
@@ -67,8 +48,8 @@ TEST_F(FlutterWindowsEngineTest, RunDoesExpectedInitialization) {
67
48
EXPECT_EQ (config->type , kOpenGL );
68
49
EXPECT_EQ (user_data, engine_instance);
69
50
// Spot-check arguments.
70
- EXPECT_STREQ (args->assets_path , " C: \\ foo \\ flutter_assets " );
71
- EXPECT_STREQ (args->icu_data_path , " C: \\ foo \\ icudtl.dat " );
51
+ EXPECT_NE (args->assets_path , nullptr );
52
+ EXPECT_NE (args->icu_data_path , nullptr );
72
53
EXPECT_EQ (args->dart_entrypoint_argc , 2U );
73
54
EXPECT_EQ (strcmp (args->dart_entrypoint_argv [0 ], " arg1" ), 0 );
74
55
EXPECT_EQ (strcmp (args->dart_entrypoint_argv [1 ], " arg2" ), 0 );
@@ -159,7 +140,8 @@ TEST_F(FlutterWindowsEngineTest, RunDoesExpectedInitialization) {
159
140
}
160
141
161
142
TEST_F (FlutterWindowsEngineTest, ConfiguresFrameVsync) {
162
- std::unique_ptr<FlutterWindowsEngine> engine = GetTestEngine ();
143
+ FlutterWindowsEngineBuilder builder{GetContext ()};
144
+ std::unique_ptr<FlutterWindowsEngine> engine = builder.Build ();
163
145
EngineModifier modifier (engine.get ());
164
146
bool on_vsync_called = false ;
165
147
@@ -185,7 +167,8 @@ TEST_F(FlutterWindowsEngineTest, ConfiguresFrameVsync) {
185
167
}
186
168
187
169
TEST_F (FlutterWindowsEngineTest, RunWithoutANGLEUsesSoftware) {
188
- std::unique_ptr<FlutterWindowsEngine> engine = GetTestEngine ();
170
+ FlutterWindowsEngineBuilder builder{GetContext ()};
171
+ std::unique_ptr<FlutterWindowsEngine> engine = builder.Build ();
189
172
EngineModifier modifier (engine.get ());
190
173
191
174
modifier.embedder_api ().NotifyDisplayUpdate =
@@ -237,7 +220,8 @@ TEST_F(FlutterWindowsEngineTest, RunWithoutANGLEUsesSoftware) {
237
220
}
238
221
239
222
TEST_F (FlutterWindowsEngineTest, SendPlatformMessageWithoutResponse) {
240
- std::unique_ptr<FlutterWindowsEngine> engine = GetTestEngine ();
223
+ FlutterWindowsEngineBuilder builder{GetContext ()};
224
+ std::unique_ptr<FlutterWindowsEngine> engine = builder.Build ();
241
225
EngineModifier modifier (engine.get ());
242
226
243
227
const char * channel = " test" ;
@@ -263,14 +247,10 @@ TEST_F(FlutterWindowsEngineTest, SendPlatformMessageWithoutResponse) {
263
247
}
264
248
265
249
TEST_F (FlutterWindowsEngineTest, PlatformMessageRoundTrip) {
266
- FlutterDesktopEngineProperties properties = {};
267
- properties.assets_path = GetContext ().GetAssetsPath ().c_str ();
268
- properties.icu_data_path = GetContext ().GetIcuDataPath ().c_str ();
269
- properties.dart_entrypoint = " hiPlatformChannels" ;
270
-
271
- FlutterProjectBundle project (properties);
272
- auto engine = std::make_unique<FlutterWindowsEngine>(project);
250
+ FlutterWindowsEngineBuilder builder{GetContext ()};
251
+ builder.SetDartEntrypoint (" hiPlatformChannels" );
273
252
253
+ std::unique_ptr<FlutterWindowsEngine> engine = builder.Build ();
274
254
EngineModifier modifier (engine.get ());
275
255
modifier.embedder_api ().RunsAOTCompiledDartCode = []() { return false ; };
276
256
@@ -312,13 +292,10 @@ TEST_F(FlutterWindowsEngineTest, PlatformMessageRoundTrip) {
312
292
}
313
293
314
294
TEST_F (FlutterWindowsEngineTest, PlatformMessageRespondOnDifferentThread) {
315
- FlutterDesktopEngineProperties properties = {};
316
- properties.assets_path = GetContext ().GetAssetsPath ().c_str ();
317
- properties.icu_data_path = GetContext ().GetIcuDataPath ().c_str ();
318
- properties.dart_entrypoint = " hiPlatformChannels" ;
295
+ FlutterWindowsEngineBuilder builder{GetContext ()};
296
+ builder.SetDartEntrypoint (" hiPlatformChannels" );
319
297
320
- FlutterProjectBundle project (properties);
321
- auto engine = std::make_unique<FlutterWindowsEngine>(project);
298
+ std::unique_ptr<FlutterWindowsEngine> engine = builder.Build ();
322
299
323
300
EngineModifier modifier (engine.get ());
324
301
modifier.embedder_api ().RunsAOTCompiledDartCode = []() { return false ; };
@@ -366,7 +343,8 @@ TEST_F(FlutterWindowsEngineTest, PlatformMessageRespondOnDifferentThread) {
366
343
}
367
344
368
345
TEST_F (FlutterWindowsEngineTest, SendPlatformMessageWithResponse) {
369
- std::unique_ptr<FlutterWindowsEngine> engine = GetTestEngine ();
346
+ FlutterWindowsEngineBuilder builder{GetContext ()};
347
+ std::unique_ptr<FlutterWindowsEngine> engine = builder.Build ();
370
348
EngineModifier modifier (engine.get ());
371
349
372
350
const char * channel = " test" ;
@@ -424,7 +402,8 @@ TEST_F(FlutterWindowsEngineTest, SendPlatformMessageWithResponse) {
424
402
}
425
403
426
404
TEST_F (FlutterWindowsEngineTest, DispatchSemanticsAction) {
427
- std::unique_ptr<FlutterWindowsEngine> engine = GetTestEngine ();
405
+ FlutterWindowsEngineBuilder builder{GetContext ()};
406
+ std::unique_ptr<FlutterWindowsEngine> engine = builder.Build ();
428
407
EngineModifier modifier (engine.get ());
429
408
430
409
bool called = false ;
@@ -469,7 +448,8 @@ TEST_F(FlutterWindowsEngineTest, SetsThreadPriority) {
469
448
}
470
449
471
450
TEST_F (FlutterWindowsEngineTest, AddPluginRegistrarDestructionCallback) {
472
- std::unique_ptr<FlutterWindowsEngine> engine = GetTestEngine ();
451
+ FlutterWindowsEngineBuilder builder{GetContext ()};
452
+ std::unique_ptr<FlutterWindowsEngine> engine = builder.Build ();
473
453
EngineModifier modifier (engine.get ());
474
454
475
455
MockEmbedderApiForKeyboard (modifier,
@@ -499,7 +479,8 @@ TEST_F(FlutterWindowsEngineTest, AddPluginRegistrarDestructionCallback) {
499
479
}
500
480
501
481
TEST_F (FlutterWindowsEngineTest, ScheduleFrame) {
502
- std::unique_ptr<FlutterWindowsEngine> engine = GetTestEngine ();
482
+ FlutterWindowsEngineBuilder builder{GetContext ()};
483
+ std::unique_ptr<FlutterWindowsEngine> engine = builder.Build ();
503
484
EngineModifier modifier (engine.get ());
504
485
505
486
bool called = false ;
@@ -514,7 +495,8 @@ TEST_F(FlutterWindowsEngineTest, ScheduleFrame) {
514
495
}
515
496
516
497
TEST_F (FlutterWindowsEngineTest, SetNextFrameCallback) {
517
- std::unique_ptr<FlutterWindowsEngine> engine = GetTestEngine ();
498
+ FlutterWindowsEngineBuilder builder{GetContext ()};
499
+ std::unique_ptr<FlutterWindowsEngine> engine = builder.Build ();
518
500
EngineModifier modifier (engine.get ());
519
501
520
502
bool called = false ;
@@ -529,14 +511,16 @@ TEST_F(FlutterWindowsEngineTest, SetNextFrameCallback) {
529
511
}
530
512
531
513
TEST_F (FlutterWindowsEngineTest, GetExecutableName) {
532
- std::unique_ptr<FlutterWindowsEngine> engine = GetTestEngine ();
514
+ FlutterWindowsEngineBuilder builder{GetContext ()};
515
+ std::unique_ptr<FlutterWindowsEngine> engine = builder.Build ();
533
516
EXPECT_EQ (engine->GetExecutableName (), " flutter_windows_unittests.exe" );
534
517
}
535
518
536
519
// Ensure that after setting or resetting the high contrast feature,
537
520
// the corresponding status flag can be retrieved from the engine.
538
521
TEST_F (FlutterWindowsEngineTest, UpdateHighContrastFeature) {
539
- std::unique_ptr<FlutterWindowsEngine> engine = GetTestEngine ();
522
+ FlutterWindowsEngineBuilder builder{GetContext ()};
523
+ std::unique_ptr<FlutterWindowsEngine> engine = builder.Build ();
540
524
EngineModifier modifier (engine.get ());
541
525
542
526
bool called = false ;
@@ -561,7 +545,8 @@ TEST_F(FlutterWindowsEngineTest, UpdateHighContrastFeature) {
561
545
}
562
546
563
547
TEST_F (FlutterWindowsEngineTest, PostRasterThreadTask) {
564
- std::unique_ptr<FlutterWindowsEngine> engine = GetTestEngine ();
548
+ FlutterWindowsEngineBuilder builder{GetContext ()};
549
+ std::unique_ptr<FlutterWindowsEngine> engine = builder.Build ();
565
550
EngineModifier modifier (engine.get ());
566
551
567
552
modifier.embedder_api ().PostRenderThreadTask = MOCK_ENGINE_PROC (
@@ -586,20 +571,16 @@ class MockFlutterWindowsView : public FlutterWindowsView {
586
571
};
587
572
588
573
TEST_F (FlutterWindowsEngineTest, AlertPlatformMessage) {
589
- FlutterDesktopEngineProperties properties = {};
590
- properties.assets_path = GetContext ().GetAssetsPath ().c_str ();
591
- properties.icu_data_path = GetContext ().GetIcuDataPath ().c_str ();
592
- properties.dart_entrypoint = " alertPlatformChannel" ;
593
-
594
- FlutterProjectBundle project (properties);
574
+ FlutterWindowsEngineBuilder builder{GetContext ()};
575
+ builder.SetDartEntrypoint (" alertPlatformChannel" );
595
576
596
577
auto window_binding_handler =
597
578
std::make_unique<::testing::NiceMock<MockWindowBindingHandler>>();
598
579
AccessibilityRootNode* root_node = AccessibilityRootNode::Create ();
599
580
ON_CALL (*window_binding_handler, GetAccessibilityRootNode)
600
581
.WillByDefault (::testing::Return (root_node));
601
582
MockFlutterWindowsView view (std::move (window_binding_handler));
602
- view.SetEngine (std::make_unique<FlutterWindowsEngine>(project ));
583
+ view.SetEngine (builder. Build ( ));
603
584
FlutterWindowsEngine* engine = view.GetEngine ();
604
585
605
586
EngineModifier modifier (engine);
0 commit comments