| 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
|
|
|