Don't compile save_password_infobar_delegate.cc everywhere but Mac and Android
[chromium-blink-merge.git] / chrome / common / channel_info_mac.mm
blobc9a3d6da681a22c51cfe01a56f735b0f90ef5504
1 // Copyright (c) 2012 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.
5 #include "chrome/common/channel_info.h"
7 #import <Foundation/Foundation.h>
9 #include "base/basictypes.h"
10 #include "base/mac/bundle_locations.h"
11 #include "base/strings/sys_string_conversions.h"
12 #include "components/version_info/version_info.h"
14 namespace chrome {
16 std::string GetChannelString() {
17 #if defined(GOOGLE_CHROME_BUILD)
18   // Use the main Chrome application bundle and not the framework bundle.
19   // Keystone keys don't live in the framework.
20   NSBundle* bundle = base::mac::OuterBundle();
21   NSString* channel = [bundle objectForInfoDictionaryKey:@"KSChannelID"];
23   // Only ever return "", "unknown", "beta", "dev", or "canary" in a branded
24   // build.
25   if (![bundle objectForInfoDictionaryKey:@"KSProductID"]) {
26     // This build is not Keystone-enabled, it can't have a channel.
27     channel = @"unknown";
28   } else if (!channel) {
29     // For the stable channel, KSChannelID is not set.
30     channel = @"";
31   } else if ([channel isEqual:@"beta"] ||
32              [channel isEqual:@"dev"] ||
33              [channel isEqual:@"canary"]) {
34     // do nothing.
35   } else {
36     channel = @"unknown";
37   }
39   return base::SysNSStringToUTF8(channel);
40 #else
41   return std::string();
42 #endif
45 version_info::Channel GetChannel() {
46 #if defined(GOOGLE_CHROME_BUILD)
47   std::string channel = GetChannelString();
48   if (channel.empty()) {
49     return version_info::Channel::STABLE;
50   } else if (channel == "beta") {
51     return version_info::Channel::BETA;
52   } else if (channel == "dev") {
53     return version_info::Channel::DEV;
54   } else if (channel == "canary") {
55     return version_info::Channel::CANARY;
56   }
57 #endif
59   return version_info::Channel::UNKNOWN;
62 }  // namespace chrome