1 // Copyright 2018 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/chrome_cleaner/http/user_agent.h"
6 
7 #include "base/notreached.h"
8 #include "base/strings/string_number_conversions.h"
9 
10 namespace chrome_cleaner {
11 
12 namespace {
13 
ArchitectureToString(UserAgent::Architecture architecture)14 const wchar_t* ArchitectureToString(UserAgent::Architecture architecture) {
15   switch (architecture) {
16     case UserAgent::WOW64:
17       return L"; WOW64";
18     case UserAgent::X64:
19       return L"; Win64; x64";
20     case UserAgent::IA64:
21       return L"; Win64; IA64";
22     case UserAgent::X86:
23       return L"";
24     default:
25       NOTREACHED();
26       return L"";
27   }
28 }
29 
30 }  // namespace
31 
UserAgent(base::WStringPiece product_name,base::WStringPiece product_version)32 UserAgent::UserAgent(base::WStringPiece product_name,
33                      base::WStringPiece product_version)
34     : product_name_(product_name),
35       product_version_(product_version),
36       os_major_version_(0),
37       os_minor_version_(0),
38       architecture_(X86) {}
39 
~UserAgent()40 UserAgent::~UserAgent() {}
41 
AsString()42 std::wstring UserAgent::AsString() {
43   return product_name_ + L"/" + product_version_ + L" (Windows NT " +
44          base::NumberToWString(os_major_version_) + L"." +
45          base::NumberToWString(os_minor_version_) +
46          ArchitectureToString(architecture_) + L") WinHTTP/" + winhttp_version_;
47 }
48 
49 }  // namespace chrome_cleaner
50