1 | // Copyright 2013 The Flutter Authors. All rights reserved. |
---|---|
2 | // Use of this source code is governed by a BSD-style license that can be |
3 | // found in the LICENSE file. |
4 | |
5 | #include "flutter/assets/asset_manager.h" |
6 | |
7 | #include "flutter/assets/directory_asset_bundle.h" |
8 | #include "flutter/fml/trace_event.h" |
9 | |
10 | namespace flutter { |
11 | |
12 | AssetManager::AssetManager() = default; |
13 | |
14 | AssetManager::~AssetManager() = default; |
15 | |
16 | void AssetManager::PushFront(std::unique_ptr<AssetResolver> resolver) { |
17 | if (resolver == nullptr || !resolver->IsValid()) { |
18 | return; |
19 | } |
20 | |
21 | resolvers_.push_front(std::move(resolver)); |
22 | } |
23 | |
24 | void AssetManager::PushBack(std::unique_ptr<AssetResolver> resolver) { |
25 | if (resolver == nullptr || !resolver->IsValid()) { |
26 | return; |
27 | } |
28 | |
29 | resolvers_.push_back(std::move(resolver)); |
30 | } |
31 | |
32 | // |AssetResolver| |
33 | std::unique_ptr<fml::Mapping> AssetManager::GetAsMapping( |
34 | const std::string& asset_name) const { |
35 | if (asset_name.size() == 0) { |
36 | return nullptr; |
37 | } |
38 | TRACE_EVENT1("flutter", "AssetManager::GetAsMapping", "name", |
39 | asset_name.c_str()); |
40 | for (const auto& resolver : resolvers_) { |
41 | auto mapping = resolver->GetAsMapping(asset_name); |
42 | if (mapping != nullptr) { |
43 | return mapping; |
44 | } |
45 | } |
46 | FML_DLOG(WARNING) << "Could not find asset: "<< asset_name; |
47 | return nullptr; |
48 | } |
49 | |
50 | // |AssetResolver| |
51 | bool AssetManager::IsValid() const { |
52 | return resolvers_.size() > 0; |
53 | } |
54 | |
55 | } // namespace flutter |
56 |