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

Unified Diff: ash/common/system/user/tray_user.cc

Issue 2734653002: chromeos: Move files in //ash/common to //ash (Closed)
Patch Set: fix a11y tests, fix docs Created 3 years, 10 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
« no previous file with comments | « ash/common/system/user/tray_user.h ('k') | ash/common/system/user/tray_user_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/common/system/user/tray_user.cc
diff --git a/ash/common/system/user/tray_user.cc b/ash/common/system/user/tray_user.cc
deleted file mode 100644
index 65379215aa98c15b956c319576d3be1e62ab305c..0000000000000000000000000000000000000000
--- a/ash/common/system/user/tray_user.cc
+++ /dev/null
@@ -1,262 +0,0 @@
-// Copyright (c) 2012 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 "ash/common/system/user/tray_user.h"
-
-#include "ash/common/session/session_state_delegate.h"
-#include "ash/common/shelf/wm_shelf_util.h"
-#include "ash/common/system/tray/system_tray.h"
-#include "ash/common/system/tray/system_tray_delegate.h"
-#include "ash/common/system/tray/system_tray_notifier.h"
-#include "ash/common/system/tray/tray_constants.h"
-#include "ash/common/system/tray/tray_item_view.h"
-#include "ash/common/system/tray/tray_utils.h"
-#include "ash/common/system/user/rounded_image_view.h"
-#include "ash/common/system/user/user_view.h"
-#include "ash/common/wm_shell.h"
-#include "ash/strings/grit/ash_strings.h"
-#include "base/logging.h"
-#include "base/strings/string16.h"
-#include "components/signin/core/account_id/account_id.h"
-#include "components/user_manager/user_info.h"
-#include "ui/base/l10n/l10n_util.h"
-#include "ui/gfx/image/image.h"
-#include "ui/views/border.h"
-#include "ui/views/controls/label.h"
-#include "ui/views/layout/box_layout.h"
-#include "ui/views/view.h"
-#include "ui/views/widget/widget.h"
-
-namespace {
-
-const int kUserLabelToIconPadding = 5;
-
-} // namespace
-
-namespace ash {
-
-TrayUser::TrayUser(SystemTray* system_tray, UserIndex index)
- : SystemTrayItem(system_tray, UMA_USER),
- user_index_(index),
- user_(nullptr),
- layout_view_(nullptr),
- avatar_(nullptr),
- label_(nullptr) {
- WmShell::Get()->system_tray_notifier()->AddUserObserver(this);
-}
-
-TrayUser::~TrayUser() {
- WmShell::Get()->system_tray_notifier()->RemoveUserObserver(this);
-}
-
-TrayUser::TestState TrayUser::GetStateForTest() const {
- if (!user_)
- return HIDDEN;
- return user_->GetStateForTest();
-}
-
-gfx::Size TrayUser::GetLayoutSizeForTest() const {
- return layout_view_ ? layout_view_->size() : gfx::Size();
-}
-
-gfx::Rect TrayUser::GetUserPanelBoundsInScreenForTest() const {
- DCHECK(user_);
- return user_->GetBoundsInScreenOfUserButtonForTest();
-}
-
-void TrayUser::UpdateAfterLoginStatusChangeForTest(LoginStatus status) {
- UpdateAfterLoginStatusChange(status);
-}
-
-views::View* TrayUser::CreateTrayView(LoginStatus status) {
- CHECK(layout_view_ == nullptr);
-
- layout_view_ = new views::View;
- UpdateAfterLoginStatusChange(status);
- return layout_view_;
-}
-
-views::View* TrayUser::CreateDefaultView(LoginStatus status) {
- if (status == LoginStatus::NOT_LOGGED_IN)
- return nullptr;
- const SessionStateDelegate* session_state_delegate =
- WmShell::Get()->GetSessionStateDelegate();
-
- // If the screen is locked or a system modal dialog box is shown, show only
- // the currently active user.
- if (user_index_ && (session_state_delegate->IsUserSessionBlocked() ||
- WmShell::Get()->IsSystemModalWindowOpen()))
- return nullptr;
-
- CHECK(user_ == nullptr);
-
- int logged_in_users = session_state_delegate->NumberOfLoggedInUsers();
-
- // Do not show more UserView's then there are logged in users.
- if (user_index_ >= logged_in_users)
- return nullptr;
-
- user_ = new tray::UserView(this, status, user_index_);
- return user_;
-}
-
-void TrayUser::DestroyTrayView() {
- layout_view_ = nullptr;
- avatar_ = nullptr;
- label_ = nullptr;
-}
-
-void TrayUser::DestroyDefaultView() {
- user_ = nullptr;
-}
-
-void TrayUser::UpdateAfterLoginStatusChange(LoginStatus status) {
- // Only the active user is represented in the tray.
- if (!layout_view_)
- return;
- if (user_index_ > 0)
- return;
- bool need_label = false;
- bool need_avatar = false;
- SystemTrayDelegate* delegate = WmShell::Get()->system_tray_delegate();
- if (delegate->IsUserSupervised())
- need_label = true;
- switch (status) {
- case LoginStatus::LOCKED:
- case LoginStatus::USER:
- case LoginStatus::OWNER:
- case LoginStatus::PUBLIC:
- need_avatar = true;
- break;
- case LoginStatus::SUPERVISED:
- need_avatar = true;
- need_label = true;
- break;
- case LoginStatus::GUEST:
- need_label = true;
- break;
- case LoginStatus::KIOSK_APP:
- case LoginStatus::ARC_KIOSK_APP:
- case LoginStatus::NOT_LOGGED_IN:
- break;
- }
-
- if ((need_avatar != (avatar_ != nullptr)) ||
- (need_label != (label_ != nullptr))) {
- delete label_;
- delete avatar_;
-
- if (need_label) {
- label_ = new views::Label;
- SetupLabelForTray(label_);
- layout_view_->AddChildView(label_);
- } else {
- label_ = nullptr;
- }
- if (need_avatar) {
- avatar_ = new tray::RoundedImageView(kTrayRoundedBorderRadius);
- avatar_->SetPaintToLayer();
- avatar_->layer()->SetFillsBoundsOpaquely(false);
- layout_view_->AddChildView(avatar_);
- } else {
- avatar_ = nullptr;
- }
- }
-
- if (delegate->IsUserSupervised()) {
- label_->SetText(
- l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_SUPERVISED_LABEL));
- } else if (status == LoginStatus::GUEST) {
- label_->SetText(l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_GUEST_LABEL));
- }
-
- UpdateAvatarImage(status);
-
- // Update layout after setting label_ and avatar_ with new login status.
- UpdateLayoutOfItem();
-}
-
-void TrayUser::UpdateAfterShelfAlignmentChange(ShelfAlignment alignment) {
- // Inactive users won't have a layout.
- if (!layout_view_)
- return;
- if (IsHorizontalAlignment(alignment)) {
- if (avatar_) {
- avatar_->SetCornerRadii(0, kTrayRoundedBorderRadius,
- kTrayRoundedBorderRadius, 0);
- }
- if (label_) {
- // If label_ hasn't figured out its size yet, do that first.
- if (label_->GetContentsBounds().height() == 0)
- label_->SizeToPreferredSize();
- int height = label_->GetContentsBounds().height();
- int vertical_pad = (kTrayItemSize - height) / 2;
- int remainder = height % 2;
- label_->SetBorder(views::CreateEmptyBorder(
- vertical_pad + remainder,
- kTrayLabelItemHorizontalPaddingBottomAlignment, vertical_pad,
- kTrayLabelItemHorizontalPaddingBottomAlignment));
- }
- layout_view_->SetLayoutManager(new views::BoxLayout(
- views::BoxLayout::kHorizontal, 0, 0, kUserLabelToIconPadding));
- } else {
- if (avatar_) {
- avatar_->SetCornerRadii(0, 0, kTrayRoundedBorderRadius,
- kTrayRoundedBorderRadius);
- }
- if (label_) {
- label_->SetBorder(views::CreateEmptyBorder(
- kTrayLabelItemVerticalPaddingVerticalAlignment,
- kTrayLabelItemHorizontalPaddingBottomAlignment,
- kTrayLabelItemVerticalPaddingVerticalAlignment,
- kTrayLabelItemHorizontalPaddingBottomAlignment));
- }
- layout_view_->SetLayoutManager(new views::BoxLayout(
- views::BoxLayout::kVertical, 0, 0, kUserLabelToIconPadding));
- }
-}
-
-void TrayUser::OnUserUpdate() {
- UpdateAvatarImage(
- WmShell::Get()->system_tray_delegate()->GetUserLoginStatus());
-}
-
-void TrayUser::OnUserAddedToSession() {
- SessionStateDelegate* session_state_delegate =
- WmShell::Get()->GetSessionStateDelegate();
- // Only create views for user items which are logged in.
- if (user_index_ >= session_state_delegate->NumberOfLoggedInUsers())
- return;
-
- // Enforce a layout change that newly added items become visible.
- UpdateLayoutOfItem();
-
- // Update the user item.
- UpdateAvatarImage(
- WmShell::Get()->system_tray_delegate()->GetUserLoginStatus());
-}
-
-void TrayUser::UpdateAvatarImage(LoginStatus status) {
- SessionStateDelegate* session_state_delegate =
- WmShell::Get()->GetSessionStateDelegate();
- if (!avatar_ ||
- user_index_ >= session_state_delegate->NumberOfLoggedInUsers())
- return;
-
- const user_manager::UserInfo* user_info =
- session_state_delegate->GetUserInfo(user_index_);
- CHECK(user_info);
- avatar_->SetImage(user_info->GetImage(),
- gfx::Size(kTrayItemSize, kTrayItemSize));
-
- // Unit tests might come here with no images for some users.
- if (avatar_->size().IsEmpty())
- avatar_->SetSize(gfx::Size(kTrayItemSize, kTrayItemSize));
-}
-
-void TrayUser::UpdateLayoutOfItem() {
- UpdateAfterShelfAlignmentChange(system_tray()->shelf_alignment());
-}
-
-} // namespace ash
« no previous file with comments | « ash/common/system/user/tray_user.h ('k') | ash/common/system/user/tray_user_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698