Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / omaha_query_params / omaha_query_params.cc
1 // Copyright 2014 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/browser/omaha_query_params/omaha_query_params.h"
6
7 #include "base/compiler_specific.h"
8 #include "base/strings/stringprintf.h"
9 #include "base/win/windows_version.h"
10 #include "chrome/browser/browser_process.h"
11 #include "chrome/common/chrome_version_info.h"
12
13 namespace {
14
15 const char kUnknown[] = "unknown";
16
17 // The request extra information is the OS and architecture, this helps
18 // the server select the right package to be delivered.
19 const char kOs[] =
20 #if defined(OS_MACOSX)
21     "mac";
22 #elif defined(OS_WIN)
23     "win";
24 #elif defined(OS_ANDROID)
25     "android";
26 #elif defined(OS_CHROMEOS)
27     "cros";
28 #elif defined(OS_LINUX)
29     "linux";
30 #elif defined(OS_OPENBSD)
31     "openbsd";
32 #else
33 #error "unknown os"
34 #endif
35
36 const char kArch[] =
37 #if defined(__amd64__) || defined(_WIN64)
38     "x64";
39 #elif defined(__i386__) || defined(_WIN32)
40     "x86";
41 #elif defined(__arm__)
42     "arm";
43 #elif defined(__aarch64__)
44     "arm64";
45 #elif defined(__mips__)
46     "mipsel";
47 #else
48 #error "unknown arch"
49 #endif
50
51 const char kChrome[] = "chrome";
52
53 const char kStable[] = "stable";
54 const char kBeta[] = "beta";
55 const char kDev[] = "dev";
56 const char kCanary[] = "canary";
57
58 #if defined(GOOGLE_CHROME_BUILD)
59 const char kChromeCrx[] = "chromecrx";
60 #else
61 const char kChromiumCrx[] = "chromiumcrx";
62 #endif  // defined(GOOGLE_CHROME_BUILD)
63
64 }  // namespace
65
66 namespace chrome {
67
68 // static
69 std::string OmahaQueryParams::Get(ProdId prod) {
70   return base::StringPrintf(
71       "os=%s&arch=%s&nacl_arch=%s&prod=%s&prodchannel=%s"
72           "&prodversion=%s&lang=%s",
73       kOs,
74       kArch,
75       GetNaclArch(),
76       GetProdIdString(prod),
77       GetChannelString(),
78       chrome::VersionInfo().Version().c_str(),
79       GetLang());
80 }
81
82 // static
83 const char* OmahaQueryParams::GetProdIdString(
84     chrome::OmahaQueryParams::ProdId prod) {
85   switch (prod) {
86     case chrome::OmahaQueryParams::CHROME:
87       return kChrome;
88       break;
89     case chrome::OmahaQueryParams::CRX:
90 #if defined(GOOGLE_CHROME_BUILD)
91       return kChromeCrx;
92 #else
93       return kChromiumCrx;
94 #endif
95       break;
96   }
97   return kUnknown;
98 }
99
100 // static
101 const char* OmahaQueryParams::GetOS() {
102   return kOs;
103 }
104
105 // static
106 const char* OmahaQueryParams::GetArch() {
107   return kArch;
108 }
109
110 // static
111 const char* OmahaQueryParams::GetNaclArch() {
112 #if defined(ARCH_CPU_X86_FAMILY)
113 #if defined(ARCH_CPU_X86_64)
114   return "x86-64";
115 #elif defined(OS_WIN)
116   bool x86_64 = (base::win::OSInfo::GetInstance()->wow64_status() ==
117                  base::win::OSInfo::WOW64_ENABLED);
118   return x86_64 ? "x86-64" : "x86-32";
119 #else
120   return "x86-32";
121 #endif
122 #elif defined(ARCH_CPU_ARMEL)
123   return "arm";
124 #elif defined(ARCH_CPU_ARM64)
125   return "arm64";
126 #elif defined(ARCH_CPU_MIPSEL)
127   return "mips32";
128 #else
129 // NOTE: when adding new values here, please remember to update the
130 // comment in the .h file about possible return values from this function.
131 #error "You need to add support for your architecture here"
132 #endif
133 }
134
135 const char* OmahaQueryParams::GetChannelString() {
136   switch (chrome::VersionInfo::GetChannel()) {
137     case chrome::VersionInfo::CHANNEL_STABLE:
138       return kStable;
139       break;
140     case chrome::VersionInfo::CHANNEL_BETA:
141       return kBeta;
142       break;
143     case chrome::VersionInfo::CHANNEL_DEV:
144       return kDev;
145       break;
146     case chrome::VersionInfo::CHANNEL_CANARY:
147       return kCanary;
148       break;
149     case chrome::VersionInfo::CHANNEL_UNKNOWN:
150       return kUnknown;
151       break;
152   }
153   return kUnknown;
154 }
155
156 const char* OmahaQueryParams::GetLang() {
157   return g_browser_process->GetApplicationLocale().c_str();
158 }
159
160 }  // namespace chrome