Index: chrome/browser/ui/cocoa/browser/profile_chooser_controller.h |
diff --git a/chrome/browser/ui/cocoa/browser/profile_chooser_controller.h b/chrome/browser/ui/cocoa/browser/profile_chooser_controller.h |
index 9b95eee8e64ac6c996fec99f96ce4f8ead745ae6..4efca94f1cd4a4f339e2dbc839ec9c7f4057ced6 100644 |
--- a/chrome/browser/ui/cocoa/browser/profile_chooser_controller.h |
+++ b/chrome/browser/ui/cocoa/browser/profile_chooser_controller.h |
@@ -6,26 +6,65 @@ |
#define CHROME_BROWSER_UI_COCOA_BROWSER_PROFILE_CHOOSER_CONTROLLER_H_ |
#import <Cocoa/Cocoa.h> |
+#include <map> |
#include "base/memory/scoped_ptr.h" |
#import "chrome/browser/ui/cocoa/base_bubble_controller.h" |
class AvatarMenu; |
+class ActiveProfileObserverBridge; |
class Browser; |
+class ProfileOAuth2TokenService; |
+ |
+namespace content { |
+class WebContents; |
+} |
// This window controller manages the bubble that displays a "menu" of profiles. |
// It is brought open by clicking on the avatar icon in the window frame. |
@interface ProfileChooserController : BaseBubbleController { |
@private |
+ // Different views that can be displayed in the bubble. |
+ enum BubbleViewMode { |
+ PROFILE_CHOOSER_VIEW, // Shows a "fast profile switcher" view. |
+ ACCOUNT_MANAGEMENT_VIEW, // Shows a list of accounts for the active user. |
+ GAIA_SIGNIN_VIEW, // Shows a web view for primary sign in. |
+ GAIA_ADD_ACCOUNT_VIEW // Shows a web view for adding secondary accounts. |
+ }; |
+ |
// The menu that contains the data from the backend. |
scoped_ptr<AvatarMenu> avatarMenu_; |
+ // An observer to be notified when the OAuth2 tokens change or the avatar |
+ // menu model updates for the active profile. |
+ scoped_ptr<ActiveProfileObserverBridge> observer_; |
+ |
// The browser that launched the bubble. Not owned. |
Browser* browser_; |
+ |
+ // Active view mode. |
+ BubbleViewMode viewMode_; |
+ |
+ // List of the full, un-elided accounts for the active profile. The keys are |
+ // generated used to tag the UI buttons, and the values are the original |
+ // emails displayed by the buttons. |
+ std::map<int, std::string> currentProfileAccounts_; |
+ |
+ // Web contents used by the inline signin view. |
+ scoped_ptr<content::WebContents> webContents_; |
+ |
+ // Whether the bubble is displayed for an active guest profile. |
+ BOOL isGuestSession_; |
} |
- (id)initWithBrowser:(Browser*)browser anchoredAt:(NSPoint)point; |
+// Creates all the subviews of the avatar bubble for |viewToDisplay|. |
+- (void)initMenuContentsWithView:(BubbleViewMode)viewToDisplay; |
+ |
+// Returns the view currently displayed by the bubble. |
+- (BubbleViewMode)viewMode; |
+ |
// Creates a new profile. |
- (IBAction)addNewProfile:(id)sender; |
@@ -50,6 +89,11 @@ class Browser; |
// Shows the signin page. |
- (IBAction)showSigninPage:(id)sender; |
+// Adds an account to the active profile. |
+- (IBAction)addAccount:(id)sender; |
+ |
+// Deletes an account from the active profile. |
+- (IBAction)removeAccount:(id)sender; |
@end |
// Testing API ///////////////////////////////////////////////////////////////// |