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
10namespace flutter {
11
12AssetManager::AssetManager() = default;
13
14AssetManager::~AssetManager() = default;
15
16void 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
24void 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|
33std::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|
51bool AssetManager::IsValid() const {
52 return resolvers_.size() > 0;
53}
54
55} // namespace flutter
56