user_manager_view.h revision 116680a4aac90f2aa7413d9095a592090648e557
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_PROFILES_USER_MANAGER_VIEW_H_
6#define CHROME_BROWSER_UI_VIEWS_PROFILES_USER_MANAGER_VIEW_H_
7
8#include "base/memory/scoped_ptr.h"
9#include "chrome/browser/profiles/profile.h"
10#include "chrome/browser/profiles/profile_window.h"
11#include "ui/views/window/dialog_delegate.h"
12
13class AutoKeepAlive;
14
15namespace views {
16class WebView;
17}
18
19// Dialog widget that contains the Desktop User Manager webui.
20class UserManagerView : public views::DialogDelegateView {
21 public:
22  // Shows the User Manager or re-activates an existing one, focusing the
23  // profile given by |profile_path_to_focus|. Based on the value of
24  // |tutorial_mode|, a tutorial could be shown, in which case
25  // |profile_path_to_focus| is ignored.
26  static void Show(const base::FilePath& profile_path_to_focus,
27                   profiles::UserManagerTutorialMode tutorial_mode);
28
29  // Hide the User Manager.
30  static void Hide();
31
32  // Returns whether or not the User Manager is showing.
33  static bool IsShowing();
34
35 private:
36  friend struct base::DefaultDeleter<UserManagerView>;
37
38  UserManagerView();
39  virtual ~UserManagerView();
40
41  // Creates a new UserManagerView instance for the |guest_profile| and
42  // shows the |url|.
43  static void OnGuestProfileCreated(scoped_ptr<UserManagerView> instance,
44                                    Profile* guest_profile,
45                                    const std::string& url);
46
47  // Creates dialog and initializes UI.
48  void Init(Profile* guest_profile, const GURL& url);
49
50  // views::View:
51  virtual bool AcceleratorPressed(const ui::Accelerator& accelerator) OVERRIDE;
52  virtual gfx::Size GetPreferredSize() const OVERRIDE;
53
54  // views::DialogDelegateView:
55  virtual bool CanResize() const OVERRIDE;
56  virtual bool CanMaximize() const OVERRIDE;
57  virtual base::string16 GetWindowTitle() const OVERRIDE;
58  virtual int GetDialogButtons() const OVERRIDE;
59  virtual void WindowClosing() OVERRIDE;
60  virtual bool UseNewStyleForThisDialog() const OVERRIDE;
61
62  views::WebView* web_view_;
63
64  scoped_ptr<AutoKeepAlive> keep_alive_;
65  // An open User Manager window. There can only be one open at a time. This
66  // is reset to NULL when the window is closed.
67  static UserManagerView* instance_;
68
69  DISALLOW_COPY_AND_ASSIGN(UserManagerView);
70};
71
72#endif  // CHROME_BROWSER_UI_VIEWS_PROFILES_USER_MANAGER_VIEW_H_
73