user_manager_view.h revision 03b57e008b61dfcb1fbad3aea950ae0e001748b0
1c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// found in the LICENSE file.
458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
5c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#ifndef CHROME_BROWSER_UI_VIEWS_PROFILES_USER_MANAGER_VIEW_H_
6c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#define CHROME_BROWSER_UI_VIEWS_PROFILES_USER_MANAGER_VIEW_H_
758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
8010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "base/memory/scoped_ptr.h"
958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/profiles/profile.h"
1023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "chrome/browser/profiles/profile_window.h"
1158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "ui/views/window/dialog_delegate.h"
1258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
13a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class AutoKeepAlive;
14a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
1558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace views {
1658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class WebView;
1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}
1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Dialog widget that contains the Desktop User Manager webui.
2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class UserManagerView : public views::DialogDelegateView {
2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) public:
2223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Shows the User Manager or re-activates an existing one, focusing the
2323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // profile given by |profile_path_to_focus|. Based on the value of
2423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // |tutorial_mode|, a tutorial could be shown, in which case
2523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // |profile_path_to_focus| is ignored.
2623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  static void Show(const base::FilePath& profile_path_to_focus,
2723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                   profiles::UserManagerTutorialMode tutorial_mode);
280f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
290f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  // Hide the User Manager.
300f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  static void Hide();
310f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
320f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  // Returns whether or not the User Manager is showing.
330f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  static bool IsShowing();
3458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
3558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) private:
36010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  friend struct base::DefaultDeleter<UserManagerView>;
37010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
38010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  UserManagerView();
3958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual ~UserManagerView();
4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
4123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Creates a new UserManagerView instance for the |guest_profile| and
4223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // shows the |url|.
43010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  static void OnGuestProfileCreated(scoped_ptr<UserManagerView> instance,
4403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)                                    const base::FilePath& profile_path_to_focus,
45010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)                                    Profile* guest_profile,
4623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                                    const std::string& url);
4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
48010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  // Creates dialog and initializes UI.
4903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  void Init(const base::FilePath& profile_path_to_focus,
5003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)            Profile* guest_profile,
5103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)            const GURL& url);
52010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
5358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // views::View:
54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual bool AcceleratorPressed(const ui::Accelerator& accelerator) OVERRIDE;
55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual gfx::Size GetPreferredSize() const OVERRIDE;
5658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
5758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // views::DialogDelegateView:
5858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual bool CanResize() const OVERRIDE;
5958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual bool CanMaximize() const OVERRIDE;
60a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual base::string16 GetWindowTitle() const OVERRIDE;
6158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual int GetDialogButtons() const OVERRIDE;
6258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void WindowClosing() OVERRIDE;
6358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual bool UseNewStyleForThisDialog() const OVERRIDE;
6458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
6558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  views::WebView* web_view_;
6658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
67a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  scoped_ptr<AutoKeepAlive> keep_alive_;
6858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // An open User Manager window. There can only be one open at a time. This
6958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // is reset to NULL when the window is closed.
7058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  static UserManagerView* instance_;
7158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
7258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(UserManagerView);
7358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)};
7458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
75c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#endif  // CHROME_BROWSER_UI_VIEWS_PROFILES_USER_MANAGER_VIEW_H_
76