| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/ash/system_tray_delegate_chromeos.h" | 5 #include "chrome/browser/ui/ash/system_tray_delegate_chromeos.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <memory> | 10 #include <memory> |
| 11 #include <set> | 11 #include <set> |
| 12 #include <string> | 12 #include <string> |
| 13 #include <utility> | 13 #include <utility> |
| 14 #include <vector> | 14 #include <vector> |
| 15 | 15 |
| 16 #include "ash/common/login_status.h" | 16 #include "ash/common/login_status.h" |
| 17 #include "ash/common/shell_delegate.h" | 17 #include "ash/common/shell_delegate.h" |
| 18 #include "ash/common/system/chromeos/power/power_status.h" | 18 #include "ash/common/system/chromeos/power/power_status.h" |
| 19 #include "ash/common/system/chromeos/session/logout_button_observer.h" | 19 #include "ash/common/system/chromeos/session/logout_button_observer.h" |
| 20 #include "ash/common/system/date/clock_observer.h" | 20 #include "ash/common/system/date/clock_observer.h" |
| 21 #include "ash/common/system/ime/ime_observer.h" | 21 #include "ash/common/system/ime/ime_observer.h" |
| 22 #include "ash/common/system/tray/system_tray_notifier.h" | 22 #include "ash/common/system/tray/system_tray_notifier.h" |
| 23 #include "ash/common/system/tray_accessibility.h" | 23 #include "ash/common/system/tray_accessibility.h" |
| 24 #include "ash/common/system/user/user_observer.h" | |
| 25 #include "ash/shell.h" | 24 #include "ash/shell.h" |
| 26 #include "ash/system/chromeos/rotation/tray_rotation_lock.h" | 25 #include "ash/system/chromeos/rotation/tray_rotation_lock.h" |
| 27 #include "base/callback.h" | 26 #include "base/callback.h" |
| 28 #include "base/logging.h" | 27 #include "base/logging.h" |
| 29 #include "base/memory/ptr_util.h" | 28 #include "base/memory/ptr_util.h" |
| 30 #include "base/metrics/user_metrics.h" | 29 #include "base/metrics/user_metrics.h" |
| 31 #include "base/strings/utf_string_conversions.h" | 30 #include "base/strings/utf_string_conversions.h" |
| 32 #include "base/sys_info.h" | 31 #include "base/sys_info.h" |
| 33 #include "base/time/time.h" | 32 #include "base/time/time.h" |
| 34 #include "chrome/browser/browser_process.h" | 33 #include "chrome/browser/browser_process.h" |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 registrar_->Add(this, | 137 registrar_->Add(this, |
| 139 chrome::NOTIFICATION_PROFILE_DESTROYED, | 138 chrome::NOTIFICATION_PROFILE_DESTROYED, |
| 140 content::NotificationService::AllSources()); | 139 content::NotificationService::AllSources()); |
| 141 | 140 |
| 142 AccessibilityManager* accessibility_manager = AccessibilityManager::Get(); | 141 AccessibilityManager* accessibility_manager = AccessibilityManager::Get(); |
| 143 CHECK(accessibility_manager); | 142 CHECK(accessibility_manager); |
| 144 accessibility_subscription_ = accessibility_manager->RegisterCallback( | 143 accessibility_subscription_ = accessibility_manager->RegisterCallback( |
| 145 base::Bind(&SystemTrayDelegateChromeOS::OnAccessibilityStatusChanged, | 144 base::Bind(&SystemTrayDelegateChromeOS::OnAccessibilityStatusChanged, |
| 146 base::Unretained(this))); | 145 base::Unretained(this))); |
| 147 | 146 |
| 148 user_manager::UserManager::Get()->AddObserver(this); | |
| 149 user_manager::UserManager::Get()->AddSessionStateObserver(this); | 147 user_manager::UserManager::Get()->AddSessionStateObserver(this); |
| 150 } | 148 } |
| 151 | 149 |
| 152 void SystemTrayDelegateChromeOS::Initialize() { | 150 void SystemTrayDelegateChromeOS::Initialize() { |
| 153 DBusThreadManager::Get()->GetSessionManagerClient()->AddObserver(this); | 151 DBusThreadManager::Get()->GetSessionManagerClient()->AddObserver(this); |
| 154 | 152 |
| 155 input_method::InputMethodManager::Get()->AddObserver(this); | 153 input_method::InputMethodManager::Get()->AddObserver(this); |
| 156 input_method::InputMethodManager::Get()->AddImeMenuObserver(this); | 154 input_method::InputMethodManager::Get()->AddImeMenuObserver(this); |
| 157 ui::ime::InputMethodMenuManager::GetInstance()->AddObserver(this); | 155 ui::ime::InputMethodMenuManager::GetInstance()->AddObserver(this); |
| 158 | 156 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 201 StopObservingAppWindowRegistry(); | 199 StopObservingAppWindowRegistry(); |
| 202 StopObservingCustodianInfoChanges(); | 200 StopObservingCustodianInfoChanges(); |
| 203 | 201 |
| 204 policy::BrowserPolicyConnectorChromeOS* connector = | 202 policy::BrowserPolicyConnectorChromeOS* connector = |
| 205 g_browser_process->platform_part()->browser_policy_connector_chromeos(); | 203 g_browser_process->platform_part()->browser_policy_connector_chromeos(); |
| 206 policy::DeviceCloudPolicyManagerChromeOS* policy_manager = | 204 policy::DeviceCloudPolicyManagerChromeOS* policy_manager = |
| 207 connector->GetDeviceCloudPolicyManager(); | 205 connector->GetDeviceCloudPolicyManager(); |
| 208 if (policy_manager) | 206 if (policy_manager) |
| 209 policy_manager->core()->store()->RemoveObserver(this); | 207 policy_manager->core()->store()->RemoveObserver(this); |
| 210 | 208 |
| 211 user_manager::UserManager::Get()->RemoveObserver(this); | |
| 212 user_manager::UserManager::Get()->RemoveSessionStateObserver(this); | 209 user_manager::UserManager::Get()->RemoveSessionStateObserver(this); |
| 213 } | 210 } |
| 214 | 211 |
| 215 ash::LoginStatus SystemTrayDelegateChromeOS::GetUserLoginStatus() const { | 212 ash::LoginStatus SystemTrayDelegateChromeOS::GetUserLoginStatus() const { |
| 216 return SystemTrayClient::GetUserLoginStatus(); | 213 return SystemTrayClient::GetUserLoginStatus(); |
| 217 } | 214 } |
| 218 | 215 |
| 219 std::string SystemTrayDelegateChromeOS::GetEnterpriseDomain() const { | 216 std::string SystemTrayDelegateChromeOS::GetEnterpriseDomain() const { |
| 220 return enterprise_domain_; | 217 return enterprise_domain_; |
| 221 } | 218 } |
| (...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 416 return have_session_length_limit_; | 413 return have_session_length_limit_; |
| 417 } | 414 } |
| 418 | 415 |
| 419 int SystemTrayDelegateChromeOS::GetSystemTrayMenuWidth() { | 416 int SystemTrayDelegateChromeOS::GetSystemTrayMenuWidth() { |
| 420 return l10n_util::GetLocalizedContentsWidthInPixels( | 417 return l10n_util::GetLocalizedContentsWidthInPixels( |
| 421 IDS_SYSTEM_TRAY_MENU_BUBBLE_WIDTH_PIXELS); | 418 IDS_SYSTEM_TRAY_MENU_BUBBLE_WIDTH_PIXELS); |
| 422 } | 419 } |
| 423 | 420 |
| 424 void SystemTrayDelegateChromeOS::ActiveUserWasChanged() { | 421 void SystemTrayDelegateChromeOS::ActiveUserWasChanged() { |
| 425 SetProfile(ProfileManager::GetActiveUserProfile()); | 422 SetProfile(ProfileManager::GetActiveUserProfile()); |
| 426 GetSystemTrayNotifier()->NotifyUserUpdate(); | |
| 427 } | 423 } |
| 428 | 424 |
| 429 bool SystemTrayDelegateChromeOS::IsSearchKeyMappedToCapsLock() { | 425 bool SystemTrayDelegateChromeOS::IsSearchKeyMappedToCapsLock() { |
| 430 return search_key_mapped_to_ == input_method::kCapsLockKey; | 426 return search_key_mapped_to_ == input_method::kCapsLockKey; |
| 431 } | 427 } |
| 432 | 428 |
| 433 void SystemTrayDelegateChromeOS::AddCustodianInfoTrayObserver( | 429 void SystemTrayDelegateChromeOS::AddCustodianInfoTrayObserver( |
| 434 ash::CustodianInfoTrayObserver* observer) { | 430 ash::CustodianInfoTrayObserver* observer) { |
| 435 custodian_info_changed_observers_.AddObserver(observer); | 431 custodian_info_changed_observers_.AddObserver(observer); |
| 436 } | 432 } |
| 437 | 433 |
| 438 void SystemTrayDelegateChromeOS::RemoveCustodianInfoTrayObserver( | 434 void SystemTrayDelegateChromeOS::RemoveCustodianInfoTrayObserver( |
| 439 ash::CustodianInfoTrayObserver* observer) { | 435 ash::CustodianInfoTrayObserver* observer) { |
| 440 custodian_info_changed_observers_.RemoveObserver(observer); | 436 custodian_info_changed_observers_.RemoveObserver(observer); |
| 441 } | 437 } |
| 442 | 438 |
| 443 std::unique_ptr<ash::SystemTrayItem> | 439 std::unique_ptr<ash::SystemTrayItem> |
| 444 SystemTrayDelegateChromeOS::CreateRotationLockTrayItem(ash::SystemTray* tray) { | 440 SystemTrayDelegateChromeOS::CreateRotationLockTrayItem(ash::SystemTray* tray) { |
| 445 return base::MakeUnique<ash::TrayRotationLock>(tray); | 441 return base::MakeUnique<ash::TrayRotationLock>(tray); |
| 446 } | 442 } |
| 447 | 443 |
| 448 void SystemTrayDelegateChromeOS::UserAddedToSession( | |
| 449 const user_manager::User* active_user) { | |
| 450 GetSystemTrayNotifier()->NotifyUserAddedToSession(); | |
| 451 } | |
| 452 | |
| 453 void SystemTrayDelegateChromeOS::ActiveUserChanged( | |
| 454 const user_manager::User* /* active_user */) { | |
| 455 } | |
| 456 | |
| 457 void SystemTrayDelegateChromeOS::UserChangedChildStatus( | 444 void SystemTrayDelegateChromeOS::UserChangedChildStatus( |
| 458 user_manager::User* user) { | 445 user_manager::User* user) { |
| 459 Profile* user_profile = ProfileHelper::Get()->GetProfileByUser(user); | 446 Profile* user_profile = ProfileHelper::Get()->GetProfileByUser(user); |
| 460 | 447 |
| 461 // Returned user_profile might be NULL on restoring Users on browser start. | 448 // Returned user_profile might be NULL on restoring Users on browser start. |
| 462 // At some point profile is not yet fully initiated. | 449 // At some point profile is not yet fully initiated. |
| 463 if (session_started_ && user_profile && user_profile_ == user_profile) | 450 if (session_started_ && user_profile && user_profile_ == user_profile) |
| 464 ash::Shell::Get()->UpdateAfterLoginStatusChange(GetUserLoginStatus()); | 451 ash::Shell::Get()->UpdateAfterLoginStatusChange(GetUserLoginStatus()); |
| 465 } | 452 } |
| 466 | 453 |
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 706 // Overridden from CloudPolicyStore::Observer | 693 // Overridden from CloudPolicyStore::Observer |
| 707 void SystemTrayDelegateChromeOS::OnStoreLoaded( | 694 void SystemTrayDelegateChromeOS::OnStoreLoaded( |
| 708 policy::CloudPolicyStore* store) { | 695 policy::CloudPolicyStore* store) { |
| 709 UpdateEnterpriseDomain(); | 696 UpdateEnterpriseDomain(); |
| 710 } | 697 } |
| 711 | 698 |
| 712 void SystemTrayDelegateChromeOS::OnStoreError(policy::CloudPolicyStore* store) { | 699 void SystemTrayDelegateChromeOS::OnStoreError(policy::CloudPolicyStore* store) { |
| 713 UpdateEnterpriseDomain(); | 700 UpdateEnterpriseDomain(); |
| 714 } | 701 } |
| 715 | 702 |
| 716 void SystemTrayDelegateChromeOS::OnUserImageChanged( | |
| 717 const user_manager::User& user) { | |
| 718 // This is also invoked on login screen when user avatar is loaded from file. | |
| 719 if (GetUserLoginStatus() != ash::LoginStatus::NOT_LOGGED_IN) | |
| 720 GetSystemTrayNotifier()->NotifyUserUpdate(); | |
| 721 } | |
| 722 | |
| 723 // Overridden from chrome::BrowserListObserver. | 703 // Overridden from chrome::BrowserListObserver. |
| 724 void SystemTrayDelegateChromeOS::OnBrowserRemoved(Browser* browser) { | 704 void SystemTrayDelegateChromeOS::OnBrowserRemoved(Browser* browser) { |
| 725 NotifyIfLastWindowClosed(); | 705 NotifyIfLastWindowClosed(); |
| 726 } | 706 } |
| 727 | 707 |
| 728 // Overridden from extensions::AppWindowRegistry::Observer. | 708 // Overridden from extensions::AppWindowRegistry::Observer. |
| 729 void SystemTrayDelegateChromeOS::OnAppWindowRemoved( | 709 void SystemTrayDelegateChromeOS::OnAppWindowRemoved( |
| 730 extensions::AppWindow* app_window) { | 710 extensions::AppWindow* app_window) { |
| 731 NotifyIfLastWindowClosed(); | 711 NotifyIfLastWindowClosed(); |
| 732 } | 712 } |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 790 LOG(WARNING) << "SystemTrayDelegateChromeOS::GetChildUserMessage call while " | 770 LOG(WARNING) << "SystemTrayDelegateChromeOS::GetChildUserMessage call while " |
| 791 << "ENABLE_SUPERVISED_USERS undefined."; | 771 << "ENABLE_SUPERVISED_USERS undefined."; |
| 792 return base::string16(); | 772 return base::string16(); |
| 793 } | 773 } |
| 794 | 774 |
| 795 ash::SystemTrayDelegate* CreateSystemTrayDelegate() { | 775 ash::SystemTrayDelegate* CreateSystemTrayDelegate() { |
| 796 return new SystemTrayDelegateChromeOS(); | 776 return new SystemTrayDelegateChromeOS(); |
| 797 } | 777 } |
| 798 | 778 |
| 799 } // namespace chromeos | 779 } // namespace chromeos |
| OLD | NEW |