display_error_observer_chromeos.cc revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
16e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner// Copyright 2013 The Chromium Authors. All rights reserved. 26e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner// Use of this source code is governed by a BSD-style license that can be 36e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner// found in the LICENSE file. 46e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner 56e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner#include "ash/display/display_error_observer_chromeos.h" 66e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner 76e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner#include "ash/system/system_notifier.h" 86e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner#include "grit/ash_resources.h" 96e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner#include "grit/ash_strings.h" 106e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner#include "ui/base/l10n/l10n_util.h" 116e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner#include "ui/base/resource/resource_bundle.h" 126e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner#include "ui/message_center/message_center.h" 136e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner#include "ui/message_center/notification.h" 146e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner#include "ui/message_center/notification_delegate.h" 156e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner#include "ui/message_center/notification_list.h" 166e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner 176e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattnerusing message_center::Notification; 186e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner 19f6390f48e6324b0221d10a9c75ab625357d8a43aChris Lattnernamespace ash { 206e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattnernamespace internal { 216e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattnernamespace { 226e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner 236e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattnerconst char kDisplayErrorNotificationId[] = "chrome://settings/display/error"; 246e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner 256e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner} // namespace 266e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner 276e94c00ab29e654125e845f3bce692a3764c1c11Chris LattnerDisplayErrorObserver::DisplayErrorObserver() { 286e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner} 296e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner 306e94c00ab29e654125e845f3bce692a3764c1c11Chris LattnerDisplayErrorObserver::~DisplayErrorObserver() { 316e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner} 326e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner 336e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattnervoid DisplayErrorObserver::OnDisplayModeChangeFailed( 346e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner ui::OutputState new_state) { 356e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner // Always remove the notification to make sure the notification appears 366e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner // as a popup in any situation. 376e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner message_center::MessageCenter::Get()->RemoveNotification( 386e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner kDisplayErrorNotificationId, false /* by_user */); 396e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner 406e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner int message_id = (new_state == ui::OUTPUT_STATE_DUAL_MIRROR) ? 416e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner IDS_ASH_DISPLAY_FAILURE_ON_MIRRORING : 42f6390f48e6324b0221d10a9c75ab625357d8a43aChris Lattner IDS_ASH_DISPLAY_FAILURE_ON_NON_MIRRORING; 43f6390f48e6324b0221d10a9c75ab625357d8a43aChris Lattner 4470a76a633ed5101dbe472404efd989f4f1b3669cChris Lattner ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); 4570a76a633ed5101dbe472404efd989f4f1b3669cChris Lattner scoped_ptr<Notification> notification(new Notification( 466e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner message_center::NOTIFICATION_TYPE_SIMPLE, 476e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner kDisplayErrorNotificationId, 486e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner l10n_util::GetStringUTF16(message_id), 49f6390f48e6324b0221d10a9c75ab625357d8a43aChris Lattner base::string16(), // message 506e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner bundle.GetImageNamed(IDR_AURA_NOTIFICATION_DISPLAY), 516e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner base::string16(), // display_source 526e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner message_center::NotifierId( 536e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner message_center::NotifierId::SYSTEM_COMPONENT, 546e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner system_notifier::kNotifierDisplayError), 556e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner message_center::RichNotificationData(), 565a5f6b6e38b7155200903816f22501cce4ca36a7Chris Lattner NULL)); 576e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner message_center::MessageCenter::Get()->AddNotification(notification.Pass()); 586e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner} 596e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner 606e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattnerbase::string16 DisplayErrorObserver:: 616e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner GetTitleOfDisplayErrorNotificationForTest() { 62f6390f48e6324b0221d10a9c75ab625357d8a43aChris Lattner message_center::NotificationList::Notifications notifications = 63f6390f48e6324b0221d10a9c75ab625357d8a43aChris Lattner message_center::MessageCenter::Get()->GetVisibleNotifications(); 64f6390f48e6324b0221d10a9c75ab625357d8a43aChris Lattner for (message_center::NotificationList::Notifications::const_iterator iter = 656e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner notifications.begin(); iter != notifications.end(); ++iter) { 666e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner if ((*iter)->id() == kDisplayErrorNotificationId) 676e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner return (*iter)->title(); 686e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner } 69f6390f48e6324b0221d10a9c75ab625357d8a43aChris Lattner 7070a76a633ed5101dbe472404efd989f4f1b3669cChris Lattner return base::string16(); 7170a76a633ed5101dbe472404efd989f4f1b3669cChris Lattner} 7270a76a633ed5101dbe472404efd989f4f1b3669cChris Lattner 7370a76a633ed5101dbe472404efd989f4f1b3669cChris Lattner} // namespace internal 7470a76a633ed5101dbe472404efd989f4f1b3669cChris Lattner} // namespace ash 7570a76a633ed5101dbe472404efd989f4f1b3669cChris Lattner