15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/system/status_area_widget.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/root_window_controller.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/shelf/shelf_layout_manager.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/shelf/shelf_widget.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/shell.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/shell_delegate.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/shell_window_ids.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/system/bluetooth/bluetooth_observer.h" 14a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ash/system/overview/overview_button_tray.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/system/status_area_widget_delegate.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/system/tray/system_tray.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/system/tray/system_tray_delegate.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/system/web_notification/web_notification_tray.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/wm/window_properties.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/i18n/time_formatting.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/window.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/screen.h" 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#if defined(OS_CHROMEOS) 25a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ash/system/chromeos/session/logout_button_tray.h" 26a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ash/system/chromeos/virtual_keyboard/virtual_keyboard_tray.h" 27a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif 28a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ash { 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const char StatusAreaWidget::kNativeViewName[] = "StatusAreaWidget"; 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)StatusAreaWidget::StatusAreaWidget(aura::Window* status_container) 34c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch : status_area_widget_delegate_(new StatusAreaWidgetDelegate), 35a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) overview_button_tray_(NULL), 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) system_tray_(NULL), 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_notification_tray_(NULL), 38a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#if defined(OS_CHROMEOS) 393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) logout_button_tray_(NULL), 40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual_keyboard_tray_(NULL), 41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) login_status_(user::LOGGED_IN_NONE) { 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::Widget::InitParams params( 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::Widget::InitParams::TYPE_WINDOW_FRAMELESS); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) params.delegate = status_area_widget_delegate_; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) params.parent = status_container; 47eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Init(params); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set_focus_on_creation(false); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetContentsView(status_area_widget_delegate_); 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetNativeView()->SetName(kNativeViewName); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)StatusAreaWidget::~StatusAreaWidget() { 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void StatusAreaWidget::CreateTrayViews() { 58a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddOverviewButtonTray(); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddSystemTray(); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddWebNotificationTray(); 61a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#if defined(OS_CHROMEOS) 623551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) AddLogoutButtonTray(); 63a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddVirtualKeyboardTray(); 64a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif 65a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SystemTrayDelegate* delegate = 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ash::Shell::GetInstance()->system_tray_delegate(); 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DCHECK(delegate); 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Initialize after all trays have been created. 70a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) system_tray_->InitializeTrayItems(delegate); 71a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) web_notification_tray_->Initialize(); 72a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#if defined(OS_CHROMEOS) 73a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) logout_button_tray_->Initialize(); 74a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual_keyboard_tray_->Initialize(); 75a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif 76a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) overview_button_tray_->Initialize(); 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) UpdateAfterLoginStatusChange(delegate->GetUserLoginStatus()); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void StatusAreaWidget::Shutdown() { 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Destroy the trays early, causing them to be removed from the view 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // hierarchy. Do not used scoped pointers since we don't want to destroy them 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // in the destructor if Shutdown() is not called (e.g. in tests). 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) delete web_notification_tray_; 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_notification_tray_ = NULL; 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) delete system_tray_; 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) system_tray_ = NULL; 88a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#if defined(OS_CHROMEOS) 89a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) delete virtual_keyboard_tray_; 90a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual_keyboard_tray_ = NULL; 91a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) delete logout_button_tray_; 92a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) logout_button_tray_ = NULL; 93a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif 94a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) delete overview_button_tray_; 95a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) overview_button_tray_ = NULL; 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool StatusAreaWidget::ShouldShowShelf() const { 995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if ((system_tray_ && system_tray_->ShouldShowShelf()) || 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (web_notification_tray_ && 1015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) web_notification_tray_->ShouldBlockShelfAutoHide())) 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (!RootWindowController::ForShelf(GetNativeView())->shelf()->IsVisible()) 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // If the shelf is currently visible, don't hide the shelf if the mouse 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // is in any of the notification bubbles. 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (system_tray_ && system_tray_->IsMouseInNotificationBubble()) || 110a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) (web_notification_tray_ && 111a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) web_notification_tray_->IsMouseInNotificationBubble()); 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool StatusAreaWidget::IsMessageBubbleShown() const { 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ((system_tray_ && system_tray_->IsAnyBubbleVisible()) || 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (web_notification_tray_ && 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_notification_tray_->IsMessageCenterBubbleVisible())); 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)void StatusAreaWidget::SchedulePaint() { 12146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) status_area_widget_delegate_->SchedulePaint(); 12246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) web_notification_tray_->SchedulePaint(); 12346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) system_tray_->SchedulePaint(); 12446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#if defined(OS_CHROMEOS) 12546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual_keyboard_tray_->SchedulePaint(); 12646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) logout_button_tray_->SchedulePaint(); 12746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#endif 12846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) overview_button_tray_->SchedulePaint(); 12946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 13046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 131c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void StatusAreaWidget::OnNativeWidgetActivationChanged(bool active) { 132c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) Widget::OnNativeWidgetActivationChanged(active); 133c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (active) 134c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) status_area_widget_delegate_->SetPaneFocusAndFocusDefault(); 135c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 136c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void StatusAreaWidget::AddSystemTray() { 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) system_tray_ = new SystemTray(this); 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) status_area_widget_delegate_->AddTray(system_tray_); 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void StatusAreaWidget::AddWebNotificationTray() { 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_notification_tray_ = new WebNotificationTray(this); 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) status_area_widget_delegate_->AddTray(web_notification_tray_); 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 147a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#if defined(OS_CHROMEOS) 1483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)void StatusAreaWidget::AddLogoutButtonTray() { 1493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) logout_button_tray_ = new LogoutButtonTray(this); 1503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) status_area_widget_delegate_->AddTray(logout_button_tray_); 1513551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 1523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 153a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void StatusAreaWidget::AddVirtualKeyboardTray() { 154a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual_keyboard_tray_ = new VirtualKeyboardTray(this); 155a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) status_area_widget_delegate_->AddTray(virtual_keyboard_tray_); 156a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 157a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif 158a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 159a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void StatusAreaWidget::AddOverviewButtonTray() { 160a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) overview_button_tray_ = new OverviewButtonTray(this); 161a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) status_area_widget_delegate_->AddTray(overview_button_tray_); 162a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 163a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void StatusAreaWidget::SetShelfAlignment(ShelfAlignment alignment) { 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) status_area_widget_delegate_->set_alignment(alignment); 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (system_tray_) 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) system_tray_->SetShelfAlignment(alignment); 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (web_notification_tray_) 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_notification_tray_->SetShelfAlignment(alignment); 170a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#if defined(OS_CHROMEOS) 1713551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (logout_button_tray_) 1723551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) logout_button_tray_->SetShelfAlignment(alignment); 173a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) if (virtual_keyboard_tray_) 174a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual_keyboard_tray_->SetShelfAlignment(alignment); 175a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif 176a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) if (overview_button_tray_) 177a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) overview_button_tray_->SetShelfAlignment(alignment); 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) status_area_widget_delegate_->UpdateLayout(); 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void StatusAreaWidget::SetHideSystemNotifications(bool hide) { 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (system_tray_) 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) system_tray_->SetHideNotifications(hide); 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void StatusAreaWidget::UpdateAfterLoginStatusChange( 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) user::LoginStatus login_status) { 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (login_status_ == login_status) 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) login_status_ = login_status; 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (system_tray_) 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) system_tray_->UpdateAfterLoginStatusChange(login_status); 193f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (web_notification_tray_) 194f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) web_notification_tray_->UpdateAfterLoginStatusChange(login_status); 195a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#if defined(OS_CHROMEOS) 1963551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (logout_button_tray_) 1973551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) logout_button_tray_->UpdateAfterLoginStatusChange(login_status); 198a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif 199e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch if (overview_button_tray_) 200e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch overview_button_tray_->UpdateAfterLoginStatusChange(login_status); 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace ash 204