blob: ade779e8c50d86e951760d74d9dadd8c57189dea [file] [log] [blame]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ui/gfx/win/get_elevation_icon.h"
#include <windows.h>
#include <shellapi.h>
#include "base/win/com_init_util.h"
#include "base/win/scoped_gdi_object.h"
#include "base/win/win_util.h"
#include "ui/gfx/geometry/size.h"
#include "ui/gfx/icon_util.h"
namespace gfx::win {
SkBitmap GetElevationIcon() {
base::win::AssertComInitialized();
if (!base::win::UserAccountControlIsEnabled()) {
return {};
}
SHSTOCKICONINFO icon_info = {.cbSize = sizeof(SHSTOCKICONINFO)};
if (FAILED(::SHGetStockIconInfo(SIID_SHIELD, SHGSI_ICON | SHGSI_SMALLICON,
&icon_info))) {
return {};
}
base::win::ScopedGDIObject<HICON> shield_icon(icon_info.hIcon);
return IconUtil::CreateSkBitmapFromHICON(
shield_icon.get(), gfx::Size(::GetSystemMetrics(SM_CXSMICON),
::GetSystemMetrics(SM_CYSMICON)));
}
} // namespace gfx::win