Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3387)

Unified Diff: chrome/browser/ui/views/frame/avatar_button_manager.cc

Issue 1608843002: Start untangling the avatar switcher from BrowserNonClientFrameView (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@20160119-MacViewsBrowser-Compile
Patch Set: rename, enum class Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/views/frame/avatar_button_manager.cc
diff --git a/chrome/browser/ui/views/frame/avatar_button_manager.cc b/chrome/browser/ui/views/frame/avatar_button_manager.cc
new file mode 100644
index 0000000000000000000000000000000000000000..49b82726c26405318cc1600f5b7200201d592ec0
--- /dev/null
+++ b/chrome/browser/ui/views/frame/avatar_button_manager.cc
@@ -0,0 +1,49 @@
+// Copyright 2016 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.
+
+#include "chrome/browser/ui/views/frame/avatar_button_manager.h"
+
+#include "chrome/browser/ui/view_ids.h"
+#include "chrome/browser/ui/views/frame/browser_frame.h"
+#include "chrome/browser/ui/views/frame/browser_view.h"
+#include "chrome/browser/ui/views/profiles/new_avatar_button.h"
+
+AvatarButtonManager::AvatarButtonManager(BrowserNonClientFrameView* frame_view)
+ : frame_view_(frame_view), view_(nullptr) {}
+
+void AvatarButtonManager::Update(AvatarButtonStyle style) {
+ BrowserView* browser_view = frame_view_->browser_view();
+ BrowserFrame* frame = frame_view_->frame();
+
+ // This should never be called in incognito mode.
+ DCHECK(browser_view->IsRegularOrGuestSession());
+
+ if (browser_view->ShouldShowAvatar()) {
+ if (!view_) {
+ view_ = new NewAvatarButton(this, style, browser_view->browser());
+ view_->set_id(VIEW_ID_NEW_AVATAR_BUTTON);
+ frame_view_->AddChildView(view_);
+ frame->GetRootView()->Layout();
+ }
+ } else if (view_) {
+ delete view_;
+ view_ = nullptr;
+ frame->GetRootView()->Layout();
+ }
+}
+
+void AvatarButtonManager::ButtonPressed(views::Button* sender,
+ const ui::Event& event) {
+ DCHECK_EQ(view_, sender);
+ BrowserWindow::AvatarBubbleMode mode =
+ BrowserWindow::AVATAR_BUBBLE_MODE_DEFAULT;
+ if ((event.IsMouseEvent() &&
+ static_cast<const ui::MouseEvent&>(event).IsRightMouseButton()) ||
+ (event.type() == ui::ET_GESTURE_LONG_PRESS)) {
+ mode = BrowserWindow::AVATAR_BUBBLE_MODE_FAST_USER_SWITCH;
+ }
+ frame_view_->browser_view()->ShowAvatarBubbleFromAvatarButton(
+ mode, signin::ManageAccountsParams(),
+ signin_metrics::AccessPoint::ACCESS_POINT_AVATAR_BUBBLE_SIGN_IN);
+}
« no previous file with comments | « chrome/browser/ui/views/frame/avatar_button_manager.h ('k') | chrome/browser/ui/views/frame/browser_frame.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698