1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_UI_VIEWS_ELEVATION_ICON_SETTER_H_
6#define CHROME_BROWSER_UI_VIEWS_ELEVATION_ICON_SETTER_H_
7
8#include "base/memory/scoped_ptr.h"
9#include "base/memory/weak_ptr.h"
10
11class SkBitmap;
12
13namespace views {
14class LabelButton;
15}
16
17// On Windows, badges a button with a "UAC shield" icon to indicate that
18// clicking will trigger a UAC elevation prompt.  Does nothing on other
19// platforms.
20class ElevationIconSetter {
21 public:
22  // |button| must be guaranteed to be alive throughout this class' lifetime!
23  explicit ElevationIconSetter(views::LabelButton* button);
24  ~ElevationIconSetter();
25
26 private:
27  void SetButtonIcon(scoped_ptr<SkBitmap> icon);
28
29  views::LabelButton* button_;
30  base::WeakPtrFactory<ElevationIconSetter> weak_factory_;
31
32  DISALLOW_COPY_AND_ASSIGN(ElevationIconSetter);
33};
34
35#endif  // CHROME_BROWSER_UI_VIEWS_ELEVATION_ICON_SETTER_H_
36