| // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_BROWSER_SIGNIN_H_ |
| #define CHROME_BROWSER_BROWSER_SIGNIN_H_ |
| #pragma once |
| |
| #include <string> |
| |
| #include "base/memory/scoped_ptr.h" |
| #include "chrome/common/net/gaia/google_service_auth_error.h" |
| #include "content/common/notification_observer.h" |
| #include "content/common/notification_registrar.h" |
| |
| class BrowserSigninHtml; |
| class Profile; |
| class ProfileSyncService; |
| class TabContents; |
| |
| // The BrowserSignin class provides a login screen which allows the |
| // user to signin to the browser. Currently the signin is coordinated |
| // through the Chrome Sync logic. |
| // |
| // TODO(johnnyg): Separate this from the sync logic and make it the |
| // sole co-ordinator of browser signin. |
| // |
| // This class should only be accessed on the UI thread. |
| class BrowserSignin : public NotificationObserver { |
| public: |
| explicit BrowserSignin(Profile* profile); |
| virtual ~BrowserSignin(); |
| |
| // The delegate class is invoked on success and failure. |
| class SigninDelegate { |
| public: |
| virtual ~SigninDelegate() {} |
| |
| // The login was successful. |
| virtual void OnLoginSuccess() = 0; |
| |
| // The login failed. |
| virtual void OnLoginFailure(const GoogleServiceAuthError& error) = 0; |
| }; |
| |
| // Request that the user signin, modal to TabContents provided. |
| // If a user is already signed in, this will show a login dialog where |
| // the username is not editable. |
| // |
| // A custom HTML string can be provided that will be displayed next |
| // to the signin dialog. |
| // |
| // Only one sign-in can be in process at a time; if there is one in |
| // progress already it will be canceled in favor of this one. |
| // |
| // The delegate will eventually be called with OnLoginSuccess() or |
| // OnLoginFailure(), but never both. virtual for test override. |
| virtual void RequestSignin(TabContents* tab_contents, |
| const string16& suggested_email, |
| const string16& login_message, |
| SigninDelegate* delegate); |
| |
| // Returns the username of the user currently signed in. If no |
| // user is signed in, returns the empty string. virtual for test |
| // override. |
| virtual std::string GetSignedInUsername() const; |
| |
| // NotificationObserver implementation. |
| virtual void Observe(NotificationType type, |
| const NotificationSource& source, |
| const NotificationDetails& details); |
| |
| ProfileSyncService* GetProfileSyncService() const; |
| |
| // Close the dialog. Delegate's OnLoginFailure method will be called. |
| void Cancel(); |
| |
| private: |
| // Create the HTML Dialog content. |
| BrowserSigninHtml* CreateHtmlDialogUI(); |
| |
| // When the dialog is closed. |
| void OnLoginFinished(); |
| |
| // Turn auth notifications on. |
| void RegisterAuthNotifications(); |
| |
| // Turn auth notifications off. |
| void UnregisterAuthNotifications(); |
| |
| // Show the dialog Tab-Modal. |
| void ShowSigninTabModal(TabContents* tab_contents); |
| |
| // Non-owned pointer to the profile (which owns this object). |
| Profile* profile_; |
| |
| // Suggested email for the current login prompt. |
| string16 suggested_email_; |
| |
| // Current login message. |
| string16 login_message_; |
| |
| // Delegate for the current sign in request. |
| SigninDelegate* delegate_; |
| |
| // Current HTML Dialog information. Pointer is owned by the WebUI it will be |
| // attached to. |
| BrowserSigninHtml* html_dialog_ui_delegate_; |
| |
| NotificationRegistrar registrar_; |
| |
| DISALLOW_COPY_AND_ASSIGN(BrowserSignin); |
| }; |
| |
| |
| #endif // CHROME_BROWSER_BROWSER_SIGNIN_H_ |