Flutter Windows Embedder
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"
14 
15 namespace flutter {
16 
18  std::unique_ptr<_FlutterEngineAOTData, FlutterEngineCollectAOTDataFnPtr>;
19 
24 };
25 
27  Default,
30 };
31 
33  Default,
36 };
37 
38 // The data associated with a Flutter project needed to run it in an engine.
40  public:
41  // Creates a new project bundle from the given properties.
42  //
43  // Treats any relative paths as relative to the directory of this executable.
44  explicit FlutterProjectBundle(
45  const FlutterDesktopEngineProperties& properties);
46 
48 
49  // Whether or not the bundle is valid. This does not check that the paths
50  // exist, or contain valid data, just that paths were able to be constructed.
51  bool HasValidPaths();
52 
53  // Returns the path to the assets directory.
54  const std::filesystem::path& assets_path() { return assets_path_; }
55 
56  // Returns the path to the ICU data file.
57  const std::filesystem::path& icu_path() { return icu_path_; }
58 
59  // Returns any switches that should be passed to the engine.
60  const std::vector<std::string> GetSwitches();
61 
62  // Sets engine switches.
63  void SetSwitches(const std::vector<std::string>& switches);
64 
65  // Attempts to load AOT data for this bundle. The returned data must be
66  // retained until any engine instance it is passed to has been shut down.
67  //
68  // Logs and returns nullptr on failure.
69  UniqueAotDataPtr LoadAotData(const FlutterEngineProcTable& engine_procs);
70 
71  // Returns the Dart entrypoint.
72  const std::string& dart_entrypoint() const { return dart_entrypoint_; }
73 
74  // Returns the command line arguments to be passed through to the Dart
75  // entrypoint.
76  const std::vector<std::string>& dart_entrypoint_arguments() const {
77  return dart_entrypoint_arguments_;
78  }
79 
80  // Returns the app's GPU preference.
81  FlutterGpuPreference gpu_preference() const { return gpu_preference_; }
82 
83  // Returns thread policy for running the UI isolate.
84  FlutterUIThreadPolicy ui_thread_policy() { return ui_thread_policy_; }
85 
86  // Returns the accessibility mode.
88  return accessibility_mode_;
89  }
90 
91  private:
92  std::filesystem::path assets_path_;
93  std::filesystem::path icu_path_;
94 
95  // Path to the AOT library file, if any.
96  std::filesystem::path aot_library_path_;
97 
98  // The Dart entrypoint to launch.
99  std::string dart_entrypoint_;
100 
101  // Dart entrypoint arguments.
102  std::vector<std::string> dart_entrypoint_arguments_;
103 
104  // Engine switches.
105  std::vector<std::string> engine_switches_;
106 
107  // App's GPU preference.
108  FlutterGpuPreference gpu_preference_;
109 
110  // Thread policy for running the UI isolate.
111  FlutterUIThreadPolicy ui_thread_policy_;
112 
113  // The current accessibility mode.
114  FlutterAccessibilityMode accessibility_mode_;
115 };
116 
117 } // namespace flutter
118 
119 #endif // FLUTTER_SHELL_PLATFORM_WINDOWS_FLUTTER_PROJECT_BUNDLE_H_
FlutterGpuPreference gpu_preference() const
const std::filesystem::path & assets_path()
const std::vector< std::string > GetSwitches()
const std::filesystem::path & icu_path()
FlutterProjectBundle(const FlutterDesktopEngineProperties &properties)
FlutterAccessibilityMode accessibility_mode() const
UniqueAotDataPtr LoadAotData(const FlutterEngineProcTable &engine_procs)
const std::vector< std::string > & dart_entrypoint_arguments() const
FlutterUIThreadPolicy ui_thread_policy()
void SetSwitches(const std::vector< std::string > &switches)
const std::string & dart_entrypoint() const
std::unique_ptr< _FlutterEngineAOTData, FlutterEngineCollectAOTDataFnPtr > UniqueAotDataPtr