From 08634d21c823f33d36551123612a2a7c32b634c6 Mon Sep 17 00:00:00 2001 From: Sarah Zakarias Date: Tue, 19 Dec 2017 10:54:26 +0100 Subject: [PATCH 1/3] add zip asset store to AssetFontSelector --- runtime/asset_font_selector.cc | 22 ++++++++++++++++++---- runtime/asset_font_selector.h | 9 +++++++++ 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/runtime/asset_font_selector.cc b/runtime/asset_font_selector.cc index eaa86e3ab9308..ab09ca5696eb4 100644 --- a/runtime/asset_font_selector.cc +++ b/runtime/asset_font_selector.cc @@ -88,10 +88,20 @@ void AssetFontSelector::Install( UIDartState::Current()->set_font_selector(font_selector); } +void AssetFontSelector::Install(fxl::RefPtr asset_store) { + RefPtr font_selector = + adoptRef(new AssetFontSelector(std::move(asset_store))); + font_selector->parseFontManifest(); + UIDartState::Current()->set_font_selector(font_selector); +} + AssetFontSelector::AssetFontSelector( fxl::RefPtr directory_asset_bundle) : directory_asset_bundle_(std::move(directory_asset_bundle)) {} +AssetFontSelector::AssetFontSelector(fxl::RefPtr asset_store) + : asset_store_(std::move(asset_store)) {} + AssetFontSelector::~AssetFontSelector() {} AssetFontSelector::TypefaceAsset::TypefaceAsset() {} @@ -109,8 +119,10 @@ AssetFontSelector::FlutterFontAttributes::~FlutterFontAttributes() {} void AssetFontSelector::parseFontManifest() { std::vector font_manifest_data; if (!directory_asset_bundle_->GetAsBuffer(kFontManifestAssetPath, - &font_manifest_data)) - return; + &font_manifest_data)) { + if (!asset_store_->GetAsBuffer(kFontManifestAssetPath, &font_manifest_data)) + return; + } rapidjson::Document document; document.Parse(reinterpret_cast(font_manifest_data.data()), @@ -227,8 +239,10 @@ sk_sp AssetFontSelector::getTypefaceAsset( std::unique_ptr typeface_asset(new TypefaceAsset); if (!directory_asset_bundle_->GetAsBuffer(asset_path, &typeface_asset->data)) { - typeface_cache_.insert(std::make_pair(asset_path, nullptr)); - return nullptr; + if (!asset_store_->GetAsBuffer(asset_path, &typeface_asset->data)) { + typeface_cache_.insert(std::make_pair(asset_path, nullptr)); + return nullptr; + } } sk_sp font_mgr(SkFontMgr::RefDefault()); diff --git a/runtime/asset_font_selector.h b/runtime/asset_font_selector.h index ad6144071e370..0851de9127993 100644 --- a/runtime/asset_font_selector.h +++ b/runtime/asset_font_selector.h @@ -8,6 +8,7 @@ #include #include +#include "flutter/assets/zip_asset_store.h" #include "flutter/assets/directory_asset_bundle.h" #include "flutter/sky/engine/platform/fonts/FontCacheKey.h" #include "flutter/sky/engine/platform/fonts/FontSelector.h" @@ -25,6 +26,10 @@ class AssetFontSelector : public FontSelector { static void Install(fxl::RefPtr directory_asset_bundle); + // TODO(zarah): Remove this and related code using asset_store once flx is + // removed. + static void Install(fxl::RefPtr asset_store); + PassRefPtr getFontData(const FontDescription& font_description, const AtomicString& family_name) override; @@ -42,6 +47,8 @@ class AssetFontSelector : public FontSelector { explicit AssetFontSelector( fxl::RefPtr directory_asset_bundle); + explicit AssetFontSelector(fxl::RefPtr asset_store); + void parseFontManifest(); sk_sp getTypefaceAsset(const FontDescription& font_description, @@ -49,6 +56,8 @@ class AssetFontSelector : public FontSelector { fxl::RefPtr directory_asset_bundle_; + fxl::RefPtr asset_store_; + HashMap> font_family_map_; std::unordered_map> From 6eaf7a32fe6fa6101e6a594c7f53ceea206d3530 Mon Sep 17 00:00:00 2001 From: Sarah Zakarias Date: Tue, 19 Dec 2017 11:38:47 +0100 Subject: [PATCH 2/3] null checks + formatting --- runtime/asset_font_selector.cc | 15 +++++++++------ runtime/asset_font_selector.h | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/runtime/asset_font_selector.cc b/runtime/asset_font_selector.cc index ab09ca5696eb4..e4b300a251c5d 100644 --- a/runtime/asset_font_selector.cc +++ b/runtime/asset_font_selector.cc @@ -90,7 +90,7 @@ void AssetFontSelector::Install( void AssetFontSelector::Install(fxl::RefPtr asset_store) { RefPtr font_selector = - adoptRef(new AssetFontSelector(std::move(asset_store))); + adoptRef(new AssetFontSelector(std::move(asset_store))); font_selector->parseFontManifest(); UIDartState::Current()->set_font_selector(font_selector); } @@ -118,9 +118,11 @@ AssetFontSelector::FlutterFontAttributes::~FlutterFontAttributes() {} void AssetFontSelector::parseFontManifest() { std::vector font_manifest_data; - if (!directory_asset_bundle_->GetAsBuffer(kFontManifestAssetPath, + if (!directory_asset_bundle_ || + !directory_asset_bundle_->GetAsBuffer(kFontManifestAssetPath, &font_manifest_data)) { - if (!asset_store_->GetAsBuffer(kFontManifestAssetPath, &font_manifest_data)) + if (!asset_store_ || + !asset_store_->GetAsBuffer(kFontManifestAssetPath, &font_manifest_data)) return; } @@ -237,9 +239,10 @@ sk_sp AssetFontSelector::getTypefaceAsset( } std::unique_ptr typeface_asset(new TypefaceAsset); - if (!directory_asset_bundle_->GetAsBuffer(asset_path, - &typeface_asset->data)) { - if (!asset_store_->GetAsBuffer(asset_path, &typeface_asset->data)) { + if (!directory_asset_bundle_ || !directory_asset_bundle_->GetAsBuffer( + asset_path, &typeface_asset->data)) { + if (!asset_store_ || + !asset_store_->GetAsBuffer(asset_path, &typeface_asset->data)) { typeface_cache_.insert(std::make_pair(asset_path, nullptr)); return nullptr; } diff --git a/runtime/asset_font_selector.h b/runtime/asset_font_selector.h index 0851de9127993..ced5ebc595041 100644 --- a/runtime/asset_font_selector.h +++ b/runtime/asset_font_selector.h @@ -8,8 +8,8 @@ #include #include -#include "flutter/assets/zip_asset_store.h" #include "flutter/assets/directory_asset_bundle.h" +#include "flutter/assets/zip_asset_store.h" #include "flutter/sky/engine/platform/fonts/FontCacheKey.h" #include "flutter/sky/engine/platform/fonts/FontSelector.h" #include "flutter/sky/engine/platform/fonts/SimpleFontData.h" From 500187e05d03ee391fea7add155ab0bd755fa7b5 Mon Sep 17 00:00:00 2001 From: Sarah Zakarias Date: Tue, 19 Dec 2017 11:50:49 +0100 Subject: [PATCH 3/3] formatting --- runtime/asset_font_selector.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/asset_font_selector.cc b/runtime/asset_font_selector.cc index e4b300a251c5d..ad49fde46563d 100644 --- a/runtime/asset_font_selector.cc +++ b/runtime/asset_font_selector.cc @@ -240,7 +240,7 @@ sk_sp AssetFontSelector::getTypefaceAsset( std::unique_ptr typeface_asset(new TypefaceAsset); if (!directory_asset_bundle_ || !directory_asset_bundle_->GetAsBuffer( - asset_path, &typeface_asset->data)) { + asset_path, &typeface_asset->data)) { if (!asset_store_ || !asset_store_->GetAsBuffer(asset_path, &typeface_asset->data)) { typeface_cache_.insert(std::make_pair(asset_path, nullptr));