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.
5 #include "chrome/browser/omaha_query_params/omaha_query_params.h"
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"
15 const char kUnknown
[] = "unknown";
17 // The request extra information is the OS and architecture, this helps
18 // the server select the right package to be delivered.
20 #if defined(OS_MACOSX)
24 #elif defined(OS_ANDROID)
26 #elif defined(OS_CHROMEOS)
28 #elif defined(OS_LINUX)
30 #elif defined(OS_OPENBSD)
37 #if defined(__amd64__) || defined(_WIN64)
39 #elif defined(__i386__) || defined(_WIN32)
41 #elif defined(__arm__)
43 #elif defined(__arm64__)
45 #elif defined(__mips__)
51 const char kChrome
[] = "chrome";
53 const char kStable
[] = "stable";
54 const char kBeta
[] = "beta";
55 const char kDev
[] = "dev";
56 const char kCanary
[] = "canary";
58 #if defined(GOOGLE_CHROME_BUILD)
59 const char kChromeCrx
[] = "chromecrx";
61 const char kChromiumCrx
[] = "chromiumcrx";
62 #endif // defined(GOOGLE_CHROME_BUILD)
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",
76 GetProdIdString(prod
),
78 chrome::VersionInfo().Version().c_str(),
83 const char* OmahaQueryParams::GetProdIdString(
84 chrome::OmahaQueryParams::ProdId prod
) {
86 case chrome::OmahaQueryParams::CHROME
:
89 case chrome::OmahaQueryParams::CRX
:
90 #if defined(GOOGLE_CHROME_BUILD)
101 const char* OmahaQueryParams::GetOS() {
106 const char* OmahaQueryParams::GetArch() {
111 const char* OmahaQueryParams::GetNaclArch() {
112 #if defined(ARCH_CPU_X86_FAMILY)
113 #if defined(ARCH_CPU_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";
122 #elif defined(ARCH_CPU_ARMEL)
124 #elif defined(ARCH_CPU_ARM64)
126 #elif defined(ARCH_CPU_MIPSEL)
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"
135 const char* OmahaQueryParams::GetChannelString() {
136 switch (chrome::VersionInfo::GetChannel()) {
137 case chrome::VersionInfo::CHANNEL_STABLE
:
140 case chrome::VersionInfo::CHANNEL_BETA
:
143 case chrome::VersionInfo::CHANNEL_DEV
:
146 case chrome::VersionInfo::CHANNEL_CANARY
:
149 case chrome::VersionInfo::CHANNEL_UNKNOWN
:
156 const char* OmahaQueryParams::GetLang() {
157 return g_browser_process
->GetApplicationLocale().c_str();
160 } // namespace chrome