Flutter Engine
flutter_project_bundle.h
Go to the documentation of this file.
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_SHELL_PLATFORM_WINDOWS_FLUTTER_PROJECT_BUNDLE_H_
6 #define FLUTTER_SHELL_PLATFORM_WINDOWS_FLUTTER_PROJECT_BUNDLE_H_
7 
8 #include <filesystem>
9 #include <string>
10 #include <vector>
11 
12 #include "flutter/shell/platform/embedder/embedder.h"
13 #include "flutter/shell/platform/windows/public/flutter_windows.h"
14 
15 namespace flutter {
16 
17 using UniqueAotDataPtr =
18  std::unique_ptr<_FlutterEngineAOTData, FlutterEngineCollectAOTDataFnPtr>;
19 
20 // The data associated with a Flutter project needed to run it in an engine.
22  public:
23  // Creates a new project bundle from the given properties.
24  //
25  // Treats any relative paths as relative to the directory of this executable.
26  explicit FlutterProjectBundle(
27  const FlutterDesktopEngineProperties& properties);
28 
30 
31  // Whether or not the bundle is valid. This does not check that the paths
32  // exist, or contain valid data, just that paths were able to be constructed.
33  bool HasValidPaths();
34 
35  // Returns the path to the assets directory.
36  const std::filesystem::path& assets_path() { return assets_path_; }
37 
38  // Returns the path to the ICU data file.
39  const std::filesystem::path& icu_path() { return icu_path_; }
40 
41  // Returns any switches that should be passed to the engine.
42  const std::vector<std::string> GetSwitches();
43 
44  // Sets engine switches.
45  void SetSwitches(const std::vector<std::string>& switches);
46 
47  // Attempts to load AOT data for this bundle. The returned data must be
48  // retained until any engine instance it is passed to has been shut down.
49  //
50  // Logs and returns nullptr on failure.
52 
53  // Returns the command line arguments to be passed through to the Dart
54  // entrypoint.
55  const std::vector<std::string>& dart_entrypoint_arguments() const {
56  return dart_entrypoint_arguments_;
57  }
58 
59  private:
60  std::filesystem::path assets_path_;
61  std::filesystem::path icu_path_;
62 
63  // Path to the AOT library file, if any.
64  std::filesystem::path aot_library_path_;
65 
66  // Dart entrypoint arguments.
67  std::vector<std::string> dart_entrypoint_arguments_;
68 
69  // Engine switches.
70  std::vector<std::string> engine_switches_;
71 };
72 
73 } // namespace flutter
74 
75 #endif // FLUTTER_SHELL_PLATFORM_WINDOWS_FLUTTER_PROJECT_BUNDLE_H_
FlutterProjectBundle(const FlutterDesktopEngineProperties &properties)
void SetSwitches(const std::vector< std::string > &switches)
DEF_SWITCHES_START snapshot asset path
Definition: switches.h:32
const std::filesystem::path & icu_path()
const std::vector< std::string > & dart_entrypoint_arguments() const
Function-pointer-based versions of the APIs above.
Definition: embedder.h:2372
UniqueAotDataPtr LoadAotData(const FlutterEngineProcTable &engine_procs)
const std::vector< std::string > GetSwitches()
const std::filesystem::path & assets_path()
std::unique_ptr< _FlutterEngineAOTData, FlutterEngineCollectAOTDataFnPtr > UniqueAotDataPtr
std::unique_ptr< _FlutterEngineAOTData, AOTDataDeleter > UniqueAotDataPtr