| // Copyright 2021 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_TEST_BASE_SCOPED_CHANNEL_OVERRIDE_H_ |
| #define CHROME_TEST_BASE_SCOPED_CHANNEL_OVERRIDE_H_ |
| |
| #include "build/branding_buildflags.h" |
| #include "build/build_config.h" |
| |
| #if BUILDFLAG(IS_WIN) |
| #include "chrome/install_static/test/scoped_install_details.h" |
| #elif BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) |
| #include <string> |
| #include "third_party/abseil-cpp/absl/types/optional.h" |
| #endif |
| |
| #if !BUILDFLAG(GOOGLE_CHROME_BRANDING) |
| #error ScopedChannelOverride is only supported for Google Chrome builds. |
| #endif |
| |
| namespace chrome { |
| |
| // Allows a test to override the browser's channel for a limited time (e.g., for |
| // the duration of a test). This minimally impacts the behavior of the functions |
| // in chrome/common/channel_info.h. On Windows, the override is also reflected |
| // in the process-wide install_static::InstallDetails instance. |
| class ScopedChannelOverride { |
| public: |
| enum class Channel { |
| kExtendedStable, |
| kStable, |
| kBeta, |
| kDev, |
| #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA) |
| kCanary, |
| #endif |
| }; |
| |
| explicit ScopedChannelOverride(Channel channel); |
| ~ScopedChannelOverride(); |
| |
| private: |
| #if BUILDFLAG(IS_WIN) |
| install_static::ScopedInstallDetails scoped_install_details_; |
| #elif BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) |
| // The original value of the CHROME_VERSION_EXTRA environment variable. |
| const absl::optional<std::string> old_env_var_; |
| #endif |
| }; |
| |
| } // namespace chrome |
| |
| #endif // CHROME_TEST_BASE_SCOPED_CHANNEL_OVERRIDE_H_ |