Flutter Engine
 
Loading...
Searching...
No Matches
flutter::NativeAssetsManager Class Reference

#include <native_assets.h>

Public Member Functions

 NativeAssetsManager ()=default
 
 ~NativeAssetsManager ()=default
 
void RegisterNativeAssets (const uint8_t *manifest, size_t manifest_size)
 
void RegisterNativeAssets (const std::shared_ptr< AssetManager > &asset_manager)
 
std::vector< std::string > LookupNativeAsset (std::string_view asset_id)
 
std::string AvailableNativeAssets ()
 

Detailed Description

Definition at line 22 of file native_assets.h.

Constructor & Destructor Documentation

◆ NativeAssetsManager()

flutter::NativeAssetsManager::NativeAssetsManager ( )
default

◆ ~NativeAssetsManager()

flutter::NativeAssetsManager::~NativeAssetsManager ( )
default

Member Function Documentation

◆ AvailableNativeAssets()

std::string flutter::NativeAssetsManager::AvailableNativeAssets ( )

Definition at line 119 of file native_assets.cc.

119 {
120 if (parsed_mapping_.empty()) {
121 return std::string("No available native assets.");
122 }
123
124 std::string result;
125 result.append("Available native assets: ");
126 bool first = true;
127 for (const auto& n : parsed_mapping_) {
128 if (first) {
129 first = false;
130 } else {
131 result.append(", ");
132 }
133 result.append(n.first);
134 }
135
136 result.append(".");
137 return result;
138}

Referenced by flutter::testing::TEST().

◆ LookupNativeAsset()

std::vector< std::string > flutter::NativeAssetsManager::LookupNativeAsset ( std::string_view  asset_id)

Definition at line 108 of file native_assets.cc.

109 {
110 // Cpp17 does not support unordered_map lookup with std::string_view on a
111 // std::string key.
112 std::string as_string = std::string(asset_id);
113 if (parsed_mapping_.find(as_string) == parsed_mapping_.end()) {
114 return std::vector<std::string>();
115 }
116 return parsed_mapping_[as_string];
117}

◆ RegisterNativeAssets() [1/2]

void flutter::NativeAssetsManager::RegisterNativeAssets ( const std::shared_ptr< AssetManager > &  asset_manager)

Definition at line 94 of file native_assets.cc.

95 {
96 std::unique_ptr<fml::Mapping> manifest_mapping =
97 asset_manager->GetAsMapping("NativeAssetsManifest.json");
98 if (manifest_mapping == nullptr) {
99 FML_DLOG(WARNING)
100 << "Could not find NativeAssetsManifest.json in the asset store.";
101 return;
102 }
103
104 RegisterNativeAssets(manifest_mapping->GetMapping(),
105 manifest_mapping->GetSize());
106}
void RegisterNativeAssets(const uint8_t *manifest, size_t manifest_size)
#define FML_DLOG(severity)
Definition logging.h:121

References FML_DLOG, and RegisterNativeAssets().

◆ RegisterNativeAssets() [2/2]

void flutter::NativeAssetsManager::RegisterNativeAssets ( const uint8_t *  manifest,
size_t  manifest_size 
)

Definition at line 46 of file native_assets.cc.

47 {
48 parsed_mapping_.clear();
49
50 rapidjson::Document document;
51 static_assert(sizeof(decltype(document)::Ch) == sizeof(uint8_t), "");
52 document.Parse(reinterpret_cast<const decltype(document)::Ch*>(manifest),
53 manifest_size);
54 if (document.HasParseError()) {
55 FML_DLOG(WARNING) << "NativeAssetsManifest.json is malformed.";
56 return;
57 }
58 if (!document.IsObject()) {
59 FML_DLOG(WARNING) << "NativeAssetsManifest.json is malformed.";
60 return;
61 }
62 auto native_assets = document.FindMember("native-assets");
63 if (native_assets == document.MemberEnd() ||
64 !native_assets->value.IsObject()) {
65 FML_DLOG(WARNING) << "NativeAssetsManifest.json is malformed.";
66 return;
67 }
68 auto mapping = native_assets->value.FindMember(kTarget);
69 if (mapping == native_assets->value.MemberEnd() ||
70 !mapping->value.IsObject()) {
71 FML_DLOG(WARNING) << "NativeAssetsManifest.json is malformed.";
72 return;
73 }
74 for (auto entry = mapping->value.MemberBegin();
75 entry != mapping->value.MemberEnd(); entry++) {
76 std::vector<std::string> parsed_path;
77 entry->name.GetString();
78 auto& value = entry->value;
79 if (!value.IsArray()) {
80 FML_DLOG(WARNING) << "NativeAssetsManifest.json is malformed.";
81 continue;
82 }
83 for (const auto& element : value.GetArray()) {
84 if (!element.IsString()) {
85 FML_DLOG(WARNING) << "NativeAssetsManifest.json is malformed.";
86 continue;
87 }
88 parsed_path.push_back(element.GetString());
89 }
90 parsed_mapping_[entry->name.GetString()] = std::move(parsed_path);
91 }
92}
int32_t value
#define kTarget

References FML_DLOG, kTarget, and value.

Referenced by RegisterNativeAssets(), and flutter::testing::TEST().


The documentation for this class was generated from the following files: