tray_enterprise.cc revision 1e9bf3e0803691d0a228da41fc608347b6db4340
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/chromeos/enterprise/tray_enterprise.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 71e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "ash/shell.h" 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ash/system/chromeos/label_tray_view.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/tray/system_tray_notifier.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/user/login_status.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/logging.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "grit/ash_resources.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace ash { 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace internal { 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TrayEnterprise::TrayEnterprise(SystemTray* system_tray) 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : SystemTrayItem(system_tray), 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) tray_view_(NULL) { 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Shell::GetInstance()->system_tray_notifier()-> 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AddEnterpriseDomainObserver(this); 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TrayEnterprise::~TrayEnterprise() { 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Shell::GetInstance()->system_tray_notifier()-> 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RemoveEnterpriseDomainObserver(this); 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void TrayEnterprise::UpdateEnterpriseMessage() { 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::string16 message = Shell::GetInstance()->system_tray_delegate()-> 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetEnterpriseMessage(); 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (tray_view_) 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) tray_view_->SetMessage(message); 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)views::View* TrayEnterprise::CreateDefaultView(user::LoginStatus status) { 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CHECK(tray_view_ == NULL); 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // For public accounts, enterprise ownership is indicated in the user details 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // instead. 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (status == ash::user::LOGGED_IN_PUBLIC) 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return NULL; 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) tray_view_ = new LabelTrayView(this, IDR_AURA_UBER_TRAY_ENTERPRISE_DARK); 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) UpdateEnterpriseMessage(); 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return tray_view_; 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void TrayEnterprise::DestroyDefaultView() { 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) tray_view_ = NULL; 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void TrayEnterprise::OnEnterpriseDomainChanged() { 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) UpdateEnterpriseMessage(); 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void TrayEnterprise::OnViewClicked(views::View* sender) { 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Shell::GetInstance()->system_tray_delegate()->ShowEnterpriseInfo(); 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace internal 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace ash 61