Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4819)

Unified Diff: chrome/install_static/install_details.h

Issue 2491463002: Revert of Windows install_static refactor. (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/install_static/install_constants.h ('k') | chrome/install_static/install_details.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/install_static/install_details.h
diff --git a/chrome/install_static/install_details.h b/chrome/install_static/install_details.h
deleted file mode 100644
index 7b6d90d85cd8aa62123f1cf27970a8bd8d1a7c8c..0000000000000000000000000000000000000000
--- a/chrome/install_static/install_details.h
+++ /dev/null
@@ -1,172 +0,0 @@
-// Copyright 2016 The Chromium 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 CHROME_INSTALL_STATIC_INSTALL_DETAILS_H_
-#define CHROME_INSTALL_STATIC_INSTALL_DETAILS_H_
-
-#include <memory>
-#include <string>
-
-#include "chrome/install_static/install_constants.h"
-
-namespace install_static {
-
-class PrimaryInstallDetails;
-
-// Details relating to how Chrome is installed. 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
-// for a Chrome process and exports a GetInstallDetailsPayload function used by
-// chrome.exe and chrome.dll to create their own module-specific instances
-// referring to the same underlying payload. See install_modes.h for a gentle
-// introduction to such terms as "brand" and "mode".
-class InstallDetails {
- public:
- // A POD-struct containing the underlying data for an InstallDetails
- // instance. Multiple InstallDetails instances (e.g., one per module in a
- // process) share a single underlying Payload.
- struct Payload {
- // The size (in bytes) of this structure. This serves to verify that all
- // modules in a process have the same definition of the struct.
- size_t size;
-
- // The compile-time version of the product at the time that the process's
- // primary module was built. This is used to detect version skew across
- // modules in the process.
- const char* product_version;
-
- // The brand-specific install mode for this install; see kInstallModes.
- const InstallConstants* mode;
-
- // The friendly name of this Chrome's channel, or an empty string if the
- // brand does not integrate with Google Update.
- const wchar_t* channel;
-
- // The string length of |channel| (not including the string terminator).
- size_t channel_length;
-
- // True if installed in C:\Program Files{, {x86)}; otherwise, false.
- bool system_level;
-
- // True if multi-install.
- bool multi_install;
- };
-
- InstallDetails(const InstallDetails&) = delete;
- InstallDetails(InstallDetails&&) = delete;
- InstallDetails& operator=(const InstallDetails&) = delete;
- virtual ~InstallDetails() = default;
-
- // Returns the instance for this module.
- static const InstallDetails& Get();
-
- // This mode's index into the brand's array of install modes. This will match
- // a brand-specific InstallConstantIndex enumerator.
- int install_mode_index() const { return payload_->mode->index; }
-
- // The mode's install suffix (e.g., " SxS" for canary Chrome), or an empty
- // string for a brand's primary install mode.
- const wchar_t* install_suffix() const {
- return payload_->mode->install_suffix;
- }
-
- // The app GUID with which this mode is registered with Google Update, or an
- // empty string if this brand does not integrate with Google Update.
- const wchar_t* app_guid() const { return payload_->mode->app_guid; }
-
- // True if the mode supports installation at system-level.
- bool supports_system_level() const {
- return payload_->mode->supports_system_level;
- }
-
- // True if the mode supports multi-install.
- bool supports_multi_install() const {
- return payload_->mode->supports_multi_install;
- }
-
- // The install's update channel, or an empty string if the brand does not
- // integrate with Google Update.
- std::wstring channel() const {
- return std::wstring(payload_->channel, payload_->channel_length);
- }
- bool system_level() const { return payload_->system_level; }
- bool multi_install() const { return payload_->multi_install; }
-
- // Returns the path to the installation's ClientState registry key. Returns
- // the path for the binaries if |binaries| and Chrome is
- // multi-install. Otherwise, returns the path for Chrome itself. This registry
- // key is used to hold various installation-related values, including an
- // indication of consent for usage stats.
- std::wstring GetClientStateKeyPath(bool binaries) const;
-
- // Returns the path to the installation's ClientStateMedium registry key.
- // Returns the path for the binaries if |binaries| and Chrome is
- // multi-install. Otherwise, returns the path for Chrome itself. This
- // registry key is used to hold various installation-related values, including
- // an indication of consent for usage stats for a system-level install.
- std::wstring GetClientStateMediumKeyPath(bool binaries) const;
-
- // Returns true if there is an indication of a mismatch between the primary
- // module and this module.
- bool VersionMismatch() const;
-
- // Sets the instance for the process. This must be called only once per
- // process during startup.
- static void SetForProcess(std::unique_ptr<PrimaryInstallDetails> details);
-
- // Returns a pointer to the module's payload so that it may be shared with
- // other modules in the process.
- static const Payload* GetPayload();
-
- // Initializes this module's instance with the payload owned by the process's
- // primary module (the one that used SetForProcess). Said primary module must
- // export the function:
- // extern "C" const install_static::InstallDetails::Payload*
- // GetInstallDetailsPayload();
- static void InitializeFromPrimaryModule(const wchar_t* primary_module_name);
-
- protected:
- explicit InstallDetails(const Payload* payload) : payload_(payload) {}
- const wchar_t* default_channel_name() const {
- return payload_->mode->default_channel_name;
- }
-
- private:
- const Payload* const payload_;
-};
-
-// A kind of InstallDetails that owns its payload. A single instance of this
-// class is initialized early on in process startup (e.g., in chrome_elf for the
-// case of chrome.exe; see InitializeProductDetailsForPrimaryModule). Its
-// underlying data (its "payload") is shared with other interested modules in
-// the process.
-class PrimaryInstallDetails : public InstallDetails {
- public:
- PrimaryInstallDetails();
- PrimaryInstallDetails(const PrimaryInstallDetails&) = delete;
- PrimaryInstallDetails(PrimaryInstallDetails&&) = delete;
- PrimaryInstallDetails& operator=(const PrimaryInstallDetails&) = delete;
-
- void set_mode(const InstallConstants* mode) { payload_.mode = mode; }
- void set_channel(const std::wstring& channel) {
- channel_ = channel;
- payload_.channel = channel_.c_str();
- payload_.channel_length = channel_.size();
- }
- void set_system_level(bool system_level) {
- payload_.system_level = system_level;
- }
- void set_multi_install(bool multi_install) {
- payload_.multi_install = multi_install;
- }
-
- private:
- std::wstring channel_;
- Payload payload_ = Payload();
-};
-
-} // namespace install_static
-
-#endif // CHROME_INSTALL_STATIC_INSTALL_DETAILS_H_
« no previous file with comments | « chrome/install_static/install_constants.h ('k') | chrome/install_static/install_details.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698