Index: chrome/renderer/resources/extensions/notifications_custom_bindings.js |
diff --git a/chrome/renderer/resources/extensions/notifications_custom_bindings.js b/chrome/renderer/resources/extensions/notifications_custom_bindings.js |
index fb8264d18687031fe3df841b867cce9e4a24c0ea..013628abff281af8a238a343e2793c12a5e98b9c 100644 |
--- a/chrome/renderer/resources/extensions/notifications_custom_bindings.js |
+++ b/chrome/renderer/resources/extensions/notifications_custom_bindings.js |
@@ -3,66 +3,75 @@ |
// found in the LICENSE file. |
// Custom bindings for the notifications API. |
+// |
var binding = require('binding').Binding.create('notifications'); |
var sendRequest = require('sendRequest').sendRequest; |
var imageUtil = require('imageUtil'); |
var lastError = require('lastError'); |
+var notificationsPrivate = requireNative('notifications_private'); |
-function image_data_setter(context, key) { |
+function imageDataSetter(context, key) { |
var f = function(val) { |
this[key] = val; |
}; |
return $Function.bind(f, context); |
} |
-function replaceNotificationOptionURLs(notification_details, callback) { |
- // A URL Spec is an object with the following keys: |
- // path: The resource to be downloaded. |
- // width: (optional) The maximum width of the image to be downloaded. |
- // height: (optional) The maximum height of the image to be downloaded. |
- // callback: A function to be called when the URL is complete. It |
- // should accept an ImageData object and set the appropriate |
- // field in the output of create. |
- |
- // TODO(dewittj): Try to remove hard-coding of image sizes. |
+// A URL Spec is an object with the following keys: |
+// path: The resource to be downloaded. |
+// width: (optional) The maximum width of the image to be downloaded in device |
+// pixels. |
+// height: (optional) The maximum height of the image to be downloaded in |
+// device pixels. |
+// callback: A function to be called when the URL is complete. It |
+// should accept an ImageData object and set the appropriate |
+// field in |notificationDetails|. |
+function getUrlSpecs(imageSizes, notificationDetails) { |
+ var urlSpecs = []; |
+ |
// |iconUrl| might be optional for notification updates. |
- var url_specs = []; |
- if (notification_details.iconUrl) { |
- $Array.push(url_specs, { |
- path: notification_details.iconUrl, |
- width: 80, |
- height: 80, |
- callback: image_data_setter(notification_details, 'iconBitmap') |
+ if (notificationDetails.iconUrl) { |
+ $Array.push(urlSpecs, { |
+ path: notificationDetails.iconUrl, |
+ width: imageSizes.icon.width * imageSizes.scaleFactor, |
+ height: imageSizes.icon.height * imageSizes.scaleFactor, |
+ callback: imageDataSetter(notificationDetails, 'iconBitmap') |
}); |
} |
// |imageUrl| is optional. |
- if (notification_details.imageUrl) { |
- $Array.push(url_specs, { |
- path: notification_details.imageUrl, |
- width: 360, |
- height: 240, |
- callback: image_data_setter(notification_details, 'imageBitmap') |
+ if (notificationDetails.imageUrl) { |
+ $Array.push(urlSpecs, { |
+ path: notificationDetails.imageUrl, |
+ width: imageSizes.image.width * imageSizes.scaleFactor, |
+ height: imageSizes.image.height * imageSizes.scaleFactor, |
+ callback: imageDataSetter(notificationDetails, 'imageBitmap') |
}); |
} |
// Each button has an optional icon. |
- var button_list = notification_details.buttons; |
- if (button_list && typeof button_list.length === 'number') { |
- var num_buttons = button_list.length; |
- for (var i = 0; i < num_buttons; i++) { |
- if (button_list[i].iconUrl) { |
- $Array.push(url_specs, { |
- path: button_list[i].iconUrl, |
- width: 16, |
- height: 16, |
- callback: image_data_setter(button_list[i], 'iconBitmap') |
+ var buttonList = notificationDetails.buttons; |
+ if (buttonList && typeof buttonList.length === 'number') { |
+ var numButtons = buttonList.length; |
+ for (var i = 0; i < numButtons; i++) { |
+ if (buttonList[i].iconUrl) { |
+ $Array.push(urlSpecs, { |
+ path: buttonList[i].iconUrl, |
+ width: imageSizes.buttonIcon.width * imageSizes.scaleFactor, |
+ height: imageSizes.buttonIcon.height * imageSizes.scaleFactor, |
+ callback: imageDataSetter(buttonList[i], 'iconBitmap') |
}); |
} |
} |
} |
+ return urlSpecs; |
+} |
+ |
+function replaceNotificationOptionURLs(notification_details, callback) { |
+ var imageSizes = notificationsPrivate.GetNotificationImageSizes(); |
+ var url_specs = getUrlSpecs(imageSizes, notification_details); |
if (!url_specs.length) { |
callback(true); |
return; |