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

Unified Diff: chrome/browser/extensions/api/notifications/notifications_api.cc

Issue 1135213004: Returning error when NotificationConversionHelper::NotificationBitmapToGfxImage() get failed in not… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Changes as per review comments. Created 5 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/notifications/notification_conversion_helper.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/api/notifications/notifications_api.cc
diff --git a/chrome/browser/extensions/api/notifications/notifications_api.cc b/chrome/browser/extensions/api/notifications/notifications_api.cc
index 2c80b1f795a0fb0e8de56cadd5232b47d7be6783..17063dfd5e6caff646f6feeded9b71303aa7908d 100644
--- a/chrome/browser/extensions/api/notifications/notifications_api.cc
+++ b/chrome/browser/extensions/api/notifications/notifications_api.cc
@@ -257,11 +257,9 @@ bool NotificationsApiFunction::CreateNotification(
const base::string16 message(base::UTF8ToUTF16(*options->message));
gfx::Image icon;
- if (!NotificationConversionHelper::NotificationBitmapToGfxImage(
- image_scale,
- bitmap_sizes.icon_size,
- options->icon_bitmap.get(),
- &icon)) {
+ if (!options->icon_bitmap.get() ||
+ !NotificationConversionHelper::NotificationBitmapToGfxImage(
+ image_scale, bitmap_sizes.icon_size, *options->icon_bitmap, &icon)) {
SetError(kUnableToDecodeIconError);
return false;
}
@@ -272,7 +270,7 @@ bool NotificationsApiFunction::CreateNotification(
gfx::Image small_icon_mask;
if (!NotificationConversionHelper::NotificationBitmapToGfxImage(
image_scale, bitmap_sizes.app_icon_mask_size,
- options->app_icon_mask_bitmap.get(), &small_icon_mask)) {
+ *options->app_icon_mask_bitmap, &small_icon_mask)) {
SetError(kUnableToDecodeIconError);
return false;
}
@@ -294,12 +292,14 @@ bool NotificationsApiFunction::CreateNotification(
for (size_t i = 0; i < number_of_buttons; i++) {
message_center::ButtonInfo info(
base::UTF8ToUTF16((*options->buttons)[i]->title));
- NotificationConversionHelper::NotificationBitmapToGfxImage(
- image_scale,
- bitmap_sizes.button_icon_size,
- (*options->buttons)[i]->icon_bitmap.get(),
- &info.icon);
- optional_fields.buttons.push_back(info);
+ extensions::api::notifications::NotificationBitmap* icon_bitmap_ptr =
+ (*options->buttons)[i]->icon_bitmap.get();
+ if (icon_bitmap_ptr) {
+ NotificationConversionHelper::NotificationBitmapToGfxImage(
+ image_scale, bitmap_sizes.button_icon_size, *icon_bitmap_ptr,
+ &info.icon);
+ optional_fields.buttons.push_back(info);
+ }
}
}
@@ -308,11 +308,11 @@ bool NotificationsApiFunction::CreateNotification(
base::UTF8ToUTF16(*options->context_message);
}
- bool has_image = NotificationConversionHelper::NotificationBitmapToGfxImage(
- image_scale,
- bitmap_sizes.image_size,
- options->image_bitmap.get(),
- &optional_fields.image);
+ bool has_image = options->image_bitmap.get() &&
+ NotificationConversionHelper::NotificationBitmapToGfxImage(
+ image_scale, bitmap_sizes.image_size,
+ *options->image_bitmap, &optional_fields.image);
+
// We should have an image if and only if the type is an image type.
if (has_image != (type == message_center::NOTIFICATION_TYPE_IMAGE)) {
SetError(kExtraImageProvided);
@@ -390,20 +390,25 @@ bool NotificationsApiFunction::UpdateNotification(
if (options->message)
notification->set_message(base::UTF8ToUTF16(*options->message));
- // TODO(dewittj): Return error if this fails.
- if (options->icon_bitmap) {
+ if (options->icon_bitmap.get()) {
gfx::Image icon;
- NotificationConversionHelper::NotificationBitmapToGfxImage(
- image_scale, bitmap_sizes.icon_size, options->icon_bitmap.get(), &icon);
+ if (!NotificationConversionHelper::NotificationBitmapToGfxImage(
+ image_scale, bitmap_sizes.icon_size, *options->icon_bitmap,
+ &icon)) {
+ SetError(kUnableToDecodeIconError);
+ return false;
+ }
notification->set_icon(icon);
}
- gfx::Image app_icon_mask;
- if (NotificationConversionHelper::NotificationBitmapToGfxImage(
- image_scale,
- bitmap_sizes.app_icon_mask_size,
- options->app_icon_mask_bitmap.get(),
- &app_icon_mask)) {
+ if (options->app_icon_mask_bitmap.get()) {
+ gfx::Image app_icon_mask;
+ if (!NotificationConversionHelper::NotificationBitmapToGfxImage(
+ image_scale, bitmap_sizes.app_icon_mask_size,
+ *options->app_icon_mask_bitmap, &app_icon_mask)) {
+ SetError(kUnableToDecodeIconError);
+ return false;
+ }
notification->set_small_image(
GetMaskedSmallImage(app_icon_mask.AsImageSkia()));
}
@@ -423,12 +428,14 @@ bool NotificationsApiFunction::UpdateNotification(
for (size_t i = 0; i < number_of_buttons; i++) {
message_center::ButtonInfo button(
base::UTF8ToUTF16((*options->buttons)[i]->title));
- NotificationConversionHelper::NotificationBitmapToGfxImage(
- image_scale,
- bitmap_sizes.button_icon_size,
- (*options->buttons)[i]->icon_bitmap.get(),
- &button.icon);
- buttons.push_back(button);
+ extensions::api::notifications::NotificationBitmap* icon_bitmap_ptr =
+ (*options->buttons)[i]->icon_bitmap.get();
+ if (icon_bitmap_ptr) {
+ NotificationConversionHelper::NotificationBitmapToGfxImage(
+ image_scale, bitmap_sizes.button_icon_size, *icon_bitmap_ptr,
+ &button.icon);
+ buttons.push_back(button);
+ }
}
notification->set_buttons(buttons);
}
@@ -439,11 +446,11 @@ bool NotificationsApiFunction::UpdateNotification(
}
gfx::Image image;
- bool has_image = NotificationConversionHelper::NotificationBitmapToGfxImage(
- image_scale,
- bitmap_sizes.image_size,
- options->image_bitmap.get(),
- &image);
+ bool has_image =
+ options->image_bitmap.get() &&
+ NotificationConversionHelper::NotificationBitmapToGfxImage(
+ image_scale, bitmap_sizes.image_size, *options->image_bitmap, &image);
+
if (has_image) {
// We should have an image if and only if the type is an image type.
if (notification->type() != message_center::NOTIFICATION_TYPE_IMAGE) {
« no previous file with comments | « no previous file | chrome/browser/notifications/notification_conversion_helper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698