1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "chrome/common/channel_info.h"
6 
7 #include "base/system/sys_info.h"
8 #include "build/branding_buildflags.h"
9 #include "chromeos/crosapi/cpp/crosapi_constants.h"
10 #include "components/version_info/version_info.h"
11 
12 namespace chrome {
13 namespace {
14 
15 version_info::Channel g_chromeos_channel = version_info::Channel::UNKNOWN;
16 
17 #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
18 // Sets the |g_chromeos_channel|.
SetChannel(const std::string & channel)19 void SetChannel(const std::string& channel) {
20   if (channel == crosapi::kReleaseChannelStable)
21     g_chromeos_channel = version_info::Channel::STABLE;
22   else if (channel == crosapi::kReleaseChannelBeta)
23     g_chromeos_channel = version_info::Channel::BETA;
24   else if (channel == crosapi::kReleaseChannelDev)
25     g_chromeos_channel = version_info::Channel::DEV;
26   else if (channel == crosapi::kReleaseChannelCanary)
27     g_chromeos_channel = version_info::Channel::CANARY;
28   else
29     g_chromeos_channel = version_info::Channel::UNKNOWN;
30 }
31 #endif
32 
33 }  // namespace
34 
GetChannelName()35 std::string GetChannelName() {
36 #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
37   switch (GetChannel()) {
38     case version_info::Channel::STABLE:
39       return std::string();
40     case version_info::Channel::BETA:
41       return "beta";
42     case version_info::Channel::DEV:
43       return "dev";
44     case version_info::Channel::CANARY:
45       return "canary";
46     default:
47       return "unknown";
48   }
49 #endif
50   return std::string();
51 }
52 
GetChannel()53 version_info::Channel GetChannel() {
54   static bool is_channel_set = false;
55   if (is_channel_set)
56     return g_chromeos_channel;
57 
58 #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
59   std::string channel;
60   if (base::SysInfo::GetLsbReleaseValue(crosapi::kChromeOSReleaseTrack,
61                                         &channel)) {
62     SetChannel(channel);
63     is_channel_set = true;
64   }
65 #endif
66   return g_chromeos_channel;
67 }
68 
GetChannelSuffixForDataDir()69 std::string GetChannelSuffixForDataDir() {
70   // ChromeOS doesn't support side-by-side installations.
71   return std::string();
72 }
73 
74 }  // namespace chrome
75