Commit a5f57bae authored by Andre Le's avatar Andre Le Committed by Commit Bot

ash: update UnifiedManagedDeviceView to fit current UI state.

1. Fix padding and layout.
2. Make it a button that takes user to management setting page.

Change-Id: Iddc81f1b6b3762249e6046484cce96128e3651c3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2303050
Commit-Queue: Andre Le <leandre@chromium.org>
Reviewed-by: default avatarTim Song <tengs@chromium.org>
Cr-Commit-Position: refs/heads/master@{#789661}
parent 0916bc53
......@@ -102,7 +102,7 @@ constexpr int kSystemMenuCollapseExpandAnimationDurationMs = 500;
constexpr gfx::Insets kUnifiedMenuItemPadding(0, 16, 16, 16);
constexpr gfx::Insets kUnifiedSystemInfoViewPadding(0, 16, 16, 16);
constexpr gfx::Insets kUnifiedManagedDeviceViewPadding(4, 19, 4, 16);
constexpr gfx::Insets kUnifiedManagedDeviceViewPadding(0, 16, 11, 16);
constexpr gfx::Insets kUnifiedSliderRowPadding(0, 16, 8, 16);
constexpr gfx::Insets kUnifiedSliderBubblePadding(12, 0, 4, 0);
constexpr gfx::Insets kUnifiedSliderPadding(0, 16);
......@@ -137,7 +137,7 @@ constexpr gfx::Insets kStackingNotificationClearAllButtonPadding(8, 16);
// A dark disc with |kTrayItemSize| diameter is drawn in the background.
constexpr int kTrayTopShortcutButtonIconSize = 20;
constexpr int kUnifiedManagedDeviceSpacing = 4;
constexpr int kUnifiedManagedDeviceSpacing = 8;
constexpr int kUnifiedSystemInfoHeight = 16;
constexpr int kUnifiedSystemInfoSpacing = 8;
constexpr gfx::Insets kUnifiedSystemInfoDateViewPadding(3);
......
......@@ -4,6 +4,7 @@
#include "ash/system/unified/unified_managed_device_view.h"
#include "ash/public/cpp/ash_view_ids.h"
#include "ash/resources/vector_icons/vector_icons.h"
#include "ash/session/session_controller_impl.h"
#include "ash/shell.h"
......@@ -25,8 +26,12 @@
namespace ash {
UnifiedManagedDeviceView::UnifiedManagedDeviceView()
: icon_(new views::ImageView), label_(new views::Label) {
UnifiedManagedDeviceView::UnifiedManagedDeviceView(
UnifiedSystemTrayController* controller)
: Button(this),
icon_(new views::ImageView),
label_(new views::Label),
controller_(controller) {
auto* layout = SetLayoutManager(std::make_unique<views::BoxLayout>(
views::BoxLayout::Orientation::kHorizontal,
kUnifiedManagedDeviceViewPadding, kUnifiedManagedDeviceSpacing));
......@@ -44,6 +49,8 @@ UnifiedManagedDeviceView::UnifiedManagedDeviceView()
AshColorProvider::AshColorMode::kDark));
AddChildView(label_);
SetID(VIEW_ID_TRAY_ENTERPRISE);
Shell::Get()->session_controller()->AddObserver(this);
Shell::Get()->system_tray_model()->enterprise_domain()->AddObserver(this);
Update();
......@@ -54,6 +61,11 @@ UnifiedManagedDeviceView::~UnifiedManagedDeviceView() {
Shell::Get()->session_controller()->RemoveObserver(this);
}
void UnifiedManagedDeviceView::ButtonPressed(views::Button* sender,
const ui::Event& event) {
controller_->HandleEnterpriseInfoAction();
}
void UnifiedManagedDeviceView::OnLoginStatusChanged(LoginStatus status) {
Update();
}
......@@ -80,20 +92,20 @@ void UnifiedManagedDeviceView::Update() {
// Show enterpised managed UI.
icon_->SetImage(gfx::CreateVectorIcon(kSystemTrayManagedIcon, icon_color));
if (!enterprise_domain_name.empty()) {
label_->SetText(l10n_util::GetStringFUTF16(
IDS_ASH_ENTERPRISE_DEVICE_MANAGED_BY,
base::UTF8ToUTF16(enterprise_domain_name)));
} else {
label_->SetText(
l10n_util::GetStringUTF16(IDS_ASH_ENTERPRISE_DEVICE_MANAGED));
}
base::string16 managed_string =
enterprise_domain_name.empty()
? l10n_util::GetStringUTF16(IDS_ASH_ENTERPRISE_DEVICE_MANAGED)
: l10n_util::GetStringFUTF16(
IDS_ASH_ENTERPRISE_DEVICE_MANAGED_BY,
base::UTF8ToUTF16(enterprise_domain_name));
label_->SetText(managed_string);
SetAccessibleName(managed_string);
SetVisible(true);
} else if (session->IsUserSupervised()) {
// Show supervised user UI (locally supervised or Family Link).
icon_->SetImage(gfx::CreateVectorIcon(GetSupervisedUserIcon(), icon_color));
label_->SetText(GetSupervisedUserMessage());
SetAccessibleName(GetSupervisedUserMessage());
SetVisible(true);
} else {
SetVisible(false);
......
......@@ -8,7 +8,9 @@
#include "ash/ash_export.h"
#include "ash/public/cpp/session/session_observer.h"
#include "ash/system/enterprise/enterprise_domain_observer.h"
#include "ash/system/unified/unified_system_tray_controller.h"
#include "base/macros.h"
#include "ui/views/controls/button/button.h"
#include "ui/views/view.h"
namespace views {
......@@ -20,13 +22,17 @@ namespace ash {
// Row in the unified system tray bubble shown when the device is currently
// managed by an administrator (by a domain admin or FamilyLink).
class ASH_EXPORT UnifiedManagedDeviceView : public views::View,
class ASH_EXPORT UnifiedManagedDeviceView : public views::Button,
public views::ButtonListener,
public SessionObserver,
public EnterpriseDomainObserver {
public:
UnifiedManagedDeviceView();
explicit UnifiedManagedDeviceView(UnifiedSystemTrayController* controller);
~UnifiedManagedDeviceView() override;
// views::ButtonListener:
void ButtonPressed(views::Button* sender, const ui::Event& event) override;
// SessionObserver:
void OnLoginStatusChanged(LoginStatus status) override;
......@@ -43,6 +49,8 @@ class ASH_EXPORT UnifiedManagedDeviceView : public views::View,
views::ImageView* const icon_;
views::Label* const label_;
UnifiedSystemTrayController* const controller_;
DISALLOW_COPY_AND_ASSIGN(UnifiedManagedDeviceView);
};
......
......@@ -9,6 +9,8 @@
#include "ash/shell.h"
#include "ash/system/model/enterprise_domain_model.h"
#include "ash/system/model/system_tray_model.h"
#include "ash/system/unified/unified_system_tray_controller.h"
#include "ash/system/unified/unified_system_tray_model.h"
#include "ash/test/ash_test_base.h"
#include "ash/system/unified/unified_system_tray_view.h"
......@@ -22,11 +24,16 @@ class UnifiedManagedDeviceViewTest : public AshTestBase {
void SetUp() override {
AshTestBase::SetUp();
managed_device_view_ = std::make_unique<UnifiedManagedDeviceView>();
model_ = std::make_unique<UnifiedSystemTrayModel>(nullptr);
controller_ = std::make_unique<UnifiedSystemTrayController>(model_.get());
managed_device_view_ =
std::make_unique<UnifiedManagedDeviceView>(controller_.get());
}
void TearDown() override {
managed_device_view_.reset();
controller_.reset();
model_.reset();
AshTestBase::TearDown();
}
......@@ -34,6 +41,8 @@ class UnifiedManagedDeviceViewTest : public AshTestBase {
std::unique_ptr<UnifiedManagedDeviceView> managed_device_view_;
private:
std::unique_ptr<UnifiedSystemTrayModel> model_;
std::unique_ptr<UnifiedSystemTrayController> controller_;
DISALLOW_COPY_AND_ASSIGN(UnifiedManagedDeviceViewTest);
};
......@@ -70,8 +79,12 @@ TEST_F(UnifiedManagedDeviceViewNoSessionTest, SupervisedUserDevice) {
ASSERT_FALSE(session->IsActiveUserSessionStarted());
// Before login the UnifiedManagedDeviceView is invisible.
std::unique_ptr<UnifiedSystemTrayModel> model =
std::make_unique<UnifiedSystemTrayModel>(nullptr);
std::unique_ptr<UnifiedSystemTrayController> controller =
std::make_unique<UnifiedSystemTrayController>(model.get());
std::unique_ptr<UnifiedManagedDeviceView> managed_device_view =
std::make_unique<UnifiedManagedDeviceView>();
std::make_unique<UnifiedManagedDeviceView>(controller.get());
EXPECT_FALSE(managed_device_view->GetVisible());
managed_device_view.reset();
......@@ -85,7 +98,8 @@ TEST_F(UnifiedManagedDeviceViewNoSessionTest, SupervisedUserDevice) {
session->UpdateUserSession(std::move(user_session));
// Now the UnifiedManagedDeviceView is visible.
managed_device_view = std::make_unique<UnifiedManagedDeviceView>();
managed_device_view =
std::make_unique<UnifiedManagedDeviceView>(controller.get());
ASSERT_TRUE(managed_device_view->GetVisible());
}
......
......@@ -241,15 +241,16 @@ UnifiedSystemTrayView::UnifiedSystemTrayView(
system_tray_container_->AddChildView(feature_pods_container_);
system_tray_container_->AddChildView(page_indicator_view_);
system_tray_container_->AddChildView(sliders_container_);
add_layered_child(system_tray_container_, system_info_view_);
system_tray_container_->SetFlexForView(page_indicator_view_);
if (features::IsManagedDeviceUIRedesignEnabled()) {
managed_device_view_ = new UnifiedManagedDeviceView();
system_tray_container_->AddChildView(managed_device_view_);
managed_device_view_ = new UnifiedManagedDeviceView(controller_);
add_layered_child(system_tray_container_, managed_device_view_);
}
add_layered_child(system_tray_container_, system_info_view_);
system_tray_container_->SetFlexForView(page_indicator_view_);
detailed_view_container_->SetVisible(false);
add_layered_child(this, detailed_view_container_);
......@@ -264,6 +265,10 @@ UnifiedSystemTrayView::~UnifiedSystemTrayView() = default;
void UnifiedSystemTrayView::SetMaxHeight(int max_height) {
max_height_ = max_height;
int managed_device_view_height =
managed_device_view_ ? managed_device_view_->GetPreferredSize().height()
: 0;
// FeaturePodsContainer can adjust it's height by reducing the number of rows
// it uses. It will calculate how many rows to use based on the max height
// passed here.
......@@ -271,7 +276,8 @@ void UnifiedSystemTrayView::SetMaxHeight(int max_height) {
max_height - top_shortcuts_view_->GetPreferredSize().height() -
page_indicator_view_->GetPreferredSize().height() -
sliders_container_->GetExpandedHeight() -
system_info_view_->GetPreferredSize().height());
system_info_view_->GetPreferredSize().height() -
managed_device_view_height);
}
void UnifiedSystemTrayView::AddFeaturePodButton(FeaturePodButton* button) {
......@@ -343,6 +349,9 @@ void UnifiedSystemTrayView::SetExpandedAmount(double expanded_amount) {
}
int UnifiedSystemTrayView::GetExpandedSystemTrayHeight() const {
int managed_device_view_height =
managed_device_view_ ? managed_device_view_->GetPreferredSize().height()
: 0;
return (notification_hidden_view_->GetVisible()
? notification_hidden_view_->GetPreferredSize().height()
: 0) +
......@@ -350,16 +359,21 @@ int UnifiedSystemTrayView::GetExpandedSystemTrayHeight() const {
feature_pods_container_->GetExpandedHeight() +
page_indicator_view_->GetExpandedHeight() +
sliders_container_->GetExpandedHeight() +
system_info_view_->GetPreferredSize().height();
system_info_view_->GetPreferredSize().height() +
managed_device_view_height;
}
int UnifiedSystemTrayView::GetCollapsedSystemTrayHeight() const {
int managed_device_view_height =
managed_device_view_ ? managed_device_view_->GetPreferredSize().height()
: 0;
return (notification_hidden_view_->GetVisible()
? notification_hidden_view_->GetPreferredSize().height()
: 0) +
top_shortcuts_view_->GetPreferredSize().height() +
feature_pods_container_->GetCollapsedHeight() +
system_info_view_->GetPreferredSize().height();
system_info_view_->GetPreferredSize().height() +
managed_device_view_height;
}
int UnifiedSystemTrayView::GetCurrentHeight() const {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment