• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #ifndef FLUTTER_ASSETS_ASSET_MANAGER_H_
6 #define FLUTTER_ASSETS_ASSET_MANAGER_H_
7 
8 #include <deque>
9 #include <memory>
10 #include <string>
11 
12 #include "flutter/assets/asset_resolver.h"
13 #include "flutter/fml/macros.h"
14 #include "flutter/fml/memory/ref_counted.h"
15 
16 namespace flutter {
17 
18 class AssetManager final : public AssetResolver {
19  public:
20   AssetManager();
21 
22   ~AssetManager() override;
23 
24   void PushFront(std::unique_ptr<AssetResolver> resolver);
25 
26   void PushBack(std::unique_ptr<AssetResolver> resolver);
27 
28   // |AssetResolver|
29   bool IsValid() const override;
30 
31   // |AssetResolver|
32   std::unique_ptr<fml::Mapping> GetAsMapping(
33       const std::string& asset_name) const override;
34 
35  private:
36   std::deque<std::unique_ptr<AssetResolver>> resolvers_;
37 
38   FML_DISALLOW_COPY_AND_ASSIGN(AssetManager);
39 };
40 
41 }  // namespace flutter
42 
43 #endif  // FLUTTER_ASSETS_ASSET_MANAGER_H_
44