mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-12-01 01:36:09 +03:00
63 lines
1.8 KiB
C++
63 lines
1.8 KiB
C++
|
// Copyright 2018 The Chromium Authors. All rights reserved.
|
||
|
// Use of this source code is governed by a BSD-style license that can be
|
||
|
// found in the LICENSE file.
|
||
|
|
||
|
#include "base/test/scoped_os_info_override_win.h"
|
||
|
|
||
|
#include <windows.h>
|
||
|
|
||
|
#include "base/win/windows_version.h"
|
||
|
|
||
|
namespace base {
|
||
|
namespace test {
|
||
|
|
||
|
ScopedOSInfoOverride::ScopedOSInfoOverride(Type type)
|
||
|
: original_info_(base::win::OSInfo::GetInstance()),
|
||
|
overriding_info_(CreateInfoOfType(type)) {
|
||
|
*base::win::OSInfo::GetInstanceStorage() = overriding_info_.get();
|
||
|
}
|
||
|
|
||
|
ScopedOSInfoOverride::~ScopedOSInfoOverride() {
|
||
|
*base::win::OSInfo::GetInstanceStorage() = original_info_;
|
||
|
}
|
||
|
|
||
|
// static
|
||
|
ScopedOSInfoOverride::UniqueOsInfo ScopedOSInfoOverride::CreateInfoOfType(
|
||
|
Type type) {
|
||
|
_OSVERSIONINFOEXW version_info = {sizeof(version_info)};
|
||
|
_SYSTEM_INFO system_info = {};
|
||
|
int os_type = 0;
|
||
|
|
||
|
switch (type) {
|
||
|
case Type::kWin10Pro:
|
||
|
case Type::kWin10Home:
|
||
|
version_info.dwMajorVersion = 10;
|
||
|
version_info.dwMinorVersion = 0;
|
||
|
version_info.dwBuildNumber = 15063;
|
||
|
version_info.wServicePackMajor = 0;
|
||
|
version_info.wServicePackMinor = 0;
|
||
|
version_info.szCSDVersion[0] = 0;
|
||
|
version_info.wProductType = VER_NT_WORKSTATION;
|
||
|
version_info.wSuiteMask = VER_SUITE_PERSONAL;
|
||
|
|
||
|
system_info.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_AMD64;
|
||
|
system_info.dwNumberOfProcessors = 1;
|
||
|
system_info.dwAllocationGranularity = 8;
|
||
|
|
||
|
os_type =
|
||
|
type == Type::kWin10Home ? PRODUCT_HOME_BASIC : PRODUCT_PROFESSIONAL;
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
return UniqueOsInfo(new base::win::OSInfo(version_info, system_info, os_type),
|
||
|
&ScopedOSInfoOverride::deleter);
|
||
|
}
|
||
|
|
||
|
// static
|
||
|
void ScopedOSInfoOverride::deleter(base::win::OSInfo* info) {
|
||
|
delete info;
|
||
|
}
|
||
|
|
||
|
} // namespace test
|
||
|
} // namespace base
|