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