| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "ash/system/chromeos/session/tray_session_length_limit.h" | 5 #include "ash/system/chromeos/session/tray_session_length_limit.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "ash/shell.h" | 9 #include "ash/shell.h" |
| 10 #include "ash/system/chromeos/label_tray_view.h" | 10 #include "ash/system/chromeos/label_tray_view.h" |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 116 } | 116 } |
| 117 } | 117 } |
| 118 | 118 |
| 119 void TraySessionLengthLimit::UpdateNotification() { | 119 void TraySessionLengthLimit::UpdateNotification() { |
| 120 message_center::MessageCenter* message_center = | 120 message_center::MessageCenter* message_center = |
| 121 message_center::MessageCenter::Get(); | 121 message_center::MessageCenter::Get(); |
| 122 | 122 |
| 123 // If state hasn't changed and the notification has already been acknowledged, | 123 // If state hasn't changed and the notification has already been acknowledged, |
| 124 // we won't re-create it. | 124 // we won't re-create it. |
| 125 if (limit_state_ == last_limit_state_ && | 125 if (limit_state_ == last_limit_state_ && |
| 126 !message_center->HasNotification(kNotificationId)) { | 126 message_center->FindVisibleNotificationById(kNotificationId) == NULL) { |
| 127 return; | 127 return; |
| 128 } | 128 } |
| 129 | 129 |
| 130 // After state change, any possibly existing notification is removed to make | 130 // After state change, any possibly existing notification is removed to make |
| 131 // sure it is re-shown even if it had been acknowledged by the user before | 131 // sure it is re-shown even if it had been acknowledged by the user before |
| 132 // (and in the rare case of state change towards LIMIT_NONE to make the | 132 // (and in the rare case of state change towards LIMIT_NONE to make the |
| 133 // notification disappear). | 133 // notification disappear). |
| 134 if (limit_state_ != last_limit_state_ && | 134 if (limit_state_ != last_limit_state_ && |
| 135 message_center->HasNotification(kNotificationId)) { | 135 message_center->FindVisibleNotificationById(kNotificationId) != NULL) { |
| 136 message_center::MessageCenter::Get()->RemoveNotification( | 136 message_center::MessageCenter::Get()->RemoveNotification( |
| 137 kNotificationId, false /* by_user */); | 137 kNotificationId, false /* by_user */); |
| 138 } | 138 } |
| 139 | 139 |
| 140 // For LIMIT_NONE, there's nothing more to do. | 140 // For LIMIT_NONE, there's nothing more to do. |
| 141 if (limit_state_ == LIMIT_NONE) { | 141 if (limit_state_ == LIMIT_NONE) { |
| 142 last_limit_state_ = limit_state_; | 142 last_limit_state_ = limit_state_; |
| 143 return; | 143 return; |
| 144 } | 144 } |
| 145 | 145 |
| 146 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); | 146 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); |
| 147 message_center::RichNotificationData data; | 147 message_center::RichNotificationData data; |
| 148 data.should_make_spoken_feedback_for_popup_updates = | 148 data.should_make_spoken_feedback_for_popup_updates = |
| 149 (limit_state_ != last_limit_state_); | 149 (limit_state_ != last_limit_state_); |
| 150 scoped_ptr<message_center::Notification> notification( | 150 scoped_ptr<message_center::Notification> notification( |
| 151 new message_center::Notification( | 151 new message_center::Notification( |
| 152 message_center::NOTIFICATION_TYPE_SIMPLE, | 152 message_center::NOTIFICATION_TYPE_SIMPLE, |
| 153 kNotificationId, | 153 kNotificationId, |
| 154 base::string16() /* title */, | 154 base::string16() /* title */, |
| 155 ComposeNotificationMessage() /* message */, | 155 ComposeNotificationMessage() /* message */, |
| 156 bundle.GetImageNamed( | 156 bundle.GetImageNamed( |
| 157 IDR_AURA_UBER_TRAY_NOTIFICATION_SESSION_LENGTH_LIMIT), | 157 IDR_AURA_UBER_TRAY_NOTIFICATION_SESSION_LENGTH_LIMIT), |
| 158 base::string16() /* display_source */, | 158 base::string16() /* display_source */, |
| 159 message_center::NotifierId( | 159 message_center::NotifierId( |
| 160 message_center::NotifierId::SYSTEM_COMPONENT, | 160 message_center::NotifierId::SYSTEM_COMPONENT, |
| 161 system_notifier::kNotifierSessionLengthTimeout), | 161 system_notifier::kNotifierSessionLengthTimeout), |
| 162 data, | 162 data, |
| 163 NULL /* delegate */)); | 163 NULL /* delegate */)); |
| 164 notification->SetSystemPriority(); | 164 notification->SetSystemPriority(); |
| 165 if (message_center->HasNotification(kNotificationId)) | 165 if (message_center->FindVisibleNotificationById(kNotificationId) != NULL) |
| 166 message_center->UpdateNotification(kNotificationId, notification.Pass()); | 166 message_center->UpdateNotification(kNotificationId, notification.Pass()); |
| 167 else | 167 else |
| 168 message_center->AddNotification(notification.Pass()); | 168 message_center->AddNotification(notification.Pass()); |
| 169 last_limit_state_ = limit_state_; | 169 last_limit_state_ = limit_state_; |
| 170 } | 170 } |
| 171 | 171 |
| 172 void TraySessionLengthLimit::UpdateTrayBubbleView() const { | 172 void TraySessionLengthLimit::UpdateTrayBubbleView() const { |
| 173 if (!tray_bubble_view_) | 173 if (!tray_bubble_view_) |
| 174 return; | 174 return; |
| 175 if (limit_state_ == LIMIT_NONE) | 175 if (limit_state_ == LIMIT_NONE) |
| (...skipping 15 matching lines...) Expand all Loading... |
| 191 base::string16 TraySessionLengthLimit::ComposeTrayBubbleMessage() const { | 191 base::string16 TraySessionLengthLimit::ComposeTrayBubbleMessage() const { |
| 192 return l10n_util::GetStringFUTF16( | 192 return l10n_util::GetStringFUTF16( |
| 193 IDS_ASH_STATUS_TRAY_BUBBLE_SESSION_LENGTH_LIMIT, | 193 IDS_ASH_STATUS_TRAY_BUBBLE_SESSION_LENGTH_LIMIT, |
| 194 ui::TimeFormat::Detailed(ui::TimeFormat::FORMAT_DURATION, | 194 ui::TimeFormat::Detailed(ui::TimeFormat::FORMAT_DURATION, |
| 195 ui::TimeFormat::LENGTH_LONG, | 195 ui::TimeFormat::LENGTH_LONG, |
| 196 10, | 196 10, |
| 197 remaining_session_time_)); | 197 remaining_session_time_)); |
| 198 } | 198 } |
| 199 | 199 |
| 200 } // namespace ash | 200 } // namespace ash |
| OLD | NEW |