| // Copyright 2021 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_ASH_BOREALIS_BOREALIS_LAUNCH_OPTIONS_H_ |
| #define CHROME_BROWSER_ASH_BOREALIS_BOREALIS_LAUNCH_OPTIONS_H_ |
| |
| #include <optional> |
| |
| #include "base/files/file_path.h" |
| #include "base/functional/callback_forward.h" |
| |
| class Profile; |
| |
| namespace borealis { |
| |
| // Switch for adding an extra disk to be used with borealis. |
| extern const char kExtraDiskSwitch[]; |
| |
| // The BorealisLaunchOptions processes a string representation of the borealis' |
| // runtime options into a struct, for use in the creation/lifetime of a |
| // BorealisContext. |
| // |
| // The string configuration is a comma-separated key=val list e.g.: |
| // |
| // op1=val1,opt2=val2,opt3=val3 |
| // |
| // The valid options are recorded in the .cc file and go/borealis-care. |
| class BorealisLaunchOptions { |
| public: |
| // Struct containing the various ways Borealis can be modified at runtime. |
| // These options are per-launch. |
| struct Options { |
| Options(); |
| Options(const Options&); |
| ~Options(); |
| |
| std::optional<base::FilePath> extra_disk = std::nullopt; |
| |
| bool auto_shutdown = true; |
| }; |
| |
| explicit BorealisLaunchOptions(Profile* profile); |
| |
| // Get the options for a borealis launch. This will almost always be the above |
| // defaults in production, but it is necessary to allow changing these for |
| // devs/testers. |
| // |
| // This process will not fail. Any malformed options or issues will result in |
| // the default Options being returned. |
| void Build( |
| base::OnceCallback<void(BorealisLaunchOptions::Options)> callback) const; |
| |
| // Options are normally given on chrome's command-line. This method is used to |
| // override the command-line. This is not strictly "for testing", but it is |
| // used by the Autotest Privtate API. |
| void ForceOptions(std::string opts_string); |
| |
| private: |
| std::string options_; |
| }; |
| |
| } // namespace borealis |
| |
| #endif // CHROME_BROWSER_ASH_BOREALIS_BOREALIS_LAUNCH_OPTIONS_H_ |