15c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Copyright 2014 The Chromium Authors. All rights reserved. 25c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Use of this source code is governed by a BSD-style license that can be 35c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// found in the LICENSE file. 45c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 55c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#ifndef CHROME_BROWSER_UI_VIEWS_ELEVATION_ICON_SETTER_H_ 65c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#define CHROME_BROWSER_UI_VIEWS_ELEVATION_ICON_SETTER_H_ 75c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 85c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/memory/scoped_ptr.h" 95c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/memory/weak_ptr.h" 105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 115c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuclass SkBitmap; 125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liunamespace views { 145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuclass LabelButton; 155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// On Windows, badges a button with a "UAC shield" icon to indicate that 185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// clicking will trigger a UAC elevation prompt. Does nothing on other 195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// platforms. 205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuclass ElevationIconSetter { 215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu public: 225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // |button| must be guaranteed to be alive throughout this class' lifetime! 235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu explicit ElevationIconSetter(views::LabelButton* button); 245c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu ~ElevationIconSetter(); 255c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu private: 275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu void SetButtonIcon(scoped_ptr<SkBitmap> icon); 285c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 295c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu views::LabelButton* button_; 305c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu base::WeakPtrFactory<ElevationIconSetter> weak_factory_; 315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu DISALLOW_COPY_AND_ASSIGN(ElevationIconSetter); 335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}; 345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#endif // CHROME_BROWSER_UI_VIEWS_ELEVATION_ICON_SETTER_H_ 36