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