// How long should the nag reminder be displayed?
const int kShowUpdateNaggerForSeconds = 15;
-int DecideResource(ash::UpdateObserver::UpdateSeverity severity, bool dark) {
+int DecideResource(ash::UpdateInfo::UpdateSeverity severity, bool dark) {
switch (severity) {
- case ash::UpdateObserver::UPDATE_NORMAL:
+ case ash::UpdateInfo::UPDATE_NORMAL:
return dark ? IDR_AURA_UBER_TRAY_UPDATE_DARK:
IDR_AURA_UBER_TRAY_UPDATE;
- case ash::UpdateObserver::UPDATE_LOW_GREEN:
+ case ash::UpdateInfo::UPDATE_LOW_GREEN:
return dark ? IDR_AURA_UBER_TRAY_UPDATE_DARK_GREEN :
IDR_AURA_UBER_TRAY_UPDATE_GREEN;
- case ash::UpdateObserver::UPDATE_HIGH_ORANGE:
+ case ash::UpdateInfo::UPDATE_HIGH_ORANGE:
return dark ? IDR_AURA_UBER_TRAY_UPDATE_DARK_ORANGE :
IDR_AURA_UBER_TRAY_UPDATE_ORANGE;
- case ash::UpdateObserver::UPDATE_SEVERE_RED:
+ case ash::UpdateInfo::UPDATE_SEVERE_RED:
return dark ? IDR_AURA_UBER_TRAY_UPDATE_DARK_RED :
IDR_AURA_UBER_TRAY_UPDATE_RED;
}
class UpdateView : public ash::ActionableView {
public:
- explicit UpdateView(ash::UpdateObserver::UpdateSeverity severity) {
+ explicit UpdateView(const ash::UpdateInfo& info) {
SetLayoutManager(new
views::BoxLayout(views::BoxLayout::kHorizontal,
ash::kTrayPopupPaddingHorizontal, 0,
ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
views::ImageView* image =
new ash::FixedSizedImageView(0, ash::kTrayPopupItemHeight);
- image->SetImage(bundle.GetImageNamed(DecideResource(severity, true)).
- ToImageSkia());
+ image->SetImage(bundle.GetImageNamed(DecideResource(info.severity, true))
+ .ToImageSkia());
AddChildView(image);
- AddChildView(new views::Label(
- bundle.GetLocalizedString(IDS_ASH_STATUS_TRAY_UPDATE)));
- SetAccessibleName(bundle.GetLocalizedString(IDS_ASH_STATUS_TRAY_UPDATE));
+
+ base::string16 label =
+ info.factory_reset_required
+ ? bundle.GetLocalizedString(
+ IDS_ASH_STATUS_TRAY_RESTART_AND_POWERWASH_TO_UPDATE)
+ : bundle.GetLocalizedString(IDS_ASH_STATUS_TRAY_UPDATE);
+ AddChildView(new views::Label(label));
+ SetAccessibleName(label);
}
- virtual ~UpdateView() {}
+ ~UpdateView() override {}
private:
// Overridden from ActionableView.
- virtual bool PerformAction(const ui::Event& event) OVERRIDE {
+ bool PerformAction(const ui::Event& event) override {
ash::Shell::GetInstance()->
system_tray_delegate()->RequestRestartForUpdate();
return true;
GetAnimator()->AddObserver(this);
}
- virtual ~UpdateNagger() {
+ ~UpdateNagger() override {
StatusAreaWidget* status_area =
Shell::GetPrimaryRootWindowController()->shelf()->status_area_widget();
if (status_area) {
}
// Overridden from ui::LayerAnimationObserver.
- virtual void OnLayerAnimationEnded(
- ui::LayerAnimationSequence* sequence) OVERRIDE {
+ void OnLayerAnimationEnded(ui::LayerAnimationSequence* sequence) override {
// TODO(oshima): Find out if the updator will be shown on non
// primary display.
if (Shell::GetPrimaryRootWindowController()->shelf()->IsVisible())
RestartTimer();
}
- virtual void OnLayerAnimationAborted(
- ui::LayerAnimationSequence* sequence) OVERRIDE {}
+ void OnLayerAnimationAborted(ui::LayerAnimationSequence* sequence) override {}
- virtual void OnLayerAnimationScheduled(
- ui::LayerAnimationSequence* sequence) OVERRIDE {}
+ void OnLayerAnimationScheduled(
+ ui::LayerAnimationSequence* sequence) override {}
SystemTrayItem* owner_;
base::OneShotTimer<UpdateNagger> timer_;
} // namespace tray
TrayUpdate::TrayUpdate(SystemTray* system_tray)
- : TrayImageItem(system_tray, IDR_AURA_UBER_TRAY_UPDATE),
- severity_(UpdateObserver::UPDATE_NORMAL) {
+ : TrayImageItem(system_tray, IDR_AURA_UBER_TRAY_UPDATE) {
Shell::GetInstance()->system_tray_notifier()->AddUpdateObserver(this);
}
}
bool TrayUpdate::GetInitialVisibility() {
- return Shell::GetInstance()->system_tray_delegate()->SystemShouldUpgrade();
+ UpdateInfo info;
+ Shell::GetInstance()->system_tray_delegate()->GetSystemUpdateInfo(&info);
+ return info.update_required;
}
views::View* TrayUpdate::CreateDefaultView(user::LoginStatus status) {
- if (!Shell::GetInstance()->system_tray_delegate()->SystemShouldUpgrade())
- return NULL;
- return new UpdateView(severity_);
+ UpdateInfo info;
+ Shell::GetInstance()->system_tray_delegate()->GetSystemUpdateInfo(&info);
+ return info.update_required ? new UpdateView(info) : nullptr;
}
views::View* TrayUpdate::CreateDetailedView(user::LoginStatus status) {
}
}
-void TrayUpdate::OnUpdateRecommended(UpdateObserver::UpdateSeverity severity) {
- severity_ = severity;
- SetImageFromResourceId(DecideResource(severity_, false));
+void TrayUpdate::OnUpdateRecommended(const UpdateInfo& info) {
+ SetImageFromResourceId(DecideResource(info.severity, false));
tray_view()->SetVisible(true);
if (!Shell::GetPrimaryRootWindowController()->shelf()->IsVisible() &&
!nagger_.get()) {