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

Unified Diff: ash/system/user/user_view.cc

Issue 2835233005: Revert of Introduce a type of View background that stays in sync with its host (Closed)
Patch Set: Created 3 years, 8 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: ash/system/user/user_view.cc
diff --git a/ash/system/user/user_view.cc b/ash/system/user/user_view.cc
index 56a77293ae814a47a319e392ea49780756d4dce6..7bdb4782dd6aa5dd7a6fec4f187bc5bcef386a86 100644
--- a/ash/system/user/user_view.cc
+++ b/ash/system/user/user_view.cc
@@ -37,7 +37,6 @@
#include "ui/gfx/color_utils.h"
#include "ui/gfx/geometry/insets.h"
#include "ui/gfx/paint_vector_icon.h"
-#include "ui/native_theme/native_theme.h"
#include "ui/views/controls/button/label_button.h"
#include "ui/views/controls/label.h"
#include "ui/views/controls/separator.h"
@@ -74,7 +73,8 @@
}
// Creates the view shown in the user switcher popup ("AddUserMenuOption").
-views::View* CreateAddUserView(AddUserSessionPolicy policy) {
+views::View* CreateAddUserView(AddUserSessionPolicy policy,
+ views::ButtonListener* listener) {
auto* view = new views::View;
const int icon_padding = (kMenuButtonSize - kMenuIconSize) / 2;
auto* layout =
@@ -82,8 +82,8 @@
kTrayPopupLabelHorizontalPadding + icon_padding);
layout->set_minimum_cross_axis_size(kTrayPopupItemMinHeight);
view->SetLayoutManager(layout);
- view->set_background(views::Background::CreateThemedSolidBackground(
- view, ui::NativeTheme::kColorId_BubbleBackground));
+ view->set_background(
+ views::Background::CreateSolidBackground(kBackgroundColor));
int message_id = 0;
switch (policy) {
@@ -124,6 +124,13 @@
view->SetBorder(views::CreateEmptyBorder(vertical_padding, icon_padding,
vertical_padding,
kTrayPopupLabelHorizontalPadding));
+ if (policy == AddUserSessionPolicy::ALLOWED) {
+ auto* button =
+ new ButtonFromView(view, listener, TrayPopupInkDropStyle::INSET_BOUNDS);
+ button->SetAccessibleName(
+ l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_SIGN_IN_ANOTHER_ACCOUNT));
+ return button;
+ }
return view;
}
@@ -221,11 +228,11 @@
}
UserView::~UserView() {
- HideUserDropdownWidget();
+ RemoveAddUserMenuOption();
}
TrayUser::TestState UserView::GetStateForTest() const {
- if (user_dropdown_widget_)
+ if (add_menu_option_)
return add_user_enabled_ ? TrayUser::ACTIVE : TrayUser::ACTIVE_BUT_DISABLED;
// If the container is the user card view itself, there's no ButtonFromView
@@ -250,13 +257,13 @@
void UserView::ButtonPressed(views::Button* sender, const ui::Event& event) {
if (sender == logout_button_) {
ShellPort::Get()->RecordUserMetricsAction(UMA_STATUS_AREA_SIGN_OUT);
- HideUserDropdownWidget();
+ RemoveAddUserMenuOption();
Shell::Get()->system_tray_controller()->SignOut();
} else if (sender == user_card_container_ &&
IsMultiProfileSupportedAndUserActive()) {
- ToggleUserDropdownWidget();
- } else if (user_dropdown_widget_ &&
- sender->GetWidget() == user_dropdown_widget_.get()) {
+ ToggleAddUserMenuOption();
+ } else if (add_menu_option_ &&
+ sender->GetWidget() == add_menu_option_.get()) {
DCHECK_EQ(Shell::Get()->session_controller()->NumberOfLoggedInUsers(),
sender->parent()->child_count() - 1);
const int index_in_add_menu = sender->parent()->GetIndexOf(sender);
@@ -268,7 +275,7 @@
const int user_index = index_in_add_menu;
SwitchUser(user_index);
}
- HideUserDropdownWidget();
+ RemoveAddUserMenuOption();
owner_->system_tray()->CloseSystemBubble();
} else {
NOTREACHED();
@@ -277,7 +284,7 @@
void UserView::OnWillChangeFocus(View* focused_before, View* focused_now) {
if (focused_now)
- HideUserDropdownWidget();
+ RemoveAddUserMenuOption();
}
void UserView::OnDidChangeFocus(View* focused_before, View* focused_now) {
@@ -307,16 +314,16 @@
AddChildViewAt(user_card_container_, 0);
}
-void UserView::ToggleUserDropdownWidget() {
- if (user_dropdown_widget_) {
- HideUserDropdownWidget();
+void UserView::ToggleAddUserMenuOption() {
+ if (add_menu_option_) {
+ RemoveAddUserMenuOption();
return;
}
// Note: We do not need to install a global event handler to delete this
// item since it will destroyed automatically before the menu / user menu item
// gets destroyed..
- user_dropdown_widget_.reset(new views::Widget);
+ add_menu_option_.reset(new views::Widget);
views::Widget::InitParams params;
params.type = views::Widget::InitParams::TYPE_MENU;
params.keep_on_top = true;
@@ -327,9 +334,9 @@
WmWindow::Get(GetWidget()->GetNativeWindow())
->GetRootWindowController()
->ConfigureWidgetInitParamsForContainer(
- user_dropdown_widget_.get(),
- kShellWindowId_DragImageAndTooltipContainer, &params);
- user_dropdown_widget_->Init(params);
+ add_menu_option_.get(), kShellWindowId_DragImageAndTooltipContainer,
+ &params);
+ add_menu_option_->Init(params);
const SessionController* const session_controller =
Shell::Get()->session_controller();
@@ -345,63 +352,48 @@
int row_height = bounds.height();
views::View* container = new UserDropdownWidgetContents(
- base::Bind(&UserView::HideUserDropdownWidget, base::Unretained(this)));
- views::View* add_user_view = CreateAddUserView(add_user_policy);
- const SkColor bg_color = add_user_view->background()->get_color();
+ base::Bind(&UserView::RemoveAddUserMenuOption, base::Unretained(this)));
container->SetBorder(views::CreatePaddedBorder(
- views::CreateSolidSidedBorder(0, 0, 0, kSeparatorWidth, bg_color),
+ views::CreateSolidSidedBorder(0, 0, 0, kSeparatorWidth, kBackgroundColor),
gfx::Insets(row_height, 0, 0, 0)));
-
- // Create the contents aside from the empty window through which the active
- // user is seen.
views::View* user_dropdown_padding = new views::View();
user_dropdown_padding->SetBorder(views::CreateSolidSidedBorder(
- kMenuSeparatorVerticalPadding - kSeparatorWidth, 0, 0, 0, bg_color));
+ kMenuSeparatorVerticalPadding - kSeparatorWidth, 0, 0, 0,
+ kBackgroundColor));
user_dropdown_padding->SetLayoutManager(
new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 0));
views::Separator* separator = new views::Separator();
separator->SetPreferredHeight(kSeparatorWidth);
- separator->SetColor(
- color_utils::GetResultingPaintColor(kMenuSeparatorColor, bg_color));
+ separator->SetColor(color_utils::GetResultingPaintColor(kMenuSeparatorColor,
+ kBackgroundColor));
const int separator_horizontal_padding =
(kTrayPopupItemMinStartWidth - kTrayItemSize) / 2;
- separator->SetBorder(
- views::CreateSolidSidedBorder(0, separator_horizontal_padding, 0,
- separator_horizontal_padding, bg_color));
+ separator->SetBorder(views::CreateSolidSidedBorder(
+ 0, separator_horizontal_padding, 0, separator_horizontal_padding,
+ kBackgroundColor));
user_dropdown_padding->AddChildView(separator);
- // Add other logged in users.
for (int i = 1; i < session_controller->NumberOfLoggedInUsers(); ++i) {
user_dropdown_padding->AddChildView(
new ButtonFromView(new UserCardView(LoginStatus::USER, i), this,
TrayPopupInkDropStyle::INSET_BOUNDS));
}
- // Add the "add user" option or the "can't add another user" message.
- if (add_user_enabled_) {
- auto* button = new ButtonFromView(add_user_view, this,
- TrayPopupInkDropStyle::INSET_BOUNDS);
- button->SetAccessibleName(
- l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_SIGN_IN_ANOTHER_ACCOUNT));
- user_dropdown_padding->AddChildView(button);
- } else {
- user_dropdown_padding->AddChildView(add_user_view);
- }
-
+ user_dropdown_padding->AddChildView(CreateAddUserView(add_user_policy, this));
container->AddChildView(user_dropdown_padding);
container->SetLayoutManager(new views::FillLayout());
- user_dropdown_widget_->SetContentsView(container);
+ add_menu_option_->SetContentsView(container);
bounds.set_height(container->GetPreferredSize().height());
- user_dropdown_widget_->SetBounds(bounds);
+ add_menu_option_->SetBounds(bounds);
// Suppress the appearance of the collective capture icon while the dropdown
// is open (the icon will appear in the specific user rows).
user_card_view_->SetSuppressCaptureIcon(true);
// Show the content.
- user_dropdown_widget_->SetAlwaysOnTop(true);
- user_dropdown_widget_->Show();
+ add_menu_option_->SetAlwaysOnTop(true);
+ add_menu_option_->Show();
// Install a listener to focus changes so that we can remove the card when
// the focus gets changed. When called through the destruction of the bubble,
@@ -410,15 +402,15 @@
focus_manager_->AddFocusChangeListener(this);
}
-void UserView::HideUserDropdownWidget() {
- if (!user_dropdown_widget_)
+void UserView::RemoveAddUserMenuOption() {
+ if (!add_menu_option_)
return;
focus_manager_->RemoveFocusChangeListener(this);
focus_manager_ = nullptr;
if (user_card_container_->GetFocusManager())
user_card_container_->GetFocusManager()->ClearFocus();
user_card_view_->SetSuppressCaptureIcon(false);
- user_dropdown_widget_.reset();
+ add_menu_option_.reset();
}
} // namespace tray
« no previous file with comments | « ash/system/user/user_view.h ('k') | chrome/browser/ui/views/autofill/password_generation_popup_view_views.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698