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