From 1282b19cdfab3f071658da63dd188a51710fd0c8 Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Sat, 3 Oct 2020 12:24:16 -0700 Subject: [PATCH 1/3] Adjust asset resolver preservation logic for Android --- shell/common/engine.cc | 8 +++++++- shell/common/shell.cc | 14 -------------- shell/common/shell.h | 4 ---- 3 files changed, 7 insertions(+), 19 deletions(-) diff --git a/shell/common/engine.cc b/shell/common/engine.cc index d2384c03579cf..61a6bb1518e54 100644 --- a/shell/common/engine.cc +++ b/shell/common/engine.cc @@ -112,11 +112,17 @@ bool Engine::UpdateAssetManager( return false; } - asset_manager_ = new_asset_manager; + auto old_asset_manager = asset_manager_ asset_manager_ = new_asset_manager; if (!asset_manager_) { return false; } + // Add the original asset resolvers to the new manager so that unmodified + // assets bundled with the application specific format (APK, IPA) can be used + // without syncing to the Dart devFS. + if (old_asset_manager != nullptr) { + asset_manager->PushBack(old_asset_manager); + } // Using libTXT as the text engine. font_collection_.RegisterFonts(asset_manager_); diff --git a/shell/common/shell.cc b/shell/common/shell.cc index 2da9e9786e385..1503519ca7f4d 100644 --- a/shell/common/shell.cc +++ b/shell/common/shell.cc @@ -1404,7 +1404,6 @@ bool Shell::OnServiceProtocolRunInView( configuration.AddAssetResolver( std::make_unique(fml::OpenDirectory( asset_directory_path.c_str(), false, fml::FilePermission::kRead))); - configuration.AddAssetResolver(RestoreOriginalAssetResolver()); auto& allocator = response->GetAllocator(); response->SetObject(); @@ -1517,7 +1516,6 @@ bool Shell::OnServiceProtocolSetAssetBundlePath( auto asset_manager = std::make_shared(); - asset_manager->PushFront(RestoreOriginalAssetResolver()); asset_manager->PushFront(std::make_unique( fml::OpenDirectory(params.at("assetDirectory").data(), false, fml::FilePermission::kRead))); @@ -1624,16 +1622,4 @@ void Shell::OnDisplayUpdates(DisplayUpdateType update_type, display_manager_->HandleDisplayUpdates(update_type, displays); } -// Add the original asset directory to the resolvers so that unmodified assets -// bundled with the application specific format (APK, IPA) can be used without -// syncing to the Dart devFS. -std::unique_ptr Shell::RestoreOriginalAssetResolver() { - if (fml::UniqueFD::traits_type::IsValid(settings_.assets_dir)) { - return std::make_unique( - fml::Duplicate(settings_.assets_dir)); - } - return std::make_unique(fml::OpenDirectory( - settings_.assets_path.c_str(), false, fml::FilePermission::kRead)); -}; - } // namespace flutter diff --git a/shell/common/shell.h b/shell/common/shell.h index a345b0461e5fc..6eb9dfec7f319 100644 --- a/shell/common/shell.h +++ b/shell/common/shell.h @@ -613,10 +613,6 @@ class Shell final : public PlatformView::Delegate, const ServiceProtocol::Handler::ServiceProtocolMap& params, rapidjson::Document* response); - // Creates an asset bundle from the original settings asset path or - // directory. - std::unique_ptr RestoreOriginalAssetResolver(); - // For accessing the Shell via the raster thread, necessary for various // rasterizer callbacks. std::unique_ptr> weak_factory_gpu_; From ce27a4040996e64139f915dbb730990c441dbe28 Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Sat, 3 Oct 2020 12:30:28 -0700 Subject: [PATCH 2/3] Update engine.cc --- shell/common/engine.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shell/common/engine.cc b/shell/common/engine.cc index 61a6bb1518e54..2c95d5d105be4 100644 --- a/shell/common/engine.cc +++ b/shell/common/engine.cc @@ -112,7 +112,8 @@ bool Engine::UpdateAssetManager( return false; } - auto old_asset_manager = asset_manager_ asset_manager_ = new_asset_manager; + auto old_asset_manager = asset_manager_; + asset_manager_ = new_asset_manager; if (!asset_manager_) { return false; From c0638855d915cf09493e0ecee5523712a84fb577 Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Sat, 3 Oct 2020 12:55:31 -0700 Subject: [PATCH 3/3] Update engine.cc --- shell/common/engine.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/common/engine.cc b/shell/common/engine.cc index 2c95d5d105be4..1a778a17e035d 100644 --- a/shell/common/engine.cc +++ b/shell/common/engine.cc @@ -122,7 +122,7 @@ bool Engine::UpdateAssetManager( // assets bundled with the application specific format (APK, IPA) can be used // without syncing to the Dart devFS. if (old_asset_manager != nullptr) { - asset_manager->PushBack(old_asset_manager); + asset_manager_->PushBack(old_asset_manager); } // Using libTXT as the text engine.