| Index: chrome/install_static/install_details.h
|
| diff --git a/chrome/install_static/install_details.h b/chrome/install_static/install_details.h
|
| index 9a9360d55129587977ac856eaa1f3eb382ac0b77..6fb09d9efc2f58951986804c46cc31efce87964a 100644
|
| --- a/chrome/install_static/install_details.h
|
| +++ b/chrome/install_static/install_details.h
|
| @@ -5,18 +5,21 @@
|
| #ifndef CHROME_INSTALL_STATIC_INSTALL_DETAILS_H_
|
| #define CHROME_INSTALL_STATIC_INSTALL_DETAILS_H_
|
|
|
| +#include <assert.h>
|
| +
|
| #include <memory>
|
| #include <string>
|
|
|
| #include "chrome/install_static/install_constants.h"
|
| #include "chrome/install_static/install_modes.h"
|
| +#include "chrome/install_static/install_util.h"
|
|
|
| namespace install_static {
|
|
|
| class PrimaryInstallDetails;
|
| class ScopedInstallDetails;
|
|
|
| -// Details relating to how Chrome is installed. This class and
|
| +// Details relating to how Chrome is installed or being run. This class and
|
| // PrimaryInstallDetails (below) are used in tandem so that one instance of the
|
| // latter may be initialized early during process startup and then shared with
|
| // other modules in the process. For example, chrome_elf creates the instance
|
| @@ -59,6 +62,14 @@ class InstallDetails {
|
|
|
| // True if installed in C:\Program Files{, {x86)}; otherwise, false.
|
| bool system_level;
|
| +
|
| + // The user data directory. An empty value is interpreted as a failure to
|
| + // determine the user data directory.
|
| + const wchar_t* user_data_dir;
|
| +
|
| + // An invalid user data directory that was provided by the user, or the
|
| + // empty string.
|
| + const wchar_t* invalid_user_data_dir;
|
| };
|
|
|
| InstallDetails(const InstallDetails&) = delete;
|
| @@ -152,6 +163,19 @@ class InstallDetails {
|
|
|
| bool system_level() const { return payload_->system_level; }
|
|
|
| + std::wstring user_data_dir() const {
|
| + assert(CurrentProcessNeedsProfileDir());
|
| + return payload_->user_data_dir ? std::wstring(payload_->user_data_dir)
|
| + : std::wstring();
|
| + }
|
| +
|
| + std::wstring invalid_user_data_dir() const {
|
| + assert(CurrentProcessNeedsProfileDir());
|
| + return payload_->invalid_user_data_dir
|
| + ? std::wstring(payload_->invalid_user_data_dir)
|
| + : std::wstring();
|
| + }
|
| +
|
| // Returns the path to the installation's ClientState registry key. This
|
| // registry key is used to hold various installation-related values, including
|
| // an indication of consent for usage stats.
|
| @@ -206,6 +230,7 @@ class PrimaryInstallDetails : public InstallDetails {
|
| PrimaryInstallDetails(const PrimaryInstallDetails&) = delete;
|
| PrimaryInstallDetails(PrimaryInstallDetails&&) = delete;
|
| PrimaryInstallDetails& operator=(const PrimaryInstallDetails&) = delete;
|
| + ~PrimaryInstallDetails() override;
|
|
|
| void set_mode(const InstallConstants* mode) { payload_.mode = mode; }
|
| void set_channel(const std::wstring& channel) {
|
| @@ -224,11 +249,21 @@ class PrimaryInstallDetails : public InstallDetails {
|
| void set_system_level(bool system_level) {
|
| payload_.system_level = system_level;
|
| }
|
| + void set_user_data_dir(const std::wstring& user_data_dir) {
|
| + user_data_dir_ = user_data_dir;
|
| + payload_.user_data_dir = user_data_dir_.c_str();
|
| + }
|
| + void set_invalid_user_data_dir(const std::wstring& invalid_user_data_dir) {
|
| + invalid_user_data_dir_ = invalid_user_data_dir;
|
| + payload_.invalid_user_data_dir = invalid_user_data_dir_.c_str();
|
| + }
|
|
|
| private:
|
| std::wstring channel_;
|
| std::wstring update_ap_;
|
| std::wstring update_cohort_name_;
|
| + std::wstring user_data_dir_;
|
| + std::wstring invalid_user_data_dir_;
|
| Payload payload_ = Payload();
|
| };
|
|
|
|
|