Index: chrome/browser/chromeos/eol_notification.cc |
diff --git a/chrome/browser/chromeos/eol_notification.cc b/chrome/browser/chromeos/eol_notification.cc |
index 8b5f49eb2e14b5fde57624419b074d185921ecb8..692494d8576e256e333a3498a9e3ab9d85c31485 100644 |
--- a/chrome/browser/chromeos/eol_notification.cc |
+++ b/chrome/browser/chromeos/eol_notification.cc |
@@ -15,10 +15,10 @@ |
#include "chromeos/dbus/dbus_thread_manager.h" |
#include "chromeos/dbus/update_engine_client.h" |
#include "components/prefs/pref_service.h" |
-#include "grit/ash_resources.h" |
-#include "third_party/cros_system_api/dbus/update_engine/dbus-constants.h" |
#include "ui/base/l10n/l10n_util.h" |
-#include "ui/base/resource/resource_bundle.h" |
+#include "ui/gfx/color_palette.h" |
+#include "ui/gfx/paint_vector_icon.h" |
+#include "ui/gfx/vector_icons_public.h" |
using message_center::MessageCenter; |
@@ -27,22 +27,27 @@ namespace { |
const char kEolNotificationId[] = "eol"; |
const char kDelegateId[] = "eol_delegate"; |
+const SkColor kButtonIconColor = SkColorSetRGB(150, 150, 152); |
+const SkColor kNotificationIconColor = SkColorSetRGB(219, 68, 55); |
class EolNotificationDelegate : public NotificationDelegate { |
public: |
explicit EolNotificationDelegate(Profile* profile); |
private: |
+ // Buttons that appear in notifications. |
+ enum EOL_Button { BUTTON_MORE_INFO = 0, BUTTON_DISMISS }; |
+ |
~EolNotificationDelegate() override; |
// NotificationDelegate overrides: |
- void Close(bool by_user) override; |
void ButtonClick(int button_index) override; |
std::string id() const override; |
Profile* const profile_; |
void OpenMoreInfoPage(); |
+ void CancelNotification(); |
DISALLOW_COPY_AND_ASSIGN(EolNotificationDelegate); |
}; |
@@ -52,16 +57,20 @@ EolNotificationDelegate::EolNotificationDelegate(Profile* profile) |
EolNotificationDelegate::~EolNotificationDelegate() {} |
-void EolNotificationDelegate::Close(bool by_user) { |
- if (by_user) { |
- // set dismiss pref. |
- profile_->GetPrefs()->SetBoolean(prefs::kEolNotificationDismissed, true); |
- } |
-} |
- |
void EolNotificationDelegate::ButtonClick(int button_index) { |
- // show eol link |
- OpenMoreInfoPage(); |
+ switch (button_index) { |
+ case BUTTON_MORE_INFO: |
+ // show eol link |
+ OpenMoreInfoPage(); |
+ break; |
+ case BUTTON_DISMISS: |
+ // set dismiss pref. |
+ profile_->GetPrefs()->SetBoolean(prefs::kEolNotificationDismissed, true); |
+ break; |
+ default: |
+ NOTREACHED(); |
+ } |
+ CancelNotification(); |
} |
std::string EolNotificationDelegate::id() const { |
@@ -76,6 +85,12 @@ void EolNotificationDelegate::OpenMoreInfoPage() { |
chrome::Navigate(¶ms); |
} |
+void EolNotificationDelegate::CancelNotification() { |
+ // Clean up the notification |
+ g_browser_process->notification_ui_manager()->CancelById( |
+ id(), NotificationUIManager::GetProfileID(profile_)); |
+} |
+ |
} // namespace |
EolNotification::EolNotification(Profile* profile) |
@@ -94,7 +109,7 @@ void EolNotification::CheckEolStatus() { |
base::Bind(&EolNotification::OnEolStatus, weak_factory_.GetWeakPtr())); |
} |
-void EolNotification::OnEolStatus(int status) { |
+void EolNotification::OnEolStatus(update_engine::EndOfLifeStatus status) { |
status_ = status; |
const int pre_eol_status = |
@@ -124,16 +139,24 @@ void EolNotification::OnEolStatus(int status) { |
} |
void EolNotification::Update() { |
- ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); |
+ message_center::ButtonInfo learn_more( |
+ l10n_util::GetStringUTF16(IDS_EOL_MORE_INFO_BUTTON)); |
+ learn_more.icon = gfx::Image( |
+ CreateVectorIcon(gfx::VectorIconId::INFO_OUTLINE, kButtonIconColor)); |
+ message_center::ButtonInfo dismiss( |
+ l10n_util::GetStringUTF16(IDS_EOL_DISMISS_BUTTON)); |
+ dismiss.icon = gfx::Image( |
+ CreateVectorIcon(gfx::VectorIconId::NOTIFICATIONS_OFF, kButtonIconColor)); |
+ |
message_center::RichNotificationData data; |
- data.buttons.push_back(message_center::ButtonInfo( |
- l10n_util::GetStringUTF16(IDS_EOL_MORE_INFO_BUTTON))); |
+ data.buttons.push_back(learn_more); |
+ data.buttons.push_back(dismiss); |
Notification notification( |
message_center::NOTIFICATION_TYPE_SIMPLE, |
- base::string16(), // title |
- // TODO(xiaoyinh): Update the Eol icon once it's ready. |
- GetEolMessage(), bundle.GetImageNamed(IDR_AURA_NOTIFICATION_DISPLAY), |
+ l10n_util::GetStringUTF16(IDS_EOL_NOTIFICATION_TITLE), GetEolMessage(), |
+ gfx::Image( |
+ CreateVectorIcon(gfx::VectorIconId::EOL, kNotificationIconColor)), |
message_center::NotifierId(message_center::NotifierId::SYSTEM_COMPONENT, |
kEolNotificationId), |
base::string16(), // display_source |