@@ -3044,5 +3044,38 @@ TEST_F(ShellTest, UserTagSetOnStartup) {
30443044 isolate_create_latch.Wait ();
30453045}
30463046
3047+ TEST_F (ShellTest, PrefetchDefaultFontManager) {
3048+ auto settings = CreateSettingsForFixture ();
3049+ settings.prefetched_default_font_manager = true ;
3050+
3051+ auto shell = CreateShell (std::move (settings));
3052+
3053+ auto get_font_manager_count = [&] {
3054+ fml::AutoResetWaitableEvent latch;
3055+ size_t font_manager_count;
3056+ fml::TaskRunner::RunNowOrPostTask (
3057+ shell->GetTaskRunners ().GetUITaskRunner (),
3058+ [this , &shell, &latch, &font_manager_count]() {
3059+ font_manager_count =
3060+ GetFontCollection (shell.get ())->GetFontManagersCount ();
3061+ latch.Signal ();
3062+ });
3063+ latch.Wait ();
3064+ return font_manager_count;
3065+ };
3066+
3067+ size_t initial_font_manager_count = get_font_manager_count ();
3068+
3069+ auto configuration = RunConfiguration::InferFromSettings (settings);
3070+ configuration.SetEntrypoint (" emptyMain" );
3071+ RunEngine (shell.get (), std::move (configuration));
3072+
3073+ // If the prefetched_default_font_manager flag is set, then the default font
3074+ // manager will not be added until the engine starts running.
3075+ ASSERT_EQ (get_font_manager_count (), initial_font_manager_count + 1 );
3076+
3077+ DestroyShell (std::move (shell));
3078+ }
3079+
30473080} // namespace testing
30483081} // namespace flutter
0 commit comments