Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(36)

Side by Side Diff: chrome/browser/ui/ash/system_tray_delegate_linux.cc

Issue 614363002: Added Aura notification that relaunch and powerwash is required in case of downgrade. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: More fixes to StstemTrayDelegateWin. Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "chrome/browser/ui/ash/system_tray_delegate_linux.h" 5 #include "chrome/browser/ui/ash/system_tray_delegate_linux.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "ash/shell.h" 9 #include "ash/shell.h"
10 #include "ash/shell_delegate.h" 10 #include "ash/shell_delegate.h"
11 #include "ash/system/tray/system_tray.h" 11 #include "ash/system/tray/system_tray.h"
12 #include "ash/system/tray/system_tray_delegate.h" 12 #include "ash/system/tray/system_tray_delegate.h"
13 #include "ash/system/tray/system_tray_notifier.h" 13 #include "ash/system/tray/system_tray_notifier.h"
14 #include "ash/volume_control_delegate.h" 14 #include "ash/volume_control_delegate.h"
15 #include "base/time/time.h" 15 #include "base/time/time.h"
16 #include "chrome/browser/chrome_notification_types.h" 16 #include "chrome/browser/chrome_notification_types.h"
17 #include "chrome/browser/lifetime/application_lifetime.h" 17 #include "chrome/browser/lifetime/application_lifetime.h"
18 #include "chrome/browser/profiles/profile_manager.h" 18 #include "chrome/browser/profiles/profile_manager.h"
19 #include "chrome/browser/ui/chrome_pages.h" 19 #include "chrome/browser/ui/chrome_pages.h"
20 #include "chrome/browser/ui/host_desktop.h" 20 #include "chrome/browser/ui/host_desktop.h"
21 #include "chrome/browser/ui/scoped_tabbed_browser_displayer.h" 21 #include "chrome/browser/ui/scoped_tabbed_browser_displayer.h"
22 #include "chrome/browser/upgrade_detector.h" 22 #include "chrome/browser/upgrade_detector.h"
23 #include "chrome/grit/locale_settings.h" 23 #include "chrome/grit/locale_settings.h"
24 #include "content/public/browser/notification_observer.h" 24 #include "content/public/browser/notification_observer.h"
25 #include "content/public/browser/notification_service.h" 25 #include "content/public/browser/notification_service.h"
26 #include "ui/base/l10n/l10n_util.h" 26 #include "ui/base/l10n/l10n_util.h"
27 27
28 namespace { 28 namespace {
29 29
30 void GetUpdateInfo(const UpgradeDetector* detector, ash::UpdateInfo* info) {
31 if (!detector || !info)
32 return;
33 ash::UpdateInfo::UpdateSeverity severity =
34 ash::UpdateInfo::UPDATE_NORMAL;
35 switch (detector->upgrade_notification_stage()) {
36 case UpgradeDetector::UPGRADE_ANNOYANCE_CRITICAL:
37 case UpgradeDetector::UPGRADE_ANNOYANCE_SEVERE:
38 severity = ash::UpdateInfo::UPDATE_SEVERE_RED;
39 break;
40 case UpgradeDetector::UPGRADE_ANNOYANCE_HIGH:
41 severity = ash::UpdateInfo::UPDATE_HIGH_ORANGE;
42 break;
43 case UpgradeDetector::UPGRADE_ANNOYANCE_ELEVATED:
44 severity = ash::UpdateInfo::UPDATE_LOW_GREEN;
45 break;
46 case UpgradeDetector::UPGRADE_ANNOYANCE_LOW:
47 case UpgradeDetector::UPGRADE_ANNOYANCE_NONE:
48 severity = ash::UpdateInfo::UPDATE_NORMAL;
49 break;
50 }
51 info->severity = severity;
52 info->is_factory_reset_required = detector->is_factory_reset_required();
53 }
54
30 class SystemTrayDelegateLinux : public ash::SystemTrayDelegate, 55 class SystemTrayDelegateLinux : public ash::SystemTrayDelegate,
31 public content::NotificationObserver { 56 public content::NotificationObserver {
32 public: 57 public:
33 SystemTrayDelegateLinux() 58 SystemTrayDelegateLinux()
34 : clock_type_(base::GetHourClockType()) { 59 : clock_type_(base::GetHourClockType()) {
35 // Register notifications on construction so that events such as 60 // Register notifications on construction so that events such as
36 // PROFILE_CREATED do not get missed if they happen before Initialize(). 61 // PROFILE_CREATED do not get missed if they happen before Initialize().
37 registrar_.reset(new content::NotificationRegistrar); 62 registrar_.reset(new content::NotificationRegistrar);
38 registrar_->Add(this, 63 registrar_->Add(this,
39 chrome::NOTIFICATION_UPGRADE_RECOMMENDED, 64 chrome::NOTIFICATION_UPGRADE_RECOMMENDED,
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 } 105 }
81 106
82 virtual const base::string16 GetSupervisedUserMessage() const OVERRIDE { 107 virtual const base::string16 GetSupervisedUserMessage() const OVERRIDE {
83 return base::string16(); 108 return base::string16();
84 } 109 }
85 110
86 virtual bool IsUserSupervised() const OVERRIDE { 111 virtual bool IsUserSupervised() const OVERRIDE {
87 return false; 112 return false;
88 } 113 }
89 114
90 virtual bool SystemShouldUpgrade() const OVERRIDE { 115 virtual bool SystemShouldUpgrade(ash::UpdateInfo* info) const OVERRIDE {
91 return UpgradeDetector::GetInstance()->notify_upgrade(); 116 UpgradeDetector* detector = UpgradeDetector::GetInstance();
117 GetUpdateInfo(detector, info);
118 return detector->notify_upgrade();
92 } 119 }
93 120
94 virtual base::HourClockType GetHourClockType() const OVERRIDE { 121 virtual base::HourClockType GetHourClockType() const OVERRIDE {
95 return clock_type_; 122 return clock_type_;
96 } 123 }
97 124
98 virtual void ShowSettings() OVERRIDE { 125 virtual void ShowSettings() OVERRIDE {
99 } 126 }
100 127
101 virtual bool ShouldShowSettings() OVERRIDE { 128 virtual bool ShouldShowSettings() OVERRIDE {
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 clock_type_ = (base::GetHourClockType() == base::k24HourClock) ? 322 clock_type_ = (base::GetHourClockType() == base::k24HourClock) ?
296 base::k24HourClock : base::k12HourClock; 323 base::k24HourClock : base::k12HourClock;
297 GetSystemTrayNotifier()->NotifyDateFormatChanged(); 324 GetSystemTrayNotifier()->NotifyDateFormatChanged();
298 } 325 }
299 326
300 // content::NotificationObserver implementation. 327 // content::NotificationObserver implementation.
301 virtual void Observe(int type, 328 virtual void Observe(int type,
302 const content::NotificationSource& source, 329 const content::NotificationSource& source,
303 const content::NotificationDetails& details) OVERRIDE { 330 const content::NotificationDetails& details) OVERRIDE {
304 if (type == chrome::NOTIFICATION_UPGRADE_RECOMMENDED) { 331 if (type == chrome::NOTIFICATION_UPGRADE_RECOMMENDED) {
305 UpgradeDetector* detector = 332 ash::UpdateInfo info;
306 content::Source<UpgradeDetector>(source).ptr(); 333 GetUpdateInfo(content::Source<UpgradeDetector>(source).ptr(), &info);
307 ash::UpdateObserver::UpdateSeverity severity = 334 GetSystemTrayNotifier()->NotifyUpdateRecommended(info);
308 ash::UpdateObserver::UPDATE_NORMAL;
309 switch (detector->upgrade_notification_stage()) {
310 case UpgradeDetector::UPGRADE_ANNOYANCE_CRITICAL:
311 case UpgradeDetector::UPGRADE_ANNOYANCE_SEVERE:
312 severity = ash::UpdateObserver::UPDATE_SEVERE_RED;
313 break;
314 case UpgradeDetector::UPGRADE_ANNOYANCE_HIGH:
315 severity = ash::UpdateObserver::UPDATE_HIGH_ORANGE;
316 break;
317 case UpgradeDetector::UPGRADE_ANNOYANCE_ELEVATED:
318 severity = ash::UpdateObserver::UPDATE_LOW_GREEN;
319 break;
320 case UpgradeDetector::UPGRADE_ANNOYANCE_LOW:
321 case UpgradeDetector::UPGRADE_ANNOYANCE_NONE:
322 severity = ash::UpdateObserver::UPDATE_NORMAL;
323 break;
324 }
325 GetSystemTrayNotifier()->NotifyUpdateRecommended(severity);
326 } else { 335 } else {
327 NOTREACHED(); 336 NOTREACHED();
328 } 337 }
329 } 338 }
330 339
331 scoped_ptr<content::NotificationRegistrar> registrar_; 340 scoped_ptr<content::NotificationRegistrar> registrar_;
332 base::HourClockType clock_type_; 341 base::HourClockType clock_type_;
333 342
334 DISALLOW_COPY_AND_ASSIGN(SystemTrayDelegateLinux); 343 DISALLOW_COPY_AND_ASSIGN(SystemTrayDelegateLinux);
335 }; 344 };
336 345
337 } // namespace 346 } // namespace
338 347
339 348
340 ash::SystemTrayDelegate* CreateLinuxSystemTrayDelegate() { 349 ash::SystemTrayDelegate* CreateLinuxSystemTrayDelegate() {
341 return new SystemTrayDelegateLinux(); 350 return new SystemTrayDelegateLinux();
342 } 351 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698