blob: a52be4b4db429ea0817b17b238ea57aa84d6b13a [file] [log] [blame]
// Copyright 2018 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/system/unified/managed_device_view.h"
#include "ash/resources/vector_icons/vector_icons.h"
#include "ash/session/session_controller.h"
#include "ash/shell.h"
#include "ash/system/model/enterprise_domain_model.h"
#include "ash/system/model/system_tray_model.h"
#include "ash/system/tray/tray_constants.h"
#include "ash/system/tray/tray_utils.h"
#include "ui/gfx/paint_vector_icon.h"
#include "ui/views/controls/image_view.h"
namespace ash {
ManagedDeviceView::ManagedDeviceView() : TrayItemView(nullptr) {
Shell::Get()->system_tray_model()->enterprise_domain()->AddObserver(this);
Shell::Get()->session_controller()->AddObserver(this);
CreateImageView();
Update();
}
ManagedDeviceView::~ManagedDeviceView() {
Shell::Get()->system_tray_model()->enterprise_domain()->RemoveObserver(this);
Shell::Get()->session_controller()->RemoveObserver(this);
}
void ManagedDeviceView::OnEnterpriseDomainChanged() {
EnterpriseDomainModel* model =
Shell::Get()->system_tray_model()->enterprise_domain();
bool old_value = is_enterprise_;
is_enterprise_ = model->active_directory_managed() ||
!model->enterprise_display_domain().empty();
if (is_enterprise_ != old_value)
Update();
}
void ManagedDeviceView::Update() {
if (is_enterprise_) {
image_view()->SetImage(gfx::CreateVectorIcon(
kSystemTrayManagedIcon,
TrayIconColor(Shell::Get()->session_controller()->GetSessionState())));
SetVisible(true);
} else if (is_child_) {
image_view()->SetImage(gfx::CreateVectorIcon(
kSystemTrayFamilyLinkIcon,
TrayIconColor(Shell::Get()->session_controller()->GetSessionState())));
SetVisible(true);
} else {
SetVisible(false);
}
}
void ManagedDeviceView::OnLoginStatusChanged(LoginStatus status) {
SessionController* session = Shell::Get()->session_controller();
is_child_ = status == LoginStatus::SUPERVISED && session->IsUserChild();
}
} // namespace ash