// Copyright 2014 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef LIBCHROMEOS_UI_CHROMEOS_UI_CHROMIUM_COMMAND_BUILDER_H_
#define LIBCHROMEOS_UI_CHROMEOS_UI_CHROMIUM_COMMAND_BUILDER_H_

#include <sys/types.h>

#include <map>
#include <set>
#include <string>
#include <vector>

#include <base/files/file_path.h>
#include <base/time/time.h>

namespace chromeos {
namespace ui {

// ChromiumCommandBuilder facilitates building a command line for running a
// Chromium-derived binary and performing related setup.
class ChromiumCommandBuilder {
 public:
  typedef std::map<std::string, std::string> StringMap;
  typedef std::vector<std::string> StringVector;

  // Name of user account used to run the binary.
  static const char kUser[];

  // Location of the file containing newline-separated USE flags that were set
  // when the system was built.
  static const char kUseFlagsPath[];

  // Location of the file containing .info files describing Pepper plugins.
  static const char kPepperPluginsPath[];

  // Location of the lsb-release file describing the system image.
  static const char kLsbReleasePath[];

  // Location of the user-writable target of the /etc/localtime symlink.
  static const char kTimeZonePath[];

  // Default zoneinfo file used if the time zone hasn't been explicitly set.
  static const char kDefaultZoneinfoPath[];

  // Names of Chromium flags (without "--" prefixes) that need to be merged due
  // to containing lists of comma-separated values.
  static const char kVmoduleFlag[];
  static const char kEnableFeaturesFlag[];
  static const char kDisableFeaturesFlag[];
  static const char kEnableBlinkFeaturesFlag[];
  static const char kDisableBlinkFeaturesFlag[];

  ChromiumCommandBuilder();
  ChromiumCommandBuilder(const ChromiumCommandBuilder&) = delete;
  ChromiumCommandBuilder& operator=(const ChromiumCommandBuilder&) = delete;

  ~ChromiumCommandBuilder();

  uid_t uid() const { return uid_; }
  gid_t gid() const { return gid_; }
  bool is_chrome_os_hardware() const { return is_chrome_os_hardware_; }
  bool is_developer_end_user() const { return is_developer_end_user_; }
  bool is_test_build() const { return is_test_build_; }
  const StringMap& environment_variables() const {
    return environment_variables_;
  }
  const StringVector& arguments() const { return arguments_; }

  void set_base_path_for_testing(const base::FilePath& path) {
    base_path_for_testing_ = path;
  }

  // Performs just the basic initialization needed before UseFlagIsSet() can be
  // used. Returns true on success.
  bool Init();

  // Determines the environment variables and arguments that should be set for
  // all Chromium-derived binaries and updates |environment_variables_| and
  // |arguments_| accordingly. Also creates necessary directories, sets resource
  // limits, etc.
  //
  // Returns true on success.
  bool SetUpChromium();

  // Reads a user-supplied file requesting modifications to the current set of
  // arguments. The following directives are supported:
  //
  //   # This is a comment.
  //     Lines beginning with '#' are skipped.
  //
  //   --some-flag=some-value
  //     Calls AddArg("--some-flag=some-value").
  //
  //   !--flag-prefix
  //     Removes all arguments beginning with "--flag-prefix".
  //
  //   vmodule=foo=1
  //     Prepends a "foo=1" entry to the --vmodule flag.
  //
  //   enable-features=foo
  //     Appends a "foo" entry to the --enable-features flag.
  //
  //   NAME=VALUE
  //     Calls AddEnvVar("NAME", "VALUE").
  //
  // Any flags beginning with prefixes in |disallowed_prefixes| are disregarded.
  // Returns true on success.
  bool ApplyUserConfig(const base::FilePath& path,
                       const std::set<std::string>& disallowed_prefixes);

  // Returns true if a USE flag named |flag| was set when the system image was
  // built (and additionally listed in the libchromeos-use-flags ebuild so it
  // will be included in the file at kUseFlagsPath).
  bool UseFlagIsSet(const std::string& flag) const;

  // Adds an environment variable to |environment_variables_|. Note that this
  // method does not call setenv(); it is the caller's responsibility to
  // actually export the variables.
  void AddEnvVar(const std::string& name, const std::string& value);

  // Returns the value of an environment variable previously added via
  // AddEnvVar(). Crashes if the variable isn't set. Note that this method does
  // not call getenv().
  std::string ReadEnvVar(const std::string& name) const;

  // Adds a command-line argument. For --vmodule, --enable-features, or
  // --enable-blink-features flags (which contain lists of values that must be
  // merged), use the following dedicated methods instead.
  void AddArg(const std::string& arg);

  // Prepends |pattern| to the --vmodule flag in |arguments_|.
  void AddVmodulePattern(const std::string& pattern);

  // Appends |feature_name| to the --enable-features or --disable-features flag
  // in |arguments_|.
  void AddFeatureEnableOverride(const std::string& feature_name);
  void AddFeatureDisableOverride(const std::string& feature_name);

  // Appends |feature_name| to the --enable-blink-features or
  // --disable-blink-features flag in |arguments_|.
  void AddBlinkFeatureEnableOverride(const std::string& feature_name);
  void AddBlinkFeatureDisableOverride(const std::string& feature_name);

 private:
  // Converts absolute path |path| into a base::FilePath, rooting it under
  // |base_path_for_testing_| if it's non-empty.
  base::FilePath GetPath(const std::string& path) const;

  // Removes arguments beginning with |prefix| from |arguments_|.
  void DeleteArgsWithPrefix(const std::string& prefix);

  // Adds an entry to a flag containing a list of values. For example, for a
  // flag like "--my-list=foo,bar", |flag_name| would be "my-list",
  // |entry_separator| would be ",", and |new_entry| would be "foo" or "bar". If
  // |prepend| is true, |new_entry| will be prepended before existing values;
  // otherwise it will be appended after them.
  void AddListFlagEntry(const std::string& flag_name,
                        const std::string& entry_separator,
                        const std::string& new_entry,
                        bool prepend);

  // Checks if an ASAN build was requested, doing appropriate initialization and
  // returning true if so. Called by InitChromium().
  bool SetUpASAN();

  // Reads .info files in |pepper_plugins_path_| and adds the appropriate
  // arguments to |arguments_|. Called by InitChromium().
  void SetUpPepperPlugins();

  // Add UI- and compositing-related flags to |arguments_|.
  void AddUiFlags();

  // Path under which files are created when running in a test.
  base::FilePath base_path_for_testing_;

  // UID and GID of the user used to run the binary.
  uid_t uid_ = 0;
  gid_t gid_ = 0;

  // USE flags that were set when the system was built.
  std::set<std::string> use_flags_;

  // True if official Chrome OS hardware is being used.
  bool is_chrome_os_hardware_ = false;

  // True if this is a developer system, per the is_developer_end_user command.
  bool is_developer_end_user_ = false;

  // True if this is a test build, per CHROMEOS_RELEASE_TRACK in
  // /etc/lsb-release.
  bool is_test_build_ = false;

  // Data in /etc/lsb-release.
  std::string lsb_data_;

  // Creation time of /etc/lsb-release.
  base::Time lsb_release_time_;

  // Environment variables that the caller should export before starting the
  // executable.
  StringMap environment_variables_;

  // Command-line arguments that the caller should pass to the executable.
  StringVector arguments_;

  // Index in |arguments_| of list-based flags (e.g. --vmodule,
  // --enable-features), keyed by base flag name (e.g. "vmodule",
  // "enable-features"). Flags that have not been set are not included.
  std::map<std::string, int> list_argument_indexes_;
};

}  // namespace ui
}  // namespace chromeos

#endif  // LIBCHROMEOS_UI_CHROMEOS_UI_CHROMIUM_COMMAND_BUILDER_H_
