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 "components/version_info/version_info.h"
10 
11 namespace chrome {
12 namespace {
13 
14 version_info::Channel g_chromeos_channel = version_info::Channel::UNKNOWN;
15 
16 #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
17 // Sets the |g_chromeos_channel|.
SetChannel(const std::string & channel)18 void SetChannel(const std::string& channel) {
19   if (channel == "stable-channel")
20     g_chromeos_channel = version_info::Channel::STABLE;
21   else if (channel == "beta-channel")
22     g_chromeos_channel = version_info::Channel::BETA;
23   else if (channel == "dev-channel")
24     g_chromeos_channel = version_info::Channel::DEV;
25   else if (channel == "canary-channel")
26     g_chromeos_channel = version_info::Channel::CANARY;
27   else
28     g_chromeos_channel = version_info::Channel::UNKNOWN;
29 }
30 #endif
31 
32 }  // namespace
33 
GetChannelName()34 std::string GetChannelName() {
35 #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
36   switch (GetChannel()) {
37     case version_info::Channel::STABLE:
38       return std::string();
39     case version_info::Channel::BETA:
40       return "beta";
41     case version_info::Channel::DEV:
42       return "dev";
43     case version_info::Channel::CANARY:
44       return "canary";
45     default:
46       return "unknown";
47   }
48 #endif
49   return std::string();
50 }
51 
GetChannel()52 version_info::Channel GetChannel() {
53   static bool is_channel_set = false;
54   if (is_channel_set)
55     return g_chromeos_channel;
56 
57 #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
58   static const char kChromeOSReleaseTrack[] = "CHROMEOS_RELEASE_TRACK";
59   std::string channel;
60   if (base::SysInfo::GetLsbReleaseValue(kChromeOSReleaseTrack, &channel)) {
61     SetChannel(channel);
62     is_channel_set = true;
63   }
64 #endif
65   return g_chromeos_channel;
66 }
67 
GetChannelSuffixForDataDir()68 std::string GetChannelSuffixForDataDir() {
69   // ChromeOS doesn't support side-by-side installations.
70   return std::string();
71 }
72 
73 }  // namespace chrome
74