13f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen// Copyright (c) 2010 The Chromium Authors. All rights reserved. 23f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen// Use of this source code is governed by a BSD-style license that can be 33f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen// found in the LICENSE file. 43f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 53f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#include <windows.h> 63f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 73f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#include "base/basictypes.h" 83f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#include "base/string_util.h" 93f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#include "base/win/win_util.h" 103f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#include "base/win/windows_version.h" 113f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#include "testing/gtest/include/gtest/gtest.h" 123f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 133f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsennamespace base { 143f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsennamespace win { 153f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 163f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsennamespace { 173f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 183f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen// Saves the current thread's locale ID when initialized, and restores it when 193f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen// the instance is going out of scope. 203f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsenclass ThreadLocaleSaver { 213f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen public: 223f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen ThreadLocaleSaver() : original_locale_id_(GetThreadLocale()) {} 233f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen ~ThreadLocaleSaver() { SetThreadLocale(original_locale_id_); } 243f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 253f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen private: 263f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen LCID original_locale_id_; 273f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 283f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen DISALLOW_COPY_AND_ASSIGN(ThreadLocaleSaver); 293f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen}; 303f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 313f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen} // namespace 323f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 333f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen// The test is somewhat silly, because the Vista bots some have UAC enabled 343f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen// and some have it disabled. At least we check that it does not crash. 353f50c38dc070f4bb515c1b64450dae14f316474eKristian MonsenTEST(BaseWinUtilTest, TestIsUACEnabled) { 363f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen if (GetVersion() >= base::win::VERSION_VISTA) { 373f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen UserAccountControlIsEnabled(); 383f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen } else { 393f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen EXPECT_TRUE(UserAccountControlIsEnabled()); 403f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen } 413f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen} 423f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 433f50c38dc070f4bb515c1b64450dae14f316474eKristian MonsenTEST(BaseWinUtilTest, TestGetUserSidString) { 443f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen std::wstring user_sid; 453f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen EXPECT_TRUE(GetUserSidString(&user_sid)); 463f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen EXPECT_TRUE(!user_sid.empty()); 473f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen} 483f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 493f50c38dc070f4bb515c1b64450dae14f316474eKristian MonsenTEST(BaseWinUtilTest, TestGetNonClientMetrics) { 503f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen NONCLIENTMETRICS metrics = {0}; 513f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen GetNonClientMetrics(&metrics); 523f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen EXPECT_TRUE(metrics.cbSize > 0); 533f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen EXPECT_TRUE(metrics.iScrollWidth > 0); 543f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen EXPECT_TRUE(metrics.iScrollHeight > 0); 553f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen} 563f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 573f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen} // namespace win 583f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen} // namespace base 59