Chromium Code Reviews| Index: chrome/browser/chromeos/printing/cups_print_job_notification.cc |
| diff --git a/chrome/browser/chromeos/printing/cups_print_job_notification.cc b/chrome/browser/chromeos/printing/cups_print_job_notification.cc |
| index 504dd63fcf7f835ced9f71d58c37269113fd6acf..f3b411909e2db901decef70021d9634ca0d534de 100644 |
| --- a/chrome/browser/chromeos/printing/cups_print_job_notification.cc |
| +++ b/chrome/browser/chromeos/printing/cups_print_job_notification.cc |
| @@ -84,6 +84,10 @@ CupsPrintJobNotification::CupsPrintJobNotification(CupsPrintJob* print_job, |
| CupsPrintJobNotification::~CupsPrintJobNotification() {} |
| void CupsPrintJobNotification::OnPrintJobStatusUpdated() { |
| + // After cancellation, ignore all updates. |
| + if (cancelled_by_user_) |
| + return; |
| + |
|
xdai1
2017/02/24 19:17:00
I think we're not supposed to get any updates afte
skau
2017/02/24 23:09:34
The previous behavior was that we never received a
|
| UpdateNotification(); |
| } |
| @@ -109,9 +113,7 @@ void CupsPrintJobNotification::ClickOnNotificationButton(int button_index) { |
| // only clean up the nofitication if cancel was successful. |
| g_browser_process->notification_ui_manager()->CancelById( |
| GetNotificationId(), profile_id); |
| - // |print_job_| is deleted by CupsPrintManager when the print job is |
| - // cancelled, thus set it to nullptr. |
| - print_job_ = nullptr; |
| + cancelled_by_user_ = true; |
| } |
| break; |
| case ButtonCommand::PAUSE_PRINTING: |
| @@ -130,8 +132,6 @@ const std::string& CupsPrintJobNotification::GetNotificationId() { |
| } |
| void CupsPrintJobNotification::UpdateNotification() { |
| - DCHECK(print_job_->state() != CupsPrintJob::State::STATE_CANCELLED); |
| - |
| UpdateNotificationTitle(); |
| UpdateNotificationIcon(); |
| UpdateNotificationBodyMessage(); |
| @@ -184,11 +184,11 @@ void CupsPrintJobNotification::UpdateNotificationIcon() { |
| notification_->set_icon( |
| bundle.GetImageNamed(IDR_PRINT_NOTIFICATION_DONE)); |
| break; |
| + case CupsPrintJob::State::STATE_CANCELLED: |
| case CupsPrintJob::State::STATE_ERROR: |
| notification_->set_icon( |
| bundle.GetImageNamed(IDR_PRINT_NOTIFICATION_ERROR)); |
| - break; |
| - default: |
| + case CupsPrintJob::State::STATE_NONE: |
| break; |
| } |
| } |
| @@ -220,6 +220,7 @@ void CupsPrintJobNotification::UpdateNotificationBodyMessage() { |
| base::IntToString16(print_job_->total_page_number()), |
| base::UTF8ToUTF16(print_job_->printer().display_name())); |
| break; |
| + case CupsPrintJob::State::STATE_CANCELLED: |
| case CupsPrintJob::State::STATE_ERROR: |
| message = l10n_util::GetStringFUTF16( |
| IDS_PRINT_JOB_ERROR_NOTIFICATION_MESSAGE, |
| @@ -246,7 +247,7 @@ void CupsPrintJobNotification::UpdateNotificationType() { |
| case CupsPrintJob::State::STATE_WAITING: |
| case CupsPrintJob::State::STATE_DOCUMENT_DONE: |
| case CupsPrintJob::State::STATE_ERROR: |
| - default: |
| + case CupsPrintJob::State::STATE_CANCELLED: |
| notification_->set_type(message_center::NOTIFICATION_TYPE_SIMPLE); |
| break; |
| } |
| @@ -280,6 +281,7 @@ CupsPrintJobNotification::GetButtonCommands() const { |
| commands->push_back(ButtonCommand::CANCEL_PRINTING); |
| break; |
| case CupsPrintJob::State::STATE_ERROR: |
| + case CupsPrintJob::State::STATE_CANCELLED: |
| commands->push_back(ButtonCommand::GET_HELP); |
| break; |
| default: |